Open Source: From Community to Commercialization

An interesting talk laying out the path to sustainability and, dare I say, profitability for open source projects by Peter Levine and Jennifer Li.

I tend to interact most with open-source projects following the OSS 0.0 and OSS 1.0 model, where I notice a fair bit of pining about becoming more sustainable. Truthfully, most of these projects are hobbies that happened to gain some traction, so the lack of business acumen can be forgiven. But these same projects and communities also distrust commercial structures. There's a real tension between creating community and software as a “labour of love” and having commercial foresight.

Perhaps, keeping viability in mind (or firmly ruling it out) from the start of a project will be open-source's bitter medicine.1 There’s a parallel between VC funded and aimless growth companies and open-source projects when it comes to business models. As a community, making money shouldn't be a dirty concept;therefore, we ought to encourage opportunities for our favourite communities to flourish going forward.

  1. I'm using a wide brush here. The “web-based” open source communities seem to have no issue with making money where possible but the *nix communities can have visceral reactions to money. 

Project Raven – Darknet Diaries

You've heard the news but perhaps you hadn't considered the real repercussions of security flaws beyond the headlines. I know I hadn't.

It starts following an American mercenary hacking on behalf of the UAE government, under the guise of aiding the fight against terrorism. That's a pretty gnarly start but it gets wild. Particularly if you're an iPhone user. Particularly if you used a browser sometime in the last 2 years! (That's not you is it?)

I'm not sure why I listen to this show: it's tightly produced, well researched and endlessly entertaining but every episode makes my palms sweat.

The Future Is UWB

The newest iPhones 11, 11 Pro and 11 Pro Max are apparently the first mass produced computing devices to feature Ultra Wide Band receivers. Until I read this, the rumour has been that it's for more precise physical location tracking for a Tile-like competitor. To which I shrugged my shoulders, cool tech but nothing to raise too much fuss over.

That assumption was premature and naïve. I first read Jason Snell’s take after an interview with an UWB industry insider which before coming across the linked piece by Steve Cheney. Now my mind has changed. If half of what's said here comes to pass, then we're in for a wild ride over the next five years.

(H/T Benedict Evans’ awesome newsletter)

September 05, 2019

Updating BittBoy's Pocket Go Using Linux

I recently bought a Bittboy Pocket Go on a lark. For roughly $35 (on sale) it was a pretty good buy. Gaming isn't really my bag,1 but goofing around for a few minutes here and there has been fun.

Again, for the price, it's been dynamite, but there are some issues. Screen tearing has been one of them.

The community around the Pocket Go has come together and compiled an updated firmware, which is supposed to relieve the issue (as much as software can fix a hardware issue... apparently the screen is locked to 30hz) but all of the instructions require Windows.

That's clearly wrong, so I spent an hour figuring out how to get it working on Linux. It wouldn't be very becoming of me to keep that information to myself, so here we are:

Don't blindly copy things into your terminal you've taken from the Internet. For all you know, I'm a DARKNET wizard and will use your nievity to install horrible viruses on to your computer, wreck your debt, yellow your teeth and woo your significant other. You've been warned!

  1. Back up your files! Plug in your Pocket Go's microSD card and copy over your roms folder (as well as anything else you might fancy a copy of before you wipe the card). Keep it on your computer, make a copy on an external drive, back up all of your data offsite, etc., etc.
  2. Find and install fatresize from your distribution's repository. That might be using a software center, or via the command line; it's your choice, you're a big-(girl|boy).

    For example, on Ubuntu-esque distros, you might type:

    sudo apt install fatresize
  3. Download the latest firmware from the official(?) repository (a place where neckbeards like me, store code we're working on... if you weren't aware).
  4. Extract or uncompress the resulting download. It will end in a .7z extension, which is a strange choice... Perhaps it's more popular on Windows, I don't really know. (Mine was called PocketGo_CFW_v1.3_21-08-2019.img.7z in case you're scared you didn't get the correct file). You can use your desktop environment's built in tools for doing this (like file-roller or Ark) or use the commandline.
  5. "Restore" the uncompressed .img file to your Pocket Go's microSD card. If you're unsure, best reach for an application called Etcher by Balena. Here's a guide to using installing Etcher from Linux Hint.
  6. Here's the "hard" part: you can use the card as is, but you won't be getting the most out of your microSD card's available space. The partition named main needs to be resized/expanded to fill the available space on the card. (E.g., restoring the firmware only used 4GB of the 32GB of space on the card, and ~28GB was left "unallocated" or otherwise unusable by the Pocket Go.)

    Hold tight, we're almost there partner.

    With the microSD card still plugged into the computer, we need to figure out where it's mounted. So fire up a terminal and enter:

    man df

    That was a trick! I just wanted you to know which program you'll be using before you copy things blindly into your terminal. (See the note above, fool.)

    Type q to exit the manual (hot tip: typing man plus whatever command you're about to enter will provide a desription of what a command does and how you might use it).


    you should see a little table that lists all of the partitions currently available to your computer. You're looking for one labelled main. Write down the "Mounted on" address, something like /dev/sda4, memorize it, keep it tattooed on your neck. Whatever you need, pal.

    Here's the fun part:

    man fatresize
    sudo fatresize -s SIZE LOCATION

    Replace SIZE with how much space there is left over. (E.g., I have a 32GB card, so I had roughly 28GB of unused space, so I typed in 27G to replace SIZE. I'm a scaredy cat, so I went conservative. Apparently there's a max to fill up all the remaining space... but I didn't realize that until now.)

    Replace LOCATION with your "Mounted on" address you copied earlier.

  7. Copy your backed up files from step 0, eject that microSD card and plug it directly into your Pocket Go.

Now, enjoy the rest of your day you would have wasted figuring out where to get a usable copy of Windows :)

  1. I respect the medium but it's always fallen too low on my life priority list to care about. 

Ruffle: an Adobe Flash Emulator Written in Rust (Of Course)

There was a time when I couldn't wish that the death of Adobe's Flash could come fast enough. It was inaccessible, required endless resources and most flash site were obnoxiously overdone. With the hindsight that can only come from maturity, do I realise that there were some apps, games and animations that were worth saving.

Cue the Ruffle Project, an emulator for SWF files written in everyone's favorite and overhyped low-level programming language Rust. It's early days yet, and the team behind the open-source project (Apache 2.0 and MIT, respectively) say that it's only capable of running flash animations. Your favourite early-2000's era platformer will have to wait a bit longer as Actionscript is not yet supported.

Signs Preceding the End of the World by Yuri Herrera

This one is still making me think. Herrera’s metaphorical twists and deep imagery are unsettling—not in an uncomfortable way. It's as if something in my head is slightly amiss, like there's a gap where there shouldn’t be, or a line slightly crooked.

It wasn’t at all what I expected, yet I enjoyed every page.

Semi-Automatic Installer of macOS in Virtualbox

It is exactly as the repo description purports: a script to help you install a recent version of macOS in VirtualBox on Linux. Read the description/instructions, confirm that's what you're after, hit enter to move to the next stage. An absolute godsend this has been for browser testing.

More of thoughtfully made automations, like this one, please.

Documentation With Attitude

It's been a long time since I first came across “Why's (Poignant) Guide to Ruby” and I’d forgotten just how personable it is compared to standard programming documentation. Don't get me wrong, I appreciate clear, sober documentation but having a personality counts in a way I hadn't expected.

The love and affection Why the Luck Stiff has for the Ruby is palpable: it pours from every cartoon and zany example. It gets me excited about Ruby, a language I wanted to love but wasn't ready for, yet. I suggest reading the chapter I've linked to get your beak wet and see for yourself just how enjoyable it can be to learn about code. And, maybe I'll take another crack at Ruby, or at the very least, flick through another few chapters.