the further adventures of

Mike Pirnat

a leaf on the wind

Next Page »

Freeform Night at Clepy and the Ghost of Gary Bernhardt

April's Clepy meeting saw a much smaller than usual crowd, and a much more casual program--everyone who'd been lined up to give talks had had to bail at the last minute. So instead of covering anything formally, we spent a relaxing two hours enjoying beer, pizza, and various freeform, impromptu lightning talks. You couldn't even really call them lightning talks since we had no time limit, just an unspoken gentlemen's agreement to yield the projector cable when the time was appropriate.

Steve Dee showed off his CWRU senior project, jsPrettify, a bit of Javascript tomfoolery to automatically turn ASCII sequences into appropriate (and arguably prettier) Unicode equivalents. We also had a nice chat about the Closure Javascript tools that Steve had been introduced to while interning at Google. (Some aspects, like the provide/require system, remind me a lot of Dojo, and while it seems intriguing, reading some other opinions has me back in the skeptical category.)

Mike Crute showed us his not-yet-ready-to-release tool for automating provisioning and deployment of VPS nodes and the apps they serve, which seems like a really slick way to react to traffic needs (consolidate apps onto fewer boxes during low traffic periods, rearrange on the fly if someone's site is spiking). He also showed off something else that I mostly missed, so the Python code we glimpsed (featuring a lone "Oh, my..." comment to apologize for the 100-line method that was about to commence) didn't really mean a lot to me.

We had a brief glimpse of Mike's desktop wallpaper (a demotivational poster featuring a stern-looking John McCarthy) which inspired me to create this little gem (sorry in advance, Gary!):

image: Gary Bernhardt (as John McCarthy): 'Programming: You're Doing It Wrong'

Nick Barendt gave a quick introduction to Buildbot while I VPNed into work to prep my own demo of Das Blinkenlights, my little AIR app for monitoring the current build status of our various build slaves at work. The Python code to emit the JSON feed that Das Blinkenlights consumes hasn't yet been released to the public, but I have permission from the Powers That Be to do so, so I should get around to it before too long. (Beware my extremely unfinished and gross Javascript code in Blinkenlights--it's still in very rough shape at this point).

We had a new member tonight who was interested in applying Python for developing web apps, so we may try to pull together a "web framework shootout" for next month, which I envision as four or five different presenters simultaneously live coding the same basic web app (probably a wiki, blog, or to-do list) using different toolkits. We'll need to see about some cabling and KVMs, I think, so that we can rapidly switch back and forth between presenters. More details to follow, I'm sure...

If you're in Northeast Ohio and want to hang out with smart, friendly people who like Python, come on down! Meetings are held on the second Monday of the month aboard LeanDog's awesome boat, and we have an official pizza and beer fund going to supply us with tasty treats. It's a good time that I highly recommend.

Read and Post Comments

"Teach Me Dependency Injection" at Clepy

The stars finally aligned in a configuration that allowed me to return to Clepy, our local Python group. It was really nice to see some folks that I hadn't in forever, including some long-lost ex-AGI people that I hadn't caught up with in what seemed like forever.

We did tonight's meeting in the "Teach Me X" format made popular by Steve Holden's "Teach Me Twisted" open space at Pycon 2009. One of our newer compatriots, Chris Miller, had been hearing a lot of buzz about dependency injection and wanted a deeper exposure to it, so he played the questioner while David Stanek played ringleader to the group discussion. The format was a lot of fun, and a good way to engage the group without having a more straightforward and less-interactive "eyes-forward" Powerpoint extravaganza of death, though the conversation did seem to be dominated by a few voices that had had the most experience with DI in their professional lives. But overall it was good, and I think that at least a few people had lightbulb moments, and I suspect that even us seasoned DI nerds achieved some insights into the subject as well.

I'm eager to try out the "Teach Me..." format at work, where I've got some peer education to-dos that I've been struggling to figure out how to structure without causing roomfuls of eyes to glaze over.

In other news, Cleveland Give Camp is coming up in July, and they're eager for all types of participation--so whether you want to help organize the event or want to participate (they're particularly seeking code-slingers and graphic designers), this looks like a great opportunity to Do Some Good.

Clepy are a nice bunch of smart folks; meetings are held on the second Monday of the month aboard LeanDog's awesome boat. And now we have an official pizza and beer fund, so we can enjoy a bit of a treat whilst geeking about. If you're in Cleveland and are interested in Python, it's definitely worth joining in. I certainly hope to make it a regular part of my extracurricular life again.

Read and Post Comments

Return to Clepy; Possible End of the Universe

Forget the LHC--a far surer sign that the end times are nigh is that I've finally been able to attend Clepy for the first time in about 15 months. (In case I do actually cause the implosion of the universe, let me take this opportunity to apologize in advance. Sorry about that; my bad!)

We had an extra-long social period at the start of this month's meeting (while there were some misadventures with pizza delivery), but the bonus casual time was great for meeting new people and getting caught up with people I hadn't seen in a long time.

The main focus of the meeting tonight was a live demo of Gary Bernhardt's TDD tools, Dingus and Mote. I'd seen a little bit of Dingus from following Gary on Twitter, but had not ever seen it in action, and Mote was brand new to me. Dingus is a mocking library that attempts to aggressively and magically isolate the code under test from everything external to it. Mote is a lightweight spec-runner (not "test-runner!") that wants to remove as much verbosity as possible. Thanks to some nifty decorator-fu that makes it super-easy to rig up automatic Dingus isolation in your Mote specs, the two combine to form some kind of TDD Voltron. Mote's a little rough around the edges, but it's brand new and under heavy development, and shows a ton of potential. If you're interested in testing or TDD, check out these tools!

The unsung star of tonight's presentation was Gary's .vimrc, which contains powerful magics for quickly running tests from within vim and displaying their success or failure as a green or red line at the bottom of the buffer. There's plenty more fascinating arcana in there, so it's nice to know that his dot files are on bitbucket too. I'll eventually peruse and dissect them.

This was Clepy's first meeting at LeanDog's floating headquarters; I was really pleased with it as a venue. It's centrally located, easy to get to and from, is highly geek-friendly, and is quite novel as a meeting space. (It's on a boat! Next to a submarine! How great is that?!) I hope we can continue to meet here as it really seems like a positive change. It was also great to see new faces and meet new people tonight; it seems like the group has really started to thrive independently of AGI.

Above all, I really hope to be able to start attending regularly again, even if it does trigger the apocalypse.

Read and Post Comments

PyCon 2010 in Cleveland? Yes Please!

There's a lot of excitement on the ClePy mailing list about trying to bring PyCon to Cleveland in 2010. David Stanek is leading the charge, getting folks talking, and planning, and motivated.

Clevelanders who want to help out bringing Python's premier conference to our fair city should head on over to the bid page on the Python wiki and lend their names and support.

Non-Clevelanders, have no fear! Cleveland's really quite misunderstood and under-appreciated. We've got a great restaurant scene (we're home to the newest Iron Chef!), tons of attractions (like the Science Center and Rock Hall), world-class museums and other cultural institutions (maybe a few of you have heard of the Cleveland Orchestra, which is rated among the top 3-5 worldwide), the nation's second largest performing arts center, beautiful parks and lake views, and more--all within walking distance of either the likely conference site or available with a quick jaunt on the rapid transit system. Plus the river hasn't caught on fire for decades, but you can savor the legacy with really good local beer. ;-)

In short, there's plenty to love about bringing PyCon to Cleveland. Let's do it!

Read and Post Comments

ClePy Catch-Up: Asterisk and Pagoda and Web Tools, Oh My!

I missed the September ClePy meeting because I was too busy helping my wife fork a child process (there seems to be an awful lot of that going around the Python community lately, based on what I've seen on the Planet feeds--something in the water, perhaps?). But I hear that Brian Beck put together some nice slides for his talk on his Pagoda CMS system, and Nick Barendt clued folks into how to run their own open-source PBX with Asterisk and AGI.

Asterisk turned up again during open discussion at this Monday's meeting; while getting caught up, I got the scoop on Asterisk (since I'd missed the talk and been too busy with baby and work to read Nick's PDF) and we had a good time talking about crazy PBX tricks; the coolest idea was to use Asterisk to hook up your desk phone as a combination lock to trigger a secret door to your underground lair (awesome!).

The meeting proper was a short one due to the sudden absence of one of our speakers; Monday's lone presenter was Gary Bernhardt, who put three great packages together--httplib2, Beautiful Soup, and Feedparser--for a discussion of "Talking to the Web with Python." In a particularly interesting example, Gary showed us how to combine Beautiful Soup with Feedparser to build a Technorati-ish blog link extractor in eight lines of code. Note that combining these in a nice, sparse nested loop structure (or even in a super-l33t list comprehension) is a fabulous way to peg your CPU (you have been warned).

Our next meeting will be November 5--if chance finds you in the greater Cleveland area, drop on by!

Read and Post Comments

Google at the August ClePy Meeting

History Lesson (1997)
Originally uploaded by mikepirnat.

At tonight's (now yesterday's) ClePy meeting, special guest presenter Brian Fitzpatrick, Engineer Manager for Google's Chicago office, gave a talk entitled "Google, Bigtable, and Scalable Version Control." I'd heard a bit about how GFS and Bigtable work before at a previous Google talk, but it was very cool to see it applied as the back-end for Subversion.

That developed into an interesting discussion on what sorts of bottlenecks the big G has to worry about, which segued into a nifty bit of stuff on a storage/data transmission system that Google's working on to allow scientists to shove 100+TB data sets around--sort of a Drobo on steroids, with a cool padded metal container for shipping that totally looks like it's from a spy movie, because, when it comes down to it, you still can't beat FedEx for data throughput on a sufficiently large scale (unless you are blessed enough to have Internet2 piped directly to where you need it).

From there we got into an entertaining discussion on the pros and cons of distributed and centralized version control systems, had some philosophical disagreement between the two, and managed to work in a Car Talk joke, and got the scoop on some forthcoming goodness in SVN-land. Matt Wilson has some good notes on this, including a clever joke about distributed VCS. Fitz made some great points in defense of centralized VCS that are making me rethink the take-my-toys-and-go-play-by-myself approach I've taken to try to get some personal momentum on Shindig, and maybe even managed to shame me into starting to commit publicly. Then again, I am in such deep love with committing frequently that perhaps I'll find some middle path, using Bazaar for versioning things in between SVN commits. Or something. We'll see.

A bunch of us hung out afterward at the nearby Max & Erma's for drinks and continued chatter, and from what I could tell the conversations were all pretty interesting. (No notes from that as I was busy enjoying beer and talk.)

I really want to thank Brian for the engaging talk and discussions (and for picking up the tab at the bar), and Susan Loh for getting everything squared away on the Google side (including taking care of pizza and beverages for the meeting, logo swag, etc.). Hopefully we can be a destination for future tech talks.

Read and Post Comments

Potter-Related Setbacks; 24 Hours With Apple TV; Shutterfly Freebies

I'm really excited by the amount of progress I've made over the last couple of weekends, hacking away at what for now is known as Shindig, a group management blog/calendar app written against TurboGears. Its primary purpose is to be something easier and faster for me to maintain than ClePy's current Plone site. I'm sure much of what it solves has already been done, but I want something exactly tuned to giving me the most streamlined workflow possible, and, let's face it, it's just plain fun to write code.

So ordinarily, I'd be psyched about how much I'd be able to get done this weekend... Except that the stupid Harry Potter book is showing up in the mail tomorrow, and that basically means that it will consume every waking, lighted hour until it's done. I love the books, I really do, but it's really putting a crimp on my Python geek-out sessions. But I have to be done reading by Monday, that's for sure, or else I will have to gouge my eyes out to avoid spoilers. My predictions: Snape dies (he's obviously been set up for a hard-core double-agent redemption arc, so he'll probably save the day somehow), Harry lives (and will be the best Defense Against the Dark Arts teacher ever), and Ron and Hermione will finally succumb to the powerful call of teenage hormones and romantic comedy conventions and hook up in a major way.

Oh, yes, and I'm going to see Howard Shore conducting the Cleveland Orchestra in performance of his Lord of the Rings Symphony tomorrow night, so that knocks out a couple more hours of potential coding time. Which I guess I can live with; enjoying some of my favorite music, conducted by its composer, performed by one of the world's foremost orchestras, under the night sky, with a picnic and a nice glass of wine... Should be a real treat.


Tonight marks 24 hours since the arrival of the Apple TV. So far, I'm very, very impressed. I have modest needs, primarily to replace an aging SlimP3 that's prone to chronic buffer under-runs ever since I replaced my dying firewall, and it solves all of my most common use cases with total aplomb. I've been delightfully impressed by its streaming performance, which, even with an 802.11b/g setup, is nothing short of freaking amazing. I'm also very satisfied with the image quality out of the component video cables (chosen since our altar to the television gods predates HDMI by a generation or so). My advice so far, to any prospective owners, boils down to two points:

  1. Don't do your initial sync over wireless if you don't have 802.11n hardware. Wired ethernet is your friend by orders of magnitude.
  2. Its case serves as its heat sink, which is to say it gets hot like you wouldn't believe. Don't set it on top of your DVD player or other hardware (unless you want to cook your gear), and make sure that it gets plenty of airflow. Honestly, I used oven mitts to bring it upstairs to wire it into my switch to finish the initial sync. Yikes!

Beware of the YouTube integration; Liz and I must have spent an hour tonight watching videos of cats doing stupidly cute things. It is a powerful and addictive time-sink.


Finally, I'm happy to report that the first of two freebie poster-size prints from Shutterfly arrived today and it looks great. I picked up a 50mm prime lens for my Canon (Digital Rebel XT) recently, and the folks at Amazon threw in a coupon for one free 11x14 and 16x20 print. The 16x20 (which I expect sometime Saturday or Monday) will probably end up framed and in our dining room, next to some other wine-related art, and the 11x14 (which showed up today) will probably find a home in our living room. I'm really quite tickled--I've never printed any of my work larger than 5x7 before--but I fear that I could start going poor making prints of my better photos. Oh well; Liz said I should find a hobby.... ;-)

Read and Post Comments

July Clepy Meeting, Sprint Thoughts

We had a shorter and lighter ClePy meeting tonight, which ended up working out just fine. Dan Buch gave an entertaining talk on how he fell into and out of love with Grok, a frameworkish sort of thing for Zope 3. We had a pretty informal discussion of the state of things, in framework land (especially the TurboGears 2 new), in Python (relating to the recent Python 3000 kerfluffle), and in what we're up to in our own projects.

Since we ended a bit earlier than usual, we popped down the street for a bite to eat and a round of beer and more chatter. We talked a little bit about the general failure of our sprints to, well, happen, and will hopefully be kicking around some ideas on how to make the project into something that people are excited about contributing to. Personally, I think the "let's integrate a bunch of existing, mature products" approach that we planned is what's hurting us the most. Taking four or five disparate (and probably more-complicated-than-necessary) things and getting them all to play nicely and be consistent with one another just feels too much like real work. I think we'd be much happier creating something small, simple, and original, even if it's not tremendously groundbreaking or the category of problem has already been done.

Next month we'll be sponsored by and hosting a presentation from Google. The topic and speaker are still to be determined, but there will be swag, so that's good enough for me. :-)

Read and Post Comments

May Clepy Meeting, Next Sprint Planned

At tonight's ClePy meeting, Christian Wyglendowski gave us an introduction to the Bazaar version control system (which seems light and simple enough that I might not have to overcome the inertia that I seem to find with Subversion), and Gary Bernhardt did a fun presentation on REST and his RESTdb project.

Christian also gave away a copy of CherryPy Essentials through the magic of random.randint(). Sadly, it didn't cough up my number this time, but then again I'm already way behind in my pile of things to read...

David Stanek provided a recap of our recent sprint, and we scheduled our next sprint, based on lessons learned in April. We'll be meeting up at the Bier Markt again on Saturday, May 19, around 2 PM--and you're welcome to come on down and join in the fun!

Our next meeting will be Monday, June 4, at American Greetings. Brian Beck will be showing off some TuxDroid tricks, and Matt Wilson will be bringing it RPy-style. Hopefully we'll see you there!

Read and Post Comments

April ClePy Meeting

In a very special episode of ClePy, we were joined by guest star Drew Robbins, a "Developer Evangelist" from Microsoft. Drew gave us an overview of IronPython, did a number of live demos, and fielded a wide array of "interactivity" from the group. He also gave away a Zune using Python's random.randint() to pick a lucky winner; I was the first number picked but, since my house is full of Macs, I opted instead to let the second random choice get the goods to prevent having to waste my time eBaying the thing. In all, it was a good evening; we posed some good challenges--out of curiosity and not spite (as far as I could tell)--and while IronPython fell down in a few places, it also had some nice successes.

We've set a real, solid date for our first sprint (finally!): Saturday, April 14 at noon at the Bier Markt. More info will surely follow on the mailing list; give us a shout or come on down if you want to join us as we embark on our group website replacement/Meetup-killer.

Our next meeting will be on Monday, May 7, again at American Greetings. Christian Wyglendowski will talk about the Bazaar source control system, and Gary Bernhardt will talk about his RESTdb project (or something else sufficiently interesting, perhaps

If you're in Northeast Ohio and feeling Pythonic, come on down and join us sometime!

Read and Post Comments

Next Page »