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!

July 30, 2014

Filed under: random»linky

<link rel="post">

  • When I reviewed Questlove's Mo Meta Blues, my main complaint was that the parts I really enjoyed — in-depth looks at musical history from his deep record-diving perspective — were too few and far between. So while I'm late reposting it, I have to say I really enjoyed this six-part series of articles for Vulture on "How Hip-Hop Failed Black America."
  • Marijn Haverbeke, author of the CodeMirror editor, Tern parser, and any number of other cool JavaScript projects, has released the second edition of Eloquent JavaScript, which now includes a lot more detail on the browser and NodeJS. If this had existed two years ago, I probably wouldn't have written my own textbook.
  • I'm a middling-good fighting game fan, so I knew much of the material, but I really enjoyed Patrick Miller's free guide to fighting games. For all that they appeal to button-mashing, there's a lot that goes into high-level gameplay, and Miller does a good job of covering the progression.
  • If you're in journalism and like what I've done at the Times so far (what little of it has gone public), you may want to check out my new project: a repository of tutorials for JavaScript and journalism. I've started with a guide to quick sortable tables with Angular, but I'll be following up with information on web scraping, canvas, browser performance, and more.
  • Finally, development on Caret has basically slowed to — if not a halt — a slow drip of updates. However, thanks to some setup work and a helpful overseas coder, it's now available in both English and Russian. I feel so international now. If you'd like to contribute another language, you don't have to know very much JavaScript at all — just enough to be able to convert the existing English text.

January 23, 2014

Filed under: random»personal

This Week

...is 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, ThomasWilburn.net 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.

June 19, 2013

Filed under: random»linky

Remember the Linkblog!

Obviously I've been a little obsessed with RSS the past couple of weeks (get used to it: it'll be everyone else's turn come July 1). Along the way, I've been trimming my subscription list: I've been blogging for more than nine years now (!), and collecting feeds for nearly as long. A lot of those URLs are now broken, which is a little sad. In a precursor to the whole Google Reader situation, if you were on Feedburner, there's a pretty good chance I'm not reading you anymore.

Speaking of things that people don't really do in a post-Twitter world, I was reminded this week that I need to post another set of links--not so much because anyone else is interested, but because between the dismal searchability of social media and the death of bookmark services like Delicious, it's the only way I can be sure to find anything more than three months from now. And so:

  • A lot of people linked to Jeremy Keith's defense of RSS-as-API this week. Indeed, when I was at CQ, getting RSS running for our various services and reports was one of my constant campaigns. In many ways, it's one of the purest expressions of the web: a machine-readable format of human-centric information.
  • What reminded me of link-blogging in the first place was this study of privacy and de-anonymization, which I knew I'd posted to one service or another but could not for the life of me locate when I wanted it. It's a fascinating case of matching health records to individuals through obscured metadata and demographics--food for thought in light of the NSA metadata hubbub.
  • Earlier than expected, and all too soon, Iain Banks died last week. Ken Macleod has a passionate remembrance in the Guardian.
  • I have always been skeptical of WebGL, but it looks like it'll graduate to legitimate technology with a rumored inclusion in IE11. I still think it's a terrible API. That said, this article by Greg Tavares (one of the Chrome coders on WebGL) got me more excited about it than any other tutorial has ever done. Tavares points out that it's not actually a 3D API, but a 2D drawing API with decent tools for projection math. In that light, and given my love for 2D, I've actually started screwing around with WebGL a little.
  • If you are interested in using WebGL for 3D, though, this presentation does a great job of presenting both the what and the why of the math involved. It almost made me care about matrices again.
  • It is taking years, but people are finally realizing that the web is not killing long-form journalism. If anything, it may be enhancing its chances.
  • I really enjoyed this retrospective on the Portal 2 alternate reality game. The section on false clues and coincidence is a testament to people's ability to match patterns, whether they exist or not. It sounds like a fun gig.

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 29, 2011

Filed under: random»linky

Dr. Linkenstein

IT'S ALIVE.

  • Best. Crowbar. Ever.
  • I for one find it impossible to believe that David Pogue is a shameless industry shill. No, wait, I don't mean impossible at all.
  • Why I was looking for the details of the NES Game Genie, I really couldn't tell you. But here's how it works, which is pretty much what I figured. I'm amused by the way that they obfuscated the codes in order to keep people from figuring them out. It would be fun to do something similar with URLs.
  • Twitter recently released a guide called Twitter for Newsrooms. And while the jokes practically write themselves (we should all take a crack at it in the comments), what they've written is less a guide to Twitter specifically, and more an introduction to "how people interact on The Internets." It's all about leveraging scale, writing feed-friendly copy, and linking out to other writers/sources. So while I don't actually think it's bad advice for journalists who are newcomers to the web, I wish it weren't identified so strongly with a single brand--especially one that the Innovation Editors of the world are already overhyping like crazy.
  • If you're in the DC area tomorrow, Thursday the 30th, you should come by the National Mall for the Smithsonian's Soul Train music and dance event. The artistic directors of Urban Artistry (the dance company I joined about six months back) will be performing, and Questlove from the Roots will be on the ones and twos.
  • That reminds me, by the way, of one of my favorite video clips from this week: Talib Kweli on the Colbert Report.

    The Soul Train show tomorrow is part of the Smithsonian's Folklife Festival, and one of Kweli's points during his conversation with Colbert is that hip-hop is folk music. As one of my friends once said, even if you don't care for hip-hop, you have to remember that it not only spoke to parts of America that were ignored by mainstream music, but it was also something that ordinary people could do with nothing more than a beat and a rhyme. Even though I haven't been listening to the genre very long, that definition really resonates with me, and with the reasons I started b-boying in the first place.

February 24, 2011

Filed under: random»linky

The Bottom Link

Last week was the budget. This week is the leftovers.

  • I've developed an interest in correction tracking for new media lately, and there are two interesting developments on that front. Kurt at Ars Technica has debuted Copypasta, a tool for adding collaborative editing to any site. Mediabugs, on the other hand, is more of a centralized database of errors, and they just introduced a WordPress plugin for journalism blogs.
  • Know how we used to post corrections to blogs in the old days? The comments. Uphill, both ways. Now get off my lawn.
  • I don't know what's more terrifying: that they've actually finished Atlas Shrugged, The Movie, or that this is "part one." As always, we quote John Rogers:
    There are two novels that can change a bookish fourteen-year old's life: The Lord of the Rings and Atlas Shrugged. One is a childish fantasy that often engenders a lifelong obsession with its unbelievable heroes, leading to an emotionally stunted, socially crippled adulthood, unable to deal with the real world. The other, of course, involves orcs.
  • Yeah, so maybe buying a Robocop statue for Detroit is not the best use of $50,000. But on the other hand, if you needed a great example of the ways that the Internet tends to privilege frivolous gestures over useful action, it's the best thing since OLPC.
  • Speaking of Detroit, it does actually have grocery stores. Some good thoughts on urbanization, corporate branding, and perceptions of poverty.
  • I complain a lot about the current state of rich HTML graphics: <canvas>, for example, is in the running for the worst API I've seen since the original DOM. If you're used to Flash's excellent display tree API, you may want to look into AS3 guru Grant Skinner's Easel.js library. Myself, I think it's still unclear that browser performance is there yet.
  • Android 2.3 ("Gingerbread") was just pushed out to my Nexus One. Right off the bat, the new power off animation cracks me up--it's basically the "shrink to a white dot" from very old CRT television sets. Of course, that effect was caused by the physical movement of the cathode ray gun inside the set, which has no equivalent in the LCD/OLED screens we use for almost everything today. It's like a comedy record-scratch: cultural artifacts that everyone recognizes more for semantic meaning than through any direct physical experience with the original. There ought to be a name for that.
  • I switched my laptop to a solid-state drive this week (an Intel X25, after a Corsair drive flaked out during sleep mode). I'm not getting the full use out of it, because my BIOS doesn't support full SATA2 speeds without a hack that I'm a little scared to install, but the improvement I have seen is impressive--games, especially, load almost instantly, which has done a lot to move my spare time from the XBox to the PC. Given that CPU speeds have topped out, if you're looking to rejuvenate an aging laptop, this is probably the way to go.

Future - Present - Past