Status and failure of CacheMyWork development

Every month or so I get an email like the following:

Hi, Love your app CacheMyWork. Left some suggestions for improvement on your website a while ago. Any chance you’ll release an updated version with more functionality any time soon? Seems to my it has huge potential once it’s updated.

I get this kind of email – wondering when I’ll finish the app, asking about status, wondering why it seems incomplete or why I haven’t integrated [easy fix “X”] – for only one of the open source projects I ever released:

Every time I get one of these, I feel like a jerk for not finishing (or continuing) what I started, and I realize that if I was just a better coder, I’d have a lot of happy people out there.

I could never get my head around the databinding that is necessary to connect the WPF front end i built for the “version 2” of my app to the well-formed, totally functional app-finding algorithm I built literally years ago.

I feel like I’m disappointing a lot of people by not getting this back underway, but I really don’t have a clue how to fix the damned thing. I think my failure to maintain/improve this project is one reason why I’m giving up on my dream to ever be a professional coder.

I swear something must be wrong with my brain – every time I try to re-learn databinding concepts for .NET they look like they’re pretty simple for the author, but when I try to apply the ideas to my code, it never seems to work. I’ve coded three different data classes, I’ve tried every combination of parameters in the binding (both the XAML and the code-behind) I could find, but at best I get code parameters in the UI – never anything that hints that the bound data is leaking through (even though I can clearly see the data in the data class when I set breakpoints in the debugger). It’s like I’m not “getting” something about how this is supposed to work – it reminds me of how I was a week or two behind in introductory calculus class, when my brain couldn’t visualize what it was we were manipulating with those damned equations. (I finally got the calculus, though I think by now I’d have to start all over again.)

What would you do in this situation? I’d really like to get this going again – at least make good on the unfinished “new” release, and give myself some closure on that chapter of my geek life.

Review: Jinx

Jinx by Brian Michael Bendis
My rating: 4 of 5 stars

I picked this up at a book signing by Bendis last week. I haven’t read it in years and years, and I’ve read so much of Bendis since that time, I wasn’t sure how this would hold up.

As indie comics go, this is a winner. It’s amazing how much of Bendis’ talent for dialogue was already there in the beginning, and how well he tuned into that talent and focused on it. I’m also impressed by the art renderings – I totally forgot that Bendis used to do the art for his books, and I would’ve encouraged him to keep up this side of it (there’s much worse from non-writing artists out there, believe me), had his career not taken off so much as a writer.

The story is pretty thin – just a few set pieces in which to let his characters breathe – but there’s three more books’ worth of plot after this too, so it’s hard to judge the full merits of this fraction of the story arc (and I don’t remember the rest of the storyline so I won’t embarrass myself by guessing at it).

Most of all, this reminds me why I like Bendis’ work so much – he tunes in closely to how people act around each other, and what happens when unusually unlike personalities synthesize into something unlike either of them.

View all my reviews

Excommunicating myself from the Church of Alan Moore

I’m coming out of the closet: I actively dislike Alan Moore’s “masterpieces”.

As a kid I drank up works like Watchmen (fresh! Post-modern capes!), but even then I secretly struggled to enjoy V for Vendetta – simply getting through it without losing any grip on a sense of a cohesive story was a challenge, and I worried there was something wrong with me.

As I returned to comics as an adult, I quickly revisited Moore (elder respected statesmen are supposed to be admired, revered and read, so I did my duty to god and the queen) and slogged through Watchmen (again), then Promethea (directionless softcore), Top Ten (interesting and enjoyable but probably due more to Gene Ha’s art) and then League of Extraordinary Gentlemen (curious, teasing with its layers of detail, but ultimately thinly veneered story – more like a series of staged scenes in which to scatter all his historical research).

I told myself I was enjoying it (I really needed to believe I saw what everyone else was talking about), but eventually I got to a point where I saw how many times I would put V on the pile of books but dig underneath it to something I was enjoying – and berating myself for not doing my “required reading”.  Then I realized that if I didn’t enjoy something *that* much, there’s actually no good reason why I *should* force myself to finish it.  So I didn’t.  And felt liberated for the epiphany.

My review on Goodreads of V for Vendetta is simply this: “Awful, stilted writing. Reads like an assigned book from a first-year Literature class – not something to be enjoyed but to be excruciatingly endured. Should be required reading for the Guantanamo set.”

My opinions on Alan Moore’s masterpieces started to turn when I started to read some dissent from fellow readers/reviewers on Goodreads and really crystallized when I started commenting in the recent “book club discussion” on Goodreads.

The more I think about Watchmen the book vs. Watchmen the movie, the more I realise that Moore’s greatest achievements are writing the wordy equivalent of a Where’s Waldo puzzle. His dialogue’s not bad and at least the plots aren’t telegraphed from page 1, but his characterisations are absurdly inhuman and the work is needlessly overwritten with irrelevant trivia.  It’s like an artist who has a bad case of OCD – he can’t put the damned brush down, even after he’s layered on so much paint that the original picture is completely inscrutable underneath the layers of random strokes and irrelevant tangents, that all look pretty but have destroyed anything worth rendering to the world.

Hiding your pretty storyline behind (or burying it under) details that don’t advance the story is a way of teasing the smarties in the audience and making making them feel smarter than “other readers”, but the conceit falls down once you realise that “other readers” don’t care to crack an encyclopaedia every page or two – we lose the rhythm of the plot (if there is one) in trying to figure out what that next metal trap is all about.

As a kid I loved how I could feel smarter than my peers while reading this kind of stuff (even though truthfully I only understood about 1/4 of the references and just imagined that there was weighty importance to the rest). Now, I find things like Watchmen, LoXG or that turgid thesis V just tiresome and laborious to slog through, especially when trying to ignore Moore’s desperate pleas to “look at how smart I am” and find the underlying story that’s still worth enjoying. Somehow the movies were able to emulate Moore’s staging and still find a way to *connect* with the moviegoer – but just barely, considering how slavish they were to nearly every page of layout and dialogue.

I feel at once brave and stupid for putting this out to the world – like I’m going to lose a number of people who would’ve otherwise tried to like me, but are put off because I just called their favourite baby ugly.  I can only offer that my standards have changed since I first started reading comics, and this no longer holds the line for most exciting works in comics for me. “At the time his work was amazing” is an historical conceit, but if that’s the best reason I can come up with to convince myself to like it, I’ll move onto something I just *naturally* enjoy today. There’s a wide world of books and tastes out there these days, and for me I’m glad to have more than Moore to choose from.

I still like Moore’s cleverness (despite my self-consciousness at why I like it), and what I don’t like about his work, many others do. We don’t have to agree on what’s best, nor would I enjoy the medium as much if there was no variety to choose from or be surprised by. I appreciate that others don’t agree with me, and in many cases I’m ready to understand something I’ve missed that others see. I’ve thought a lot about Moore’s work over the years and my opinions have evolved – but hasn’t entirely stagnated. Who knows? Maybe in another ten years I’ll see something there that isn’t apparent to me now, and I might be horribly embarrassed by these current opinions.

Considering learning Python – idle thought (until something catalyses it)

A friend-of-a-friend asked me this week:

Hi Mike, [mutual friend] referred me to you as a good person to ask: what’s the best way to learn Python for someone like me, whose programming skills are essentially 1990-era (I know Perl and C, but haven’t made the leep to object oriented stuff)? I’d like to leapfrog into the present era, and make web 2.0-ish-looking sites and experiments. Is there a particular web hosting service I should use? Thanks for any advice you might have.

Funny you should ask – I was just wondering this week whether I shouldn’t dive into Python as a quick-and-dirty prototyping language.  I’d fancied myself for years as someone who might be able to reinvent myself as a programmer, and I’ve muddled around with C# and VB for a few years now – but only in short spurts.  Every time I come back to it, I feel like I’m climbing a steep hill all over again.
For some reason, I get the impression that  for folks that are just whipping something together quickly, interpreted scripting languages like Python, Perl or Javascript are easier to deal with – less overhead, less setup, just diving in and getting to the business of making something happen.  I’ve always felt like if I wanted to call myself a coder, that I’d be “cheating” by taking this route, so I never allowed myself the freedom to try this out.  But at the same time, I was never brave/patient enough to mess around with low-level code like C or C++ (who wants to write hundreds of lines of memory-handling routines that managed code gives you for ‘free’?), so I guess I’ve left myself between a rock and hard place – not quite as easy as “just do it” but not really forcing myself to learn the really “worthy” stuff either.
How to learn Python?  An almost-colleague of mine took the leap and blogged his process for going deep – start at the bottom:
I’ve never done it myself, but I trust that Mark is a smart guy who doesn’t muck around for the sake of making himself “look smart” (feel miserable).
For me, forcing myself to learn to code was an exercise in frustrating false starts – until I found a problem I couldn’t solve any way but coding it myself, and a problem that pissed me off enough to keep slogging through failures and dead ends until I got something working.
Web hosting?  No idea.  I know a few big names (AWS, Rackspace, Google Apps) but I have no clue where to get the pre-built infrastructure to just upload .py and let fly.
Is this helpful?  Do you have something specific in mind?  If you’re working on something specific and looking to work loosely with one or a few others, I’d be interested in hearing what it is and whether it fires my “that sucks!” instinct enough to want to contribute/walk alongside.

Got a new iPhone 4S? Worried about how to "maximize the battery"? Me too

Just got the iPhone 4S today, and before I even *powered it up*, I made a point of digging around the Interwebs to find out whether I should (a) drain the battery & fully charge it a few times (to ‘condition’ it), or (b) charge it as much and as frequently as I can.  I’ve literally heard both urban legends over the years, and even though I keep buying Li-ion battery’d devices, I can simply never keep it straight (or feel confident that the story is true and consistent).

Today’s research yielded a couple of great links, and while I’m sure this isn’t 100% definitive (I didn’t even go through the 2nd page of Google results), it’s compelling enough for me:

Preparing new lithium-ion for use

Unlike nickel and lead-based batteries, a new lithium-ion pack does not need cycling through charging and discharging. Priming will make little difference because the maximum capacity of lithium-ion is available right from the beginning. Neither does a full discharge improve the capacity of a faded pack. However, a full discharge/charge will reset the digital circuit of a ‘smart’ battery to improve the state-of-charge estimation

Similar to a mechanical device that wears out faster with heavy use, so also does the depth of discharge (DoD) determine the cycle count. The smaller the depth of discharge, the longer the battery will last. If at all possible, avoid frequent full discharges and charge more often between uses. If full discharges cannot be avoided, try utilizing a larger battery. Partial discharge on Li-ion is fine; there is no memory and the battery does not need periodic full discharge cycles other than to calibrate the fuel gauge on a smart battery.

A partial discharge reduces stress and prolongs battery life. Elevated temperature and high currents also affect cycle life.

Somehow the battery lasts *longer* and retains a *greater* maximum charge if you fully discharge it as *little* as possible.  “Topping it off” as much as possible is the best way to keep it from running down.

Further, these articles made it clear to me that there’s no such thing as “conditioning” a Li-ion battery – unlike a car engine, which urban legends make clear should be run at lower speeds for the first XXX miles, the Li-ion battery seems to be as good as it gets when it leaves the factory, and needs no special handling.

Suh-weet – just act like I always have with my previous phone and I’ll be laughing.

Usability and UX – are you a practitioner? How to hone my instincts?

My career has been veering for a couple of years now towards the squishy-but-satisfying creative arenas of Usability & UX (User Experience), and I’d like to make this an explicit career direction. That means (a) meeting other folks already practicing these disciplines, (b) learning how to behave more like them, and (c) sharing my experiences with any who are looking to learn from newer practitioners. I expect the full transition to take a number of years, but where I have creative freedom in my job to flex in these directions I’ll be taking advantage of every chance I get.
As for immediate changes:

  • I’m joining some local user groups here in Portland (PDX UX already, Chifoo and IxDA next)
  • I’ve been re-reading “Don’t Make Me Think” from my iPhone while commuting
  • I’ve bookmarked this discussion on Slashdot (! yes, ironic to find Linux geeks who can spell UX)

What’s next? Who should I be talking to? Where should I seek out like-minded folks? What should I be reading/doing/learning next?