It is possible to do configuration management right but it is also possible to do it wrong. One way to do it wrong is to combine the provisioning and deployment logic into various cookbooks and isolate them from the applications that depend on them. The reason this is wrong is because to understand how the application works in production you now have to chase down dependencies somewhere else and once you get there the cookbooks will not make much sense because they will make assumptions about the application. This is all a long-winded way of saying you are keeping track of two contexts when in reality there is really just one context, the application and its associate infrastructure logic. Continue reading
Please stop using the phrase “full-stack developer”. The phrase “full-stack developer” is completely devoid of any meaning because as you can see above no one can be a full-stack developer given the complexity of the modern stack. In fact hearing the phrase makes me think that the place putting out the job advert is full of amateurs. Instead just spell out exactly what your stack looks like and specify you want people that have a certain level of expertise with that stack.
If your entire web presence is controlled by and contained within walled gardens like Facebook and Linkedin then you’re doing it wrong. Continue reading
Monads don’t compose and they’re a kludgy solution for structuring effectual computations. To solve the composition problem people have tried many things, e.g. monad transformers, free monad co-products with associated interpreters. If you have any aesthetic sense about theory then it is obvious none of those are the right solution. There is an excellent stackoverflow question that gets to the heart of the matter.
Programming communities are full of memes. I say memes because there is no science backing the ideas and they are kept alive by pure communal momentum. You’d think programmers being the logical creatures that they are would not put up with such crap but it is hard to fight one’s tribal nature and win. One such meme is a quote by Alan Perlis
A language that doesn’t affect the way you think about programming, is not worth knowing.
On the surface that seems kinda correct but when you dig a little deeper it starts to fall apart. Continue reading
Pretty much any interview problem is going to be something about graphs or other data structures with a very thin veneer for “motivation”. The most recent one for me was a basic problem in graph theory under the guise of printing a dependency tree
Problem: Given a dependency graph, print the hierarchical view.
Example: If A depends on B and C, and B depends on C and D,
and C depends on E then the output should look like
Feature creep is a manifestation of loss aversion from economics and decision theory. Not really my idea but was something I was recently thinking about when I stumbled on this post. That post is in the context of Windows versions and the continual feature creep to appease all users everywhere but applies equally well to pretty much all software.
Many people have asked why I enjoy doing operations, infrastructure, tooling, and in general what can be considered devops and higher-level system work vs product and feature development work. Here’s why. Continue reading
If you’re like me then you are constantly depressed by the state of the art when it comes to software and all things related to it. Many of the tools I use day to day haven’t moved an inch since the day they were invented back in the heyday of computing. Do a search for “the mother of all demos” and you’ll know what I mean. Continue reading