How to fix the charlock_holmes gem install error about missing icu4c again.| willj.net
I spent several months iterating on the design and build of a ping pong ball collecting robot, these are the final finished photos I took of it.| willj.net
Using Ruby on Rails logger block syntax can save you object allocations in the Ruby VM, and CPU time, I show you how to use it and the difference using it can make| willj.net
A Ruby program to find rows in a Postgres database that are too large for BTree indexes.| willj.net
Using IO timing tracking with EXPLAIN ANALYSE can show you exactly how long your queries spent on IO.| willj.net
I wrote a program for converting a wordpress.com dump, incliding images, to Hugo and markdown| willj.net
In a recent update Firefox changed the order of it's URL bar suggestions order to make search suggestions appear first before recently visited URLs. This is annoying so I changed it back.| willj.net
The Dell OptiPlex 7010 SFF officially only has room for one 2.5" hard drive internally, I fitted two 3.25" hard drives and a 2.5" SSD in one.| willj.net
Sometimes you have a test order issue CI that you want to debug locally, and to do that you need to only run the tests that knapsack runs in the relevant shard, in the right order. Here's how to do that!| willj.net
A list of YouTube sailing channels that Will recommends to either learn more about sailing, or just to live vicariously through the experiences of others.| willj.net
No more scolling the checks box on Github when you have plenty of screen space to display it| willj.net
Taming the torrent of Github notification emails| willj.net
A simple, fast and reliable method for making sourdough bread| willj.net
A simple method for making a sourdough starter| willj.net
Wiring up and using the T6713 / T67XX sensor module in Go.| willj.net
A compact, low-profile, custom 3D Printed Blue Snowball microphone desk stand.| willj.net
I used to blog on wordpress, but now I don't| willj.net
Writing data to an LCM1602 based multiline LCD display connected to a Raspberry Pi using Go| willj.net
I have recently started playing around with climate sensing using some relatively cheap sensors, some Raspberry Pis, and Go. In this post I will briefly touch on why I am doing this, the setup and systems I have working currently, and the improvements I plan to make.| willj.net
If you are getting a "fatal error: 'climits' file not found" error installing libv8 on Catalina then this post is for you.| willj.net
You just need to install the headers| willj.net
How to fix the charlock_holmes gem install error about missing icu4c.| willj.net
In which I go through how I make a basic tomato, garlic and pasely or basil pasta sauce, with some optional variations.| willj.net
The weakest point of any security system effectively dictates how strong the whole system is, as demonstrated by a padlock with a flaw.| willj.net
For fun I made a random graph| willj.net
I'm experimenting with graphs and I needed to find out if two nodes in an rgl graph were connected| willj.net
Getting the servos working for my camera gimbal| willj.net
A couple of ruby one-liners for dumping out the content of a github commit hook payload| willj.net
I needed s3cmd to sync some local files to a remove S3 bucket and had to work out the IAM permissions to allow this.| willj.net
My robot featyres on the Raspberry Pi foundation blog and Polulu blogs.| willj.net
I took my robot to Rubyconf, it was popular.| willj.net
I test the prototype robot ping-pong ball lifter arm and design a new motor driver circuit.| willj.net
I control my robot remotely for the first time.| willj.net
3d printing can be an iterative process| willj.net
I've re-designed the robot base to be more robust.| willj.net
Running the robot circuitry off a battery for the first time.| willj.net
Assembling the Ping-Pong robot ball hopper| willj.net
I needed to re-design the motor mounts on the robot base, they didn't hold the motors securely enough and tended to shift around.| willj.net
Testing the Raspberry Pi camera mount| willj.net
Testing the power requirements of my robot and updating the mount for the Raspberry pi.| willj.net
Increasing the field of view of the Raspberry Pi camera with cheap phone camera lenses| willj.net
I finished 3d printing the first prototype of my robot base| willj.net
I switched from Sketchup to OpenSCAD| willj.net
I 3D printed a track mount for my pololu tracks.| willj.net
The Hackspace 3D printer in action| willj.net
Designing a track mount| willj.net
I put together my MotorPiTX board and attached it to my robot.| willj.net
Designing a track mount robot, new motors| willj.net
A Go library for controlling the Piglow board with example programs.| willj.net
BERT is an interesting data serialisation format, I learn how to create them in Go.| willj.net
An example command line command to create animated gifs with imagemagick| willj.net
Some animated gifs created from some of the photos I took at Railsberry| willj.net
Do you want to see Paula Deen riding a sausage? Because now you can.| willj.net
Easy socat command for testing local HTTP connections listening on a UNIX socket.| willj.net
A comparison of Sendgrid, AES SES, Postmark and Mailgun pricing| willj.net
I compared all Sendgrid and Amazon SES prices to see who was cheaper| willj.net
Re-writing query parameters in Nginx is pretty simple with this small config change.| willj.net
An interesting article on tricks of the trade| willj.net
I guess it's honest| willj.net
99 bottles of beer codegolf| willj.net
How to fix the 'Memory card error' on the Canon IXUS 400 / S3 with a couple of small screwdrivers.| willj.net
I bought a Hard Disc platter from 1978, it's cool.| willj.net
The BUFFERS option to Postgres' EXPLAIN command can help you work out where queries are using lots of IO. learn how to use this to optimize your SQL.| willj.net