Introducing Cultivate's Bytesize Blog
We have launched a new blog for small nuggets of technical information ('bytesized' - geddit?) that we have picked up along the way.
Elixir nested modules, imports, and aliases
Module nesting in Elixir is syntactic sugar with some unexpected (undocumented) alias and import behaviours
Full stack developers versus full stack teams
Cultivate do not differentiate between Front End and Back End Developers, yet we acknowledge that expertise in either field is too difficult for most people to achieve. How do we resolve this apparent contradiction?
The Product Manager and The Manual Test Script of Doom
Winning an argument by conceding in good faith
GenServer call time-outs
What exactly happens when `GenServer.call/3` times out? Let's find out.
Communicating with C from Elixir using Ports
On occasion your Elixir is going to want to interact with an external program. This may be for speed, but more likely you are going to want to take advantage of a library that has been written in C. The most common options are using Ports and Native Interface Functions (NIFs).
Three alternatives to using GenEvent in Elixir
For various reasons, may people are not fond of GenEvent. Here are some examples of using some good alternatives for broadcasting and subscribing to types of event: gproc, Phoenix PubSub, and the new process registry to be included in Elixir 1.4.
Compiling and testing Elixir Nerves on your host machine
Elixir Nerves is awesome, but it make it awkward to test your code on your development computer - especially if it is not Linux. Here I explain how to overcome that hurdle.
Using Ecto 2, without Phoenix, but with tests
Using Ecto without Phoenix is a bit fiddly to set up. This is a step-by-step tutorial to getting through that.
JSON Serialisation of Ecto Models in Phoenix Channels (and views)
This week I upgraded from 0.13.x to 0.15.0 (through 0.14.x) and hit problems with models that I'd been sending over channels to the Javascript client. Here's how it panned out.
Ruby constant resolution
Module and class nesting is how Ruby does namespacing, but it's not always that well known how constants are resolved.
Walk / Hike research
Looking conversations with UK walkers/hikers
Lessons from reading ostruct.rb
Interesting things we learnt, reading through the Ruby Standard Libary's ostruct.rb.
On the Scaled Agile Framework
A few months a ago a I successfully completed the Scaled Agilist Certification course and exam, for the Scaled Agile Framework (SAFe). These are my thoughts on SAFe.
The Many Faces of Test Driven Development
Like many religious wars, the Test Driven Development debate seems interminable, unpleasant, and not a little tedious. "Mocks Suck and cause brittle tests." "No, including real collaborators in your tests makes them brittle." "That's not a unit test". "It's not about testing, it's about design." "No, it's about documentation."
Practice Makes Perfect
In December last year, around 3,000 programmers in 160 cities around the world gave up their Saturday to write code — code they deliberately threw away. They were not being weird or frivolous. They were there to take part in The Global Day of Code Retreat, and improve their craft.
The future of Ruby
I am not a very old-school Rubyist. My involvement dates from 2005 when I, along with many of my Extreme Programming (XP) colleagues, joined the Great Rails Bandwagon. It is telling that so many of the people who became involved around that time were from the Agile/XP community. We were sick of the mountains of glue code and XML configuration that stood in the way of us getting things done in Enterprise Java.