Product Documentation with Wyam

I recently wanted to add documentation and a product blog to an existing application, and rather than build out a full data model to support this I decided I’d go with the static file generation route. Although I’d had good experiences with Hugo, which I used to generate this blog I decided to go with Wyam because its “docs” recipe was close to what I wanted. Although the Wyam docs suggested I could create a custom theme and then package it up via nuget, the path of least resistance turned out to be just copying the files I wanted to change from the existing Samson theme into the input folder (where your content goes) and changing them there. »

Edge Cases Will Kill You

Distributed systems can fail in lots of different ways. Messages not received, messages sent multiple times, messages received out of order, and concurrency issues arising from different parts of the system receiving or not receiving related messages in the right order, or at the right time. Network partitions force you to decide between consistency and availability. Good architecture and technology stacks can shield us from a lot of these problems, however if you start picking away at the edges you can invariably find problems that can still arise in complex distributed systems. »

Lessons from the Skunk Works

Lockheed-Martin’s Skunk Works has a hallowed place in the annals of engineering. Established in 1943 near a plastics factory in Burbank, California as a secretive, elite engineering group they built the first jet fighter for the United States, the P-80. Led by Kelly Johnson their chief engineer they completed this amazing feat in 143 days from the start of the design process to the first production model flying, under the severe resource and personnel shortages you would expect in a nation at war. »

Choice, Happiness and Javascript Frameworks

Malcolm Gladwell in his TED talk Choice, happiness and spaghetti sauce tells the story of Howard Moskowitz, a psychophysicist and market researcher and his insights into customer satisfaction. Howard’s big idea was that in many cases there was not one perfect platonic ideal for a particular product. Some people like chunky spaghetti sauce, some people like spicy, and some people like thin, blended spaghetti sauce. By trying to make a ‘one-size-fits-all’ product a lot of marketers and food scientists were making something that was the least offensive to most people, but was sub-optimal compared to multiple products in the same category, each tuned to the tastes of a particular ‘cluster’ of customers. »

Open Source

Given the proliferation of places source code can be hosted I thought I’d try to gather up the links to all the different places, in one place. GitHub My Stuff BitBucket Remember when Git didn’t run well AT ALL on windows, and Mercurial seemed like the logical choice? My Stuff CodePlex Remember codeplex? Nah, me neither. BigNote fx thematic WPF Telemetry Image Credit Christopher Ducamp »

Annus Mirabilis

2016 has drawn to a close, leaving us to look back with fond nostalgia to the halcyon days of 2010 and 2011 when the worst thing we had to worry about was Greek debt, the possible collapse of the E.U. and inter-species pandemics. However out of adversity great ideas, art, businesses and people are often born. One inspirational example of this is Isaac Newton’s so-called “Annus Mirabilis” in 1666. Except for the calamity of nuclear war, nothing we might face in 2017 really compares to what the people of England were actually up against in 1666. »

Static File Offload with Nginx and Kestrel

AspNet Core’s Kestrel webserver is making great leaps and bounds in performance however it is still suggested to offload serving static files where possible. If you’ve set up Nginx to act as a reverse proxy which Microsoft currently suggest you should do for production, those requests are going to be handled by Nginx initially anyway, so why not get it to serve up those static files for you? Configuration Fortunately the configuration to do this is fairly easy by editing the Nginx config for your site. »

AspNet Core Identity and SQLite

Tonight I set up AspNet Core Identity to use SQLite as its backing store. SQLite is a great piece of software that is a joy to use, and rightly deserves its popularity. It seemed like a great fit for storing a small number of user details for a little app I was building. Although this stackoverflow post which I discovered after I finished getting it working does a reasonable job of explaining things I did a few steps differently. »

Software Requirements and Hindsight Bias

You know about hindsight bias, right? It’s when your mind distorts memories to bring them in line with your current thinking, or current events. If you’ve ever heard someone say they “knew it would happen all along” maybe they did, or maybe it is just hindsight bias at work. In one of the first studies published on hindsight bias researchers Fischhoff and Beyth asked students about to rate the likelyhood of 15 different possible events occurring in the then-upcoming visit of U. »

Test-Driving a new Kitchen Computer - or - One Weird Trick to re-vitalise your aging x86 hardware

In our household we have a ‘kitchen computer’ that sits fairly unobtrusively in our living area. Current hardware is an old and fairly down-spec’d intel NUC and it cops a beating doing ad-hoc web browsing, playing youtube videos and Spotify, and displaying and occasionally editing Office docs. Lots of great stuff it was getting on admirably with in spite of its advancing years. Unfortunately a problem arose due to the small SSD inside the NUC (60GB…aaah, those were the days) and Windows’s propensity to leave behind . »