Graph of the Day #6 – Was It Worth It?

As an engineer, I’m a big fan of efficiency, and of making things easier for myself by automating tasks.

In my personal life, I’m also prone to SOMETIMES overthinking things and putting way too much effort into projects that don’t NECESSARILY have a strong business case for, you know… existing…

One way to avoid time wastage is to ensure that any task I’m automating is paid back in a reasonable time. To aid this, I made the attached graph (again, possibly otherthinking things). For any given repetitive task, look up the time it takes you to complete on the horizontal axis. Trace this up to the line corresponding to how frequently you perform the task. From there, trace across to the vertical axis, to find the amount of time that you can spend automating the task, in order for it to get return on investment within the specified time frame.

I put the graph together as an excel spreadsheet, to let me vary the time period for return on investment; refer to the attached excel file.

So, one of the things that I automated last year was logging in to my work computer. I made a fairly simply Arduino system that scans an RFID tag, and uses that code to generate my login password.

This saves me about 3 s each time I log in, and is expected to do so about 8 times per day (depending on how much time I spend away from my desk). This means that over 3 years, it should save me about 7.5 hours. I think I spent about 6 or 7 hours programming, soldering, and 3D printing the device itself… Success!


Time saving required to automate task

Note: The file needs to be renamed to file type “.xlsm” to make it a macro enabled workbook, if you want the chart labelling macros to work.


Graph of the Day 4 – Just Watch That Exponential Growth Rate

So my brother told me that he has just bought two rabbits for his family…

My advise to his was simple: “sometimes, if you love something (and want to avoif the destruction of your property and the starvation of an entire herd of herbivores), you need to eat it and a select number of its offspring.”

Words to live by.

(As always, if you really need explanatio , leave a comment below)

Graph of the Day 3 – Counterintuitive Dress vs. Stress relationship

I quite liked this one. 

You’d think that the more stressed one is, the more poorly dressed one would appear. If you continued off the end of the graph, you’d probably find that to be true (once you really have NOTHING to wear, or get dumped by your wife and have to fend for yourself), however in the short term, the opposite is true.

When life is hard, low priority jobs like laundry and ironing take a back-seat to other priorities, so you might find yourself wearing clothes to work which you’d normally save for more special occasions.

Sometimes graphing stuff is a great way to discover the truth.

VR Box 2.0 – QR code and vague review

Before christmas I bought myself a smartphone VR viewer (a la Google Cardboard, just fabricated out of plastic instead of cardboard). I spent ages pondering whether I should buy one or not, since I didn’t actually NEED one, and it would just open up a world of new projects that I don’t have time for. In the end I did it, because the $30 or so that it cost would be offset by not being drawn to eBay and Aliexpress all weekend trying to find the best deal and then talking myself out of it. I bought the VR Box 2.0:

vr box 2.0 image

The reasons I picked this unit were fairly simple:

  • No particularly bad reviews
  • Adjustable lens position for both pupillary distance (distance between the centre of your eyes) and focus (distance from lens to eye)
  • Low cost
  • Moderate specs, enough for my purposes
  • Sliding panel for exposing camera
  • Openings for power and headphones

Overall it functions, and you can get a reasonably good VR experience. Some people will complain about the cheaper VR sets not having an immersive enough experience, but I don’t think that a few degrees extra Field Of Vision will really fix that.

Yes, the headset can get a little heavy on the nose, but that’s nothing that can’t be fixed by adjusting the straps or adding a little extra padding.

This headset doesn’t have the built in magnet switch for interactive with applications, so I made up a little dongle with a small rare earth magnet inside. When I bought the headset, it also came with a miniature bluetooth gamepad, and while many apps don’t accept gamepad inputs (for some bizarre and stupid reason), quite a few do.

In fact, the main issue I had with this purchase was dealing with the seller on Aliexpress. See, when the VR Box 2.0 arrived in the mail, I had a look at the sparse documentation, and it didn’t have a QR code for calibrating the Google Cardboard apps to the headset. There was a shrunk down image of a QR code in the pamphlet (which in itself looked like it had been photocopied onto glossy paper, so the image was blurry), but it wasn’t readable by the phone. Naturally I contacted the seller, asking if they could send me a copy of the QR code required. After a several responses along the lines of “the QR code is in the documentation” (which is wasn’t), and “please see the manufacturer’s website” (which could not be found, nor would the seller give me the URL), I told them that I’d have to leave a negative feedback if they didn’t help. They didn’t, so I did.

In the end, I used the Google Cardboard QR Generator:

I use a Samsung Galaxy Note 4 (which has a 145mm screen), and set up the QR code to suit my lens position, so your inputs relating to screen and lens position might be a little different, but the rest should be okay. Here are the values I used:

Primary button type: Magnet

Screen to lens distance: 44 mm

inter-lens distance: 61 mm

Screen vertical alignment: Centre

Distortion coefficients – k1: 0.1

Distortion coefficients – k2: 0.02

Field of View angles: all 50°

Note: if setting up your own QR code for this or another viewer, the fiddliest bit is getting the distortion coefficients set up correctly. These coefficients determine the adjustments for distortion, and need to be set up to ensure that vertical and horizontal lines stay straight, and don’t curve in or out at the edge of the screen. There isn’t a written description of these coefficient, but if you increase/decrease the values significantly you’ll see what they do in the little diagram on the right. k1 I believe sets the distortion for the 2nd power, and k2 sets the distortion coefficient for the 3rd power. For you, this means that if you look at the vertical lines in the VR grid preview (while setting up the QR code parameters), and they are curving in or out, adjust the k1 input until they look pretty straight, particularly in the centre 2/3 of the screen. Then, if the lines are still distorted near the edge of the viewing field, adjust the k2 coefficient in the same direction. If the ends of the lines have distorted too far, just take k2 back the opposite direction instead.

Here’s the QR code that I came up with, and it looks significantly better than the one I used just to test out the headset:

qr_viewer_profile take 2

Overall, I’m happy with it! but… Now I have to figure out how to write a VR app… Yet another project. Sigh.

If you found this blog post useful at all, I encourage you to check out my first android app: The Lightbulb Audit . As I said, it’s my first app, so please leave positive reviews. If you have any criticisms, comments, bugs or suggestions, please leave them as a comment on my corresponding post on this blog: here.

Nerf Stryfe 9V modification

Recently, as a fun afternoon’s diversion, a good friend bought each of us a Nerf Stryfe.

For those of you unfamiliar with the Stryfe, it’s a foam dart gun, using a twin fly-wheel arrangement to fire the darts. When the lower trigger (located underneath the middle finger) is depressed and held on, the flywheels motors switch on and after a few seconds reach their maximum speed. The main trigger is then pulled, pushing the loaded dart into the gap between the flywheels, which grip the dart and fire it forward.

The stryfe takes 4 AA batteries, but I wanted to run it on a 9V battery, because that’s the largest battery I had laying around that wasn’t half as big as the gun itself. Below is a picture of my stryfe with a modified battery compartment cover, to allow the wider 9V battery to be installed. Note: there are plenty of posts out there about modifying the internals, but I didn’t bother going to overboard (though there are some resistors inside that you may want to remove).


I just soldered a standard 9V battery connector onto the rearmost battery terminals, as shown below. This allows me to use the 9V battery, while still allowing me to go back to 4 AA batteries if I decide to.

Note that you also have to cut out a section of the battery divider (between the two sliding orange battery restraints, see picture below), in order to make space for the 9V battery.


Battery installed:


Original battery compartment cover, and my 3D printed cover.


For the 3D model of the batter compartment cover, refer to the design on thingiverse:

Note: If you’re going to run your Nerf on greater than 12V, you will need to deal with the PPTC inside (basically an auto-resetting fuse). I put up a post about that here:


Note: when modifying a Nerf, I find it handy to keep the cardboard box that it came in, and as I remove each screw, I press it into the side of the box, in the corresponding location on the picture of the gun. This way I never end up accidentally putting a short screw where a long screw should go, or vice-versa.

Extreme Backgammon, v0.1

Extreme Bakgammon v0.1

I’ve been meaning to test run Extreme Backgammon for some time, but the game shop near my house is consistently out of n sided dice. When I was pottering around the shops recently and I saw that they actually had some d4, d8 and d12 in stock, I jumped at the opportunity to invest $3 in some new dice. No d10 or d20 though… what the hell kind of games shop doesn’t have d20?

Anyway, having a new set of dice, I convinced my wife to test-run Extreme Backgammon. And you know what? it’s even more extreme than I had anticipated. Admittedly, it’s not VERY extreme on an absolute scale, but in terms of board games, it’s pretty good.

So what is Extreme Backgammon v0.1? let me explain. It’s basically the same as regular backgammon, with the following changes:

  • To play, you need 2d6, 3d4, 1d12 and 1d8.
  • Each turn you have to roll a total of 12 dice points (one point per side of the dice that you roll), and these points can be made up however you want. For example, you could roll 2d6, or 3d4, or 1d8 & 1d4, or 1d12.
  • Doubles do not get you extra moves if you roll a total of 3 dice.
  • Triples do not get you extra moves, just the three moves that you rolled.
  • If you roll doubles on dissimilar dice, it is considered the same as regular doubles (i.e. total of 4 moves of whatever number was rolled)
  • When you roll to come in from the bar, you can only come into the opponent’s home quarter (i.e. if you roll greater than six on a d8 or d12, you cannot use that >6 roll to come back onto the board).
  • When you are bearing off the board, you still need to have all of your pieces in your home quarter to come off.

And that’s about it. v0.2 will include rules for roll modifiers (i.e. +1, -1), but for now, I think these rules work well and add an interesting twist to the greatest board game on earth.

Don’t get me wrong, I’m a big fan of Backgammon and I can be a bit of a purist at times, but… Who doesn’t love four-sided dice? Tetrahedrons, baby!

The choice of dice gives you a range of changing strategies, but the dice you roll will inevitably be governed by the position of the dice, for example:

  • 2d6 is still a great starting roll, as there are good options for using double six, double 3, 3&1, etc.
  • 1d12 is only really useful if you have to get past a large group of blocked off points in front of a piece (if the next 6 pieces are fairly blocked off, but the 6 after that are fairly free, use 1d12)
  • 3d4  averages a larger total roll than the other options, and it is great for getting past blocked off points or taking off an opponent’s pieces, because you get multiple small moves that let you hit the points you need. The downside is that you don’t have the chance to roll doubles for extra moves. 3d4 is also good if you need to come in after being taken off the board and the low points are free.
  • 1d8 & 1d4 is good for bearing off if you have lots of pieces on your 5 or 6 point, as it lets you skew your roll a little higher on one of your dice.
Good use of 3d4 to come back onto the board.

Good use of 3d4 to come back onto the board.


Note: For those of you who didn’t play Dungeons and Dragons or similar RPGs when you were young (I pity the fools), xdy = roll x dice with y sides each. So when I say 1d6 I means 1 six-sided dice, 3d4 means 3 four-sided dice, etc.

If people just designed things right to begin with, I wouldn’t have to fix it for them.

Having recently put in a new kitchen, it was immediately apparent to my wife that the wooden stools that we owned were not in ANY WAY suitable. For anything. Not even worth turning into kindling.

So we decided to buy some new stools/chairs. They had to have backs on them, rather than just being stools, so that we could sit comfortably in them for an extended period of time. They also had to be at the correct height for the new kitchen island (900mm high, 40mm thick benchtop), which (I discovered after experimenting with the wooden stools and a hacksaw) is exactly 650mm. Now here’s what I have since learned about chairs and stools:

  • They’re too damn expensive. Even the replicas. And expecially the “fancy” replicas (yeah. apparently that’s a thing too).
  • Most of them are far to unstable to be so expensive.
  • Most of them are far too uncomfortable to be so unstable.
  • They are all the wrong height

Despite these difficulties, we found some chairs that were comfortable, stable, and not QUITE expensive enough to make me cry a little bit when no-one else was around. but of course, they were the wrong height. It was a 70cm (-ish) Bertoia chrome “replica” chair. I say it was a replica chair, but… it still behaved like a chair when I sat on it, so I’m not exactly sure what that’s all about…

I decided that the best option was to get the right chair, and then just fix their design flaw, but cutting 55mm off the height of the chair. We bought one chair to make sure I could do this without completely wrecking the chair, and once I proved that it was fine, we bought another three.

Since I didn’t want to waste that much money, I did the following:

  • Took some careful measurements of the height to the top of the cushion where the thigh rests, and the angle of the chair legs.
  • Took the measurements again.
  • Designed a mitre block to act as a guide while cutting.
  • Printed the mitre block on my 3D printer
  • Cut the legs to the correct length.
  • Re-capped the legs.
  • Designed and printed a replacement cap for one leg that came with a broken cap.
  • Sat and went “Ahhh”.

The mitre block only needed to cut perpendicularly, since the caps only fit square to the leg. I made two blocks: one for the front legs, one for the rear legs. Realistically, I didn’t need to. The front legs, being at 81.5° to the ground, needed 55.6mm cut off. The rear legs, being at 76.5° to the ground, needed 56.6mm cut off. But, I made two different mitre blocks anyway, just for the hell of it. I made sure the hole through the blocks fit easily, but not loosely, around the leg of the chairs, and provided an open section to allow the block to be clamped to the leg of the chair. To see what the block looked like, check out the Thingiverse files.

Here are some photos of the chairs, and the process:

1 - Before


2 - jig going on

Jig going on

3 - jib clamped in place

Jig clamped in place

4 - cutting leg

Cutting the leg

7 - first chair complete

First chair complete


8 - four chairs complete

Four chairs complete

9 - chairs at correct height

Chairs at correct height


And some photos of the end cap replacement:

a - damaged end cap

Damaged end cap

b - replacement end cap

Replacement end cap – you can barely tell which one is the replacement…

c - replaced chair leg

Replaced chair leg cap