The Best Stories on TV

by Thomas Brady in ,

This is not going to be the blog post that wins me a Pulitzer (has that happened, I wonder? Ah, yes, sort of), but I keep having this thought, and I feel like it deserves to be “out there.”

Two of my favorite television shows of recent times have been Orange Is The New Black and Dear White People. No, this is not a post about how woke I am. I promise.

I love the shows for two very different reasons, but I think there’s a common cause.

I love Orange Is The New Black because, in many cases, of the depth of the characters. Danielle Brooks’ “Taystee” is one of the most charming, compelling, believable, sympathetic characters I think I’ve ever seen on television. I don’t think I need to go into why, nor do I think I’m equipped.

Thank god for Netflix. This show just couldn’t possibly exist on network television, obviously, but even if it was on cable—HBO, for instance—it just wouldn’t be the same. Danielle Brooks, I hope I offend no one by saying, does not fit the traditional mold of “TV star.” I’m referring mostly to the twisted standard of beauty applied to the western world, and then taken up an order of magnitude or two for television actors, and then a couple more for film actors. A network or cable version of this show may not have cast Brooks, and that would have been a major loss for the world.

And she’s not the only one. Adrienne Moore’s Cindy, Laura Gómez’s Blanca, and several others are incredible characters and performances that I’m glad to have known.

So, on the one hand, god bless Netflix for making this show. On the other hand, why is it that when we finally get some people of color on a well-written TV show, it has to be about inmates in a prison?

Netflix, Hulu, HBO, and whoever the hell else, please make more shows with actors like Brooks, Moore, and Gómez. I don’t need all my TV stars to look like they were genetically engineered.

Which brings me to Dear White People. I don’t have a lot to say about this show, except that:

  1. These characters are so well developed. Every time I think I’ve found the 2-dimensional character the writers couldn’t be bothered to flesh out, they get an episode that focuses on them, and I realize how complex they really are. There are no heroes or villains on this show. Except maybe Kurt Fletcher, but that seems fitting.
  2. The cinematography always stands out to me. The episodes feel like Wes Anderson films at times. I’m told that black directors and/or cinematographers with black casts result in beautiful film more often than not because of the care required to properly light black actors. I can’t speak to that, but I can say this show is always exquisitely lit.
  3. To counter my own complaint from before, about only making a show with people of color if those people are imprisoned, I love the fact that this is a show about successful college students.
  4. While the cast is made up of 100% beautiful people, they do bring a depth to each of their characters that makes it easy to forgive the casting director.

Also, Lionel is the best.

Craft Punk

by Thomas Brady in , , ,

A few years ago I started a new family tradition of making homemade Halloween costumes with my son, Liam.

No, not like

 A perfectly acceptable Halloween costume: two eye-holes punched in a sheet to make a ghost costume.

A perfectly acceptable Halloween costume: two eye-holes punched in a sheet to make a ghost costume.

Okay, I’ll skip to the finished products from the first couple years. Year one, a Creeper, from Minecraft:

 Liam as a Creeper from Minecraft

Liam as a Creeper from Minecraft

I don’t even remember what started this tradition. I don’t remember whose idea it was, or how I decided to use cardboard as my medium (though that’s pretty much the most obvious decision ever), but I do remember how much fun it was working with cardboard. I found it to be most of the pleasure of 3D printing, without as much waiting and/or disappointment.

So the first year was pretty basic. Sadly, Liam got sick on Halloween that year and didn't get to actually go out in it. He did get to answer the door for trick-or-treaters, at least.

The second year we upped our game a bit. This one features glowing eyes, and a web app for his phone that randomly plays Enderman sound effects.

 Liam as an Enderman, also from Minecraft.

Liam as an Enderman, also from Minecraft.

The Stakes Keep Getting Higher

This year, though… this year… my wife says to me, she says, “Hey, I know! You and Liam should go as Daft Punk.


I have drooled over Daft Punk helmets on Etsy for years. There’s a wide range of helmets available, from the ludicrously simplified children’s toys (that still manage a $150 price-tag) to the exquisite, as-good-as-the-originals, thousands of dollars kinds of affairs.

None of them looked plausible as a home project made with cardboard.

I searched. I watched YouTube videos. I found myself prostrate at the feet of a new teacher named the “Dali Lomo.” Oh man is this one awesome blog.

So, for obvious reasons (the opportunity for irony), Liam was assigned the Thomas mask, and I got the Guy-Manuel mask.


I immediately set to work on Liam’s mask, which I figure was going to be the harder of the two. It seemed to me that the fidelity of the chrome of his mask was critical, and the hardest thing to accomplish. It meant that the “dome” needed to be immaculate. The Dali Lomo’s build guide involved making a dome out of cardboard (which sounds right up my alley), but also involves a ton of Bondo. I opted out of this, thinking that starting with a batting helmet would save me some time. I went to the local sporting goods store, and found this beauty on sale:

 A bright pink child’s batting helmet.

A bright pink child’s batting helmet.

I think the helmet did save me some time, but nowhere near as much as I’d thought it would. What it did do for this project is add a lot of rigidity and durability to the mask, and give us a comfortable, head-shaped base from which to start. Before I was done, I’d cut a couple inches off the back of the helmet, cut the visor off the front, and cut the ears out. I also had to (my wife would probably like me to say “I chose to) fill in the vents with Bondo, so I didn’t entirely escape having to deal with Bondo (my first time—it’s kinda fun!).

I filled the gaps between the matboard visor pieces and the batting helmet with Sugru, by the way. I was quite concerned the paint wouldn't stick, as they claim you can't easily paint Sugru in their packaging. The Rustoleum primer I used is oil-based, which I think helped, and I put several coats on before painting the chrome on, and it worked quite well.

The first paint I tried was Krylong Looking-Glass Silver. This did not work well at all.

 The Krylon Looking-Glass Silver bubbled and dried very strangely, with nothing close to a “mirror finish.”

The Krylon Looking-Glass Silver bubbled and dried very strangely, with nothing close to a “mirror finish.”

A bunch more sanding, and a new coat of Krylon Premium Metallic Chrome Original, and it looked like this:



So, again, the Dali Lomo’s guide is fantastic.

One thing the Dali Lomo doesn't mention too emphatically in the YouTube videos for these masks is the difficulty in marrying up the two halves of the matboard masks. There's a seam that runs righ up the middle of the Guy-Manuel mask, and a similarly challenging seam along the left- and right-hand sides of the visor box on the Thomas mask that will split on you if you don't reinforce them well enough. Basically, you will marry up the edges of the two pieces, which means that you will need to glue each side to a piece of thin cardboard (we used cereal boxes). I initially put dots of hot glue at each of the four corners of the cereal box. This let the seam immediately split up when I bend the matboard. You need that seam to be super solid. So instead of a few dots, you basically need to cover the whole area, like this:


Now, when it came to the visor, I went my own way.

The Dali Lomo cut a plastic bowl into pieces, glued them back together in a slightly different shape, glued on a transparency sheet, Bondo’ed the seam, and then wrapped the whole thing in heat-shrinking sunscreen vinyl.


I started out trying to do the same thing. I bought an acrylic globe, which I thought was about the size of my noggin. I thought I would cut it in half, glue on a transparency sheet, and spray the inside of the assembly with Nite Shades (which the Dali Lomo said would probably be easier than the wrap method).

Turns out cutting acrylic is a frickin’ nightmare. Every time I tried to make a cut, cracks splintered out in every direction.

Also, it turned out that the globe was too wide for the mask body to hold.

Luckily it wasn’t expensive.

The problem was, it was now just days before Halloween, and I had no plan for how to make this visor. Luckily I’d been thinking about backup plans the whole time, and at some point I’d come across some blog posts (sorry, I can’t credit them… don’t remember whose they were) regarding Worbla. Yeah, WORE-BLAH. Say it 5 times as slow as you like. It’s just fun.

Worbla is a thermoplastic—a plastic that becomes moldable at certain temperatures, and returns to a hardened, sturdy state at room temperatures. Specifically, I found that they make a transparent version. Thankfully, while doing this research, I ordered a 3-pack of sample sheets of Worbla (9”x9”, roughly) from Amazon, that included just one sheet of transparent Worbla (sometimes called TranspArt).

So, I read up on how to work with transparent Worbla. Thankfully, in my searches, I found this post on Worbla’s site: Using TranspArt for Clear Domes.

Having read that, I went to Home Depot and found an 8 inch glass globe (a replacement for lamp-post covers, I think).

I made a circular jig (out of cardboard, my fave medium!) that had a diameter just about an inch longer than the globe itself, and a height that was about the radius of the globe (4 inches), taped the 9”x9” sheet of TranspArt to it, hit it with the heat gun for about 10 minutes (it’s best, I read, to slowly get to the desired temperature, lest you get discoloring and bubbles), and pushed the glass globe into the TranspArt. It looked a bit like this:


After about 15 minutes of cooling, I pulled the globe out, and it looked great! It took some careful wiggling to get the TranspArt off the glass globe (it was darn-near vacuum sealed to the thing), but once it was free I had a very clear semi-sphere, with a hoop skirt on...


Then I had to figure out how to make the curved-plane front portion of the visor. I went to an office supply store and tried to find transparency sheets. You remember those? Like the things you’d use with one of these:


I couldn’t find them there, so I bought some sort of self-adhesive clear sheets from Swingline (you know, like “that’s my stapler”?). Wrong. Too flimsy.

I visited several stores, trying to avoid the inevitable, but each place told me the same thing. “You should go over to Satan’s house. I think they have them there!” So I gave in, and I went to Hobby Lobby. I’m sorry. I really am.

At Hobby Lobby, in among the supplies for building model train set landscapes, I found transparent 8.5”x11” sheets of vinyl in various thicknesses. I got 0.7mm, and they were perfect. 2 sheets for $5. I DID find transparency sheets at one other office supply store, in my searches, but they were $40 for a pack of 50, and I had no idea how thick they would be.

I sprayed the inside of my clear dome and the transparency sheet, and they looked great. Perfect, dark, and well-matched. Now… how to attach them?

It was really hard to try to hold the dome in place just to figure out where to place it within the frame of the mask. I tried several ways to try to hold it in place to see if it would fit, and to try to figure out how to glue it in place safely. I had one shot. I checked. I would not be able to get any more Worbla in town, and if I ordered more from Amazon the soonest I could get it was November 2nd.

I searched the house (at about midnight), and found a 10-inch diameter inflatable beach ball. Deflated just a bit, it made the perfect clothes-horse for the dome. It held it in place just right while I traced the outline of where the dome met the frame, which let me then glue the appropriate spots one at a time by matching up the outline marks.


Then I curved the transparency sheet around the front of the dome, glued that in place… and I was done!


Final Note on the Thomas Visor

In hind sight (nota bene to the reader looking to make her own Guy-Manuel mask), I could have just glued the sides of the sheet to the frame of the mask. The seam where the transparency sheet met the dome would have not been secured, but I don’t think it would have mattered. What I did do was glue it there, with superglue, which dried white, and made the seam quite noticeable.

The Gloves

There’s not a lot to tell you about making the gloves, except to say, A) I did those, too, and B) they take longer than you think they will. There’s a lot of cutting involved, and most of it is rounded corners. One tip: cut out the template, and then re-arrange the individual segments of each finger so that all the straight edges between the segments touch. It's a lot faster this way, because you're turning two cuts (the top of one segment and the bottom of another) into one cut, which, for two sets of gloves, turns 80 cuts into 40.

The Results.

So, here’s where we ended up:


A Note on Visibility

One thing you might wonder, being the thoughtful reader you are, is "could you see while you were trick-or-treating, ostensibly in the dark in these things?"

I couldn't fit my head into my son's mask, but I'll say that he's not the most sure-footed kid in the world, and it was raining, and we were trick-or-treating after dark, and he never fell. He tripped a few times and very nearly ate it, but never actually fell.

My mask felt like wearing a motorcycle helmet with a tinted face shield, which is pretty siilar to wearing sunglasses (which cover your whole face). It wasn't super easy to see details, but I could get around well enough.

What This Project Meant to Me

I didn't know this the whole time I was working on this project, but some soul-searching and long conversations with my wife in the midst of it revealed something about my motivation to do this project. I grew up without a dad. My single mom bent and broke herself to make sure that I didn't feel that loss, that I had role models of all kinds, and that I didn't feel left out or different or weird because I didn't have a dad, and she did a great job of it.

But the thing I do notice, looking back, is that there were a lot of things that felt out of reach for me because I didn't have a parent that could walk me through those things. How to fix a car, for instance. I'm not saying only dads can do those sorts of things, but I am saying that in my childhood there was not a parent that filed that sort of role. I didn't study computer science in school, for instance, because it didn't occur to me that it was a profession that existed. I didn't have those sorts of professions modeled for me. Likewise design of any kind.

I wanted to do this with my son because I thought it would be fun. I thought it would be good to get him doing something with his hands. He didn't really get very involved this time, which is my fault. We didn't start early enough, so I didn't have time to let him fail a few times. A lot of the materials we were working with (super glue) and tools we were working with (mouse sander) were dangerous, too. My hope, though, and the thing that drove me to finish this, despite spending more than 30 hours on this over about 2.5 weeks, was that he would at least see me doing this. He would know "This is a thing people can do. Dad is not a costume-maker. If he can do it, maybe I can, too. Maybe Dad could even teach me."

Maybe we can get his little sister involved, too.

Here's to next year.

Happy (Belated) Halloween, dear reader!

"Notoriously hard to follow"

by Thomas Brady in

Yes, I've come out of hiding, but don't get too excited until this happens a few times in the same month.

I've been sitting on this post for a week or so. Every time I remember reading "Putting The Talmud Online" (, I chuckle.

A Washington Post article is linked, describing the lengths to which a group has gone to put the Talmud online. The Talmud, if you're not familiar, is a religious text created as part of the Jewish tradition. It's not technically considered scripture—not part of The Bible. It's a collection of the writings of rabbis and their students discussing the scriptures. Interpreting them. Arguing about their meaning. Introducing new ideas mean to build upon what's found in the scriptures.

So what cracked me up about this article was this pull quote that Tim Carmody chose:

The Talmud is notoriously hard to follow, even if you understand Aramaic. For most readers, a straight translation will not be useful, as additional, contextualizing information, based on expertise with the tradition and text, is necessary to follow the arguments.

I came from the Christian tradition. In that tradition (or at least the flavors of it that I grew up with), The Bible is read and interpreted with great fervor. People have favorite verses. They memorize lots of them. They quote them aloud during times of great joy or great pain. These scriptures are very important to them.

However, far too many of these people are unwilling to admit that they have no idea what the hell the Bible actually says. They like to frame it as though The Bible is a personal love letter written to them, individually, in contemporary English. They are uncomfortable with anyone having a different interpretation of what a scripture means to them, but they are flat out unwilling to admit that their interpretation is based on layers and layers of abstraction—translations of translations, completely devoid of cultural context.

I wish more Christians realized that "[The Bible] is notoriously hard to follow, even if you understand [Aramaic, Hebrew, and Greek]. For most readers, a straight translation will not be useful, as additional, contextualizing information, based on expertise with the tradition and text, is necessary to follow the arguments."

Otherwise, I’m afraid, you end up with people believing that they are justified in owning slaves, in hating people who are different from them, in generally being deplorable assholes, because, they believe, “the Bible tells them so.”

Getting your $%*# Ring Doorbell hard-wired

by Thomas Brady in , ,

I got a Ring Doorbell as a gift recently (thanks, Mom!), and, after about 4 weeks I’m finally satisfied with its installation!

It’s not hard to find people complaining on the internet that their Ring Doorbell installation isn’t working. The design is… not great. There are spring pins on the back of the device that are meant to make contact with copper pads built into a mounting bracket. You mount the bracket to your wall, terminate your wires into it, and the pads channel the signal/energy through the spring pins into your fancy doorbell.

That is, if it’s all working.

Based on my experience, as often as not, or perhaps more often, the spring pins won’t make contact. There are lots of reports online of similar situations, citing warped brackets. The mounting bracket itself is quite thin, and if you’ve cranked down the mounting screws, internet wisdom states, you can warp the bracket, thus deflecting the plane of the copper pads, making it difficult for the pins to connect.

I removed the bracket. I re-attached the bracket, careful not to over-tighten the screws.

I did it again.

And again.

There was a brief window in which the device decided that it was, in fact, hard-wired (you can tell a few ways, including the white ring around the button staying lit full-time, and a couple places in the app reporting that the battery is begin charged and/or explicitly reporting that the device is “hardwired”). Despite not touching the device, this window closed.

I had an idea. I would “fluff up” the pads with pillows of solder, like so:

 My solder-pillowed mounting bracket

My solder-pillowed mounting bracket

The pins would surely make contact now, right?

Right! The ring stayed lit! The app reported being hard-wired! I was a genius! 

I decided I should document my fix for fellow fancy doorbell owners online. 

I removed the Ring Doorbell from the mount, and found… broken pins. The “pillows” were too fluffy, it seems, and the action of attaching and/or detaching the unit from the mounting bracket was enough to break a couple of the pins. I was defeated. And probably for good. My modification was surely warranty-ending, and since I had not purchased the doorbell myself in the first place, even trying to get it replaced was probably not going to be fun. 

At this point I had two choices. I could continue using the doorbell “wirelessly,” (i.e. removing it from its bracket periodically to recharge it via USB cable), or I could take a chance on a more extreme fix. I think you can guess which way I went.

I broke out my volt-meter, and set about figuring out the pin assignments of those copper pads. The circuit board was fairly easy to see, and didn’t appear to have any components onboard, only traces. If you hold it up to the light just so you can make out the trace paths. Looking at those and testing things out with the volt-meter, I was fairly certain that the left three pads of the middle and lower sets were the only useful pads, and that three of them went to each screw terminal, like so: 


So, reversing that pattern, I soldered wires directly into the back of the doorbell; yanking out the spring pins and soldering wires into the pads beneath. Then I cut out enough of the mounting bracket (including the board with the traces and terminals) to make room for the wires, and twisted the 6 wires from the doorbell into the two from the wall. 

The white ring shone. I was, once again, restored my genius status. 

So, warranty be damned, I’ve got a working fancy doorbell, and a good story to tell. 



A request came in the comments for a photo of the finished wiring. I’m not sure how helpful this will be, as it’s a pretty ugly soldering job, but here you go (below). It’s difficult to see what’s going on in the photo, but I essentially have three wires soldered onto the terminals that I shaded green in the photo above, and three soldered onto the terminals shaded yellow. Each set of three is then twisted together with each other and with the lead coming out of the brick.


One thing I didn’t think through about this approach is that if I ever need to reboot my doorbell, I’ll need to figure out if Ring has a hard reset button (don’t think they do) or cut these wires.


Rumors of my demise...

by Thomas Brady in

How are you doing?

No, I'm not changing the subject… YOU'RE evading the question!!

Okay, yes, it's been quite some time since I posted here, and, heh, my last post wasn't my finest work (NEWS FLASH: Macbook and iPad Pro are two… make that three different products!). So, why the long-time-no-post? Well, several reasons, really.


Just kidding.

But I did make this yesterday:

 Love ya, Schiller, but...

Love ya, Schiller, but...


Okay, not joking around this time. As I think you'll see in the rest of this post, I've had some time to do some serious thinking. Some deep-diving self-evaluation. Some honest consideration of what I'm doing with my life, the people with whom I'm surrounding myself, and the ways I'm investing my most precious resource: my time.

Part of what shook out of all of that thinking was the realization that, more times than not, my "hot-take," (a phrase that had time to be coined, elevated to prime-time sit-com use, and subsequently slip into dads-only usage during my sabbatical) isn't really worth a whole hell of a lot.

This is not self-deprecation. I do think I have a perspective, and, at times, I might even aspire to insight, but the admission I'm getting to is that my blog was rarely the only place someone could get the content I was providing. I won't promise that I'm going to be posting more often, but that's in part because I'm going to try to only post when I really have something interesting to say—something I think isn't being said elsewhere.

Which brings me to

Soul-crushing startup life

In large part, as attest by the date-stamps and title of my antepenultimate post, I quit writing because I simply didn't have enough time.

In my time as "technology director" at Reaction Housing, I spent many, many nights up until one or two in the morning, attempting to communicate with vendors in Asia to decipher spec sheets on parts I was hoping to use, to negotiate prices, to place orders, and even to discuss modifications to custom parts. Then I was up at 6 AM with my son, e-v-e-r-y d-a-y. Seriously, the kid seems to be physically incapable of sleeping past 6 AM, and he was too young to be up on his own, and funny things happen to my wife when she's sleep deprived (well, maybe not funny, per se).

It was at the height of this life-force-draining regimen that I was suddenly pulled into a conference room for an impromptu performance review.

If you know anything about managing humans, you've already seen a few red flags, here, not least of which was the phrase impromptu performance review.

This was not the first red flag for me, either, but it was the scariest, yet.

Just a few weeks prior, I had been seeking advice on how to deal with the leadership at this startup from a former co-worker, and peer of the two men running Reaction at the time. After I rattled off my laundry list of concerns and questions, he sat back in his chair and said, "Yup. They're not managers. They've never managed people, and it doesn't sound like they're even trying to learn how."

So, I enter the conference room, along with the then-CEO and then-COO of Reaction (that's not an awkward power dynamic for an already awkward meeting), and in no time flat I'm told that I'm "phoning it in." I'm told there are complaints about me not working hard enough. About me not being available enough.

I work in a department of two. I know the other member of my team very well. I'm confident that if he was frustrated with me, this would not be the first I'd be hearing of it. In fact, as I reflect, I can't think of a single person, other than the two sitting across from me, who would have not taken up this matter with me personally, before now, if such a matter existed.

"Bullshit," I said.

And I meant it.

The meeting didn't really go anywhere good. I'm not sure how it could have. I did my best to listen, and to try to suss out any kernel of truth within this ambush, but I couldn't find anything.

Months later, discussing it with people who stayed on much longer than I did, and worked even closer with those two C-suite-ees than I did, I was told that I was just the first in a long line of scapegoats. The business was failing, due to poor leadership, and the leadership was unable to cope with blame.

Some incredibly untoward things happened at that place. I'm amazed that so many of my incredible co-workers at Reaction stuck it out as long as they did. Several of them have described the period after they finally left as "PTSD-like." Apt.

Now what?

I interviewed for a few months after that fateful meeting. I don't think my inflated startup title (I was a "Technology Director," despite not having any staff, though that's kind of a funny story in, and of, itself) was doing me any favors. "Why is a director applying for this individual contributor role?" I imagined HR departments saying.

Months went by, with no promise of a new job, and things at work were getting worse and worse. And then it happened.

In one day I got four job offers. Three from leads I'd been working for weeks or months, and 1 out-of-the-wild-blue.

Two of the offers were positions with agencies. Consultancies. One you have heard of, and one you have not (yet, anyway). The other two were positions at product companies.

What have we learned, here?

I looked back on my time at the startup. I took that job, leaving frog, which I loved, because I wanted to work on product. Long-term. I wanted to come in every day, and have to face the same pile of clay on the table, pushing it around a little more each day until we really had something. I wanted to learn to ship. I wanted to learn to support products that had shipped. I wanted to learn how to run a business, like a grown-up.

I looked back at my time in agencies, such as, but not limited to, frog, and reflected on what I felt was missing from those experiences. Responsibility. Accountability. Humility.

I want to quickly say that an agency is not a fixed entity, but an ever-changing zeitgeist, determined by the culture of the day. People come and go, and with them come and go egos, attitudes, behaviors, styles, habits, good and bad.

At its worst, agency life is a never-ending speed-date meetup. You pop in, do your best to make a good impression, and, if you're lucky, you're gone before you've embarrassed yourself. If you're less lucky, you're counting the seconds until you get to stand up and move to the next seat.

At many agencies, you end up spending the vast majority of your time managing your client, no matter what position you're playing. You may be the account manager, the project manager, the designer, the engineer, or the QA specialist; it doesn't really matter. In many cases, a great deal of your time will be spent producing "deliverables" designed to make the client feel one of two very important feelings:

  • You, the agency, are the smartest people in the room, and
  • They, the client, have spent their money—so, so much of their money—wisely

So, between the fact that you're so expensive at your fancy agency, which means they could only afford so precious little of your time, and the fact that you spend so much of that time telling them how lucky they are that you answered their RFP, that before you know it, the project deadline is nearing, and, while you do have a pile of "deliverables," you don't know that you have really understood the problem they came to you with, yet, and you certainly don't feel you've solved it, and, whoops there goes the deadline.

Rinse (if you're lucky). Repeat.

If you've worked with, or near, agency people before, you've heard the familiar refrain of "oh man, yeah, what the client finally went to market with looked NOTHING like what I [designed/built/tested/etc.]." This is because, as we all know, "Clients are so dumb, lolz." Right?

Well, as I stood there, outside Reaction, waiting for a phone call from one of my four leads, I thought to myself, "Wait… we hired an agency."


Even better, we were a bunch of people from an agency playing house together, pretending to be the kind of company that hires agencies.

This is when it clicked for me.

For one thing, what the "dumb ol' client" ships frequently doesn't look like what the agency designer/developer/etc. came up with because the agency people never really deeply understood the constraints. It's quite easy to look at a problem and come up with a clever solution. Even a clever solution that appears to be simple and elegant. This is meaningless, though, unless you can actually act on this solution. The real-world constraints of a given client make a lot of clever solutions irrelevant. Maybe your clever solution doesn't scale. Maybe it's too expensive because you're not operating "at scale" in the first place. Perhaps it ignores some easy-to-miss requirements, like being universally accessible or easily localized or working in Internet Explorer. Maybe the constraint is the prowess of your client's engineering discipline, or the nature of the infrastructure that powers their products, or the cadence of their release cycle.

What I saw at Reaction, I felt, was these agency people being forced to stand there long enough to be faced with the constraints of the real-world, and not knowing how to cope when their clever design turned out to be, not so.

Right, so, now what?

So, I went back to Polycom. Polycom is a corporation, with thousands of employees, where I would work in a cubicle with fluorescent lighting and expense reports and everything that makes my beard invert.

But they ship. Oh man do they ship.

Polycom ships custom embedded hardware, in many flavors. We ship on several different SoCs. We ship on several different software stacks, from RTOSs to Assembly to Java to Node and beyond. We ship a customized operating system of our own, based on Android. We ship end-user applications for Windows, macOS (and Mac OS X), Android, and iOS. We ship cloud software. And Polycom has been doing this for 25 years. We have more than one office (a handful, worldwide, actually), but I can walk around the Austin office and go from someone with a 3D printer to someone with a soldering iron to a sales person to a phone support person to a huge QA lab to a bullpen of developers to another bullpen of designers to a bullpen of technical writers, and back.

It's not easy. Some days I dream of beating the printer with a baseball bat, while I struggle to print my TPS report. I strive, mightily, to wag the dog that is corporate politics, in order to make the product better. It feels like I'm fighting a system that wants to turn out mediocrity, a lot of the time. My better self tells me that I'm actually observing an organism that's attempting self-preservation—attempting to turn out something safe, and easily maintained, not something necessarily mediocre.

And I'm working as a designer. I came onboard as a "Senior User Experience Prototyper," the very same title I left Polycom with a few years back, headed to my "Design Technologist" role at frog. The original idea was that I would be a rapid prototyper, working alongside designers, realizing their visions in interactive simulations that would make it possible to vet out ideas early and often, before productizing those ideas (an expensive, not easily reversible process).

Turns out they really just needed another designer, and that was something I've actually been able to help out with. I've built a few prototypes, but I have mostly been churning out wireframes, comps, UI strings, and design direction.

What were we talking about?

It's been a long, winding, pretty effed-up road, to be honest, but, if I'm honest, that's usually the best way for me to learn. My time at Reaction was punishing, but it was a life-lesson hard-won. I worked harder than I've ever worked. I pushed myself beyond my limits. I met some incredible people. I did some work I'm very proud of. And, most importantly, I drew a big chalk outline around what good leadership looks like. It's not as good as a picture, but let's just say I know exactly where not too look now.


by Thomas Brady in ,

So, uh, yeah...

I seem to have done that oh-so popular thing where you abandon your blog and only tweet from time to time instead of having fully-formed thoughts.

Well, this didn't fit into a tweet, so, I'm back! I hope.

If you ever, say, write a sketch to an Arduino Leonardo that randomly sends keyboard and mouse input to a host computer, for the purpose, let's say, of making that person think that their keyboard, mouse and/or computer are malfunctioning, you might later find out that if you didn't wrap the HID-mode stuff in your Arduino sketch in some sort of enable/disable functionality that it's now nearly impossible to write new sketches to the Leonardo.

If you do find yourself in such a pickle, and you happen to have an AVR Dragon (or similar), here's the way forward: install avrdude (brew install avrdude if you're on a real computer) if you haven't already and issue a commmand similar to this one (I leave it to your capable hands to change what needs to be changed):

avrdude -v -patmega32u4 -cdragon_isp -Pusb -Uflash:w:/Applications/ -Ulock:w:0x2F:m

A New Adventure...

by Thomas Brady in

Not quite two years ago I somehow sneaked in the back door at frog, the global product strategy and design firm that started when Steve Jobs convinced Hartmut Esslinger to create a firm in the US to create a product design language for the Macintosh.

Today was my last day.

It has been quite a ride. Oddly enough, the actual client work was, for the most part, not terribly interesting. It's not that frog doesn't do amazing work, I think, but that I was the new guy. I did get to do some cool stuff, and I definitely learned a ton doing client work, but it was, by far, the unbilled work that I did at frog that got me excited.

I've blogged about most of it, and will blog more of it soon.

I thrived at frog. It was an amazing place to work. I got to work alongside people like Jared Ficklin, Joshua Noble, Michael McDaniel and many more... It was the kind of workplace in which you can't help but hone your skills and practice your craft, surrounded all the time by people giving it their all. It's what I imagine it would be like to play professional sports.

It would take something pretty big to pry me away from such an environment. That thing was Reaction (site update coming very soon). Reaction was founded by Michael McDaniel, with whom I got to work quite a bit while we were both at frog. Reaction is a company that Michael started about 8 years ago, just days after Katrina made landfall in the U.S. Michael is from Mississippi, and he was compelled to do something to help those affected. Being a designer, with an industrial design background, he found his problem to solve in the short-term housing options available to FEMA when assisting those displaced from their homes. He designed The Exo as a better solution to the short-term housing problem. He explains it a heck of a lot better than I can (so far), so I'll step aside:

I'll be serving as technology director at Reaction, working on the hardware and software that will make these smart temporary houses that keep occupants safe and comfortable. You'll definitely be hearing more about all of this in the near future. I'm elated to be working on a product that I know is going to make a difference in the world.

That said, it is just now hitting me that I have left frog. I will miss frog, and all my colleagues, dearly. I have written frequently about the difficulty of creating and sustaining a culture of innovation and quality in a corporation, and I will probably spend a few years trying to figure out how frog did it.

"Draw a sky blue brain exploding"

by Thomas Brady in ,

I just don't even know how to put words to this one...

Natural language... programming?

Somehwere, Bret Victor is either sitting back looking proudly at something he secretly worked on, or he's weeping at its beauty. I guess both could be true.

If this is half as good as this demo video, I can't see how this won't upend the world of programming, the world of education... hell... the world.

The Electric Imp-spacebrew-nod-uino

by Thomas Brady in , ,

I've been dying, ever since a couple of the core contributors visited frog Austin a little over a year ago, to play with Spacebrew, and in yet another skunkworks bit of hacking at work recently, I finally got to.

We, the secret snooping society, want to fill the Austin studio with sensors of varying type and scope, and we wanted it to be very easy for people, once they've found us out, to play along. This is a perfect fit for Spacebrew, which aims to make interactive spaces, exposing data via a simple API. One rig can be set up to be a data "publisher," and, without permission or help of any kind, anybody that can reach that server via a network/Internet connection can write a "subscriber" that can do whatever it likes with that data (usually, visualizing it).

As I was building this out (our project used a simple proximity sensor to track motion near the elevator, as a proxy to counting elevator trips), I realized that we also wanted historical data. Spacebrew is a super convenient way to provide real-time data, but it doesn't have any affordances for persisting data. So, I built a Node.js server that both acted as the Spacebrew publisher, via the javascript API, and write data to a mongoDB.

I also finally got to play with the Electric Imp, a nifty little WiFi-enabler.

You can read all about it, and get all the source code, on github, but here's a short walkthrough of how it works (from the "What does it do?" section of the project's README):

  1. Use an Arduino to power a proximity sensor as a motion detector, and, when it sees motion, send a command over serial to an
  2. Electric Imp, which throws an event over the Internet to
  3. Electric Imp's cloud service, which we've configured to exposes an API that rolls up and reports these events upon HTTP GET, which
  4. Our Node.js server polls, and upon finding new events, acts by both
  5. Writing a record to a mongoDB and
  6. Forwarding the event to
  7. Spacebrew

Up to this point we have built a Spacebrew publisher, that happens to also persist data (something not typically included in Spacebrew).

We have also included an example Spacebrew subscriber, in the form of a web app that uses the Spacebrew javascript API in order to increment a count of movements observed. Our web app first polls our Node app to get a historical count for the day, and the timestamp of that last movement. The real-time Spacebrew updates then increment this historical count, and reset the last-movement-seen clock.


Wool and Copper

by Thomas Brady

I was working from a coffee shop yesterday, watching the clientele molt the day crowd—startup teams, stay-at-home parents getting out with the kids for a bit, local consultants meeting with clients, interest groups—to replace it with the early evening crowd—first-dates, book clubs and various social groups from more to less formal. A group of ladies was gathering at a table right behind me as I finished my work, discussing their senior citizens group's agenda for the meeting. As they settled in with their drinks, they broke into chit-chat, discussing their phones. They nearly all had the same phone, though they admitted having had their heads turned by other models with bigger screens. Their reasons for sticking with their chosen phones mirror those I read regularly on the blogs and Twitter feeds I follow.

They shared recent app discoveries; teased each other about their choice of mapping apps. They argued about whether their voice-dictation apps worked reliably, exactly as I have with co-workers. Of course, they made Siri jokes.

They were all 7 of them carrying iPhones. This, on the 7th anniversary of its announcement.

Øredev 2013 or How I Learned to Stop Worrying and Love The Talk

by Thomas Brady in ,

I am an unduly blessed person. My talk, "Shakespeare in Dev" from Øredev this year was, in part, about just that: how fortunate I've been. I mentioned, for instance, that I got my really-real start in "computers" due to a mix-up in paperwork. I was intended to be working in a warehouse, at Compaq, unboxing returned computers and putting them on a conveyor belt, from 11 PM to 7 AM. I didn't escape the night-shift, but the paperwork mix-up did put me on the other end of that conveyor belt, in charge of refurbishing the returned computers. I had not seen the inside of a computer, but for a brief experiment in swapping the 5.25" floppy drive in my 486SX for a 3.5" floppy drive, about ten years earlier.

A similar opportunity came about six months ago. Co-worker Jesse Cravens asked me if I'd be interested in co-writing a book with him about Ember JS, a book we're hoping to have finished before year's end. That, and Jesse's extensive conference speaking experience (he's done 12 this year, and he's not done), led Øredev to invite him to speak at their conference this year. Jesse was kind enough to ask if they'd be interested in having the two of us co-present on our book, and the Øredev organizers were beyond kind in extending the invitation to include me.

They like to ask their speakers, many of whom they're flying into Sweden from all over the world, to do two talks, so as to get their money's worth. The theme of the conference this year was "The Arts," the corollaries between the programmer's craft and the artist's, as well as the pure inspiration that could be drawn from the arts.

I submitted a few ideas for talks that I could do, trying to stick to that theme, and the one they chose was "Shakespeare in Dev." It was pitched as a survey, a crash-course in the user of story-telling in user experience/interaction design.

The trouble was, right off the bat, I felt like a fraud. I have some experience. I have some knowledge. But I didn't feel like I would be able to talk for 50 minutes to a crowd of people who could easily be ten times as knowledgable and experienced in user experience design. I decided I would study up. I'd pick up all the books, and become an expert over the summer.

To start, this was a bad plan. This was a really bad plan. I have two children and a full-time job for Pete's sake. I barely had time to write a talk—I didn't, really, let alone read 15 books first and then write a talk. Not to mention that part-way into this time period, I decided to take on some freelance work. Goodbye free time.

This worked out for the best, though. If I had found or made the time to read all 15 books and synthesized them into a succinct overview of the topic of story-telling as a design tool, I would have succeeded in creating a painfully boring talk. It might have been insightful. It might have been well-informed. It would have been boring. I wouldn't have provided much, if anything, that the audience couldn't have had by reading the same books.

Thankfully, at the last minute (I finally finished up my freelance work just a couple weeks before the conference), inspiration struck. I realized that the aspect of story-telling that was most interesting to me was the fact that it's a discipline-agnostic tool. It's not a super-specialized tool that you have to spend years honing in order to be good at it. It's not like oil-painting, or using Photoshop, or mastering object-oriented programming. I believe it's a nearly universal skill to all humans. Some of us are better at it than others, and you certainly can hone it to become a skill like oil-painting. But at basic proficiency, the average person can tell a story that can have a profound impact on the world around them.

I was interested in how this could affect the dynamic among a team working on a software project. It's difficult for everyone on the project to have an impact, or to even participate in the same discussion, much of the time. Story, I thought, might be just the thing, just the tool—one that everyone on the team can implement with roughly equivalent skill—to be shared by the whole team, giving everyone equal impact on the work to be done.

While I was thinking about all of this, I reflected on my own career, on the saga of developer versus designer versus QA reviewer versus project manager. I remembered the day it all clicked, the day it all began to make sense to me, because of something a designer named Michael Chang said to me, a story he'd told me.

That was it!

I started over, after spending four or five nights on the talk, about half the time I had left. But I felt hopeful, now, finally, that I had something to say. If I'm telling my own story, there's no right or wrong. There's nobody with more expertise in the room on the topic. And, best of all, I was now telling a story, not just talking about telling stories.

This was my first time speaking at a conference. I was terrified. I've spoken publicly plenty of times, at company functions, at church. I've acted in plays and skits in front of large groups. I've played guitar and sung in front of relatively large crowds a couple times at least. Nonetheless, I was terrified. I barely slept the night before, and my stomach was upset the whole day of my talk. I barely ate.

And to put a little bow on it, my two talks—my personal talk and my joint presentation with Jesse—were back-to-back. Well, at least I'd be done afterward!

Oh, and they put me in the big conference hall—the same one they were using for the keynote presentations.

I'm told it went well. Watching the video, I'm pretty happy with what came out. It's not perfect, by any means, but I do think it's about the best I can do right now.

If you're reading this and considering talking at a conference, here's what I wish I'd known, or thought about:

  1. Have something to say. Figure out what someone attending your talk needs to know, or what you most want them to know, and figure out whether it really matters. If not, start over. While you're at it, have something unique to say. If the conference attendee could get your content somewhere else, why would they have paid likely thousands of dollars in conference admission and travel expenses to hear it? If your content isn't unique in some way, start over.
  2. Learn how to use a microphone, and be aware of it. Don't be shy. Make it easy for your audience to hear you. Don't blow your nose, scratch your beard, etc. into the mic. If you know you have a cold, work out with your sound guy how you're going to mute the mic when you need to blow your nose, use your hankerchief, etc.
  3. Don't compare yourself to other speakers. This should be an idea meritocracy, if there ever was one.
  4. Do entertain. Don't be boring. You don't have to tap-dance, but it doesn't hurt to relax a bit, share something personal, crack a joke (but don't force it) or generally demonstrate that you don't take yourself too seriously.
  5. Your slides matter. You may not be a designer. You may fancy yourself a designer. Either way, get some help. Ugly, confusing slides are going to distract your audience. NO CLIP ART. NO CHEESY STOCK PHOTOGRAPHY.
  6. Don't look at your own slides. Definitely don't read them. Look at your audience. Presenter's notes are okay, but don't read them. Practice your talk enough that you pretty much have the outline memorized. Put the outline in your presenter's notes. Use them to help you remember where you are, maybe even specific data points (any actual hard numbers you need to get exactly right, quotations, etc.), but do not read them out loud.
  7. Keep your slides simple. You don't need transitions, builds, and all that stuff. Once you're good at using slides without that stuff, you'll have a better idea of when to use them. Don't use sound or video unless you absolutely need them. The audience wants to hear you, not something canned that they could have heard without spending all that money to get here.
  8. Bring some water. If you're nervous, it can save your life.
  9. Consider the possibility that people are going to ask questions afterward, either while you're still on-stage or otherwise. If you can't answer a few questions well, you can squander whatever credibility you built up during your talk. You can end up discrediting yourself and your talk.
  10. Give yourself a break. It's harder these days. With Twitter and such, you can't fail in private anymore, but neither can anyone else. Your first talk might suck. That might be enough for you to figure out this isn't your deal. It might be motivation to practice. Either way, it won't end your life or career. And, you might not suck! You definitely might not suck as much as you think you did!

For reference, you can watch my talk, "Shakespeare in Dev," here.

Øredev 2013

by Thomas Brady in , , ,


I am mortified. My speaker notes included credits for Gloria Wu for visual design in the first application show in the video below (the TouchTunes SxSW visualization), and Michael McDaniel for visual design on the subsequent data visualization. I only realized after watching this video that I didn't actually mention those notes. Profuse apologies to you both.

A much longer post is due, and will come soon, but, hopefully suffice it to say for now that it's been an incredible honor and pleasure to have been invited to participate in Øredev 2013. I did two talks, one technical talk on Ember JS, which I think may be a little too technical to share here but was a sneak peek at the book Jesse Cravens and I are releasing soon with O'Reilly, and one personal talk on the power of story to unite designers and developers, which you can watch below. Thank you (Tack!) Øredev. Thank you Linda, my wife, for making this possible, for picking up all my slack all those nights while I worked on these talks, for being a single parent for a week so I could be in Sweden. For being excited for me, so selflessly, when it meant so much cost to you .

Thank you, thank you, thank you.

I've been busy...

by Thomas Brady in , , , ,

There's been a lot going on at home, at work and in my third place. I'm excited to finally get a chance, and in some cases the clearance, to talk about some of what I've been up to.


A couple months ago I got really hot and bothered about wearable tech. I saw projects like the Pebble Watch and even got a Jawbone UP, but I didn't see the total package in any of these options. I wanted a watch that would vibrate to alert me that I was getting call or text message, and maybe show me caller ID information about the call. At the time, there wasn't a device for sale that I could find that did all—or in some cases just—those things.

So I decided to build my own.

I got an Arduino Fio, a replacement iPod battery (they didn't carry iPod mini replacement batteries at the time, but that looks like a better option), a BlueGiga WT32-based bluetooth module from an off-brand, much more affordable source and a real time clock module, which I had no idea I'd need at the start of the project. That last bit required different voltage than I was using everywhere else (needed 5V, but all I had was 3.3V), so my rigged setup required a AA battery, too, for a good-enough boost to 4.8-ishV (couldn't seem to find a voltage booster that would be small enough/cheap enough). I intended to fashion a bezel with this hand-moldable plastic from Inventables.

The best-laid plans...

Have nothing to do with this story. I spent hours. Hours. HOURS on this project. I don't regret it in the least. Every step was new information. I'd tinkered with Arduinos a bit, but I hadn't encountered one, yet, that required special hardware just to be able to connect to a computer to be programmed (it's called an FTDI adapter—something that can connect to your computer via USB and speak computer languages on one end, and connect via serial connection on the other end, and speak in micro-controller languages. They're built into the flagship Arduinos (Uno, Leonardo, etc.).

Oh, and a .96" OLED screen. It felt unreal the first time I got that thing going. Hours of soldering, writing code, watching video tutorials (available at that link for the screen itself) and testing, and it was just strange to see something I'd made rendered on that tiny little OLED screen. I've been writing software for most of my life, and every new platform is a bit of a thrill. This, for some strange reason, was one of the bigger thrills. I think it's because it felt like a realm in to which I shouldn't be able to reach—like I was manufacturing my own consumer electronics. This less-than-$100 pile of Radio Shack-available parts didn't exist in this form 10 years ago. This was a new frontier.

In the end I learned that it's not as easy as pulling a bunch of Radio Shack parts off the shelf and beating them up with your soldering iron. The package never got small enough that I would actually be willing to wear it. But it did work, which was a pretty satisfying end to what could have been a downer of a project. Here's the working code at Github. With compatible hardware, that'll get you a 5-minute-increments clock (if memory serves), and, when paired with a bluetooth phone, a vibrating alert when an incoming call is received, as well as caller ID info.

Sadly, I fried the Fio when trying to clean up my late-night soldering job, and I only just realized I never got photos or video of the working rig. : (

Research on Rails

After a few weeks of not having a side project, I got the bug to a) learn Ruby on Rails and b) build a research tool I'd been kicking around for a while. When you design products for clients, they get pretty picky about where you keep your notes. It's become a tradition at frog to build internal-use-only clones of services like Dropbox, Evernote and the like, because, well, we're jealous. We can't store our client's data outside our firewall, so we have to build our own toys.

For everything but client work, you can pry Evernote from my cold, dead hands, so I set out to build something similar for client work. I've long been interested in collaborative workspaces, so I also took more than a couple cues from Pinterest. I call it Catcher. It's my first Ruby on Rails app, and it's currently in use by a couple dozen frogs. I couldn't be happier. Here's a demo:

One feature not shown there is the ability to email items to an internal-only email address, which get scraped and added to your list, including attached or embedded images, URLS and keword tags that were in the subject line. I was trying to make sure that this was a tool that could serve alongside the ways that we frogs currently solve this problem, one of which is by sending emails. Of course, this is better than those emails, because in six months when you go looking for that thing you know you got from somebody on some project about something kinda like… Well, good luck searching your inbox. The email you're looking for probably has a ssubject line that reads something like, "Exactly like this:" and the body of the email is just an image or a URL. If you added it to Catcher, which you could do just by forwarding the email, you might have taken a moment to add some keyword tags. Even if you didn't do that—shame on you—you stand a better chance picking out the image or a big block quote on the infinitely scrolling "Home Plate."

At least that's the idea.

You might recognize a bit of Pinterest in there, too. At frog, and other agencies where I've worked, it's another common practice to have big pegboards up around team areas, where you can print and pin project-related artifacts. These are anything from wireframes to Gantt charts, but most of the time they're inspiration bits—mood-boards, funny pictures, mockups and just plain pretty pictures. I wanted that kind of content to have a home in Catcher, too. A forthcoming feature will add a filter that will let you see just "inspiration" items, or just "bookmarks," etc.

I spent hours on this project, too, enjoying every minute. The vast majority of them were outside work hours. Note to employers: I ended up building something very similar to this for a client in record time because I had just done it for this side project. And screen captures of the tool have ended up in some pitch decks, too. Free time, in the hands of the right people, can be a very powerful thing.

I'll spend a lot more, hours on this, too. Looks like someone in China just started using it, even though I've tried to keep it under wraps while it's in "beta."

SxSW 2013

frog Austin has been an integral part of SxSW for over a decade now, in that we have thrown the kickoff party for all but a couple years of the existence of the conference. Each year got a little crazier. Apparently the party was broken up by the fire department one year.

It's a chance for a bunch of frogs to get together in a warehouse with power tools, buckets of electronics parts, loud music and the goal of making crazy-cool attractions for a party full of thousands of geeks.

Sadly, I got tricked (I kid) into doing something for the party that didn't involve any of that. I ended up working a good number of hours alone at coffee shops and at my dining room table, at all hours of the night. It sure paid off, though. The attraction I got to work on was an experiment in crowdsourced DJing. We teamed up(again) with TouchTunes(again—we partnered with them to design their latest hardware and software), makers of touch-powered digital jukeboxes found in thousands of bars and restaurants. They brought 20 of their jukeboxes (an intimidating sight by daylight, and the closest thing I've experienced to being a moth near a fluorescent light at night) and added the event space as a venue in their smartphone app. This made it possible for any or all 6,000-ish party-goers we had that night to cast a vote for what would be played by walking up to the Tron-tastic jukeboxes or whipping out their smartphones. And they did. We had nearly 10,000 votes, playing over forty songs chosen by the crowd all night.

I got to build a very-large-screen experience that visualized all this activity real-time. A projected screen near the jukeboxes showed, on rotation, something akin to a slide presentation wherein the slide were alive with data. I got to do a lot of the design of the experience, as well, at the information architecture/wireframe stage. Thankfully I got to work with a visual designer to bring those to vivid, neon life—thanks, Gloria! I'm no data-viz-whiz, but I think it turned out all right. I tried to make sure to balance the exposure the votes got. If we only showed you which songs were in the top 5, for instance, those songs would be assured their top 5 spot. If you're standing there and you look up at that big screen and see a song title, you're likely to say, "Oh, I love that song!" and vote for it. So I tried to expose the underdogs. There was a screen that only showed songs that had recently (within the last 30 seconds) received their first vote. Another show every song that had received any votes at all as various sized squares—the more votes the bigger. At regular intervals a random song from that collection was chosen and spotlighted, showing you the artist's name and the song's title.

Lots of people, myself included, gamed the system. You could, if you so chose, stand at the jukebox and choose the same song again and again, if you didn't mind looking a little, obsessed. Early in the evening, this was fairly easy to do. Into the third hour, you'd have to vote hundreds of times this way to break the top 10. I single-handedly chose the second song of the night. I was determined to hear some Tom Waits, and we did. I was kind and played "Jockey Full of Bourbon" and not "Earth Died Screaming" or "Pony."

There was also a slide that showed a real-time 10-band EQ graph of the sound of the event. A mic was connected to the server running the event, which captured not only the music, but crowd noise.

Here's a video from our marketing department covering the event, with a section—starting at 2:06 on the crowdsourced DJ attraction, and some shots of the part I worked on starting at 2:22:

The Aftermath... math

I spent a lot of time building and testing and testing and rebuilding and testing and... You get the idea. The app was pulling voting data from Heroku, synchronizing that data with a local SQLite database, and then going through the same hoops to get song metadata. We had a test server and a production server. For some reason, every time we tested with the production server everything crapped out. Up to just a couple hours before the event. I was sitting in the rain at the outdoor venue re-writing whole chunks of the application. In the end, it worked. Perfectly. I started the app, and only watched—never had to touch—the admin console I'd built for it, except to call up the "Bar's closing/Last call" slide.

I was as tired as I've been in a long time that day after the event, having been up very late for a couple weeks working on this code, up early the day of the event rebuilding signage girders and setting up PA equipment, and up late again that night tearing things down. But I was sitting there the next afternoon with a database full of 10,000 votes cast by thousands of people, and 250,000 pixels worth of graphed waveforms recorded at the party. I had to see what was in there. I wanted everyone to see what was in there. So I set out to learn some more HTML5 and some d3, and the next thing I knew I had another side project. A couple weeks later, with some much-needed design help from fellow frogs Michael "Gondola" McDaniel and Mike Herdzina, this popped out:

 A screenshot of the SxSW Opening Party Data Visualization

A screenshot of the SxSW Opening Party Data Visualization

The coolest/craziest/scariest part is that this thing has been published. First by Core 77, in part three of their coverage of the crowdsourced DJ thing from SxSW itself (crazy just doubled, Inception-style), and soon, as I understand it, on Design Mind.

Until very recently, it had been about five or six years since the last time I had actually shipped an HTML application, one where cross-browser use actually had to be supported. The web has change so much, and so little in that time. There are myriad little pains in developing for the web, but the ubiquity of software that can make use of your work is intoxicating. And making use of a good web browser to lay out text or deliver content to a screen-reader is like riding downhill on a bicycle. Hardware-agnosticism in the form of Java and similar technologies is, to me, a myth. They try to tell you, "We can make it easy to write your software once, and run it anywhere." Web development sounds, on first blush, like it's making the same promise. The difference, though, is that no one ever said it would be easy. You'll be able to run your software in lots of places, but you're still on the line to support all the thousands of little differences between hardware, software and user needs your software will find itself surrounded by. To me that's a lot more realistic. Honest.


I'm coming up on my first anniversary at frog. I had a great start in my technology career at a little eLearning house called Enspire Learning. I was hired as a technical writer, but they trusted me when I said I could learn to be a developer, and, what's more, they equipped me. They surrounded me with smart people who cared about their craft. They gave me time to learn on the job. They cultivated an environment where people shared their knowledge (with lunch-and-learns and even after-hours classes offered by colleagues). After lots of false-starts, Enspire was where I really became a developer. I outgrew the work in a few years, but for the next several years I felt like I would never find that environment again. I feel I've finally found it in frog. I'm very happy to be here.

Special thanks to Jared Ficklin, who owns the frog SxSW engagement, for involving me, and giving me such a fun bit of the work to tackle.

Bruce Tognazzini nails Apple's approach to a smart watch

by Thomas Brady in ,

Strumming my pain with his fingers...

Tognazzini (known better as "Tog", as in the "Tog on" series of books he wrote about interaction design before most people knew that was a thing), former interaction designer at Apple, takes a very educated guess at what Apple would do with a smart watch. He puts an eloquent voice to all the things I find frustrating about every current design on the market, and outlines how Apple could/would/might/will? dierupt this market. Don't miss.