Skip to main content

I'm a follower of Christ, a Husband, and a Father. I'm a High Performance Computing professional. I'm a coder, hobbyist, maker, gamer, and occasional musician.

Jeff Larkin

NextThing C.H.I.P. First Impressions

3 min read

CHIP image

At long last I received my C.H.I.P. computer. This is a $9, wifi & bluetooth-enabled single board computer and also the first thing I've ever backed on Kickstarter. I was fortunate enough to back in the first batch of computers to go out, but that also means I've been unfortunate enough to experience many of the troubles that come with being in the first batch. To start, my package got held up for some 2 weeks in customs (or somewhere in Buffalo NY), leading me to wonder if it'd fallen in a crack somewhere. When I got it, the out-of-box experience was less than perfect. I learned the hard way not to plug a keyboard in to the board's one USB port after booting. This resulted not only in a sudden poweroff, but the complete inability to boot again. Sadly, a lot of other people are having this and other problems preventing them from even using the board they received (many have called it DOA). Fortunately, it's pretty simple to reflash the ROM and get going again...provided you're not on Window10, which I was. After a few bad flashes, I turned to a Linux workstation I have access to and I was up and running again. Whew! I know NextThing is learning a lot from this initial batch and this OOB experience should definitely improve for future shipments.

So, I got it up and running, not what? Well, the board has 8 digital GPIO pins, so naturally I decided to blink an LED. After reading on their forums that the GPIO pins don't seem to provide enough power to fully light an LED, I decided to power my LED from the 3.3V pin and sink it to one of the GPIO pins for ground. Okay, they're plugged in, so now what? Examining the docs I learned that all of the GPIO pins are accessed through Linux sysfs. The paths and pin numbers are a bit unmemorable, so I wrote a set of simple BASH functions to simplify things a bit. After that, it was pretty simple to get going.

$ git clone chip-bash
$ source chip-bash/
$ gpio_enable 0 # Enable GPIO0
[sudo] password for chip: 
$ gpio_mode 0 out # Set GPIO0 to output
$  for ((i=0; i<100; i++)) ; do gpio_write 0 $((i%2)) ; sleep 1 ; done
$ gpio_disable 0 # Disable GPIO0

Woohoo! I now have an LED that blinks every second for 100 seconds! Ok, so how about something more interesting? I've got a DHT11 temperature sensor sitting around, what about reading that? Well, it turns out that the GPIO pins are digital only and the one ADC on the board doesn't currently work. That's a bummer. I guess I'll have to revisit this later.

So, what's my first impression of the board? Well, the initial experience certainly wasn't very good, but I think that'll improve over time. I mean, this is literally one of the first boards off the production line. What you get for $9 is really amazing in my opinion. This board is about 1/2 the size of a Raspberry Pi 2 and includes wifi and bluetooth 4.0. Amazing! I'm hoping the experience of using the I/O pins improves through some libraries and particularly that the ADC driver will be completed soon so that I can read data in. I'm sure more software will come out soon though. One can't expect a Raspberry Pi or Arduino-sized community at launch time. I do think the community will grow and I'm going to try to make sure I stay connected to it and contribute software as I can.

So, should you get one? If you're patient and not afraid to get your hands dirty, absolutely! If you're not up for struggling through the growing pains of a new board and new community, I'd suggest waiting 6 months and evaluate then whether the board is for you.

Jeff Larkin

Thinking about Augmented & Virtual Reality

5 min read

I've been thinking a lot lately about both augmented and virtual reality technology. I've always found augmented reality the more exciting of the two, but I have to admit that a Ready Player One-esque persistent virtual world that spans political, geographic, social, and language boundaries is very exciting as well. I keep hoping that we're getting close to an augmented reality future, but it still seems very far away to me and I think the social challenges outweigh the technical.

In order for mainstream augmented reality, meaning widespread adoption in peoples' everyday lives, to become a reality, we've got to get past a lot of social stigmas. Google Glass had two great failings: the socially-unacceptable appearance and the unfortunate concern of secret video recording. While there's a lot of good applications for the camera, I'll set it aside for the moment. Before fully augmented reality can become, well, a reality the technology has to become invisible. Even if the Google Glass prism went away, the display of information cannot get in the way of human interactions. If the person sitting across from me can see that information is getting beamed to my eyes, it will break down the important human interaction of eye contact. There is nothing more important to showing interest, intent, and emotion that eye-to-eye contact. Try having a conversation where both parties are wearing reflective sunglasses; it simply won't be as intimate, intellectual, or personal as a conversation with eye contact. The technology has to get out of the way completely (perhaps like in the TV show Continuum?) before augmented reality can become socially acceptable and I think we're a long way from this.

Google Glass Explorer Edition
Google Glass Explorer Edition.

There's still a lot of applications were augmented reality can and will shine in the meantime though. As long as it can be made distraction-free, an AR heads up display projected on the windshield of a car can (and is) really useful. We've had cars for more than a decade now that can project the current speed up into space in the windshield and, having driven one many times, it really does prevent you from having to look away from the road to check things like speed and fuel-level. The importance, again, is for the technology to get out of the way and present useful, relevant information. Can you imagine if your windshield highlighted the upcoming speed limit sign to warn you that the speed limit was about to drop? What about if it warned you when it noticed cars beginning to stop up ahead? Heck, we already have cars that watch lane markers and tell you when you're drifting (or drifting to sleep). These are useful examples of AR that we can do right now.

AR has plenty of professional applications too. What if your surgeon can monitor your vitals or see a close-up of the affected area? What if your mechanic can see what's wrong with your car as soon as you pull in? AR will likely begin to make its way into professional applications very soon, long before we begin to see it become commonplace in the mainstream.

Of course, there's always gaming. Both CastAR and Magic Leap have shown their vision for shared augmented reality experiences. CastAR seems like it has the best chance of breaking into homes. I can definitely see a family game night over some shared-reality game. Magic Leap's vision for augmented reality seems more ambitious. They seem to want to layer shared virtual realities over the whole world, much like what's portrayed in Daemon. This is very exciting, but I have a hard time believing that it'll break out of the same niche currently occupied by Ingress players. These players will go out of their way to experience a shared virtual world and Magic Leap seems like the nest step in this direction. I don't think most people are willing to make such a commitment to the technology.

I think the rise of eSports could be the niche that AR needs to really get off the ground. You may not realize it, but there's big money in eSports. Whole football (both American and otherwise) stadiums sell out to project teams of players competing in MOBAs like League of Legends and DOTA2. There's so much money in eSports right now that some colleges have started giving scholarships to eAthletes. There's even an effort to get eSports added to the Olympics. Imagine if instead of a jumbotron projecting the game in real-time everyone donned a pair of AR glasses and witnessed a football field-sized shared reality projection of the battle arena as it happened. This is where I think augmented reality has the best chance of getting its start. Rather than attempting to layer a new reality over our world, let's start with layering this new reality in a place where people with a shared excitement are already gathering and given them an even better, more immersive experience. Don't think it'll work? The creators of Hatsune Miku, Japan's virtual pop star, would beg to differ. I think eSports tournaments are ripe for a technology like augmented reality. The fans are rabid, willing to spend money, and already excited about both technology and virtual worlds. If there's not already a company out there working on the first AR MOBA, then I hope someone reads this and gets started (don't forget me when you strike it rich).

I don't want to give Virtual Reality the short shrift. I'm an avid MMORPG player and would love to see the book Ready Player One come to reality, but I really find the idea of augmenting reality where we can maintain real world human interactions while experiencing shared virtual realities far more exciting. We're on the cusp of something amazing, so hang on to your hats! I'm excited to see what's coming.

*Google Glass image via Wikimedia Commons.

Jeff Larkin

Now Running Known

1 min read

I wrote before how I'd like to write an CMS. As usual though, the goal to write my own CMS was preventing me from having anything at all. So, until I put together my own backend, I've installed known ( on my site. I'll post more details about my new setup later (now that I have something that enables me to post at all).

Jeff Larkin

Introduction to Accelerated Computing with OpenACC

1 min read

This is a webinar I gave back in May on getting started with OpenACC.

Jeff Larkin

Implementing an #indieweb CMS

3 min read

Every so many months I get the itch to write a CMS again. I've seriously written so many CMSes that I've lost count. It's like my *hello world*, if I want to play with a new web technology I write a CMS. Well, I've been tracking the movement for a while and I've been thinking for at least the past year that I'd like to write a new website that works with the indieweb protocols. With vacation coming up, it seems like a good time for me to think about what it'd take to put the base functionality together. I have a few decisions to make though.


I'm trying to decide what tool I want to use to write the back-end. I've limited it down to node, which I love, or Go. I feel more comfortable with node, so I could probably move faster, and I have some ideas for code re-use, but I've really wanted to get some additional experience in Go.

Tonight I discovered which seems to be a very early-stage indieweb CMS in go, so it's exciting to see that someone else is working on that and I may watch how his project comes along and see if I can contribute to that effort rather than starting from scratch. Of course, node has a ton of indieweb projects too, but because this person only seems to have started very recently it's kinda appealing that I'm not alone in what I'm doing.


With a language chosen, that'd leave the decision of the platform to use for hosting. I've used for years and I know I can always spin something up there. I love their workflow. I love the wide range of add-ons. I hate the high cost of SSL, but I can always use cloudflare ssl to fix that. Both node and go will work on heroku.

I've also looked at and I feel like it could be a really nice option. The free tier has a lot of great stuff, including SSL. I could pretty much stitch together whatever pieces I need.

The same is roughly true for IBM I'm considering giving it a try, mainly because I've used for years and I thought I'd see what the rest of the platform has to offer.

Lastly I'm considering Google App Engine. I like the idea of using I used it several years ago for a Google Wave Bot and it was a good experience. The dashboard is really nice. It's really limiting though. You either go all in with the Google tools (database, user authentication, etc.) or you go home. I'm the kind of user that doesn't like having every decision made for me, so I'm worried that I'd start down this path, get pissed off because the platform wants me to do it a different way than I want to, and end up throwing a lot away.

So, anybody have some experience developing an indieweb-enabled website and want to weigh in with your experience? Feel free to drop me a response to this page or at

Jeff Larkin First Impressions

3 min read

This week I got my long-awaited invite to Keybase is an attempt to simplify public key cryptography. At it's core, it's an attempt to supplement or replace the traditional web of trust and keyserver model with a public key infrastructure (PKI) that relies on your social accounts (and websites) around the web. I've been fascinated by PGP and the web of trust model for some 15 years, so naturally, I wanted to check out what keybase provides.

First, it's a documented way to claim ownership of your PGP key by posting a signed message to some account that you own. They make it super simple to do this, but you can do this completely without them.

Second, it's a centralized place that collates these verification messages so that someone who wants to find my key can find my key and the verification messages. Of course, they say that they believe the key is valid, but they also encourage you to go and check for yourself rather than just trusting them. In fact, there's an API so that you can poll them for the places to look for the verification messages and roll out your verification app.

I like this general idea. The system is very easy to use and I like the idea of modernizing the way that we establish trust and bootstrap our keychains. On top of that, both the website and the command-line utilities make things really simple. I hope they start rolling out more services though, since there's several notably absent (hello, facebook? G+?).

I've gone a step further and allowed them to generate a new keypair for me and store the secret key (but not the passphrase). I wouldn't do this on a keypair that I really care about (I sure wouldn't leak important documents using this new key), but doing this allows me to more fully experiment with their service. First, this means that I can bootstrap my machine with both my secret key and the public keys that I "track" really easily, that's quite nice. Second, I can use their website for encrypting, decrypting, signing, and verifying messages. That's quite handy and it's easy to use, but it requires a high level of trust in the keybase website, too high for many privacy-minded individuals. Assuming you're willing to buy in to what they offer though, it does make public key cryptography very simple to use. The one thing I'd ask for is a browser extension to better integrate with webmail (or simple web forms). Doing things on their site or at the command-line and then pasting the results into gmail is a bit of a nuisance. Mailvelope is a much better way to do PGP in gmail, but it lacks the PKI that keybase provides. I'd love to either see a browser extension directly from keybase or integration into mailvelope.

I have a very small number of invites, so if you're really interested in public key crypto and PKI (and you're someone that I communicate with at least occasionally), I may be able to invite you if you'll ping me. Also, you can find my keybase page at