Git-Like Menus


[Pleased as I was to get mentioned in a lightning talk in this year’s YAPC, I noted that my mention was in the context of writing blog posts that “don’t contain much code.”1  Well, fair enough: I’m a verbose bugger, and a wannabe writer, so my prose does tend to ramble.  But I can do code, dammit.  So, you know ... here’s some code.]

The other day I was working on my music library scripts,2 and I needed a menu for something.  Now, there are oodles and oodles of modules on CPAN to help you write menus.  I’ve looked at most of them, and tried quite a few, but long ago I settled on using the -menu option in IO::Prompter, by the Damian.  For a nice, pretty menu layout—say, something you do as a central feature for a program—it’s tough to beat.  It’s not perfect, by any stretch, but it offers some very nice features, such as (optionally) not requiring ENTER after a menu choice.

But that’s not what I wanted in this case.  What I was looking for here was a quick, compact menu ... sort of like what you get when you’re interactively staging a commit in git (that is, git add -p, or, probably more commonly, git add -i then choose “patch”).  Specifically, the features I wanted were:

Thoughts on craftmanship


Not specifically about Perl, but I did write a post this week about the software development business in general over on my Other Blog.  Might be worth checking out if you want to listen to me ramble on for a bit on that topic.

Foster Care

Today I contributed to Scott Walters’ Kickstarter project.  You may have read Scott’s own blog posts on the topic.  Executive precis: for $10,000, Scott will complete work on the latest version of WebGUI, a world-class CMS written in Perl.

I’ll freely admit that I didn’t contribute that much, mainly on account of me not being rich.  As I’m fond of pointing out here, I’m just a regular Joe working-class programmer.  But, at the same time, Perl has been very good to me throughout the years, and I’m not averse to giving a little back when I can.  And, as it happens, right now I can.

Now, I know that many of you readers out there have a healthy skepticism when you think you’re being sold something.  Trust me: I do as well.  Now, I personally think it would be a fairly uncharitable characterization to view scrottie’s proposed project, as an attempt to get us viewers to pay his bills for him while he contributes to an open-source project, which is something that many of us already do for free ... but I’m sure some out there have already characterized it thus.  As is their right.  I personally think there’s more going on here, and, while I won’t be able to change the minds of the most cynical among you, I’m going to try anyway.  I’m a glutton for punishment like that.

Remnants of a Deeper YAPC

This year I attended my third YAPC.  As always, here are my thoughts.

General bits and bobs: I thought the venue was pretty decent.  It’s definitely the best hotel showers I’ve ever had: excellent water pressure and never even a hint of running out of hot water.  Perhaps they have on-demand heaters.  I could have used more open plugs in the room, but that’s a minor complaint.  The wifi was pretty awful, as usual—one person even did a lightning announcement suggesting we complain about it.  I didn’t see the point, personally.  Several hundred geeks, most with multiple devices, plus several dozen spouses, partners, and children,1 all descending on a single location for four days ... hell, that could break anybody’s router.  And I don’t think it’s particularly reasonable to ask a place that can comfortably house all those people to maintain a super-network year-round that will only really get used once a year.  Just point your laptop at your cell phone instead and move on with life, I say.

As always, I met several new folks this year.  A special shout-out to Kevin, Alan, and uncanny_kate, who shared former employers with me and were willing to commiserate.2  I also had a great conversation with scrottie, a game of Munchkin with two German fellows named Thomas and Alex, and got introduced to Ann.3  And I got to see plenty of other folks that I’d had fun hanging out with at previous YAPC’s, including the Slashdot guys (2/3 of whom I also share former employers with), and spq_easy, who I helped interview once at a former employer.  Socially, it was a ball, despite the fact that many of us geeks (myself included) can be painfully shy in many social situations.

Talk-wise, there were good and bad sides.  On the bad side, I missed some of my favorite speakers, like Piers Cawley, Ingy, schwern, and chromatic.  On the other hand, I got to see mst speak twice, which is always entertaining, and Sawyer X twice, who is rapidly becoming one of my new favorite speakers.  If I had to pick one talk as the absolute best of the conference, Sawyer X’s “The Joy in What We Do” wins it, hands down.  If you choose only one YAPC video to watch because you couldn’t make it this year (and you’re silly enough to listen to my advice), choose this one.  It was the best keynote of the conference.

When a failure is not a failure

[What I really should have done here is something like Tom Wyant or Joel Berger.  Being a literary type, that appeals to me.  Of course, with Dupin and Holmes taken, who would I pay homage to? Nero Wolfe, perhaps? Batman? Michael Westen? Harry Dresden?

Anyways, maybe next time, if I have more time to prepare.  For now, you’ll have to settle for plain ol’ me.]

At $work, I’m the guy who maintains the tool we use for branching, merging, pushing ... release management, I suppose you’d say.  I don’t actually do the pushes most of the time, but I’m usually the guy who takes the tickets when there’s something wrong with the process.

At the end of the push, we build a new AMI.  That’s Amazon-speak for a master virt which we can clone to bring up new production machines quickly.  By making a new one after every push, any new instances we bring up will automatically have the latest code on them.  Recently, my coworker doing the push reported that the AMI build failed.  Well, he clarified: it says it failed, although it actually looked like it succeeded.  Probably a transient error, I assured him (with fingers crossed).  But, no such luck: the next week, the same thing happened.  This time my coworker figured out what underlying command the release management script was running and ran it by hand.  Yep, it definitely succeeds, he reported.  It just says it failed.