this space intentionally left blank

May 26, 2016

Filed under: random»personal

Speaking schedule, 2016

After NICAR, I wasn't really sure I ever wanted to go to any conferences ever again — the travel, the hassle, the expense... who needs it? But I am also apparently unable to moderate my extracurricular activities in any way, even after leaving a part-time teaching gig, so: I'm happy to announce that I'll be speaking at a couple of professional conferences this summer, albeit about very different topics.

First up, I'll be facilitating a session at SRCCON in Portland about designing humane news sites. This is something I've been thinking about for a while now, mostly with regards to bots and "conversational UI" fads, but also as the debate around ads has gotten louder, and the ads themselves have gotten worse (see also). I'm hoping to talk about the ways that we can build both individual interactives and content management systems so that we can minimize the amount of accidental harm that we do to our readers, and retain their trust.

My second talk will be at CascadiaFest in beautiful Semiahmoo, WA. I'll be speaking on how we've been using custom elements in production at the Times, and encouraging people to build their own. The speaker list at Cascadia is completely bonkers: I'll be sharing a stage with people who I've been following for years, including Rebecca Murphey, Nolan Lawson, and Marcy Sutton. It's a real honor to be included, and I've been nervously rewriting my slides ever since I got in.

Of course, by the end of the summer, I may never want to speak publicly again — I may burn my laptop in a viking funeral and move to Montana, where I can join our departing editor in some kind of backwoods hermit colony. But for right now, it feels a lot like the best parts of teaching (getting to show people cool stuff and inspire them to build more) without the worst parts (grading, the school administration).

December 22, 2015

Filed under: random»personal

Post-SCC Plans

Last Tuesday was my last day at Seattle Central College, and I turned in my grades over the weekend. If nothing else, this leaves me with 10-20 free hours a week. And while I'll no doubt spend much of that time watching movies, practicing my dance moves, or catching up on my Steam backlog, I do have some projects that I want to finally start (or restart) in my spare time.

  • Rebuild Grue: back when I was leaving Big Fish Games, I spent a couple of weeks working on a text adventure framework called Grue. The main goal of it was to make constructing interactive fiction in JavaScript as easy as possible. I think it was reasonably successful: a sample world is surprisingly readable and intuitive. It also got a bunch of things wrong (weird inheritance system, poor module setup). I'm planning on rebooting Grue in 2016, using ES2015 and a Node-compatible interface.
  • Upgrade Caret's find/replace functionality: A few months ago, in one of my rare open source success stories, a contributor added project-wide search to Caret — a much-requested feature for years now. Unfortunately, we're still stuck with the default Ace dialog for find/replace within a single file. This year, I want to pull that out and re-implement it as a Caret UI widget, which (among other things) will fix a number of regular-expression bugs.
  • Play music: Bass took a backseat to breaking when I started dancing a few years ago. These days, my fingers are noticeably slower on the strings than the used to be, which seems like a shame since I bought a really nice bass before we moved to Seattle. If I can find a laid-back open mike, I might resuscitate Four String Riot for a session or two.
  • Break the web: In a recent project at the paper, I started using the getUserMedia API to access the built-in camera from a web app. It turns out this is, apart from some weirdness and the need to polyfill, pretty great: you don't need native code to access the camera (of course it's not in Safari). Now I want to do some additional mini-apps that use other future-forward web APIs, like Service Worker and gamepads.
  • Write another book/article series: I've gotten a lot of really good feedback on JavaScript for the Web Savvy, both from inside my classes and by random readers around the Internet. Now that I have some time, I'd like to write another book, probably this time packaging up some of the lessons I've learned working in data journalism. I also want to pitch an article series that helps get people from the basics of web production up to more serious news app development.
  • Hacks/Hackers meetup: Finally, last year I took over the local Hacks/Hackers meetup group, but I've been too busy to organize anything for it. Now that I have the time to round people up and gather resources, I want to make good on my goal of holding a day-long event one weekend — either as a hack day or a training session of some kind. More details as I figure it out!

January 23, 2014

Filed under: random»personal

This Week ridiculously busy. Class at SCCC has ramped up, I've been prepping for the University of Washington workshop, and of course I've got my everyday work at ArenaNet as well. In lieu of a more substantial post, here are some quick notes about what's on my plate.

  • The homepage for the news apps workshop (now formally COM499B at UW) is located here. It's not terribly comprehensive yet, but my goal is to update it with my presentations, things that I mention during class, and in-class work as I go. In other words, it's not a textbook, it's a record that students can refer back to later. I'd welcome suggestions for other additions to it.
  • While uploading the COM499 page, I accidentally overwrote the root index.html on my portfolio, which led to A) a panicky few minutes finding the Google cache of my page and recovering it, and B) the realization that I had no way to recreate my portfolio page, now that it's not generated via Blosxom anymore. As Mike Bostock wrote in his ode to Make, automating any production process is important because it formalizes things, and makes them reproducible. After an hour's work or so, is still a static page, but it's built from a template and a Node-based recipe, so I'll never lose it entirely again. Once I've cleaned things up a little, I may open-source the tool for other ex-Blosxom users.
  • Caret will break 30,000 users today or tomorrow. This is, to be honest, mind-boggling to me. The last time I wrote about it here, it had 1,500 users. Since that time, I've added a ton of new functionality, accepted contributions from other developers who want to help add features, found out that members of the Chrome team are actively using it (although, I assume, not to write Chrome itself), and filed several bugs against the chrome.* APIs. Caret's my daily editor for class work and personal projects, and I'm incredibly pleased by how well it compares against Sublime and other native editors.
  • Dates have been locked in for Urban Artistry's Soul Society festival in DC this year: April 14-20, with the main event toward the end of the week as usual. We'll be adding specific event schedules in the next couple days, so keep an eye out.

May 24, 2012

Filed under: random»personal

Learning the Hard Way

I've recently been recommending Zed Shaw's Learn X the Hard Way books for learning a variety of computer languages. I find these books, and the educational theory behind them, kind of fascinating. Shaw himself encourages other people to fork his project for new languages, and provides some advice on its structure:

The way to think of the book's structure is the first half gets them strong, the second half gets them skills. In the first half they're just doing push-ups and sit-ups and getting used to your language's basic syntax and symbols. In the second half they use this strength and grounding in the basics to start learning more advanced techniques and concepts, then apply them to real problems.
This is not a way that I particularly like to think about learning--my least favorite part of high school was doing drills in class. But in retrospect, what I hated was drilling things I already understood. I despised sentence diagramming because I already understood grammar--I didn't need to draw arrows above the subject-verb-object relationship. When it comes to new problems, I actually spend a lot of time on simple, repetitive practice, what Shaw calls "getting strong." The same seems to be true of most of my students, and that realization has dramatically changed the way I teach this quarter.

When I started learning bass, someone recommended a really good book on bass technique--not a book of songs, or a book on music theory, but just step-by-step foundation on how to hold the instrument and pull the strings without causing long-term physical harm. I spent hours just running through the most basic exercises: plucking strings with two fingers, then playing across strings, then muting unplayed strings. It was tedious, but whenever I play a looping arrangement (where unmuted strings would create "drone notes") and sing simultaneously, I'm glad I spent the time.

Likewise, I was reminded of this the other night at dance practice while talking to one of the other poppers about traveling. When I first started, I remember asking the teachers in class how they were able to combine movement across the floor with their isolations and waves--when I tried, it was too hard to keep both motions in my head, and one of them would collapse into awkward spasming. I wanted a "secret"--some kind of special technique that would let me skip the hard work. But that shortcut didn't exist: gradually I learned to travel while dancing only by working hard on each component individually and repetitively.

I'm proud this quarter that the examples, in-class exercies, and homework I've assigned for Intro to JavaScript have all been "real" work--my students have learned how to make basic slideshows, to filter and display data from CQ and the World Bank, and even how to imitate Paint.exe using canvas. I hope that they'll be able to leave the class and talk about what they've done in interviews, or use them as jumping-off places for other projects. But more importantly, I'm spending each class with students typing along with me, giving them feedback and drilling the basic skills of reading and writing code. They're learning the hard way, and so far, it seems to be working.

December 1, 2011

Filed under: random»personal

The Long Way Home

I'm writing from our new home, Seattle! We arrived at our new apartment yesterday, after a long, six-day road trip across the country with the dog and the cat in the back seat.

Turns out there's a lot of country between the two coasts. I wouldn't necessarily want to do it again, but it was neat to drive through parts of the United States that I'd never seen, like the deserts of New Mexico or the overwhelming flatness of Oklahoma, and to revisit a few, like my birthplace of Lexington, KY.

In any case, now we're just settling in, getting to know our new neighborhood, and waiting for the shipping containers to arrive with all our stuff. Regular blogging should return soon. Thanks for your patience!

October 24, 2011

Filed under: random»personal»events

Not A Sentimental Wedding Post

This weekend, Belle and I got married. It was a small, homemade, personal kind of wedding. Among the crafts we made was a "photo booth" consisting of my laptop running a bit of custom ActionScript and a box of very silly props. Unfortunately, we didn't have power and I'm not sure I had the screen saver all set up correctly, so some people may not have had a chance to take their pictures with it before the batteries died. If you'd like to give it a shot, feel free to download and install the Official Nerds Get Hitched Photo Booth (works on Mac or Windows, requires Adobe AIR). It'll take four pictures of you, then save them to a folder on your desktop. There's no quit button (it's a kiosk), but you can hit Escape to leave full-screen mode and then close the window.

This is a great case of what ActionScript (and the AIR platform that Adobe built out of Flex/Flash) does well: pair a better version of JavaScript with a comprehensive runtime library for exceptionally fast, easy multimedia production. I procrastinated on this project like crazy, but in the end it only took me a few hours of real work to create. Sure, we could have paid for software to do the same thing, but if it's so simple, why bother? And this way it's all under our control--it looks and acts the way we wanted it to look.

Anyway, feel free to install our photo booth and send us a picture. And thanks to everyone who came out to our little wedding celebration!

June 3, 2010

Filed under: random»personal


Look, I'm not saying George Clooney's character from Up in the Air is right about wanting to unload all personal relationships. I don't have that many to spare, after all. But getting my worldly possessions down to a backpack (and then ditching the backpack)? Reducing my carbon footprint, my level of mindless consumerism, and my reliance on cheap, over-designed crap created by underpaid factory labor? Great. Let's do it. theory, at least. In practice, it is tough to get rid of stuff. Learning to live frugally is a multi-step process.

Belle started with a simple rule for our apartment: if you bring something in, something else of equivalent size has to go out. This is a great rule, if for no other reason than that the apartment is very, very small and we can't stuff anything else into it without learning to stack the pets like Tetris blocks. And it incentivizes sustainability by making it easier to use trading/swap services than to buy new books/games/movies.

The second step has been learning to embrace digital media. I still buy a few CDs and paper books, but not nearly as many as I used to, and usually only if they're something I'll want to loan out, or if they're not available online. And we almost never buy DVDs--Netflix has that covered. While it has taken some time to get used to not 'owning' my music or movies, maybe that's the point--'ownership' shouldn't be the defining characteristic of cultural engagement.

Next up is learning to be happy with last year's model. This is not easy to do, especially given the constant deluge of electronic follow-up that companies can leverage these days. Most recently, for example, TiVo sent out messages offering new versions of their DVR box to subscribers at a discount. That's tempting: we've still got the old Series 2 box, the one that came out in 2006, and it doesn't do HD, or Netflix streaming, or... well, lots of neat features. But do we need that? I mean, we don't have HD cable anyway, and it doesn't really bother us. We've got the XBox for streaming, and we'd have plenty of space on the current TiVo if we'd stop using it to store whole seasons of Damages. There's nothing wrong with it to justify a replacement, so we'll stick with what we've got.

At some point, I want to start simplifying--giving away, selling, or (as a last resort) trashing the objects that I only keep out of habit. You know what I mean: old purchases that you don't use anymore, but you keep just in case it comes in handy somewhere down the road. Ruthlessness is the key--you're never going to turn that old Super NES on again, and you know it--but I probably lack the outright willpower. So instead I think I'll get a roll of those little green dot stickers, the ones they use to mark prices at flea markets, and put them on anything I haven't touched in a while. If it actually gets used, I'll take the sticker off. Anything with a sticker still on it at the end of the year has got to go.

Which brings us to the toughest part: our book collection. Already, heavy boxes of books books are the moving experience we dread most. But paper texts have another type of inertia, a weight derived more from their intellectual and emotional impact than their actual mass. Especially if you love books--and we do--it's hard to discard them. It's like throwing away knowledge! And yet we'll never read many of them again, and some of them we bought and may never read in the first place. Everyone would be better off if they were donated to the library or recycled. Of all the steps for reducing our material footprint, cutting the number of books sitting around on our shelves will no doubt be the most painful, but it may have the biggest impact.

Belle and I will probably never get our lives down to the point that they can fit in a backpack, or even an overhead luggage compartment. In reality, we probably don't actually want to get there--we're not monks or masochists, after all. Yet just as the best essay can benefit from judicious editing, I think it's appropriate to take a critical scalpel to our lifestyles from time to time. There's a lot of pressure out there to accumulate, to the point that "consumer" has too often become synonymous with "citizen" or "person." That pressure has consequences, in the labor system, in the environment, and in our financial stability. It may be true, as Slate's Farhad Manjoo insists, that we can't actually opt out from American materialism, but maybe we owe it to ourselves to try.

January 4, 2010

Filed under: random»personal»events

Review: 2009

  • Celebrated five years together with Belle, an achievement for which few words would be sufficient. Thanks, babe!
  • Mostly followed my gaming resolutions from last year. Definitely played more indie titles, skipped tedious grinding, and avoided console shooters when possible. Did not get around to trying an MMO, which was probably for the best.
  • Bought a Kindle 2 and an Android Dev Phone. Became a developer for the latter, much to my dismay.
  • Wrote about a quarter of a game engine, then quit when I got to the parts that aren't instantly gratifying (preloading, faux-threading, AI). Still managed to learn way more than anyone should know about high-performance Actionscript optimization.
  • Survived a congressional session, a corporate purchase, and a promotion.
  • Survived a mild case of extensor tendonitis, and resolved to take better care of my hands.
  • Rewrote my personal subset of Blosxom in PHP, increasing the speed of this blog by an order of magnitude. Resisted the urge to convert to a real publishing platform like Wordpress. Purged a number of old entries, while I was at it.
  • Read a fair number of books, including a long, miserable slog through Chris Anderson's Free.
  • Began taking breakdancing classes, which (after six months) qualifies me as something of a b-boy-in-training, I guess. Lost about 20 pounds in the process, but failed (so far) to conquer a general deficiency of flavor.

Reviewer's notes: The special effects may be showing their age, and portions seemed rushed or in need of additional polish. But overall, 2009 delivered a solid annual experience, not to mention a definite improvement over previous franchise installments. Possible candidate for Year of the Year. Score: 9/10

June 30, 2008

Filed under: random»personal

Misery & Company

Everyone has an employer-from-hell story, but I think mine ranks pretty highly. Right out of college, I took a job with an AV contractor in Chantilly, VA. At the time I had just started getting into sound as a hobby with my band. I figured this was a cool opportunity to learn more about audio tech.

The company, Custom Fit, was run by a guy named Steve. I didn't know it at the time, but this was apparently Steve's third company or so. He had a habit of starting new ventures, which he would then run into the ground, ruining the credit of whoever he'd conned into providing funding. Originally Custom Fit had been a beige-box computer builder for people who couldn't spell "" (hence the inexplicable domain, but Steve soon figured out that there was more money in bilking local government organizations for publicly-bidded contracts. So that's what we did.

Working at the World Bank could be ethically ambiguous at times, but for me it never compared with dealing with Custom Fit's clients: building managers for town meeting halls and government facilities laboring under the mistaken assumption that they were going to get a pristine new sound system or video projection setup. As far as I could tell, Steve had no interest in doing that. Instead, a significant portion of his business simply combed government sites for contracts, then figured out the bare minimum that he could possibly bid in order to undercut the competition, while using cheap parts and substandard design to ensure profitability. Of course, I was the one who had to break the bad news to the client when things inevitably started to go wrong. I should have stood up for myself sooner, but I have to admit: I was totally unprepared for the possibility that my boss was a borderline con man.

Oh, the stories I could tell: the accountant that I once inadvertently caught browsing porn (I whistled when I walked around his part of the office after that). The time I tried to order supplies for a job only to be turned down because we hadn't paid our bills on previous orders. Having to constantly go back for more training on the company's home-grown inventory database because Steve (perhaps believing that humiliation builds character) refused to teach anything in sessions longer than five minutes ("Come back when you think you've got that under control," he'd say after showing me how to work a single menu option).

In retrospect, it should have been a warning sign when one of the interview questions concerned XLR cabling, and Steve said that my answer was "wrong, but a good try." I looked it up later. Everything I had said was basically correct.

I learned a lot about how (not) to manage people at Custom Fit. And I learned it well. After two weeks, I gave my two weeks notice (at which point my employment experience actually improved significantly). My parents probably freaked out in private, but they were very supportive of me, and I soon found a new job at the Bank. I got lucky: about a month later, the IRS raided the company and Steve was forced to close shop.

Here's the funny part, and the reason I'm writing about it today: the experience at Custom Fit was so traumatic for employees that many of them have kept in touch to this day. It was a bonding experience, like being taking hostage by terrorists or having Comcast as your cable company (ba-zing!). There was a mailing list for Custom Fit refugees. People hosted reunion picnics. Today I got an invitation to the "Survivors of Custom Fit Inc." group on Facebook.

Let this be a lesson to employers large and small: thanks to the Internet, you will be remembered by an organized group of people, possibly with axes to grind. When Steve tried to relaunch the Custom Fit webpage, word went around quickly, and someone (not me) quickly wrote a script to send his page-counter skyrocketing, just to mess with his head. Don't be like Steve. Treat your people well. Misery may love company in general, but it doesn't have to love yours.

April 28, 2008

Filed under: random»personal»memes

Doves Cry

Should have put this up a long time ago: The Song Chart Meme.

By flickr user xianjessen.

Future - Present