Reader

Latest posts from blogs I follow

  • Better Python Object Serialization(opens in new tab)

    The Python standard library is full of underappreciated gems. One of them allows for simple and elegant function dispatching based on argument types. This makes it perfect for serialization of arbitrary objects – for example to JSON in web APIs ...

  • Please Fix Your Decorators(opens in new tab)

    If your Python decorator unintentionally changes the signatures of my callables or doesn’t work with class methods, it’s broken and should be fixed. Sadly most decorators are broken because the web is full of bad advice.

  • Bad ux in everyday life: kitchen nightmares(opens in new tab)

    This article was originally posted on the Universal Mind blog in June 2016. It’s come to my attention lately that my kitchen is absolutely riddled with poor experiences. Most of the appliances and apparatus one uses on a day-to-day basis ...

  • Conditional Python Dependencies(opens in new tab)

    Since the inception of wheels that install Python packages without executing arbitrary code, we need a static way to encode conditional dependencies for our packages. Thanks to PEP 508 we do have a blessed way but sadly the prevalence of ...

  • Python 3 in 2016(opens in new tab)

    My completely anecdotal view on the state of Python 3 in 2016. Based on my own recent experience, observations, and exchanges with other members of the Python community.

  • Testing & Packaging(opens in new tab)

    How to ensure that your tests run code that you think they are running, and how to measure your coverage over multiple tox runs (in parallel!).

  • Random graph(opens in new tab)

    Random graph, from playing around with RGL in Ruby. I like it, but it's pointless

  • How to find if two nodes are connected in an RGL graph(opens in new tab)

    Say you have a graph like this: A simple graph How do you find out if there is a path between any of the two nodes? By using a breadth-first search: require 'rgl/implicit' require 'rgl/traversal' vertices = ["one", "two", "three"] ...

  • Agile for the rest of us(opens in new tab)

    This article was originally written for the Fusionbox blog in January 2015. The Fusionbox process takes many pages from the Great Big Book of Agile Methodology to streamline and modernize the production of web content, etcetera, but for the folks ...

  • virtualenv Lives!(opens in new tab)

    Setting up Python to the point to be able install packages from PyPI can be annoying and time-intensive. Even worse are OS-provided installations that start throwing cryptic error messages. Especially desktops are prone to that but it’s possible to break ...

  • I got my pan tilt servos working(opens in new tab)

    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.

  • Testing Github commit hook one liners(opens in new tab)

    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 ...

  • AWS IAM Policy for allowing s3cmd to sync to an S3 bucket(opens in new tab)

    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 ...

  • The Sorry State Of SSL(opens in new tab)

    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 OpenSSL Verification Surprises(opens in new tab)

    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 ...

  • Ping-Pong Press!(opens in new tab)

    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!

  • Robot at RubyConf(opens in new tab)

    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 ...

  • Prototype lifter arm(opens in new tab)

    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 ...

  • First robot remote driving test(opens in new tab)

    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 ...

  • Rejects and prototypes(opens in new tab)

    Prototypes and rejects from the 3d printer. All part of the design process for my robot: Rejected and prototype 3D printed componenets

  • New robot base design and completed prototype arm assembly(opens in new tab)

    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, ...

  • Testing the new battery + lifter arm circuit(opens in new tab)

    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. ...

  • An assembled ping-pong robot hopper(opens in new tab)

    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 ...

  • Testing new motor mounts(opens in new tab)

    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 ...

  • Raspberry Pi camera mount + lens holder(opens in new tab)

    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. ...

  • New Pi mount, and testing the power requirements(opens in new tab)

    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 ...

  • Lenses(opens in new tab)

    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 ...

  • First prototype robot base(opens in new tab)

    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 ...

  • OpenSCAD robot base design(opens in new tab)

    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 ...

  • Designing a track mount(opens in new tab)

    Designing a track mount for my pololu caterpillar tracks. Sketchup is trying very hard to prevent me. Pololu track mount design in progress

  • Secret project - MotorPiTX motor board(opens in new tab)

    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 ...