New Tricks

By my count Lensley is going into year 8 (jeez) but despite working with all kinds of image and video processing over the years, I only just finally got around to sitting down and grokking ffmpeg’s filter_complex this past week.

While it’s conceptually simple, the syntax documentation is rather dense and unintuitive. Web searches will let you find how to do any number of things, and you can hack your way for most stuff (in the past I’ve used h264_mp4toannexb, various intermediates, and concats to chain things together for example), but recently I found two writeups that were particularly useful in breaking down how -filter_complex works:

One thing to note is that image2’s frame inputs remain stubbornly limiting and it’s tempting to simply do image manipulation externally to pass in, but doing it all in ffmpeg was at least 10x better performance than using ImageMagick for preprocessing. ffmpeg is just stupidly fast. I simply end up writing temporary symlinks and calling the ffmpeg bin, but you can also now conceivably use PyAV in Python which has just recently added filtergraph access to its libffmpeg/libav bindings.

Related: fantastic writeup of optimizing animated GIFs w/ ffmpeg

Another recent “I probably should have sat down and figured this out years ago” moment was finally figuring out single-line multi-hops. I’ve been an “intermediate” level SSH user for a while now, figuring out SOCKS proxying and autossh-based tunneling a long while back. All our Lensley machines automatically reverse tunnel to our config servers and I have both ssh configs and various portmapping scripts to make connecting relatively easy.

However, my access (whether it be connections, port forwarding, or file copying) has always required an extra step for chaining until I stumbled on a post about multi-hop proxying. Now that particular description is confusing as hell, but the secret is in the -t part of the command. Here’s a much clearer description. So now I have a script that lets me connect to a reverse tunneled machine in one command that looks something like:

ssh -t server ssh -t localhost -p $port

Of course, there’s more than one way to skin a cat, and it looks like OpenSSH 7.3, released just a few days ago, has just added a ProxyJump command that makes life easier.

That script I wrote also tests first to see if a machine is available on the local network using curl (better than ping I think. netcat -z would be preferable but even w/ time-out set to 1, it always takes 5 seconds to time out):

curl --silent --fail --show-error --connect-timeout 1 http://$host.local:22/ 2>&1 | grep timed

File Compression Tools

It’s been a long while since I’ve spent much time thinking about file compression tools, but I was running out of space on one of my smaller SSD’s and the culprit was mainly lots of large multi-GB TIFs and PSDs that had accrued in our Lensley Dropbox.

My first thought was xz, since it compresses super well, but I was growing old waiting for files to compress and decided to switch. lrzip seemed like a good option, and performance was much better than xz, and threaded (and with multi-file support and a nice progress UI to boot), but I also happened on another compressor shoot-out page (if you’re interested in this topic, definitely read this, there’s a lot more testing and nice pros/cons list for the apps) which concluded that lbzip2 was a good choice.

I gave it a spin, and sure enough lbzip2 is great. With defaults, it loses a few percentage points when compressing vs lrzip, but it also compresses on average twice as fast, with the kicker being that its archives are fully cross-compatible with bzip2, so pretty much any system can access the archives by default. I’ll be aliasing bzip2 to lbzip2.

(If speed isn’t as important (batch compression) and for max compression of large files, lrzip is probably better. Although a lot of people have been using xz, even with multithreaded support, I still didn’t feel performance was great so for personal use, I’ll probably end up mostly using lbzip2 or lrzip from now on.)

DIY Backpack VR System

After my writeup on battery powering a (portable) PC, I meant to publish this last part shortly after, but ended up with some IRL distractions and have been putting it off since I never ended up really polishing up the mounting. This is way overdue, and in any case, this writeup is much shorter (honestly, almost all the hard stuff is just getting the PC power set up) so I’m just gonna send this out.

When I started this project earlier this year, there wasn’t much out there on backpack VR rigs, and while I still haven’t seen many writeups on DIY rigs (here’s one), several manufacturers have now started to show off VR-targeted backpack/backtop systems:

I’m sure there will be more details (maybe even systems from more manufacturers) this week at Computex. I’m most interested in HP’s system and it has a great looking form-factor and will have hot-swappable batteries. The GPU it uses has yet to be announced – I wonder if it’s a new AMD Polaris part (from what’s leaked so far, AMD is aiming to have relatively low power (100W TDP?) mainstream parts that meet VR min-spec performance.

If you aren’t interested in making a DIY rig, or want something a bit more polished, I highly recommend keeping an eye out, as I suspect this will be a pretty crowded space soon.

In any case, on to the build details. Probably the biggest reason I’ve been putting off publishing is while all the parts are there, I never got around to polishing up the mounting (which would probably involve cutting some acrylic plates/3D printing some fixtures), but it’s time to just get on with it. Here’s what the backpack rig looks like:

DIY VR Backpack

It weighs in at just under 7kg (about 15 lbs) in total (including the Vive components, it’s closer to 5kg w/o), and is surprisingly comfortable when put on. As you can see it’s pretty rough looking – mounting is all just plenty of gaff (the solution to everything that duct tape doesn’t cover) and there aren’t shorter HMD cables available right now, so that’s just looped up. I’m actually also using the link box simply due to the lack of a proper adapter (the HMD/link-box uses a 1.3×3.5mm plug which requires 12V DC power, more on that later).

Here’s the parts run down:

I’m using a Vargo Ti-Arc backpack frame. The full pack is $400, but I was able to buy the frame by itself for $225. I got it because it’s ridiculously light (755g), but having done the mounting now, I suspect I would have been better off with just an ALPS OutdoorZ frame ($80) or even a plain old A.L.I.C.E. frame ($44). For anyone making their own system, I recommend using an open frame so you don’t have to worry about ventilation/heat management.

Due to the way the S4 Mini case works (if you haven’t seen it btw, that Glacier White version is sexy af), you have to point either the CPU or GPU fan into your back. I chose the CPU side, since most VR apps are GPU bound, and it does get a bit toasty after a while. If I were seriously building a backpack rig, well, I’d probably look at taking a gaming notebook apart first, but if on a budget, I’d look at a DTX board w/ 90 degree angled PCIe which would allow the CPU and GPU to both radiate properly.

As previously mentioned, the Vive requires its own 12V power, and since I don’t have any fancy power management for my main system battery, I simply bought a separate cheapie 6000mAh 12V battery ($30). (Note, for a proper build, you could just use use the 12V output from a spare Molex connector from the HDPLEX power board.) I originally wasn’t sure what size DC plug I needed so I just bought a random set of plugs, but if you are looking for the exact plug, you’d ideally want a 1.3×3.5mm female to 5.5×2.1mm male connector. Sadly most of my EE gear is packed up so I don’t really have good measurements for how much power the Vive HMD actually uses in typical VR content.

The last thing you’ll want to do is to disable Steam from automatically launching and instead have SteamVR load at startup. This is pretty easy to do, and once that’s done, you’ll be able to strap the backpack on, and then boot straight into VR. Steam’s Desktop mode works fine w/o any sort of headless ghost. A wireless keyboard/trackpad of some sort is a good idea for input.

So, this is still a fairly involved process (even strapping on a ready-made backpack system might seem dubious) so it might be worth answering the question of “is this actually worth doing?”, and the answer it turns out is, yes, absolutely! The actual experience of having full positional tracking, and being completely untethered within a walkable space is quite frankly, awesome. If you’ve used the Vive much, you’ve probably developed a good “cable sense,” which seems fine, but it’s not until I didn’t have to worry about the cable at all that I realized how much that affected my experience. While a backpack probably isn’t the best for very frantic experiences like Audioshield, for more sedate activities, like hanging around the reef in theBlu or, drawing in Tilt Brush, it’s great. My experiences w/ a fully untethered, tracked VR leaves no doubt in my mind that it’s the way it should be (and has to be, for mainstream adoption), and it’ll be interesting to see where mobile and desktop VR meet.

Obligatory backpack selfie:
backpack selfie!

Note: due to the Rift’s USB 3.0 (required!) camera-based tracking, it’s not currently possible to have an untethered, tracked Oculus experience, as there are no wireless USB 3.0 solutions available (I’ve looked very hard. There are a couple USB 2.0 solutions, and there’s a WSE spec, but no products or even devkits I could get my hands on).

UPDATE: Actually, there’s probably still some good reasons to DIY-build vs buy. More details have come out, and it looks like MSI’s backpack unit which is closest to production is targeted at a very loose 2H16 (holiday season from this report) release date and expected to cost $2-5K at launch. HP’s Omen X VR pack is supposed to be a devkit that will start trickling out this month, but there’s no mention of any consumer release date or pricing. Also, while the press pics have shown it as a tiny unit, the batteries are on an external holster, which is decidedly less sleek. Zotac’s backpack looks like it simply packs a flat mini-ITX system into a mesh backpack and there are no details for release. It’s worth noting that I went back and specced out the price for a full DIY backpack system, and it comes out to under $1300, so that’s something to keep in mind if manufacturers are selling their backpack systems for $2K+.

Update: commercial options (late 2016)

You’re probably better off ordering a TPCAST for the Vive (~$220) than building a backpack PC atm.

Mounting and Copying iPhone Photos via CLI on OS X

Lately, except for the very occasional iTunes full backup, I’ve just been intermittently copying photos from my iPhone via my Linux machines, mounting with Thunar and gvfs.

Recently, I had reason to do a bit of poking about, and it turns out that libimobiledevice, and more specifically, ifuse, is the way to go for scripting. ifuse will mount your iOS device as a virtual file system, and let you copy photos and other media via regular command-line tools like rsync (it can mount the root file system only if your phone is jailbroken). If you want to get this working on arch, it’s very straightforward. You can add a udev rule and basically script to your hearts content. (I’ll probably set up an rsync backup script sometime.)

ifuse also runs on OS X fine, and while installation is a bit more involved, it worked perfectly for me running El Capitan 10.11.5, MacPorts 2.3.4, and osxfuse 2.8.2.

Once it’s installed, you can just run ifuse [/pick/your/mount/folder] and you’re ready to go.

Performance isn’t spectacular, but is reasonable, rsync runs at about 10-15MB/s via USB 3.0 on a Core i7 Mac Mini.

Lackadaisical AWS Migration Notes

We have relatively modest AWS bills w/ Lensley, but it’s been inching upwards and broke $400/mo at the beginning of the year. Originally, I thought this was mostly just due to ever increasing S3 usage, but it turns out that wasn’t the case. After going through and trimming things, we’ll end up saving about $250/mo, which isn’t a huge absolute amount ($3K/yr) but was over 60% of our monthly.

  • Obviously there were a couple EC2 instances hanging around that we didn’t need. One was a bit pernicious since it kept regenerating (not a Spot Request, but actually due to an old Elastic Beanstalk test. Oops.)
  • Our Reserved Instances had lapsed, so everything was 50% more than it should have been. Double oops.
  • Our instances were running old and busted m1’s – with our usage I was able to switch m1.smalls to t2.micros and m1.medium to t2.smalls, cutting costs by 2/3’s (w/ equal Reserved discounts).
  • Note: T2s are HVM only. Migrating from PV to HVM wasn’t too bad, although I also took the opportunity to switch one machine to the new 16.04 LTS (if you don’t have to, don’t – besides some package migrations, there’s also a killer kswapd bug that pegs the CPU)
  • It’s worth noting here that one of the instances was running EBS Magnetic storage. Obviously worth snapshotting and switching over to gp2.
  • We’ve been paying for an ELB and MultiAZ instances but honestly, have never had to use the failover. At the risk of jinxing myself having typed that, I just got rid of them.
  • A few years ago I switched to a Multi-AZ RDS instance for our database. At the time this seemed like a good idea, and while I never had to worry about things, w/ the rollout of gp2 (SSD) EBS w/ plenty of IOPs, it seemed maybe a bit wasteful for minimal convenience. Switching from Multi-AZ db.m1.medium to a t2.medium w/ a 100GB gp2 EBS volume lowers our monthly cost from ~$160/mo to $33/mo
  • Clearing out unused EBS volumes/snapshots, ofc

A big chunk of our savings were the result of getting rid of some redundancy, but since I can count the number of single-AZ outages (we’re in us-west-2 in Oregon) we’ve been affected by over the past 3 or 4 years on a single hand and there’s nothing super-mission critical that can’t live with a few minutes of downtime.

A Few Songs

It’s been a while hasn’t it? Clearing out an old TOLISTEN to backlog. A couple picks that stuck out:

(here’s a nice live cello version also from MBE on KCRW last year)

I’m a big Archie Pelago, the entire Grenier collab album is great.

Bonus Archie Pelago from the commissioned remix that kicked off the collab:

Sprained Ankle is pretty great

One last track:

Day to day, I’m also listening to recommended values of synthy pop/indietronica (like everyone else?):

Building a Battery Powered PC

This is a sort of part two between my write-up building a portable PC the other week and the one on building a backpack VR shenanigan next week (or so). DC powering a PC is sort of a big topic, and I haven’t seen a lot of good guides/writeups online, so I’ll try to be somewhat thorough.

Firstly, this isn’t an Electricity 101 guide (please read up). I’ll also be focusing on DC power. It’s very important to recognize that electricity can easily kill you. Currents as low as 200mA (0.2A) of DC can kill you, and we will be dealing with significantly higher currents. Here’s a good video that has some info and here’s a page that has some electrical safety notes. Please don’t do any electrical work if you don’t know what you’re doing!

Safety Warning:

  • Always unplug before doing any work, including batteries. Note, AC power supplies can remain dangerous even unplugged, but you shouldn’t need to touch those at all within the context of building a DC/battery-powered system.
  • Never leave any exposed wires – always use heatshrink/electrical tape around anything carrying live current.
  • Treat electricity like it can kill you – err, because it can.
  • Don’t cross the streams.

If that last point doesn’t make sense, you should first, make sure you’ve watched Ghostbusters, you philistine, and second, you should make sure you’ve read enough on electrical safety that it does make sense before proceeding. Or not, I can’t stop you.

And now, for some basic theory.

First, while the electrical grid runs on AC power, all your computer components use DC power. Typical internal computer power supplies (form factors like ATX, SFX, etc) convert AC to DC. If you use something like a PicoPSU or HDPLEX, these are DC to DC converters that take a certain input voltage and convert them to an output your computer components will use (typically 12V and 5V). These require a separate external power supply convert AC power to DC power.

Speaking of, here’s a decent summary of AC vs DC power if you are so inclined, and you can also read about what a dick Edison was (Oatmeal form). All this is somewhat academic as all batteries are DC, but it does mean that if you plan on battery powering your computer, you should strongly prefer to use a DC-DC converter board and external power supply, otherwise you would to suffer power-loss going from DC to AC w/ a power inverter, and then an additional AC to DC w/ a standard PC power supply, which is a bit silly and pretty inefficient.

Most PC enthusiasts talk primarily about wattage when discussing power, and while a watt (1 J/s) is the measure of power (the rate of doing work), for our purposes, we actually care more about the relationship a watt has to amperage (flow rate of electric charge) and voltage (difference in charge, or electric pressure).

watts = amps * volts

You can read more about voltage and current or these Quora answers on amps, watts and volts. For a more involved answer, this article, How are watts, ohms, amps, and volts related looks pretty thorough. If you’re more of an equations kind of person, you can see a list of how they relate.

(A slightly tangential relationship is that 1W = 1J / 1S. 1 cal = 4.18J, so 1W is basically the power needed to heat about 240g of water by 1 degree C in a second. Almost all the power consumed by a computer is output as heat.)

Ignoring power factor (or not), you could say that for a computer that averages 300W of power consumption at 110V (regular US AC), you’d need about 2.7A of current. If you were to power the same 300W system from a 19V battery, you would need 15.8A of current. If this is new information, hopefully, this also helps make all those numbers on the wall-wart plugs around your house make more sense now.

With this knowledge in hand, we can roughly figure out how much power you need. While you can adapt an existing PC (and use something like a Kill-a-watt or Watts Up to get ballpark power consumption), if you are building a new system, in practice you’ll be limited by your DC-DC board. The highest performance option commonly available option is the HDPLEX HiFi 250W DC-ATX board with support for “Support 250W with 400W Peak” power (with sufficient cooling, it should be able to handle sustained >250W – I run it regularly at >300W, but obviously that’s out of spec.) The HDPLEX has a wide input range of 16-24VDC, which is perfect considering that a battery’s voltage changes based on charge (if that doesn’t make sense, this article may help explain why).

OK, time to talk batteries.

There are lots of different kinds of batteries, but I’ll run through a few of the more common battery chemistries:

  • Alkaline – these are your old-fashioned coppertops. They’re not rechargeable and completely inapplicable to our discussion
  • Lead Acid – car/marine batteries, also used for UPS’s – they retain charge well and are cheap, but their energy density sucks (you should be getting at least 3-5X w/ Lithium chemistries). They have lots of subtypes (AGM, Gel, etc), and if you are building a non-portable solution you might want to look at these, but it’s obviously not good if portability is a consideration
  • NiMH – better energy density than lead acid, but still, don’t care. These guys have a memory effect and heavy metals (definitely need to recycled/ewasted). I can’t think of a good reason these days to use these (or their even more toxic cousins, NiCds)
  • Li-ion/LiPo – These are the lithium ion batteries that are in pretty much all electronics these days (typically LiCoO2). They have the highest energy density available (until Li-S batteries start popping up), and are standardized at 3.7V nominal, 4.2V max charge per cell. Note, the only difference with “polymers” is referencing the form factor (a polymer pouch vs a cell casing). As you should know from the news or traveling, these can get flamey/explodey if undercharged, overcharged, or otherwise mistreated (temperature, pressure)
  • LiFe – These are worth noting as they have lower energy densities than other Li-ion chemistries (there’s also NMC but you won’t really find those around) but are more stable. These are commonly used in electric bikes and for utility storage and are 3.3V nominal, 3.6V max charge per cell.

For portable power, LiFe’s are an okay (safer, longer cycle life) option, but for energy density (Wh/kg), cost ($/Wh), capacity (Ah), and continuous discharge (A or C), there’s really only one choice – LiPo’s used for RCs and drones are by far the best suited option.

Firstly, breaking down the terms that are most useful (if you want more):

  • Watt-hours (Wh) – simply how many watts/hr a battery can supply. In theory, a 500Wh battery for example would be able to power a 100W system for 5 hours or 250W system for 2 hours. In practice though, the higher your draw (amperage) the less power capacity you have (heat, resistance, etc increase)
  • Amp-hours (Ah) – Wh is typically a computed number from this “actual” capacity number (well, at least how batteries are properly rated; you need to individually measure each battery or even each cell if you want to get the actual actual capacity, which will change over the battery’s cycle lifetime to boot). Wh is Ah * nominal voltage. (BTW, for those wondering what “nominal means” – that’s because the batteries have a range of voltages that is a curve based on their discharged state (and rate))
  • Voltage (V) – your DC-to-DC board takes a certain input voltage. Note, some DC boards like the picoPSU expects 12V and does not do any voltage conversion. While a bit more efficient with steady power, this is a really bad idea with battery power since a 12V nominal battery will probably pass in something like 15V/16V at max charge and less than 12V when it gets low. Also, a lower voltage requires higher amperage. Consuming 240W @ 12V means you need 20A of current, vs a 24V battery only needing 10A.
  • Amperage (A) – this is the current that’s being drawn (or charged). Higher current drawn will negatively effect battery life as temperature and internal resistance increase. If none of what I’m describing makes sense, this guide to LiPo batteries does a good job of giving more background.
  • Capacity/C Rating (C) – this is a standard used by RC/drone batteries in particular for measuring discharge rate. C is a multiplier number against the Ah capacity of a battery. There is typically a continuous and instantaneous/peak discharge number. A 10C 12Ah battery is rated at 120A continuous discharge.
  • Energy Density (Wh/kg) – Watt-hour per kilogram is the standard metric for energy density. Consumer grade RC/drone cells are about 180-200 Wh/kg. LiFe batteries are around 100-120 Wh/kg. Perhaps one day soon, Li-S batteries w/ 400-500 Wh/kg energy densities will show up, but I wouldn’t hold your breath, next-gen battery tech is always coming next year (or better yet, 5-10yrs). Calculating this number is just what’s on the tin: nominal voltage * capacity / weight.
  • Cost Ratio ($/Wh) – Even more obvious. Typically the price decreases as capacity goes up (since there are fixed costs associated w/ a battery). This is most useful for comparing different battery types and seeing if some other characteristic is worthwhile.

I’ve included a spreadsheet of options, but I’ll make this easy and just tell you which one to get. You want to buy a MultiStar High Capacity 6S battery from Hobby King. The 6S wiring gives you a 22.2V nominal voltage (25.2V max, 18.0V min) which puts it squarely in the HDPLEX HiFi 250W DC board‘s 16-24V input range. (If you go with a LiFe battery, a 7S would give you the exact same voltage range as the 6S LiPo.)

The Multistars “only” have a 10C continuous discharge rating (120A for a 12000mAh, 160A for a 16000mAh), which is still 100-140A more current than you should ever need for your PC. You wires will melt long before you touch those amperages. (Oh yeah, definitely take a look the American Wire Gauge (AWG) current ratings (also)). For our purposes 10 gauge is overkill, 12-14 gauge is good, 16 gauge is a bit weak sauce, but you’ll probably get by.)

Next is connectors.

The HDPLEX has a 7.4 x 5.0mm barrel connector. This is a pretty standard jack size and is also used by the Dell 330W and HP 350W power bricks, so no adapters are required if you want to plug into wall power.

RC/drone batteries have tons of different connections for main power. The big Multistars use XT90s (while they look like the XT60 in pictures, and search results may give you one or the other, the XT90 plugs are physically bigger, so don’t get them confused). You probably won’t avoid doing some soldering, but if you get some connectors with cables, you’ll save yourself some trouble.

The Multistars also have a 6S JST-XH secondary plug is used for cell balancing/monitoring while charging (usually up to around 0.5A/cell for balancing). When usinng the battery to power your PC, you will want to stick a voltage monitor or alarm on there, so you know when your charge is low.

To connect the battery, you’ll need to make a 7.4×5.0mm to XT90 cable (I wasn’t able to find any prebuilt ones in my searches). It was actually quickest/cheapest for me to Amazon Prime an $8 90W Dell-compatible power supply and clip off the wire. It has cheezy 16 AWG wires, which isn’t ideal, but it works and I haven’t been motivated to find a better solution. When soldering, make sure your polarities are matched, and you can ignore the ground wire.

Depending on the battery charger, you may also need a banana plug to XT90 cable for charging your battery.

Now, like for the batteries, I’ll just give a recommendation. If you only need to charge a single battery at a time, I can recommend the Ultra Power UP300AC (CA shipping, China shipping) – it gives you great bang/buck w/ up to 300W/20A charging connected to AC. It has a touch screen, and has some data capabilities (I haven’t used them). It also includes everything you need for monitoring, balancing, different battery types, cycling (charge/discharge) and with automatic safety cutoffs.

UPDATE: after <6mo my UP300AC gave up the ghost. I dropped a line but since Warranty service looks like it’ll require roundtripping to/from Shenzen China, I just bought a lower-power/small replacement that should do the job).

Here’s a good 20 minute video that also steps through the basics of charging:

When you charge the battery, do not charge above 1C. For safety, you probably want to have a safety bag/box and/or not charge the batteries unattended.

You should partially discharge the battery if you are going to put it into storage or not use it for a while (you’ll also need to periodically recharge them in that case).

Once you have everything connected up (be sure to test your wires w/ a multimeter for shorts) you’re ready to plug it all in. I’ll just assume it all works the first time. (it did for me 🙂 The one missing component is that you will want to have a battery alarm in the JST-XH plug. I’ll link to some in the BOM, and below there’s already discussion on if you wanted to connect that to report into your computer, blah blah blah. The alarm I’m using gives a disturbingly large alarm (they’re built for drones mostly – you can gaff ’em to make them less annoying) if a cell goes below 3.3V. That should be fine (you can lower it to 3.0V if you want to live on the edge).

Here are some links in case you want to use GPIO and measure voltage but honestly, you’re probably just better off with an external battery alarm:

If you’ve gotten this far, I’ll finish off with a full rundown of the components and costs:

  • $85 – HDPLEX HiFi 250W DC-ATX (nanoATX Series)
    • if you buy directly from them (they have a CA warehouse), request the appropriate PCIe power connector for your video card (by default it comes w/ an 8 & 6+2, but you probably want a 6 & 6)
  • $61 – HP Firebird 350W Power Supply
    • When you don’t feel like plugging in a battery
  • ~$10 – 7.4×5.0mm DC Male Barrel Connector to Male XT90 Connector
    • I feel a bit conflicted on recommendations. For expediency, I Amazon Primed a cheapy $8 power brick, chopped it off, and soldered it to an XT90 connector ($10/5), but this is certainly not rated for more than 5A. Nothing you can readily buy (save for chopping up another 350W power supply) seems to be, however… I have some 10AWG XT90 cables, but those wouldn’t solder well
    • Your best best might be to buy a plug (here or here) and and solder w/ a 12 or 14AWG wire (guide, guide). If this is too daunting, you may want to talk to an Electrician friend, I couldn’t find anything off the shelf.
  • $4 – XT90 to Banana Plug charging cable
    • Of course this may be quicker/easier to just make your own if you already have your soldering iron out.
  • $8 – Battery Voltage Checker/Alarm (alternative)
    • Put these on your JST-XH plug to alert you to when your power is too low
  • $103 – MultiStar High Capacity 6S 12000mAh LiPo
    • You can of course buy any capacity you want, keeping in mind that the max continuous discharge for these guys is 10C. You won’t find anything remotely close in price to this, btw (the Tattu 12000mAh 6S’s for instance are $200)
  • $115 – Ultra Power UP300AC Touch AC/DC Charger
    • $105 if you’re not in a rush for shipping.

Testing with a selection of SteamVR apps I had handy, I was able to run my system for close to 2 hours (CPU averaged 20-50%, and GPU TDP was around 60-80% @ 1300MHz). Under regular usage (web browsing with music, video, non-graphics development) I was able to get just under 5 hours of usage.

Next time I’ll wrap this all up by turning this into an untethered/backpack VR system.

Thoughts on the current state of Bitcoin and Cryptocurrency

I’ve been meaning to summarize my thoughts on the state of Bitcoin/cryptocurrencies for a while, as I’ve been following the topic pretty closely for the past few years (read my Adventures in Bitcoin writeup from 2013), but it’s been somewhat daunting, since there’s so much reference material that needs to be tracked down. This post is a work in progress, but I’ll probably publish things just to get some thoughts out in a relatively timely manner.

First, some disclosures, for the past few years I’ve been long on Bitcoin, but over the past couple months I’ve liquidated all but 1 BTC (old times sake). I currently have positions in Ethereum, Monero, and Dash. If Bitcoin manages to overcome its current issues I will buy back in (but sadly, I don’t think that’ll be likely).

Note: crypto-currencies have always been quite speculative, but I’d extra recommend people to be careful buying in currently as alt-currencies have high correlation/dependencies on bitcoin (the most common way to trade alts is via bitcoin conversion) and things may get bumpy.

Currently, bitcoin price has actually been unusually stable (the most stable 30-day volatility in its history, in fact), and in many other ways (institutional investment, financial infrastructure, end-user client software, day-to-day usefulness) it’s stronger than it’s ever been (and far ahead of any alt-currency competition), however IMO, it’s also in the most precarious/riskiest state since I’ve started seriously tracking it.

Bitcoin will be having its second halving in less than 100 days. This has only happened once before, which ended up being almost a non-event. Prices didn’t move, hash rate remained relatively stable and extra transactions filled the gap. Brian Armstrong (CEO of Coinbase) does a pretty good job of describing why this halving might be different. With full blocks and a cost doubling that may force many miners to drop out, capacity pressures may cause major disruption in transaction processing.

(Aside: Bitcoin Classic (summary) adoption has stalled and is unlikely to ever reach the 75% mining network support it needs; there is also a 28 day grace period, so there is a very tiny window at this point for a switch to happen before the halving even if that supermajority number was reached)

The halving risks are merely a sympton of some more serious issues (or existential crises, depending on your POV) that Bitcoin has been facing for the past year or so:

  • Full blocks leading to transaction processing/capacity limits of the Bitcoin network
  • Development of a “fee market” which has increased tranaction costs, lowered reliability and ease-of-use
  • Inability to generate consensus/evolve the protocol to fix the capacity/scaling issues
  • Exposing multiple bottlenecks/centralizations in a supposedly decentralized system:
    • a tightly knit developer cabal employed almost entirely by a single company
    • the ability for a handful of Chinese mining pool operators to decide network consensus
    • and the central management and censorship of the primary user forums and websites that the community uses for information dissemination, deliberation, and discussion

What began as a disagreement on the technical merits of on/off-chain scaling, has now kicked off (or perhaps merely unearthed) an existential crisis focused on the control of the protocol and the nature of political consensus that doesn’t seem to have clear answers.


On community censorship:


Interesting Reads

Small vs Big Blocks; Scaling

The Most Portable VR Workstation

With the consumer Rift and Vive coming out… (err, now, oops) I figured I should finally get around to publishing a write-up on my portable VR rigs. Last year, I built one based on a Pelican 1430 case (gallery, parts list, kit writeup) that allowed me to travel with a DK2 in a single package that would fit underneath an economy airline seat. I never had a problem traveling with a carry-on backpack and this rig as a personal/laptop bag.

Also, fits under an Economy Seat

Honestly, this worked much better than I expected, and I lugged it around 4 continents without any issues either with airport security or with the hardware itself (astounding considering the parts were all friction fit except for a single 3D-printed clip for the motherboard and screws drilled into the inner lip of the Pelican for the graphics card). The biggest negative of this setup was that it was a bit on the heavy side. Fully packed, it was usually just shy of 8kg (18 lbs), which even with the top-of-the-line Tom Bihn shoulder strap, was a bit tiring. (The Pelican case by itself was 2.6kg!)

The biggest reason for swapping this setup out, however, is that both the consumer Rift and the Vive kits are too big to fit in the Pelican case, so the form factor just didn’t really make sense anymore. The Rift CV1 is the more compact of the two (if you can unscrew the tracking sensor from the stand), but the HMD headband/headphones make it very brittle and will require a bit more thought for packing up (some sort of hatbox with custom foam?). The Vive Pre, despite the extra components actually packs up w/ very little fuss into a small bag:

Now, before I go further, I’ll just mention that if you simply want the simplest VR-ready PC solution, you can order one of the Oculus-recommended or Vive-recommended systems. If you’re looking to build your own/find the cheapest system, you can check out the /r/Oculus “System Build Megathread” (worth a mention is the HP VR PC deal that pops up every so often – you get a lot of hardware for your money). There are lots and lots of options.

If you need a portable system, however, your options are more limited. If you don’t want to build a custom system, then you have basically two options: you can now choose to buy one of the few laptops that are officially recommended for Oculus compatibility that run “desktop” Nvidia GTX 980 GPUs, or pick from a couple vaguely compact Mini-ITX systems.

If you go with the 980 notebook solution, there are a few models out right now, and some more coming out “soon”. AlteredQualia has a pretty complete list laptop models. You should expect to pay $3000-3500 for these systems. One very important thing to note is that these laptops throttle aggressively on battery power and can only run VR content when they are plugged into external power. All the laptops with these GPUs are at least 17″ and it’s worth noting that they are both larger by volume (6L+) and heavier (3.8kg+) than the custom build I’ll be getting to.

Note: You might be able to get away with a non-Optimus 980M laptop, that can be more reasonably priced. If that will work, then the SAGER NP8658-S/CLEVO P650-RG (which supposedly doesn’t have Optimus) would actually take the portability crown – it’s a 15.6″ laptop that is <2.7L and 2.5kg. Also, once next-gen Polaris/Pascal GPU parts make their way into 15″ laptops (come Computex?), laptop form factors will probably be preferred to a portable desktop system if they can run sustained without throttling.

For a pre-built small form factor (SFF) PC, you have basically two “smallest” options. The Alienware X51, which is 10.4L/5.5kg, or the MSI Nightblade MI2, which is 10.2L/8kg. IMO, both of these are unacceptably large and heavy for a truly portable system (by which I’d define as pleasant enough to shoulder-bag or to put into a backpackable system), but I’ll put these out there just for completeness.

Update: MSI’s Vortex G65 (video review) is a 4kg, 6.5L (268mm tall, ~190mm diameter cylinder), $4K system.

We’re almost ready to get to the build, but again, in the interest of saving your time, here’s a nice little table that shows your options:

As you can see, the two custom cases that are available are much smaller than the pre-built SFF systems. While the Logic Supply MC600 (review) is technically a smidgen smaller volume-wise, and is also a bit cheaper, I went with the S4 Mini for a couple reasons. The S4 case is the passion project of a SFF enthusiast and I’d been following along on the case development for quite a while (this little 4-episode mini-doc is great if you’re into hobbyist hardware), so it was nice to support that kind of thing. But also, from a technical perspective the case design is great. It has well-finished and mostly rounded corners, making it very bag-friendly (it was designed to be carried around to LAN parties, etc). It also comes with a default powder-coated finish that is tough as nails (again, perfect for travel). And lastly, being all aluminum, it’s a bit lighter than the steel MC600, while probably being more sturdy.

I’ve been naming my workstations after the Ono-Sendai cyberdecks – this is ono3, and here it is with some props for size reference:


Mostly, I simply moved the items from my Pelican case into the S4 Mini case, but there’s some details that might be worth noting:

  • Final weight for the complete system is 3.4kg. It fits in my 31L Ortlieb MountainX w/ all the rest of the stuff I carry, meaning that I can carry-on the actual VR gear in a separate bag – ideally, I’ll find a hat/bowling ball bag or something that can carry both.
  • All the systems listed except for the MSI Nightblade MI2 use external DC power supplies – the 330W or 350W PS’s will add about an extra liter of volume and extra kg of weight. The HP Voodoo/Firebird 350W is significantly better than the Dell 330W and tends to be cheaper to boot. DC power supplies are actually preferable since it makes external battery power a breeze (tune in next time…)
  • I use an Intel Core i7-4790K CPU. This is a “95W TDP” rated part, but measuring power usage from the wall, there was over an 80W difference from idle at 800MHz to running w/ Turbo disabled at 4GHz. When Running at 4.4GHz Turbo, max power usage went up by another 50W before thermal throttling (neither the Zalman CNPS2X or the Noctua NH-L9i coolers can handle anywhere near that much heat dissipation). If you’re building a new system, I’d recommend a 35W or 65W TDP Skylake, which should be more than enough CPU horsepower for VR workloads
  • The fastest current mini-ITX sized GPU is the R9 Fury Nano, however despite it’s seemingly reasonable 175W TDP rating, its instantaneous power draw can cause system resets (video of tests) w/ the HDPLEX and HP Firebird/Voodoo 350W power supply combo. I use a Galax GTX 970 OC card that’s reasonably priced, and despite not being officially a mini-ITX card, fits fine (better than some of the shorter, but out-of-spec width cards, I imagine)
  • If you buy an S4 for use as a VR workstation, make sure to request HDPLEX mounting for your S4 (some less screws to remove, an extra drill hole). You’ll also need an HDPLEX w/ 6+6 PCIe power, so be sure to request that in your ordering notes (easier to order from HDPLEX directly vs Amazon). Also, be sure to watch the S4 Assembly Video first before assembly. Putting together your own system isn’t hard, but there’s a few things things with the S4 that are a bit tricky. You might also want to ask Josh to assemble the power switch (which may require soldering, if you just order the recommended bulgin switch) or I believe he’ll also assemble entire systems for a fee…
  • For accessories, I travel w/ a Pure Pro 60% keyboard (a great 60% that has proper arrow keys) and a slightly-overpriced, but ultimately quite nice GeChic 13″ 1080p IPS screen (USB-powered, HDMI input; a topic for another post)

ono3 internals

Here’s a sheet that has the internals of the Pelican system, and what changed with the my S4 move:

For those looking for more details (and for a preview next post where I talk about DC-power and backpack mounting, hopefully before Vive deliveries…), you can check out my build log on the SFF Forum.

Update: here’s my writeup on battery-powering the system.

Update: as of November 2016, here are your most portable options:

  • There are now several <2kg laptop options that have GTX 1060s. The MSI GS63VR, the Aorus X3 Plus v6, and the Stealth Blade (warning, reports are that it thermal throttles too much for stable VR)
  • For a slightly smaller footprint (and a sweet OLED screen) but slightly over 2kg, there is the Alienware 13 R3
  • There’s a new small non-laptop option, the Zotac ERX480, EN1060, and EN1070. These barebone systems start at about $1000 and they won’t actually save you much weight (it’s also around 2kg) or volume (it’s actually 2.6L say vs 1.7L for the GS63VR), but if you don’t need the actual laptop bits, you might save a few hundred bucks (maybe, you can probably minspec a 1060 laptop about the same). You can get a reasonably priced priced 1070 as an option here though, which isn’t possible with the laptops.

2016 ZFS NAS

Three years ago I bought 2 sets of Synology 1812+‘s for work. They’ve done pretty well (8x3TB drives in SHR2 configuration, with about 5-6 drive swaps between them). Overall, my experience with the Synology’s have been good, although I’ve been a bit frustrating by the slowness/unreliability of doing partial (rsync/rsnapshot-style) syncs between them, and rsync performance in general was quite bad, mostly due to underpowered processing.

Over the past few years (2014, 2011, 2008) I’ve looked at (and passed) on building a ZFS NAS, but this time I decided to take the plunge.

There are quite a few ZFS NAS specific distros that are available. The most popular is FreeNAS. There’s actually quite a few resources on building your own ZFS NAS so I’ll just do a link-dump first:

The main notes for my NAS build is that rather than going for a 5 or 8 drive case (one of the tougher things to find), I went w/ a 4 drive build with the Seagate 8TB Archive drives, which isn’t really recommended for NAS use and has some mixed performance, but for our purposes (basically, write-once archival use) it seemed like it’d be fine (and so far has been), and brought the cost/GB to $0.05/GB (the drives themselves are $0.028/GB vs $0.036/GB for the 4TB NAS drives).

Some numbers:

  • 5.5W w/ Power Off (there is an always-on IPMI management system, that’s quite useful); was able to use this to assist in tracking down a boot issue on assembly when the CPU power wasn’t plugged in (it’s not next to the main board power)
  • With no drives (besides an internally plugged 16GB USB boot stick) it boots at 50W and idles at around 31W
  • With 4 x 8TB Seagate Archive drives plugged in (20.4TiB RAID-Z1) it idles at around 57W. Copying a big file over via CIFS/SMB, it hits about 75MB/s out of the box, and power is about 79-80W during the transfer
  • The machine takes about 1m40s to being network accessible, and about 2m20s until services (web, samba) are up. Shutdown from FreeNAS web click to power off is 45s.

One last thing, if you’re interested in building a ZFS NAS but not so interested in the hardware bits, it may be worth taking a look at HP’s ProLiant MicroServer Gen8 which often go on sale/can be found cheap and have decent specs for a storage box.