the further adventures of

Mike Pirnat

a leaf on the wind

Next Page »

332/365: It's a Bookcase, Charlie Brown

332/365: It's a Bookcase, Charlie Brown

At long last, serious bookshelves have arrived in our living room! It's amazing how much the room feels like it's "leveled up". I celebrated by loading them up with my nicer hardbacks--my one-volume Lord of the Rings and Bone, Absolute Sandman, my Hellboy library editions, the complete Bloom County, my autographed Neal Stephensons, and and of course the books that pushed us across the "we need to buy a bookcase" tipping point, the Complete Peanuts series.

33 days to go!

Read and Post Comments

310/365: Journey's End

310/365: Journey's End

Once upon a time, I started reading The Lord of the Rings to my daughter at bedtime (at her request, I should add). I'm overflowingly proud to report that at long last, our journey is complete! I'm really pleased by how much she loved having the story read to her. She's about hobbit-sized right now, so she really identifies well with Frodo, Sam, Merry, and Pippin. She's also been fascinated by looking at the maps with me (we talk about where everyone is and the path they've taken along the way). She opted out of the Appendices for now, which I think is all right, though I may try to sell her on the tale of Arwen and Aragorn at some point.

Her next request? "Daddy, now that we're finished with Lord of the Rings, I think there are more Harry Potter books. Can we do one of those?"

She's the best.

55 days to go!

Read and Post Comments

Engulfed in Flames

My wife pays attention to things that, because I am usually oblivious or overworked (or some combination of the two) I will never, ever notice.  Like the fact that writer David Sedaris was coming to town and that there were tickets available.  She couldn't make it, but bought a pair for me and a friend and coworker.  She really missed out, because Sedaris was hilarious, and well worth seeing and meeting.

In one of his most memorable passages, Sedaris addressed the subject of being an undecided voter.  I'm paraphrasing slightly, but it was more or less like this--imagine the Sedaris-esque pauses and slightly better construction where appropriate:

Being an undecided voter in this election is like being the person on the airplane who, when the flight attendant offers a meal selection of chicken or human shit with glass shards in it, says, "Hmm... How is the chicken cooked?"

While still on politics, Sedaris talked about how he conducted a survey during his summer book signing tour. The question--do you think Barack Obama is circumcised or not?--was simple enough, but the hemming and hawing took him by surprise as many well-educated, left-leaning audience members paused for deep thoughts like "Well, I know he's a Muslim, so..." or "He was born in Africa...".

To this I say that Obama is simultaneously both and neither.  The status of Obama's foreskin is like Schroedinger's cat--it's in a superposition of states and is unknowable until observed. (Frankly, I'll be content to let Michelle Obama be the only one to collapse that particular waveform.)

Sedaris warned us during the show about the signing line--the line is long, and never moves.  He was pretty much right; it took us two and a half hours to get through the line, a fair bit longer than the show itself.

I mostly tried to stay awake and on my feet (I'm old, and tired!), occasionally trying out bits of lightly snarky conversation with Cory, and trying not to be noticed by the people in line around us that amused me so.

Now, I know I shouldn't judge, but really, who goes out on a Friday night dressed like an extra from Newsies? He had the hat, the fully-buttoned vest, boots, the works.  I expected him to start hawking papers and then break into song.

More than anyone else, I didn't want to be noticed smirking at the the two extremely chatty high school girls just ahead of us.  It was really hard not to overhear their conversation, and even harder to not jump in with unsolicited advice.  One girl was freaked out about choosing the right career path and that she didn't want to get deep into something only to find out it wasn't right for her, and how she had this plan all mapped out to age 35, and how she'd get a solid career first and then have a family, but she didn't have to get married but she did want kids, oh sure she could be a great single mom if she had to be, so confident in that she was.  I really wanted to be able to interrupt her and tell her that, "Life is what happens when you're making other plans.  I didn't plan to be where I am now, but I'm happy.  Things change, and you change, and if you don't like what you're doing, you've got plenty of time to just do something else.  And as for being a single mom?  HAH!  Even with two parents, having a kid will totally kick your ass!  You have NO idea what you're in for." I bit my tongue a lot, and made observations about the architecture to Cory instead.

Of course, we did get to witness the girls' BFF commitment ceremony, so that's pretty special.  I think there may have been a pinky swear involved.

When the girls meet Sedaris, they practically squealed, and upon departing urged him to "have a nice life."

Sedaris had offered during his show to give away a free copy of a book, as well as allowing immediate line-cutting privileges, to anyone who spoke fluent Portuguese. It took us nearly two hours in line before we realized that we should have started downloading instructional podcasts to Cory's iPhone and learning enough choice phrases to circumvent the entire line experience. In a worst-case scenario, we figured we could just play audio clips from the phone and try to lip sync convincingly, sort of a "Kung-Fu Portuguese" to compare with the "Nicaraguan French" that Sedaris had discussed during one of his readings. Alas, like many great ideas, this one never went anywhere. After all, what were we going to do with a copy of his book in Portuguese?

As we finally neared the end, the line lady came by to give her spiel.  "He signs the title page.  You must have your book open to the title page." Or what?  David Sedaris will hop over the table and take a big ol' bite of my jugular? While he's ripping my throat apart with his delightful teeth, blood spraying everywhere, the line will disintegrate into a panic-stricken mob, screaming and stampeding away from the monster I've unwittingly released in my last moments on earth?

"Well," I mockingly replied aloud to myself, "there *was* that one time in Columbus.  We wouldn't want a repeat of that now, would we?"

The signs prohibiting photography violated one of my most well-groomed pet peeves--the use of the apostrophe to pluralize.  "No Photo's Please," read the sign.  Perhaps, we wondered, it's the "please" that's wrong, so the sign should really say "No Photo's Pleas," which sounds like some kind of aborted haiku... "No photo's pleas heard / Fall leaves swirl silently down / I need syllables."

Finally, at long last, it was our turn to approach the altar-like table where Sedaris sat with his pens and collection of freebie prophylactics that he likes to give to teenagers, and for such a momentous occasion, I shifted into present tense.

He signs for Cory first. In Cory's copy of Dress Your Family in Corduroy and Denim, Sedaris draws a cute cartoon turtle with a tunnel-like opening on the side of its shell. He explains that this is a turtle who wanted to do good for the world, so she blew a hole in her shell and now she's an abortion clinic.

He bombs out on guessing our signs, swearing and declaring horoscope stuff to be "bullshit" when he fails at both of us, but is surprisingly close to home when he asks if I'm a doctor. I explain that I'm not a doctor, but that my father is. Doctors, he tells me, have long hair on the sides of their hands, between the wrist and pinky.

My turn now, I start to hand over my copy of When You Are Engulfed in Flames when I'm suddenly betrayed by the dust jacket!  It flies out from where it's been dutifully keeping watch on the Magic Page Which Will Be Signed, and I feel like a total jackass. OH NOES!  My embarassments, let me show you them! Fortunately, David Sedaris fails to rip out my throat, nor do me any bodily harm whatsoever.

In my copy of When You Are Engulfed in Flames, he doodles a little bearded man in a top hat, declaring him to be a leprechaun who appears by surprise on your toilet as you exit the shower.  But I am not, Sedaris assures me, the kind of man who will scream upon encountering this leprechaun, because I know that the leprechaun means me no harm.

I tell Sedaris of my morning epiphany -- that the words "When You Are Engulfed in Flames" uncannily match the meter of the Disney classic "When You Wish Upon a Star", and that I've spent all day trying to un-imagine hearing the "in flames" version in my head, which has resulted in mentalling casting him as Jiminy Cricket to sing it at me.  He appears somewhat awestruck--either he's never heard this before, or is very good at pretending that it's his first encounter with the idea--and tells me about this surreal shop in Japan where he bought groceries that always played Disney music for no readily discernable reason.

We shook hands, and I said something trite and thankful in parting, and shifted back to past tense, glad that I wasn't part of the back twenty percent of the line that was still shuffling slowly forward.

And that's pretty much that. If the evening were an Ebay transaction, I'd be leaving a comment along the lines of "A+++ Would do business again!" So, if you feel an urge to be engulfed in flames, let me say from experience that I highly recommend it.

Read and Post Comments

Beware of Scrotum

Mildly incensed by a recent burp of stupidity from my home town, I sent this letter to the superintendent of the Durango school district and to the editor of the local newspaper:

I grew up in Durango and attended its excellent public schools from kindergarten through graduation from DHS in 1995.

It was with great embarrassment and dismay that I found my beloved home town of Durango in the national news this week.  Dana Nilsson's comments on the Newbery Medal-winning book The Higher Power of Lucky which appeared in February 18th's New York Times paint Durango as a provincial backwater and undermine the reputation and achievements of its students and schools.  No matter how well-intentioned those remarks may have been, nothing makes a town or its people seem foolish quite so effectively as censorship of children's books.

If the word "scrotum" is so egregiously radioactive in its medical correctness that a Newbery winner is deemed off-limits, then a deeper purge of the libraries is in order--who knows how much damage might be caused if a classic like All Creatures Great and Small fell into the wrong hands?  When I was a student in Durango's public schools, we regularly encountered dangerous, controversial books as a part of our curricula; often-banned works like Huck Finn, Bridge to Terebithia, and Of Mice and Men enriched our educations and made us better people.

The last time I saw Durango schools in the news, Smiley Middle School students were being strip-searched at a field trip.  It made a bit of a splash on CNN.  Are these really the kinds of waves that Durango wants to make in the world?

Do I have any illusions that it'll make a difference? Not really. But when one's home town shows up on Neil Gaiman's blog, one is forced to take certain measures.


Shocking update! I received a gracious reply from Dr. Barter just seventeen short minutes later that clarified the matter of the book's treatment in the library in question--it has not been completely removed but shelved with the young adult section and available for checkout. So shame on the NYT for pulling a Daily Show maneuver and lumping my home town in with the scrotum-fearing book-banners.

Also--and I should know better than for this to surprise me, but it does anyway--thanks to the charming smallness of Durango, Dr. Barter recognized my last name right away and connected me to my parents. I must have gotten used to being comfortably anonymous after almost twelve years here in Cleveland.

Read and Post Comments

Good News, Everyone!

Just received the official notice that my PyCon presentation proposal was accepted! I plan on basking in the warm glow of non-rejection for a couple of days, and then commencing forthwith with the stressing out about getting it pulled together in time given all the other insanity of my life.

In other news, Liz and I had a lovely, low-stress, very lazy Thanksgiving weekend. To my great surprise, I put away close to 700 pages of The System of the World, finishing it early Saturday evening, and achieving my goal of finishing the Baroque Cycle before the end of the year. At nearly a thousand pages apiece, these books have taken some serious commitment from me (my reading-for-pleasure time being significantly diminished from its former glories), and I'm really, really happy that it paid off so well. Of course, now I have to read Cryptonomicon again, but that can wait a bit.

Work is about to be really interesting, in the possibly-very-good-interesting sort of way (rather than the omfg-you-want-it-when way). Details are still pending, so I'll keep my mouth shut until then.

And, by the mysterious and tangled workings of the internets, I've reconnected with a long-lost friend from days of yore, and that's just nifty.

Read and Post Comments

The Week That Would Not Stop

Bleah. Totally run down. Stressed out, burned out, and all-around fried. But still clinging desperately to life in the hopes that it might all settle down at some point. (It has to settle down, right?)

Thanks to a bumper crop of ragweed, I have spent the last two weeks wanting to claw my eyes out. Puffy. Sore. Goopy. Crusted over when I wake up. I feel like someone has scraped sandpaper over my corneas. I feel like I haven't slept since the allergies really kicked in.

Work is a super giant happy fun ball of stress as I attempt to coordinate a lot of last-minute things, deal with incomprehensible bug reports, and generally attempt to save the world. So far... meh... I think the world's still in trouble. It's taken me until today to start working on the things I was supposed to be doing on Monday. I guess it would help if I could get more than five minutes of uninterrupted time, but apparently that's out of the question at this point. *sigh*

I'm way behind on dealing with some vaguely important email for Clepy. I have had a tiff with DirecTV over their habit of failing to send me a bill and then charging me lots of late fees. (Surprisingly, not the first time they've done that to me...)

And it doesn't help that I've had things to do every night this week: Clepy (and post-Clepy festivities) on Monday, wine group Tuesday, German class Wednesday, and an appointment tonight. Tomorrow, I expect I'll probably just stay late at work, except that the parts for the new closet organizer system thing have arrived and I want to get started on that too.

Good lord, it's Thursday, and I still haven't picked up the new Star Wars DVD's, with the Han-shoots-first-thank-you-very-much original cut. For those that know me, that should give you an indication of what a general shitstorm it's been lately.

On the plus side, I finished The Confusion over Labor Day weekend. On the minus side, I still have about a thousand pages (hardback!) of The System of the World still to go... by which point I suspect that I will need to re-read Cryptonomicon since it has enough bits that tie in with the other books. It'd be easier if my eyes didn't feel like they were about to explode out of my head (see above).

...And I think I might have finally hit the point where Gentoo in particular, and Linux in general, is dead to me, the way someone who crosses Tony Soprano ends up in the deli slicer, or taken out to the Pine Barrens and disappeared. Midway through my third (fourth?) day of trying to get the emerge -eav world step of the upgrade to gcc-4.1, I am just about at the end of my geek rope. I fell in love with Gentoo because its packaging and update system "just worked", freeing me up to waste my time configuring and tweaking everything else to be just so. But this update is just insultingly murderous, as all kinds of supposedly stable things just won't fucking build right--because, y'know, that would be too easy. So, even if I have to turn in my geek badge and live life as a lesser mortal, beholden to the software update whims of Apple, I think that'd be okay with me, because this kind of time-waste is something I simply cannot allow in my life any longer.

Grr. Argh!

Read and Post Comments

Germany Photos: Intermission

Bloody hell, it's been almost twelve days since I've posted any new photos from the Germany trip. Harrumph. I guess that's what happens when I let myself get distracted by other things: houseguests, complete disassembly of the office/computer space to prep for painting, work, catching up with Tivo (I can't believe I've gotten Liz hooked on "Eureka", woot!), catching up on long-overdue library DVD's (Paradise Now, Munich, and, somewhat embarassingly, Aeon Flux, which at least I didn't have to pay for), slogging bravely through Neal Stephenson's The Confusion, and going to Oktoberfest with [info]geoffimusprime.

Today was part one of the annual two-day company pep rally thing for this year, which, on one simple fact alone, instantly qualifies as the best so far: free beer coupons for happy hour. Hooray, beer!

I have at least rated, retouched, and sorted the remainder of the vacation photos; hopefully I'll get around to posting them over the coming days. And then I'll have to find something else to blog about for a while. ;-)

Read and Post Comments

Review: wxPython in Action

wxPython in Action
Authors: Noel Rappin and Robin Dunn
Published: March 2006 by Manning Publications Company
ISBN: 1-932394-62-1
620 pages

If, like me, you've been living under a rock (inasmuch as one can in the world of cross-platform GUI toolkits), you might not have heard much about wxPython. And if, like me, you were excited by the idea of quickly developing modern, robust GUI-driven applications that can run, without changes, on Windows, Mac OS X, and various UNIX-like systems, but turned off by the downright spartan and unforgiving online documentation, you can get happy again--with the publication of Noel Rappin and wxPython co-creator Robin Dunn's wxPython in Action, there is finally a cogent, coherent hybrid of tutorial and reference for wxPython that will get you out from under all that clunky Tkinter code and doing cool stuff.

Like other volumes in Manning's In Action series, wxPython presents a comfortable combination of introduction, overview, and example that encourages exploration and experimentation. The text is clear and concise, offering a no-nonsense explanation of the most relevant portions of the wxPython libraries and the best practices for their use, delivered at a measured pace that never manages to overwhelm, and uncannily launches into explanations of your questions just as they arise. Numerous reference tables provide a handy guide to the details (object properties, method signatures, events, etc.) that you'll be coming back to in your own future development. The expanded table of contents, listing each of the "how do I..." subsections of each chapter, is also a nice feature that will help make this a valuable reference. Code examples are functional, clean, and on-topic, just the right size to illustrate the concept at hand, and nearly always accompanied by illustrations of the resulting behavior. All the code is available online, and it's worth your time to either download it and give it a spin, or key it yourself and see how it behaves on your OS of choice. An especially nice feature of the example code in the book is that it's well annotated, either with a brief note or a bulleted number that will be referenced in an in-depth explanation immediately following the code listing; this helps the reader quickly zero in on the essential elements of the example, and it's surprising that such a useful technique is not more frequently encountered in programming books. A few errors seem to have snuck through the editing process, though, so deeply involved readers will want the errata nearby when monkeying with example code. Manning's "Author Online" forums are also a great resource if you get stumped along the way.

The book is divided into three major sections, each six chapters long. The first, "Introduction to wxPython," is primarily a tutorial that walks the reader through the foundations of coding in wxPython-land. Newcomers to GUI programming might find certain portions a bit dense and mildly daunting--specifically chapters 2 and 3--but patience here will be rewarded with a good understanding of critically important concepts, such as wxPython's event handling model, that will be leveraged over and over again throughout the rest of the book. Chapter 4 introduces PyCrust and other tools from Patrick O'Brien's Py library that you can use for interactive debugging or even reuse within your own wxPython applications. Chapter 5 is a real gem, providing an excellent discussion and practical walkthrough of the refactoring process, an exploration of the benefits of the Model-View-Controller pattern and how to do MVC in wxPython, and illustrates how to unit test your wxPython app; these are non-glamourous topics that help aspiring developers grow into good professionals, and this is a perfect place to see these topics. Chapter 6 presents the construction of a simple but fairly polished toy sketch application, a satisfying achievement that nicely rounds out the introductory section.

The second section, "Essential wxPython," begins the more reference-oriented material, covering (unsurprisingly) the essential widgets of the wxPython toolkit: text labels, text entry, buttons, checkboxes, and the like in Chapter 7; frames (what most of us think of when they think of "windows") in Chapter 8; dialogs in Chapter 9; various flavors of menus in Chapter 10; the ins and outs of sizers in Chapter 11; and basic graphics manipulation (putting images on the screen, customizing the cursor, etc.) in Chapter 12. Each subsection builds logically on the one that came before it, and likewise each chapter follows from its predecessor, introducing new widgets just as you're ready for them. The text here is significantly lighter than in the first few chapters, so this reads fairly quickly.

The third section, "Advanced wxPython," covers some more complicated widgets and topics that probably won't be day-to-day concerns but which are important enough that, when you need to know about them, they're covered in the book: list controls (think Windows Explorer or Macintosh Finder) in Chapter 13; grid controls (think spreadsheet applications) in Chapter 14; the tree control (think file system trees, or registry editors) in Chapter 15; HTML widgets (a great idea for a help facility in your applications) in Chapter 16; the wxPython printing framework in Chapter 17. Finally, Chapter 18 rounds things out with a grab-bag of other topics that didn't merit their own chapters but which are good to know about anyway: using the clipboard, managing drag and drop operations, timers, and threading issues.

To be fair, there are a few imperfections here, but they mostly amount to personal nit-picking. While it's probably not essential, there's no discussion of sound or other multimedia functionality; and from a structural standpoint, the book would have benefitted from a brief afterword to launch the reader into further reading or development activity. Finally, and this might be slightly unfair as I'd just finished reading one of O'Reilly's Head First books when I picked up wxPython in Action, this book could probably use a little more personality; when the occasional editorial comment sneaks through, it's a welcome break from the readable but positively arid expanses of text and examples.

That said, there's obviously still a lot here to love. wxPython is clearly the way to build cross-platform GUI apps in Python; even Guido van Rossum, Python's creator and benevolent dictator, advocates it, saying, "wxPython is the best and most mature cross-platform GUI toolkit... the only reason wxPython isn't the standard Python GUI toolkit is that Tkinter was there first." wxPython in Action is clearly the authoritative resource on the subject, a great introduction that will also serve as an excellent reference for years to come. Recommended for wxPython n00bs and gurus alike.

Read and Post Comments

Next Page »