Git: Managing hooks(opens in new tab)
Curated river of news
Latest posts from blogs I follow
I’m making a simple camera gimbal and tonight I wired up the right analog stick on my xbox controller to control the pan/tilt servos: Tomorrow I will print out a prototype gimbal structure.
A couple of ruby one-liners for dumping out the content of a github commit hook payload: For hooks that use type application/json: $ ruby -rpp -rjson -rsinatra -e 'set :port, 8000; post "/*" do; pp JSON(request.body.read); end' For hooks that ...
It’s a good idea to set an IAM access policy for anything that accesses AWS using your account details, I wanted to do this for s3cmd syncing a local directory to an s3 bucket. There are a number of posts ...
TLS is the best technology we have for securing our communications. It comes with many sharp edges though. This talk tries to jumpstart a rough understanding and these links should help you to complete the picture.
Apple ships a patched version of OpenSSL with macOS. If no precautions are taken, their changes rob you of the power to choose your trusted certificate authorities (CAs) and break the semantics of a callback that can be used for ...
My robot was written about recently on the Raspberry Pi foundation blog (now seemingly removed 😢, but still available on archive.org), and now on the Pololu blog too, the place I originally got my tracks from!
I took my robot to RubyConf. It’s not really Ruby related, but I figured it would go down like a robot at a programmers conference… So I took the robot apart, packed it away and headed to Miami: The view ...
I added a prototype lifter arm to my robot yesterday. It needs re-doing (it’s unreliable and heavy) but it works for now. I’m using a new motor driver circuit for it as I burned out the SN754410 motor driver I ...
I programmed some remote control software using a Golang receiving program on the robot and a ruby control client using my gamepad ruby gem and an Xbox 1 controller. It worked OK. It was a bit jerky, there’s no PWM ...
Prototypes and rejects from the 3d printer. All part of the design process for my robot: Rejected and prototype 3D printed componenets
I spent all day at hacman Tuesday and Wednesday printing and tweaking robot parts. I put it all together when I got home. This is the front, the lifter arm has holes to allow me to screw in different attachments, ...
First test of the Raspberry Pi running off battery power with no external supply at all. In the picture the 5000mAh battery is the object at the back with “5000” written on it. My multimeter is measuring the voltage output. ...
Today I printed out and glued together the first iteration of the ping-pong ball hopper that takes up most of the space of the robot. The assembled hopper Full of ping-pong balls, I can get 12-14 in without packing them ...
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. The new mounts are better fitting and include a small wedge that fits between one of the ...
I printed out the front half of my Raspberry Pi camera module mount. It serves two purposes, providing a way of mounting the camera on my robot, and giving me a place to attach the wide-angle lens I’d bought earlier. ...
Testing the robot power requirements Before I pick a battery I need to know what power requirements my robot is going to have so I took it into the hackspace to test. I hooked it up to one of the ...
The Raspberry Pi camera doesn’t have a field of view that is wide enough for my robot, I’d have to mount it really far from my robot to see enough context to make it drivable so I’ve bought some wide ...
The robot base design from my previous post printed OK. Here it is printing: Robot base 3D printing The finished print. The two small separate objects are the motor covers: Completed robot base print The assembled robot, including Raspberry Pi ...
I’ve re-designed a prototype robot mount in OpenSCAD as Sketchup wasn’t up to the job. It took a while, you have to program the model in a text editor so there’s lots of trial and error. Will have to wait ...
It works, but it needs more refinement. Testing the new motor mount
Printing a motor / caterpillar track mount detail The 3d printer at work
Designing a track mount for my pololu caterpillar tracks. Sketchup is trying very hard to prevent me. Pololu track mount design in progress
I soldered together my MotorPiTX motor controller today and fitted it to the robot: The robot with MotorPiTX board It’s a hell of a lot neater than my original effort, and only trails one wire. It goes forwards and backwards ...
One of my new motors. It's about 10mm in diameter I’ve started work on a top-secret project. I can’t really hide the fact that it’s going to be a robot, but I’m not going to say what it is, at ...
Java annotations are syntactic meta-information that can be added to your source code. You can annotate classes, methods, variables, parameters, and even packages. The primary advantage of annotations over Javadoc tags is that they can be reflective. This means the ...
A Piglow glowing A few days ago I got a Piglow. It’s a fairly useless but fun addon board for the Raspberry Pi that has 18 individual user controllable LEDs arranged in Arms/Legs/Tentacles (whatever you want to call them). There ...
A completely incomplete guide to packaging a Python module and sharing it with the world on PyPI.
Google killed its Reader and my beloved Reeder for Mac and iPad officially won’t get updated in time. I think to have found an adequate setup to replace both.
Even though Java 7 introduced a low-level API to watch for file system changes (see the article here), you also have the option of using the Commons IO library from the Apache Foundation, specifically the org.apache.commons.io.monitor package. The first step ...
A list of best practices for writing bash scripts: Use a portable shebang In computing, a shebang is the character sequence consisting of the characters number sign and exclamation mark (#!) at the beginning of a script. (source wikipedia) Use: ...
Contents Introduction The Binary Heap Why use a Heap? The code Defining the data Implementation Testing Introduction In Computer Science, a Priority Queue is an abstract data type similar to a standard Queue, but with a critical distinction: every element ...
Contents Introduction The Algorithm Implementations Scala Python Haskell Introduction One of the earlier challenges from Programming Praxis was the RPN Calculator. The goal is to create a module that evaluates Reverse Polish Notation (RPN) expressions. RPN is a mathematical notation ...
Introduction If you’ve ever tried to write your own calculator, you’ve probably needed a way to convert mathematical expressions written in the usual infix notation into Reverse Polish Notation (RPN). This post walks through that conversion using the classic shunting-yard ...
Update (2026): This was the first 'real article' I ever wrote. It actually dates back to before 2010, though I didn't publish it until later. I’ve made a few tweaks here and there, but the original 'old code' remains. Please ...
My first blog post, in which I am writing Hello World!. #include int main() { long long h = 0x0A646C726F57206FLL; long long e = 0x6C6C6548; printf("%.4s%s", (char*)&e, (char*)&h); return 0; }