Eight Influential Development Books

Here are eight influential books that relate to software development:

The classic:20180526_183055

Introducing techniques:

20180526_183109.jpg

The skills around development:

20180526_183115.jpg

How to unit test anything:

20180526_183120.jpg

How to stretch your knowledge:

20180526_183129

How to stretch your knowledge further:

20180526_183135.jpg

How to explain your new ideas to other people:

20180526_183254.jpg

Information about Quality, Gumption Traps and The Scientific Method:

20180526_183142.jpg

Redux CombineReducers is broken

Recently I have started using react redux. It’s amazing how complex React/Redux makes even the simplest task.

I needed to pass an environment value through to the client side rendered ui. This was to allow the component to vary by environment – something essential in a dev -> qa -> preprod -> live pipeline.

You need to pass this into the store and map it out into the state of your component. All of the documentation and examples seem to care about is state mutation. The trivial case is overlooked.

The app that I am working on has multiple reducers that are combined with CombineReducers. This has the interesting side effect of dropping any state that is not included in a reducer.

This is not accidental it actually warns you (cryptically) that it is doing it.

I solved this for now by creating an idempotentReducer that simply returns the state. This is not a good long term solution.

The documentation on CombineReducers does state that it is intended for simple cases. I can’t imagine why passing through static state is not the simplest case.

Phoenix for Rails Developers – Part 3

I have now completed the book (although not all of the bonus exercises).

https://github.com/chriseyre2000/storex

The remainder of the book demonstrated extensions to the application to create an administration mode. This shows how you extend an existing application.

Overall the book is a gentle introduction to Phoenix and avoids introducing some of the more complex features (there is no attempt to explain OTP or Channels).

The code struct has been easy to follow with the examples being split into the correct sized chunks. This is in comparison to Learn React Native who code samples were excessive given that you needed to type in several pages of code before anything could be checked.

I did find a few typos which the author says are due to be corrected soon (an early view of the contents of the database includes the admin flag, some brackets are missing on some of the redirects and the validate_max_price method breaks when the price is null).

This has been a very useful addition to my Elixir/Phoenix study library.

It is interesting to compare the changes in the Phoenix framework between the Learning Phoenix book and this one. The major difference is the movement of the model from within the Phoenix app itself (storex_web) into a library (storex).

The only variation I took from the book was to add Credo:

{:credo, “~> 0.9.0”}
This is a style and code recommendation tool that use gets suggested in a number of places.
This adds a number of styling warnings for any application. It can be customised but does encourage good practice.
I have fixed up some of the hints (spacing issues, don’t use cond with only one non-true condition).