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.

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

20140711_144613

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.

20140711_143824

Battery installed:

20140711_143907

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

20140711_143748

For the 3D model of the batter compartment cover, refer to the design on thingiverse: http://www.thingiverse.com/thing:392664/

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: https://teslaandi.wordpress.com/2014/07/18/12-v-modification-for-nerf-stryfe/

 

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.

http://www.thingiverse.com/thing:347759

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

1 - Before

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

Baby’s First Graph

This evening, I was curious about what my unborn child was up to, and my wife said that it was wriggling a bit.

“Wriggling a bit”, is it? I’ve never had someone growing inside me, so unfortunately I don’t really know what an awesome baby “wriggling a bit” feels like. So like any engineer, I defaulted to graphing it.

With one of the many free Accelerometer Logging apps on the android app store, I started taking some measurements. The baby at this point wasn’t doing much, but I perservered (sorry: WE persevered… through this my wife kindly sat propped up with my mobile phone perched on her belly while I tried to get a reading).

Side note: I remarked on how interesting it was to watch the Sine wave rising and falling on the Z accelerometer as my wife was breathing. She asked how I knew what the different wave(form)s looked like. I was nonplussed. “Do you not?”

It’s not the baby’s FIRST kick, but here is the baby’s first RECORDED kick:

 

Baby's First Graph

The blip indicated as “A” was the kick (a nice clear, smooth blip), followed shortly after (section marked “B”) by the shaking as my wife told me that the baby had kicked. Yes it’s a legitimate reading, I saw the phone and belly tremor slightly with the kick, and I saw the blip as it happened.

My wife said that I looked more ecstatic about this than I was the first time I felt it kick. That’s not true, they are both very different milestones, and the first time I felt it kick was very special.

…but this WAS pretty exciting.

The Asymptote

Many years ago, I did my first lot of site work for a project in South Australia. In the middle of nowhere in South Australia. Do you know where Broken Hill is? There’s a town far outside Broken Hill called Cockburn (according to the locals it’s pronounced “Co Burn”, but… well, if you lived there you would call it that, right?), do you know where Cockburn is? No, that’s because it’s the middle of nowhere. Well, to get to this project, you go to the middle of no-where, then you keep driving. Then you take an unmarked turn. Then you take an unmarked turn on a dirt track. Driving down this road makes you feel like you might be the unfortunate victim of something, and end up a character in a made for TV movie.

So I was on site for the early works portion of a construction project. Here’s an indisputable fact for you: When you’re a mechanical engineer, overseeing early works electrical and civil works is one of the least fulfilling jobs there is. Dirt and cables. Great. To make matters worse, the team at that stage was quite small, and I was the youngest person on site by at least a decade. Not very exciting times.

Anyway, eventually things picked up, more work started happening on site. I finally saw some mechanical equipment installed: a sewage treatment plant. That actually counted as an exciting week.

We also had some younger team members join us, which made things easier. Never the less, working on site is tough. No matter how good the work or the team you are doing it with, it’s always hard being away from your girlfriend, friends, family, hobbies, bed, and a decent restaurant. It especially doesn’t help when the uplift that you receive (increase in your hourly pay) is only 10%… “Here you go. Your entire life outside work is only worth 10%”. That feels a little insulting, if you’re not in a good mood. Add to all of this the stress associated with the work and dealing with the idiots that you get paid to deal with, and you can feel a bit worn out.

To help deal with these kinds of stressful situations, one will find a number of ways to cope, for example:

  • Finding someone like minded and of a similar age, to talk rubbish with, go for a run with after work, and generally hang out with in the evenings.
  • Get in good with the nice old ladies in catering, so that you can be sure of a good meal, and maybe get the occasional leftover steak put aside for you for lunch the next day
  • Pilfer biscuits for your room
  • Get decent at darts (when the dart playing contracts administrator is on site), ping-pong (when the table tennis playing civil supervisor is on site), or whatever other entertainment is available in the middle of nowhere.
  • Find a good coffee supply.

When none of that is enough to stop you getting stressed, you just find ways of venting like:

  • Walking out into the field after work has ceased, to inspect the day’s work, and swearing. Loudly.
  • Waiting until a your closest workmate returns to site a few days before you go out on R&R, then emailing him a html file containing a countdown timer showing how soon you’re going on leave, and how LONG they have until they go on leave again. Sure, schadenfreude isn’t pretty, but sometimes it’s okay. Okay?

And if that doesn’t work, hopefully you have a good team who will:

  • Supply you with Pepsi Max and peanuts, and
  • Hide the sharp objects when things just get too much.

These all helped, and I strongly recommend all of them to anyone struggling on site.

And yet…

There’s a certain phenomenon…

I noticed this phenomenon fairly early on, but it wasn’t until I was talking to a work mate one day, and he just got it, that I thought “Maybe it’s an actual thing?”

You see, I’d get to site and be a little bit grumpy about being there. As the days wore on, I’d get incrementally more stressed and angry. Then after a couple of weeks of dealing with idiots, and stress, and stressed idiots, it would feel like the anger would begin to increase exponentially. This is about the time that I lost my “big boy scissors” privileges and be stuck cutting with those plastic bladed toddler scissors. Okay, so maybe it didn’t ACTUALLY come to that, but there were one or two occasions, when my blood sugar went low during this part of the site rotation, that I’m sure my co-workers considered it. So the stress/anger would build until it felt like I was going to explode, and then… I’d hit the asymptote. Suddenly I didn’t care anymore, I was going home in a day or two, it wasn’t my problem. I’d book a table at a nice restaurant with my girlfriend. And I’d dance around the site office saying “hey, I’m going on R&R tomorrow, so F**K the lot of you! HAHAHAHAHAAAA!” In short, all that negative emotion suddenly turned into positive emotion. This feeling would then decline into the normal happiness of being on break, until a day or so before I returned to site, where I’d realise that my break was almost over, and I’d “come down” and get a little depressed. Until I got back to site, at which point my stress/anger level reached unity.

Being an engineer, my first instinct, when confronted with a new “thing”, is to make a graph. Even if I don’t draw a graph, chances are a graph will start trying to plot itself inside my mind. So while talking to this friend, I grabbed a whiteboard marker, and drew a simple graph: Anger versus Time.  It looked like this:

the original asymptote

Okay, so the one I drew wasn’t quite so neat, but the key points were all there.

The most important thing is the “I don’t give a f**k asymptote”, which is it’s scientific name. This is the point where something inside your head changes and you just don’t care, because you are going home soon. This work mate and I had a running joke about “the asymptote”, even though he isn’t particularly mathematical and didn’t know what an asymptote was until I explained it to him.

It’s important to note that when I say “anger”, I’m really talking about any negative emotion. Really, what the graph is showing is the “anger equivalent” of the sum of your mental state. Things like stress, anger, hunger, etc all increase the “anger equivalent”, while things like relaxation, satisfaction, happiness, etc make the equivalent a negative value (any point below the x-axis is a “happy” reading).

I’ve had this in my mind every time I’ve gone to work on site, and I’m sure some people (depending on what your job is like) have even experienced it on a weekly basis.

I recently decided to put some numbers to the asymptote, and here are the equations that I came up with.

Observations

observations

Note: The graph shown above was based on a 3 & 1 roster (3 weeks on, 1 week off), which gives inputs of Cycle Time = 28 (days) and Off Time = 7.

General form of the curve

general form of curve

Derived inputs

derived inputs

I assumed a starting anger level of 1, to normalise the curve. As far as I know there is no SI unit for measuring anger or stress. This allowed me to derive d:

derived d

I then adjusted the value of “a” to get the comedown time, represented by the X intercept, to match the observed come down time stated above. The result is:

derived aThese equations and the selected value of “a” gives a curve that works for all of the standard site rosters that I’ve worked (10&4, 3&1, etc) and even possibly the normal weekly cycle.

So, what inspired me to finally put numbers to this graph that’s been sitting in my head for years? My wife was telling me about the politics at her work, and how she thought that since she’s going on maternity leave in a couple of months she thought that she’d feel happy, but if anything she is just getting more worked up about it, which didn’t make sense. did it?

I grabbed a notepad and pen. “I know what this is,” I said. “It’s a phenomenon I’ve seen before. I think it’s still a while away for you, but when it come’s you’re going to know it. You’re going to hate it briefly, and then you’re going to love it…”

Ladies and gentlemen, I present to you the I Don’t Give A F**K Asymptote.

The Superfluous Bedside Table

Bedside Table with built in colour changing LED night light

Over a year ago, when my wife (then just my girlfriend) and I moved into our new house, we decided to get new bedside tables. Not just for our room, but for the guest room. I rolled my eyes a bit, but her response to this was much the same as my repsonse to her objections to me buying a nerf gun, i.e. “your opinion is noted and rejected, we’re doing it anyway”.

Our strategy was to refresh some old furniture to give us new bedsides. In the end we wound up with:

  1. My side of the bed: a very worn old bedside table that we got cheap, painted, put fabric covering and new handles on the drawers, and mounted a power board on (for the lamp, as well as phone and laptop charger)
  2. Her side of the bed: a very worn old stool, which we nailed back into shape and painted.
  3. Guest bed: an old table thing, which was actually in decent condition, so we just stuck a doily on it.

But in the process of getting these bedside tables, I also bought some bits of perspex and timber slats, which I thought could be turned into something. I’d like to mention that these materials were all “up cycled” materials that I got from a used materials co-op in Brisbane (Reverse Garbage), aside from the electrical bits. I didn’t bother putting these bits together, because I was sick of bedside tables and decided that we already had far more than any sensible household needed, but recently I had some time on my hands, so it finally happened…

  • I cut the perspex into circles (300mm diameter)
  • Drilled 12 holes at 225mm PCD to screw on the timber slats, as well as once central hole to mount a piece of 30mm dowel that I had lying around. The 225mm was calculated to give the largest possible opening to let out the light from the central column, without the column being directly visible.
  • Pre-drilled the timber slats/dowel to take the intended screws.
  • Painted the slats and dowel white (a loathesome job. I hate painting, but I put my personal distaste aside and put together a jig to hold the parts while painting/drying, sanded them, primed and two coates)
  • Wrapped 4m of SMD 5050 RGB Flexible LED Strip around the dowel (I’d bought 5m of this LED strip previously, as well as a remote control dimmer/colour controller)… not sure what I’m go to do with the 1m off cut of LED strip… I’m sure I’ll find a use for it somewhere.
  • Screwed it all together, connected the LED controller, and put it next to the guest bed.

Here are some pictures of the results:

20131029_134820 20131029_134934 20131029_134938 20131029_134941 20131029_134948

The white slats and perspex top let the light out well, but because the light is undirected, it’s not enough to replace a bedside lamp. Never the less, I’ll print out a remote holder to go on the wall, and this will serve as a good night light, as well as a bedside table.

Posted video of the LED going through one of its built in colour cycles: