Dev Stuff
Since recording this the memory got wiped on this calculator, so this is my only remaining evidence of Fun Game

In 1997, I was one of the few people in my high school who had a TI Graph Link, which was the little doohickey that connected the calculator to a computer’s serial port, allowing you to transfer programs from the computer to the calculator. This opened up a world of possibilities, letting me download all sorts of games from the internet which I would then distribute.

My friend Matt and I somehow schemed this silly prank idea: create a game called “Fun Game” that we would transfer along with the programs the person actually wanted, and then wait.

When it was launched, the whole sequence you see in the demo version would happen (which at the time we thought was hilarious), and then finally the program would copy a single file over and over and over and over until the calculator ran out of memory.

Turns out basic math functions take several seconds to perform after fun game ate all the memory. Fun, right?

Dev Stuff

Long ago I wrote an open source ember addon for New York Public Radio called ember-hifi that powered their web audio applications, like,,, It was used and maintained consistently for years and years, and as ember evolved it lagged behind a bit. So I started a branch to bring it up to modern Ember standards, and really started thinking about it from the outside in, to try and lower the learning curve.

I find it tremendously useful to start with a interactive documentation site when building something like this, as the usability problems are easy to spot early. And building this one was no different. Naming things is the hardest part, and that stuff really jumps out at you when you’re trying to explain how to use it to someone else.

After all the updates I did to the project, the changes got too big to feasibly do a mega-pull request to NYPR as their apps were still running legacy version of Ember and couldn’t benefit anyhow. So I did a hard fork, renamed it and launched it.

Ember Addon active
Ember Stereo
Interactive Documentation active
Ember Stereo Docs
Dev Stuff

Quick, find the extra comma!

CSV feels like the simplest of file formats, where it might seem that there’s not much to know after mentally expanding the acronym - Comma Separated Values. But tell me this: if it’s so simple, then why are there so many CSV parsing libraries, alternative CSV parsing libraries, and CSV parsing libraries that claim to be better or smarter, and a mountain of mangled CSVs in existence?

CSV isn’t so much a file format as it is a loose set of guidelines for converting tabular data into text. The closest thing to a spec for it is this, which deals with vital and often overlooked questions such as:

  1. “What happens if a value has a comma in it?” - oh, you quote it

  2. “What happens if a value has a quote in it?” - oh, you put another quote before it

One question the spec definitely does not cover is one I needed answering: “What do you do with 32,000 files claiming to be valid CSVs but of the 750,000 some lines an unknown number of them have extra unquoted commas hidden in the values, basically making the data untrustworthy?” This is not such a simple problem, but it’s an interesting problem.

Read the rest of this
Ruby Gem active
Comma Splice
Dev Stuff

I just updated a gem I wrote in 2011 (which the FCC actually starred and forked, lol) to use their new API, which apparently knows about caching now. It doesn’t provide all the same data as the old one did, which is kinda weird. No “signal strength”? Why? So the gem can still query the old, horrifically slow and crusty API if you want it to.

station = FCC::Station.find(:fm, "KOOP")

if station.exists? && station.licensed?
  #Basic attributes, available quickly because the FCC actually caches these in a CDN: #=> 65320
  station.status #=> LICENSED
  station.rf_channel #=> 219
  station.license_expiration_date #=> "08/01/2021"
  station.facility_type #=> ED
  station.frequency #=> 91.7 #=> <struct FCC::Station::Contact>
  station.owner #=> <struct FCC::Station::Contact> #=> <struct FCC::Station::Community city="HORNSBY", state="TX">

  # Extended attributes, takes several seconds to load initially because the FCC is running this endpoint on a 1960s era mainframe operated by trained hamsters. 
  station.station_class #=> A
  station.signal_strength #=> 3.0 kW
  station.antenna_type #=> ND
  station.effective_radiated_power #=> 3.0 kW
  station.haat_horizontal #=> 26.0
  station.haat_vertical #=> 26.0
  station.latitude #=> "30.266861111111112"
  station.longitude #=> "-97.67444444444445"
  station.file_number #=> BLED-19950103KA
Ruby Gem active
Dev Stuff

Back in those quaint times when it seemed like there was no way Texas would re-elect everyone’s favorite Senator, Ted Cruz, I woke up one morning with the url “cruzclues” in my head. Remarkably nobody else had thought of this, so I snagged the domain and then created a site to fit.

Thankfully there hasn’t been a shortage of meme content since he secured that senate seat for another term.

Site active
Cruz Clues
Ember Addon stale
Ember Data Prismic
Dev Stuff

Postcards I made, maybe you got one?

Seems like we can’t go two minutes without our phones buzzing, trying to pull us away from whatever we were doing to instead look at a screen. This started out innocently: as a way to let you know that someone was personally communicating with you; a figurative tap on the shoulder through the magic of the internet.

BZZZ 📲⚡️ A friend sent you a message

But at some point this snowballed into us defaulting into allowing the entire world to tap us on the shoulder in the middle of family dinner.

BZZZ 📲⚡️ A friend sent you a message!
BZZZ 📲⚡️ West Elm is having yet another sale!
BZZZ 📲⚡️ An acquaintance of yours just tweeted for the first time in weeks!
BZZZ 📲⚡️ Oops! You forgot to compulsively check a meaningless app today! Did you accidentally let real life distract you?
BZZZ 📲⚡️ A spambot just added you on a social network!

Not only is that just annoying, but it’s partially responsible for actually changing our brains, which I will demonstrate to you using this simple test:

Read the rest of this
Dev Stuff

I have unsubscribed from so much junk lately. But when I came to unsubscribe from the Huckberry mailing list… I didn’t. And it was because of this delightful experience.

But I’ll probably unsubscribe next time it comes.

Dev Stuff

NYT just bought two of the most useful review sites on the internet for 30 Million dollars, and it’s amazing.

Matt Haugley said most of everything I want to say about this here, but let me tell you why I think this is really cool.

These sites solve a real problem in the best way. The problem being finding an answer to the question “What’s the best _____ to buy?”, and the best way being by just telling you which thing is best right away, backed up by an in depth writeup of how they decided that.

Most review sites will dive deep and dish out all the data of all the different choices, sandwiching advertising between sections for profit, and in the end not even give you a definitive answer leaving you to piece together all the data to form a conclusion.

The former experience is far superior.

Even more amazing, both of these sites were created by one guy in Honolulu, neither site is ad-supported (!!), and he didn’t take any VC funding!

As Matt said in his blog post:

I imagine every step of the development of the Wirecutter/Sweethome was about people laughing at Brian.

You can’t build a tech site that doesn’t publish 20 times a day. You can’t build a content site that isn’t covered with advertising. You can’t build an entire business on Amazon affiliate revenue. You can’t take on Consumer Reports and expect to get any traction. You can’t pay for this level of in-depth reporting. Ok, great, you built this, but why would anyone ever come back?

Ignore the haters and do it anyway. Amazing work, Brian Lam.

This was a really good interview with Brian about the sites, before it was purchased.

Dev Stuff

I was in Portland for Ember Conf recently, and after much research (natch), I stayed at the Hotel Eastlund. This is my new spot in Portland, and let me tell you why.

First: this rooftop bar.

The design of this hotel is amazing. Modern feel, with really nice touches that showed they really took the time to think about the experience. As someone who does UX work for a living, I noticed these touches, and I appreciated all of them. But there were two tiny little things that took my opinion of the place from being “Nice hotel”, to “Portland hotel search is over! I’m staying here every time.”

The first night I stayed there I was going to plug my phone in and go to bed, until I realized I forgot my phone charger. That’s when I noticed they already thought of that, and had charging cords for every type of modern phone on each bedside table. Nice touch.

But the following morning when getting ready, I noticed this shower detail:

Are you seeing this? A hole cut in the long glass shower wall so you can reach the knobs without getting sprayed with cold water? That is such a ridiculously thoughtful feature that I can’t stop gushing about it.

Stay here next time you’re in Portland.

Dev Stuff

From Reconsider:

Part of the problem seems to be that nobody these days is content to merely put their dent in the universe. No, they have to fucking own the universe. It’s not enough to be in the market, they have to dominate it. It’s not enough to serve customers, they have to capture them.

This. Fucking nailed it. One of the most frustrating things lately in technology is that nobody wants to play nice together. Everyone wants to have a platform, instead of providing a great service and while getting along with others. One simple example, look at the landscape of chat services, currently. There was a time, where there were different services, and different clients. Each service had a protocol that a client could conform to, and many clients supported those protocols. I used to chat to my AIM friends and my ICQ friends and my Google friends all within the same program.

Now, everything is a walled garden. Hangouts doesn’t have any third party clients, so I have to run a shitty chrome app to talk to use that. iMessage is its own deal. Facebook has its own thing.

But that’s just one example. Amazon provides great services. Apple makes great products. Apple and Amazon are both have competing products now, the Amazon Fire TV, and the Apple TV. Amazon won’t sell the Apple TV in its stores, and Apple doesn’t have an Amazon Instant Video app available with its services.

Did either of these moves increase loyalty? Improve consumer happiness? Speaking as a consumer: no. It’s only been an inconvenience.