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: https://www.google.com/get/cardboard/viewerprofilegenerator/

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.

Maths is fun

Everyone likes different things, and that’s okay.

The important thing is to recognise that some people will find things interesting, which you have no interest in whatsoever, and vice versa. This is important, and probably very advantageous from an evolutionary point of view. No-one can be an expert at everything, so it helps if we specialise, and if we all liked the same things, no-one would do the other stuff.

All of the foregoing is so that when I say that on my recent holiday I did some recreational maths, you won’t give me a hard time about it. The maths I did is here: Time required to drain a tank

While there are plenty of references for the simplest form of this calculation, what you get here is:

  1. A complete derivation
  2. Inclusion of friction losses through fittings and valves
  3. Consideration of non-atmospheric (pressurised) tanks
  4. Not having to wade through forum posts of vague queries, unhelpful half-answers, and opinions from people who don’t really understand physics (and probably shouldn’t be on that sort of forum to begin with).

I’ve also updated my menu bar at the top of the page, to try to make some of my questionable content easier to access.

Hopefully soon I’ll make time to do a few more posts, but since that involves actually finishing some of my projects so that I have something to blog about, it might be a couple of weeks before I have anything really interesting to say.

Graph of the Week: The Bagel Graph

There are many traits that are prevalent amongst engineers (there are plenty of jokes about this, normally told with glee by lesser humans), but i think there is possibly only one which appears to be universal:
We love free food.

Most engineers are honest people, who are not open to corruption, but they will do things for food that they would never do for money. As a result, it is common practise for equipment suppliers to come in to our offices to present “lunch and learn” sessions. While these sessions aren’t going to sway us to use a certain product (we are generally, after all, technophiles, and will always go for the technically superior product), the mention of a free lunch does ensure that the vendors get a room full of engineers who are too busy eating to ask annoying questions.

After these lunch and learns, we will discuss the merits of the presentation amongst ourselves: starting with the quality of the food, then on to the quality of the equipment being demonstrated.

But when you get engineers doing technical evaluations on food… weird things happen…

I was telling my wife about one such Lunch-and-learn, and the duck & coleslaw bagel that I ate:
“You know what the best thing about a good bagel is?” I asked her, as we ate dinner.
“What?” She asked, and really should have known better.
“The bit in the middle where there is a hole in the bagel, but the filling continues… actually, there’s probably a graph for that…” I mused.
“You don’t need to graph it, baby” she said, wishing she wasn’t just dead wrong.
“Oh yes, my little turnip. Yes I do…” I turned to the whiteboard on our kitchen wall…

I present to you… The Bagel Graph


(Filling as a ratio to bagel bread. Apologies for the quality of the graph, I tried to sketch it as neatly as I could on my smartphone).

Steak – Sous Vide done cheap, but done right

Here’s a good technique for cooking steak to exactly the level of doneness that you want. Not only that, but this technique will make dinner parties a LOT easier.

A couple of important pieces of information:

  1. If you leave meat in a water bath at constant temperature, eventually the meat will reach that temperature the whole way through.
  2. When cooking meat, the doneness is dependent on temperature, not time.
  3. Food safe temperature for cooking/maintaining hot food is 60°C or greater (Australia, different rules may apply elsewhere).

The practical upshot of this, is that you can sous vide a steak for an extended period of time, and as long as you can maintain the minimum temperature above 60°C, and ensure that the maximum temperature doesn’t go above that required for the level of doneness that you want, you won’t get food poisoning and the meat will be perfectly cooked all the way through.

According to my friend Adrian Richardson (okay, we’re not friends, but he’s got a good book, a good TV show, and we share a lot of the same feelings about butter and cooked meat), the doneness of meat versus temperature is as follows:

  • Rare                 35°C
  • Medium-rare    45°C
  • Medium            55°C
  • Medium-well     65°C
  • Well done         75°C

So if you sous vide your steak at 60°C (individually, or in the form of a big old slab of meat), you can put the steak into the water bath several hours before dinner is due. Then 5 minutes before dinner, get your frying pan very hot, and sear both sides of your steak. Ideally this searing should be as hot and quick as possible, to avoid cooking the rest of your steak any further. That is, of course, unless some of your guests prefer their meat more cooked; in this case, the majority of the cooking is already done, and you can just cook these steaks a bit further through. If ALL of your guests like their steaks cooked further, simply set the water bath at a higher temperature so that this level of doneness is your starting point.

The best thing about this technique is that you can have all of your steaks ready to go, with only finishing required to serve them up. This is great for when you are expecting guests who are known to be tardy.

Now, how do we sous vide cheaply? Buy a cheap deep-frier (check that it’s safe to use with water instead of oil – I take no responsibility for anyone doing this using the wrong type of equipment and something bad happening). Set the deep frier to very low, and monitor using a digital thermometer. My deep frier can achieve accurate control with +/-2.5°C precision. This allowed me to cook a chunk of meat at 60°C with some excursions down to 55°C (yes, I should have probably gone 60-65°C, for food safety, but… Meh)

Here’s an example of some awesome wagyu rib fillet that I cooked last weekend:


My meat – Wagyu rib fillet, vacuum sealed


almost 1.4kg for four people. mmmmm


$25 deep frier


Set the frier to very low temperature and use a digital thermometer to monitor

Note: If you’re going to use a deep frier as a sous vide machine, first MAKE SURE IT’S SAFE TO PUT WATER IN. In my machine, the heating element is inside stainless steel tube and it’s water tight.


Meat cooked to 60°C


perfectly cooked to Medium, all the way through


A quick sear in a very hot pan on my induction cooktop’s highest heat setting




mmm mmm mmmmmmm

Excel 2010 – Autofill Series not working with filtered columns

Here’s a fiddly little feature of Excel 2010 which really gives me the irrits. If you have applied a Filter to columns in your spreadsheet, and you have then filtered by one or more of the columns, you can no longer use Autofill. I don’t know why this is a thing that must happen, but it just seems to be the way that the Microsoft decided we must want it to work.

And frankly, it’s our own fault for not wanting to do things the way Microsoft think we should want to do things, right?

here’s an example:

started list

Let’s say I’ve started a simple list, and I want to Autofill one of the columns…

autofill works

Autofill works just fine. And isn’t it a useful feature?

filter working

Now let’s say I’ve applied a filter first… still works okay.

filter not working 1

But imagine I’ve had the audacity to filter out one or more of the rows first… see that pop-up text… impending stupidity.

filter not working 2

Argh! Why do you have to be so stupid?!

I just thought I’d share this, because when I first decided to look into weird issues with Auto Fill not working, I couldn’t actually find ANY pages saying “by the way, if you filter your columns, Auto Fill won’t work”. Typical of the internet: a hundred pages explaining how to use the most basic features (i.e. “if you drag the little dot at the corner, you can autofill data in a series”), but not one easily accessible hint regarding unusual issues.

Stupid Excel.

No I didn’t mean that, baby, you know I love you!

Digitising Graphs – Turning Paper Graphs into Functions

I thought I’d write a short guide to anyone who is, like I once was, looking to turn a graphed curve into a mathematical function. There are many reasons why one might do this, but they boil down into one of two fundamental motivators:

  1. Insufficient data on how the curve was produced; or
  2. Too lazy/not enough time to sit down and figure out the maths behind the curve from first principles or known mathematical models

One could argue that Reason 1 actually a subset of Reason 2, because if you really made the effort, you could figure it out… But being lazy is a perfectly good reason, and exactly why people have made the software used in this guide.

In this example, we’ll look at one of the graphs from AS1403 – Australian Standard for Design of Rotating Steel Shafts. We shan’t look at all of them, because I can’t be bothered explaining the process of interpolating between multiple curves on a single chart. If anyone’s interested in that, leave a comment. Here’s the Size Factor chart:

AS1403 - Ks Size Factor

First, use your favourite screen capture software (or take a screen shot and trim in paint) to save the graph as a .bmp file. I suggest

The next step for turning this chart into a mathematical function is to convert it into a series of datapoints. I use “Engauge”, which is a free software package. Unfortunately there are some bugs with Engauge. In particular, to use this software you have to locate and install “Qt3Support4.dll”. Fortunately the folks at bConverged have done the hard work for us, and compiled a build which takes care of these issues, here: http://www.bconverged.com/download.php

Once you’ve installed the software, click File >> Import File >> then select the graph image that you want to import.

The graph should come in, with a heap of green lines all over it. These green lines are the curve/line sections that Engauge has automatically detected.

step 1 - import

On the toolbar, there are a number of tools for selecting points on your curve.

Engauge buttons

First, click the “Axis Point” tool. This will allow you to define the three points which establish the coordinate system for your chart. In the example below, I’ve set the Origin, and extreme points on the horizontal and vertical axes as my points. Always pick the extreme points on your axes, for greater accuracy. I also recommend zooming in (select zoom percent in the tool bar) when placing the points, to ensure accurate positioning. Remember to always check the actual coordinates of these points. You’ll notice that the vertical axis starts at a value of 1.0; this means that the Origin is a (0,1.0) and the furthest horizontal axis point is as (250,1.0). The red crosses in the photo below are the Axis Points.

step 2 - axis points

Next use the “Select Section” tool to select segments of the curve (as identified by Engauge), for quick filling of points. You can then use the Curve Point tool (button with the little blue crosses) to add extra points, and use the Arrow tool to relocate points (or select them for deletion). The blue crosses are selected data points:

step 3 - select segments and adjust points

Now at this point, it’s worth going to Settings >> Curves. This will allow you to Rename the curve which contains the datapoints that you’ve selected. It also lets you define new curves. You can later use the drop-down box in the toolbar to select different curve names, so that you can add points to those other curves. Doing so means that when you export your curve, the set of data points will be appropriately labelled, and you can export multiple curves from a single file.

Now click File >> Export File As >> then name your file and save it. I like to save as a .CSV file, for use in excel.

step 5 - CSV in excelNext create an X-Y scatter of the exported points, and add a trend-line (selecting the curve type appropriate, and adjusting to get a reasonable R² value. Right Click on trendline >> Format Trendline >> select the option to “display equation on chart” and “Display R-Squared value on chart”. Now you may notice that the equation is displayed in scientific notation with very few significant digits. This caught me out the first time, and gave me a final function that was WAY off the chart…

Low Resolution Equation

Next, right click on the trendline label text (equation and R²) >> Format Trendline Label. Under the “Number” tab, set the Category to “Number”, and adjust the number to show sufficient significant digits for each coefficient in the equation (for this equation I went 10, because there are some very small coefficients). If you don’t do this, you won’t have enough significant digits for your equation to work, and the results will be off by a significant margin.

Now you’ll have a formula in this general format: “y = 0.0000000000×5 – 0.0000000035×4 + 0.0000012276×3 – 0.0002226645×2 + 0.0219923943x + 0.7781145214”

Copy and paste that into a cell, delete the “y” and replace each “x” with a reference to the cell next to it and raise the exponent. i.e. “= 0*D3^5 – 0.0000000035*D3^4 + 0.0000012276*D3^3 – 0.0002226645*D3^2 + 0.0219923943*D3 + 0.7781145214”

This formula is your digitised graph. Congratulations! Type you should be able to change the value in your referenced cell, and the result will be pretty close to what you’d measure from the chart (even more accurate, if you’ve done it right).

Step 6 - forula in action

If people don’t trust your digitisation skills, you can set the background of the chart to No Fill, and lay it over the top of the original chart, and even plot on any key points of interest (i.e. a know X value and calculated Y value) to prove the fidelity of your equation.

You can also turn these formulas into User Defined Functions, for easy use within calculation sheets. For info on User Defined Functions in Excel, see my previous post here, or google the topic.

Cheap Desoldering Tool: S-998P

I do more soldering than the average person, but less than I’d like to. I don’t do as much as I’d like to because I don’t have as much time as I’d like to work on my projects.

An unfortunate side-effect of the two facts above, is that I sometimes rush my electronics and end up with the odd solder that I wish I hadn’t done. I also do a bit of scrounging (old printers, etc), which brings me across a number of soldered contacts that I wish to undo, to free parts of interest.

You ever tried to do a heap of desoldering with a manual hand pump and soldering iron?

manual desoldering pump

It works, but it’s a bit of a pain. It never seems to remove 100% of the solder, which means that when it cools and solidifies half a second later, it holds the electrical component in place. I often end up running out of hands trying to pull the component out while I’m still holding the soldering iron against the contact.

Unfortunately, because I don’t do a HUGE amount of desoldering, I don’t want to spend a huge amount on a nice new desoldering tool. So I bought an electric vacuum soldering pump from Aliexpress. I was skeptical, and wasn’t entirely sure that I was going to receive a tool worth talking about. Because of this doubt, however, I decided that maybe it was worth talking about one way or the other, to help anyone else who is in the same position.


This is the S-998P, which has the following features:

  • Dual-diaphragh vacuum pump (10W)
  • 90W heating element (claims to head up to 350°C in 1 minute)
  • Temperature control (claims to go from 350°C to 450°C)
  • I got the 220V model, with Australian plug

Why did I choose this model? Continuous vacuum (via dual diapragm pump), high temperature and fast heating (via 90W heating element), and convenient package.

I won’t wax poetic, but my short review is:

  • Extracted sufficient solder to allow components to be easily removed (although had some difficulties with smaller, precise solders, as commented on below)
  • Has ample vacuum pressure/flow for my desoldering needs.
  • Heats up quickly, and will melt a large solder connection in a few seconds.
  • Temperature control works well enough for me (i.e. crank to maximum and leave it there).
  • I got this tool with a 1mm nozzle, which is the smallest available, but still large enough to go over the legs of a through-mounted component.
  • Easy to use and convenient, having all of the equipment inside the hand-piece.

The only issue that I have, is that it’s difficult to desolder small contacts on manufactured circuit boards. I think the main problem is that the nozzle couldn’t get enough contact on these precise solders to apply sufficient heat. I am sure I’ll figure out the right technique for this, but as it’s a function of the nozzle size, not necessarily the heat or vacuum applied, I don’t think I would’ve had better luck with a more expensive desoldering tool or full-on desoldering station.

All in all, I think this tool was worth the $AU135 that I spent on it, and will save me plenty of time on future projects.

For anyone considering one of the cheaper desoldering tools online, this one (S-998P) worked for me. It may or may not be suited for commercial work, but it’s definitely fine for a hobbyist (and you can’t argue with the price tag!).