the further adventures of

Mike Pirnat

a leaf on the wind

Next Page »

A 365 Project for Code?


While Twittering in jest over the frequency of Requests' releases, Jeff Forcier inspired me to wonder if you could do the software equivalent of the photography 365 projects that seem to be all the rage this year. I started probing around at the edges of the idea, and it seemed like it could actually be an interesting challenge.

The closest thing I could find (which Jeff pointed me to) is Calendar About Nothing, which tracks your public GitHub commits and gives you a lovely red X for each day you push up something that's available to the public. That's really cool, but it's also pretty easy to just be a weasel and rack up an epic streak by twiddling one's dotfiles back and forth every day. You could script it.

So what would a "code 365" look like? Extrapolating from photography, I would say that it's basically:

  1. Write something unique every day -- as humble or as wild and involved as you like, but something new every day. You wouldn't just publish small tweaks to a photo to get extra days of a photography 365, so once your daily code is released, it's done. And while you might be inspired to emulate great photographers or programmers who came before you--and that's okay--it's not okay to just grab somebody else's FOSS and claim it as your own. The challenge is for you to produce something new. (I'm willing to make an exception for "Hello World" entries, especially if they're on day 1, because it's the sort of thing I would do.)

  2. Any language you want -- just as a photographic 365 invites you to try different tools, techniques, and subjects, if you're brave enough to do a code 365, why not experiment with different languages, programming paradigms, and platforms? We often talk a good, smug game about the value of polyglot programmers, but why not prove it to yourself?

  3. Release it -- push it up to GitHub or whatever your preferred platform is; get it out there where we can see it and admire your foolhardy audacity.

I guess the next question is... Who would be crazy enough to do one of these? People like Corey Haines or Gary Bernhardt come to mind. I bet Kenneth Reitz could do it, but then we'd miss out on updates to the ten million other things of his that are increasingly hard to do without.

I'd be tempted to do it--what's good for the goose is good for the gander, right?--but I'm definitely not willing to consider in 2012. I think one 365 project is more than enough!

What do you think? Is this silly? Or could this Be A Thing?

Read and Post Comments

Thanks for Everything, Steve

Thanks, Steve
by Jonathan Mak Long

I had meant to write this when Steve Jobs announced his departure from day-to-day operations at Apple, but life, as it tends to, intervened, and I never quite found the time. Now that he's gone, I'm compelled to get this out while it's still fresh in my mind.

I learned about Steve's passing on my iPhone.

Music is an integral part of my life, for years before and after my time as a radio DJ, and it's a large part of how I process the emotional ebb and flow of my life. After I put my phone down, I picked up my iPad, fired up the Remote app, and in seconds I had Lisa Gerrard and Patrick Cassidy's Immortal Memory going on the AppleTV, while a smart album of my favorite photos--of my wife, of my daughter, of vacations and adventures--scrolled by.

I felt the urgent need to type, reached into my backpack, and drew forth my trusty unibody MacBook, felt the familiar keys under my fingertips, activated the Python virtualenv that houses my writing, fired up vim.

It's worth a moment of pause to realize that in a matter of minutes, I've had a personal interaction with four devices that wouldn't have been without Steve's vision of personal computing. Reflecting on these magical, science-fictional devices--I still maintain that the iPhone plus Wikipedia is the Hitchhiker's Guide to the Galaxy made real--I am dumbstruck with the realization that I don't just owe Steve my thanks for my favorite shiny toys.

I literally owe him everything.

Once upon a time, my parents bought an Apple II+. Must have been about 1981. That wonderful machine, connected first to a fairly awful '70s TV, was my introduction to computing. We played games on it at first; my parents and I took turns reading aloud from the text output of Zork and all the other great Infocom games, to which I credit my precociously early literacy, my goofy vocabulary, and my love of puns and puzzles. Then I discovered BASIC, and the die was cast. I loved typing in programs from magazine code listings, seeing what they did and how they worked, and even more fell in love with writing my own programs. From that moment, the die was cast--while I excelled in many subjects in school, I was always happiest when tinkering with computers.

Over the years, the Apple II+ gave way to the IIe, and eventually to a long series of Macintoshes. I got into BBSes, and that eventually got me into a (ahem) borrowed VAX account at the local college, where the natural outlet for my text adventuring was playing MUDs, which I turned into class credit by landing an independent study project on writing code for MUDs. When it was time to pick a college, I knew that I was looking for a computer science program. A long-distance friend that I kept in touch with via VargonMUD got me introduced to Case Western.

Case got me to leave southwest Colorado, arguably the most beautiful place on earth, for Cleveland, Ohio. Not only did I survive the grueling computer engineering curriculum, but I came out on the other side with a job at IBM and a fiancée.

The IBM travel schedule and its impact on my personal life drove me into the arms of American Greetings and its spunky internet startup,, just as the first bubble was beginning to burst. We had some rough years on the road to profitability, but I hunkered down, got stuff done, and thankfully held onto my job, where I became increasingly enamored with our primary language, Python. Python's "it fits your brain" feels a lot to me like Apple's "it Just Works", and I see easy parallels between Apple's design aesthetics and Python's Zen. Is it any wonder that the number of Macs at PyCon has exploded over the past five or six years? Working with Python led me to helping David Stanek start up a local user group, and then to attending PyCon, which in turn brought me to speaking and volunteering at PyCon, which have been some of the most satisfying experiences of my life thus far. Moreover, PyCon is responsible for getting me serious about quality and craftsmanship, and has rewarded my risk-taking with friendships, self-confidence, and composure under pressure.

Thanks in part to this earnest desire to grow in my craft, the growth from my speaking experiences, and that Infocom-kindled love for tinkering with a puzzle until solved, I've come to a pretty awesome place in my career--basically I go where I'm needed most, to get hard things done, to shake things up, to band people together, to transform, to raise the bar. On good days, it feels like being Doctor Who in a Kurosawa movie, all flashing swords and sonic screwdrivers and the triumph of intellect and romance over brute force and cynicism. It definitely never gets boring--I'm coming up on twelve years at AG, and in some ways I feel like I'm just getting started.

And on the home front? Things have been good; house, cars, cats, good food, great travel adventures, some of the best friends I could ever ask for. Liz and I have been married for almost eleven years.

Our daughter is four and already enchanted by computers and iPads. Her entire concept of what a telephone is will be rooted not in rotary dials and POTS but in a kind of mobile computing that was science fiction when I was a kid. She may not remember it, but I used to read Learning Python to her as a baby, and I've got the photos on my AppleTV to prove it to her. But that's not what's really amazing about her--it's that she's been so instrumental in overcoming the depression that plagued my 20s; she blew into my life like a fresh breeze and swept away so much garbage. Sure, parenting hasn't been easy, but when I stop to take a breath, I'm struck by how much better I've become for the experience.

Education, career, friends, family, community--literally my entire world--all because of that Apple II and Steve's vision. Surely in some alternate, Steveless universe, similar patterns might have emerged, but this one, these friends, this path, this wife, this child, I can trace very clearly to his influence.

Words seem useless to express my gratitude for the profound effect Steve has had on my life. My sadness that this titan is gone. My regret that we'll never know what other transformations he would have brought to the world.

So, how then to cope with this sudden absence, the sinking of the rock that has so rippled the waters of my life? My inner child will hold to the illusion that Steve's gone to the same tropical island paradise as Jim Henson, Isaac Asimov, Richard Feynman, and Carl Sagan. My outer adult will try, even if it's only in small ways, to make the world a better place, to touch the lives of those around me, to encourage them to grow, to become, and to help them in turn shape the lives of others. And hopefully that will be all right.

Thank you, Steve.

For everything.

Read and Post Comments

Why Convore?

Earlier today, David Stanek was grousing about Convore and wondering why he needed "another place to look for communications". I promised him an answer that couldn't fit into 140 characters, and this is it.

I was initially a skeptic as well and had more or less the same reaction. I've got IRC and Jabber for chat rooms; I've got email lists and message boards for slower-speed, more permanent discussions; and I've got Twitter for a real-time firehose. Why do I need one more thing?

The answer, at least to me, is that Convore is a little bit of all of these things, and it ends up being greater than the sum of its parts. After giving Convore an open-minded try at PyCon, I found that it was a really comfortable and natural fit as a back-channel for the event.

It's topical: Twitter is great at being a firehose of information, but it's lousy for being able to subdivide that firehose into easily sippable streams. At PyCon, Convore users created a topic for every talk within moments of it starting, allowing commentary and discussion to stay relevant and focused.

It's persistent: Unlike IRC (which only persists in logs) and Twitter (which only persists in the Library of Congress), the Convore discussions will stick around and are easily discoverable (though admittedly some better search would help here). A couple of the benefits--and I'm sure there are others--come readily to mind:

  1. As a conference speaker, I could go into the Convore discussion after my talk and not only see what the back-channel had to say about it, I could answer questions and interact with people who were interested in what I had to say.

  2. I can come back to it much, much later. We're starting to show PyCon videos at work during lunch, and we can use the Convore data to help decide which talks were the most interesting or that are worth prioritizing.

  3. People who weren't able to attend can review the discussion and participate after the fact. Maybe it means finding an interesting new project, or maybe it means networking with other developers--it's there and it's available.

It's low-friction: I can log in via Twitter (so I don't have to create yet another identity). I don't need a client to make it tolerable (even "New Twitter" hasn't figured this out yet). It works great on my laptop, as well as on the iPad (and presumably other tablets as well).

It's civil: If I were to star in a Ballmeresque dance video about Convore, the riff would be "civility, civility, civility, civility." At least in what I saw at PyCon, the Convore discussions never got nasty or crossed too far over any lines; even when the speaker from DropBox went way, way over time on his keynote address, the back-channel didn't get nasty--and in fact it eventually turned sympathetic (after all, how many times have you delivered a keynote speech in front of 1400 people?). This was a very stark contrast to the year that Ian Bicking put the #pycon IRC channel up on the big screen and things got somewhat ugly.

I don't think that Convore replaces email lists. Those seem well-suited to lengthy, back-and-forth discussion among the communities they represent. I don't use it for trying to organize our podcast (although there's an argument to be made that it's an impossible task no matter what medium we use), and I wouldn't use it for organizing a user group or conference.

I don't think that Convore replaces IRC or Jabber; sometimes I just want to shoot the breeze or have a more ephemeral conversation.

I don't think that Convore replaces Twitter; Twitter's great at being a big, asychronous party with all my favorite people in it. Sometimes I want to be distracted by all the shiny toys that people find.

But as a conference back-channel, it was stellar, and I'm looking forward to using it more in that context. Your mileage, of course, may vary.

Read and Post Comments

One Honking Great Idea

I really enjoyed From Python Import Podcast's two-parter on the Zen of Python, but I've been thinking that they may have missed something really interesting in the last item in the Zen:

Namespaces are one honking great idea--let's do more of those!

For a long time, I had largely overlooked this one myself, because on its face it seems frivolous and perhaps too specific. Up to that point, the Zen is all broad strokes and elegant generalizations, and suddenly BAM! here comes this thing about namespaces that's full of colloquialisms and exclamation points, and it feels very tacked on and strange and arbitrary, like a sort of gangly teenager trying to fit into a more mature crowd.

Naturally, the conversation in the podcast went straight down the nerd rabbit hole to talk about the meaning of namespaces, and completely neglected the real meat here, which is a pity because this might actually be one of the most important aspects of the Zen.

This is an expression of the enthusiasm and joy that pervade the Python community.

This is Python's "Get Excited and Make Things." This is a formal declaration that it's all right to get excited about stuff that we make. This is a mission statement to go forth and create new delights, so that those who encounter them may be similarly inspired. That above all, this stuff should be fun.

Think about that the next time you're crafting some Python code and see if it doesn't change how you approach things.

Read and Post Comments

Personal Unit Tests

So this link got tossed around our developer chat at work the other day, mostly to make fun of the idea and put down its author, but I find myself intrigued to the point that I can't stop thinking about it. Why not have a set of personal unit tests?

Let's be blunt; I pretty much suck at dealing with big goals in my personal life. I have a hard time setting them and I have a hard time executing toward them. I've given up so many New Year's resolutions that anymore all I resolve is to stop resolving anything. (The only resolution I ever kept was to "drink more sparkling wine"--that one was surprisingly easy to adhere to!) But I do okay with a sort of lightweight, notebook-based GTD, so I think I'm not beyond redemption.

The idea of a set of small, simple, easy-to-rectify "assertions about myself that I'd like to be true" has a strong appeal to me. Like failing unit tests in a software project, I can start chipping away at them, gradually turning them from corrective actions into automatic routine that just works, and that alerts me when something's not quite right with the system.

The first step (obviously) will be coming up with some, and figuring out an appropriate way to track them. Hopefully that's something I can squeeze in this weekend, and then the experiment can begin. I'm curious to see how it turns out.

Read and Post Comments

Six Years With the Rose

Six years ago today, it was my first day at Quitting IBM (six years and three days ago) was my birthday gift to myself. I was 23, living in engaged pseudo-sin, and was just glad to be able to see in the inside of our apartment on a regular basis. Liz had just recovered from an awful, scary bout of illness--"fifth disease"--so I was glad to make sure that we still had health insurance; of course, it was also exciting to think that I'd be working for a dot-com, and we'd IPO, and all get rich once our stock options vested. I had no idea what to expect, and was nervous as hell about getting in on time.

Time, as it tends to, passed. Whoosh!

We didn't IPO (probably a good thing); I certainly didn't get rich. I'm still on my original 450MHz Pentium III. I see the inside of our house regularly, though not always in the durations to which I'd prefer. I still can't seem to get my "ergonomic" chair adjusted right (gee, I wonder why my back hurts). I've had three cube relocations, each to a progressively smaller grey box, but I've survived six or seven rounds of layoffs. Most of my Legos have gone home as a result of my gradual loss of real estate.

I've done a lot of stuff, and have even more coming up; I may even acquire a minion or two, temporarily, to delegate some grunt work to. I've learned a decent amount technically, but probably more about life, people, and organizations. I've learned that my personal time has significantly more value than I'd ever expected, and I've learned that some bits of myself I'd thought long gone were just hiding and needed to be coaxed out again.

My hairline has moved more than I had ever really noticed, and what's there has greyed faster than I expected. I don't read as much as I want to (I blame eye strain from looking at computers all day). I don't work out as much as I want to. I don't do as much as I want to.

I wonder--where will life take me in the next six years?

Read and Post Comments

Dear London

Dear London,

So very sorry to hear your sad news today. We were all quite happy for you yesterday with the Olympics and all, and it was so nice to see you turn out for Live8 over the weekend.

You seem to be handling everything okay, so I think you will be all right once you get things cleaned up and address your wounds. It's heartening to see you so courageous and graceful on such an awful day.

Our condolences go out to those injured and killed; they did not deserve what fate thrust upon them. Do not dwell too long in your grief, but remember those that were lost with fondness and joy.

Hang in there, okay?



Read and Post Comments

Next Page »