[When I posted my glee at this announcement, a friend asked: “Could you explain what this means in English? How is it going to change what I can do on my Blackberry?”]

TL;DR? Jump to the direct impact on you.

It has been a crazy week. I have composed pieces of this in my head in spare moments, so hopefully it’s just a matter of getting them down and tying them together. Hopefully the days of rumination will have distilled out some of the prosthelytizing I will inevitably do.

So, assuming you haven’t already figured it out, what does [Adobe killing [mobile] Flash] mean for you and your Crackberry? I’m honestly not sure, but I have some thoughts:

Taking a step back, it is a tacit admission (murky marketing-speak notwithstanding) that Flash1, would take too much (additional) effort to shoehorn onto mobile platforms. And also that the few abortive forays into the mobile space have not really been viable. (Which is interesting given the PlayBook, which we’ll get to in a moment)

It is also an admission that everyone’s energy is better spent developing open-standards based web applications. This is something that many of us have been saying for a while, but only recently has it even partially viable2. And it is to Adobe’s immense credit that they’ve seen the handwriting on the wall and have taken the hard turn. So many companies who “own” a technology that defines, for better or worse, a space are more likely to bury their head in the sand and plow along insisting they’re still relevant. Right up until they fold.

But what does this mean to you, a Blackberry user? I don’t think it means much in the short term. It means you won’t see a Flash player on your device, but I don’t think that you have one now.

It also means that app developers can focus attention on building HTML 5-based applications/sites that degrade gracefully, yet consistently for less capable browsers (like, quite frankly, the BB browser), are much better adapted for accessibility (and by extension search engines and possibly the Semantic Web). And that browser developers can focus on delivering a consistent, standards-compliant experience (which RIM needs to do in a hurry, but more on that in a moment)

As for the longer term? That’s trickier, and a further twist was introduced within the last few days: See, RIM bet the farm on Flash with the PlayBook, and this announcement put them between a rock & a hard place. A few days afterward they announced that they were licensing the source from Adobe to continue updating it for the PlayBook.

In the long run this could be better for the PlayBook: they can customize it more for their particular hardware, and they don’t have to wait for Adobe to fix bugs.

But it is by no means a guaranteed win. And it definitely means that they’ll need more resources in the project (either people or time, and I know what I’d bet on), and the most likely source of those is the BB browser team, which will likely cause it to lag even further behind everyone else.

And none of this mentions the very (thoughtful) analysis in past months on the less-than-rosy outlook for RIM and the head-in-the-sand mentality of their co-CEOs. But I have babbled enough.

1 Flash, a technology designed for desktops (originally a stripped-down version of Shockwave for the web)

2 HTML5, while still very immature shows great, great promise. But I am not so idealistic (anymore) to believe that it will pan out exactly as we hope.

[I know it has been a long time since I’ve done one of these, but this one is directed mostly at my wonderful colleagues at Change.org. Others are more than welcome, but I think most of you will find the itinerary prohibitive. Have no fear, I plan to do another one come September (when the weather on the bridge is less capricious, and they’ve reopened the western walkway).]

Folks! We’re meeting in Sausalito! It’s a perfect excuse to grab your bike and ride across the bridge!

When:
Friday July 29th. We need to be in Sausalito at 9am. We need to work the timeline backward from there, adding enough buffer so that nobody feels rushed.
Who:
Anyone who has a bike, can manage to stay (mostly) upright on it, and wants to ride across the Golden Gate (C’mon! It’s fun! You should do it at least once!)
What:
Riding a bicycle across the Golden Gate Bridge. Also, you might want to consult your doctor about ADHD, and/or cut down on the fine herb clouding your short-term memory.
Where:
The Bridge down into Sausalito, see below
I have been trying to write this entry for two weeks, and have run out of time. Tomorrow/Today is my last day at Context Optional.

They are a great group of people and I wish them the best of luck. After some hard reflection and rumination I came to the painful realization that my destiny lies elsewhere.

For quite some time I have been wrestling with the nature of the work we do. I had chafed at the fact that I have, through them, hitched my wagon to a company whose corevalues” I despise. We may be making people “happy” to a degree, but with saccharine connections to “brands,” not real people. It is very hard to call what we do “important” by any metric that truly matters. The only possible exception is my current project: the Chase Community Giving program, where we have helped people tell J.P. Morgan Chase where to donate millions of dollars to charity … so that people will hate them slightly less.

In light of this assessment, I am ecstatic to say that I am moving on to Change.org, a network for social change and grassroots organization. I will be working with the team to scale their application to serve communities around the globe who are clamoring to use it, in spite of there being roadblocks in the way now.

We will be helping people work on the international, national, regional, and local levels to spur action on causes and issues that matter most to them. It is through these actions that we will start to see real change in our world.

I really look forward to rolling up my sleeves and beginning the work that needs to be done.
[Note to LiveJournal readers: this post is a week or so old, but I think I’ve finally vanquished the cross-posting demons]

When MovableType 5 was announced, there was a bit of a brouhaha about its lack of PostgreSQL support. Though it was completely unclear from the language of the announcement, all that meant was that PostgreSQL would not be officially supported and tested. The files would still ship with the distribution.

I discovered this fact just after the Slackers’ Network machine explosion, as we rebuilt from the ground up. Still, in the interest of the expedience of the restoration, we opted to install the latest version of MovableType 4, since our RDBMS of choice is still “supported.”

But when it finally came time to turn my attention to MovableType, I discovered it worked haltingly, throwing cryptic error after error (Can’t use string (“x42494e3a53455247000000000000000”) as an ARRAY ref while “strict refs” in use), with little else to go on. Well, that string is clearly not an array ref, but where is it coming from?

So, I rolled up my sleeves and dusted off the debugging tricks I’d learned when building my custom MovableType plugins (before there was much in the way of documentation for MT4)

…And I got nowhere fast. I figured out quickly that the string in question was ASCII (possibly UTF-8) encoded as a hexadecimal string. But the deeper I went, the more sure I became that this was some kind of decoding bug, because the data seemed to go into the database just fine, but it was being garbled on the way out.

A few weeks ago I sat down with Matt and we tried to puzzle it out. I'd done a lot of work to characterize the bug, but was stumped. With a fresh pair of eyes, rather than getting wrapped up in debugging MovableType’s own serialization logic, he had the epiphany to go look at PostgreSQL’s own encoding formats.

Lo, and behold! There is a new, improved output encoding format in PostgreSQL 9.0. So much improved it has been made the default. What's more, it looks suspiciously like the strings I've been looking at in the debugger.

Armed with that information, it didn't take us long to track down the means to revert a client connection to the old format, and apply it to our MovableType instance.

In our case, adding Setenv PGOPTIONS "-c bytea_output=escape" to the right portion of our Apache configuration was all it took.

TL;DR : PostgreSQL 9 changed bytea encoding defaults, if you’re having trouble with MovableType, try setting connection options for your client.

Recently, I was asked to ghostwrite a blog post on the Phusion corporate blog. I’ll excerpt the relevant portions:

We are pleased to announce native Linux packages for RedHat / Fedora derived RPM distributions, including RHEL, Fedora, CentOS, and ScientificLinux.

…And the note at the end…

These packages are currently being maintained by Erik Ogan and Stealthy Monkeys Consulting. Questions, comments, patches, and pull requests are always welcome.

I’m pleased to finally be able to announce this project. I’ve been noodling on it since October. I’m also looking forward to working with them in the future to keep the packages clean and up to date!

Celebratory Games!

|

Hey! You! Come play some games at our new house! You'll get a sneak peak before the (soon-to-be-announced) housewarming party!

What?
Games. Board games, specifically.
Where?
Our house. Ping me if you need the address.
When?
Sunday, July 18th 1pm-9pm (yes, this Sunday.)
Why?
Because I'm no longer prime (in more ways than just one) and it'll be fun!

My apologies for the short notice, I've been working on a project that uses Facebook Events (*cough*movingtarget/half-assedAPI*cough*) and absent-mindedly created an an event for this party instead of our usual Pingg invite, thus missing a bunch of people.

If you're available, we'd love to have you! If not, it's my fault. Come to the housewarming instead.

Laid Up for a While

| | Comments (1) | Crossposted
A lot has happened in the last month…

First off, it appears that this information has been unevenly communicated. For that, I apologize. But I hope you agree that I had a good excuse. (At least at first.)

I’m still midway through writing a very long-winded, exhastive account (with its own summary) of what happened that nobody in their right mind would actually want to read. It’s stalled. This is getting ridiculous.

In the immortal words of Inigo Montoya: Let me ’splain. No, there is too much. Let me sum up.

I was hit by a car.

The evening of Friday, February 12th as I crossed the street (in the crosswalk, with the light) to catch a bus home, a car turning left onto Market from Montgomery struck me at slow speed.

My knee was broken (x-ray). Everything else was fine. (Specifically, a portion of the tibial plateau was sheared off.) I was, in many respects, very lucky.

It was a long, painful, and story-filled night.

After a long, disagreeable week, the following Thursday I had surgery to fix the (skeletal) damage (another x-ray). My ACL was torn but not repaired (I’m told that many people live full, active lives without one). My MCL was stretched rather badly.

I was (IMNSHO) discharged too early on Friday evening. I spent a harrowing night at home. Too harrowing to be story-filled. The less said about it the better.

The convalescent prescription from here is rather high-powered narcotics (which work most of the time) and no weight bearing on that joint for 10-12 weeks! After that, the real recuperation begins: 6-8 weeks of physical therapy and rebuilding.

The reason 10-12 weeks is two-fold: primarily, it’s to give the cartilage in my knee a break (ha!) to prevent it from deteriorating further. Secondly, it is also hoped that this break will also give the MCL a chance to tighten back up (at least a bit).

This greatly increases the chances of arthritis in my knee (but there is no way to predict if it will be symptomatic or not.)

I am definitely healing. I have good days and bad days with the pain, but it’s reassuring (after the fact) that I’m healing even on the bad days. I’ve regained quite a bit of mobility, but as of right now, I am still confined to the upper floor of our house.

The outpouring of support and well-wishes has been fantastic and overwhelming. Chiara, too, has been a saint to put up with so much. I am humbled by it all.

There is more I want to say, but this is already starting to get long, so I’ll save it for another post.

Authlogic

| | Crossposted
I have a project I call “Clubcar.” It had its genesis in my frustration at the pathological inability of a group of coworkers to chose a lunch destination, coupled with our general dissatisfaction with the day-to-day functioning of most other automated decision systems.

It was also a complex enough problem that it seemed a good way to learn Rails. Because it was my first Rails project I was as yet unfamiliar with many Rails idioms and practices. I reinvented a few wheels that really should have been patterns.

I am now going back and spending time cleaning up the code base and extending it to allow more than just the original group to use it, since several people have expressed interest in it.

One of the wheels I invented was authentication. Since a wider audience needs a much more robust authentication (and authorization, but that's a separate issue) system, now is a good time to rip out my simple implementation and use one of the off-the-shelf solutions with far more features, and far fewer bugs.

And here's the rub. By far, the most popular solution, acts-as-authenticated (and its REST-ful progeny: restful-authentication) are primarily code generators. The expectation is that you'll use them in a new project to generate the models, views & controllers that make up your authentication system. This has presented two problems, one practical, and one philosophical.

The practical: since my system already has all of these things, I tried to carefully shoehorn the generated code into my existing framework. It was a mess, I felt I'd painted myself into a corner, and the project stagnated.

The philosophical: while I was despairing and frustrated over the shoehorning, I began to wonder: why is the Rails community as a whole, which has “DRY” (“Don’t Repeat Yourself”) as a mantra so enamored with code generation? Even if it's not you writing the code, it is still repetition that makes the project harder to maintain, makes it harder to incorporate fixes and features from later version of the tool, and seems to fly in the face of not only DRY but good object-oriented design as well.

I set the project aside. In returning to it (now that I need to amuse myself on the train again occasionally.) I decided to once again look for alternatives.

I have stumbled upon Authlogic, a plugin that seems to be written by someone who shares my misgivings. It's also extremely well documented, highly configurable, and has a complete API for extension.

Fair warning: I haven't actually started moving my project to Authlogic, and I may yet find some fatal flaw. But I'm very much looking forward to trying it out, and if I do happen to find a flaw, perhaps I can patch it, and everyone using it can benefit immediately, not on their next project!

ETA: I just sent the author some fan mail, because it makes me that happy!

Horus 2002-2009

| | Comments (3) | Crossposted

There are far too many words for me to write here, and I’ll never get it out if I try to capture them all. Keeping it short: The candle that burns at both ends burns twice as bright, but half as long. Horus succumbed to chronic renal failure today. Hoka Hey, little man.

Quality Time with Pepper
Quality Time with Pepper, originally posted by Erik
Sleeping Horus
Sleeping Horus, originally posted by Chiara
Chiara and I are spending this weekend in Monterey / Carmel / Pacific Grove hammering out wedding details. To me this is poetic for on this day our relationship becomes “legal.”

18 years ago today, we had our first date. February 8, 1991 was the Snowball.

I don’t yet know if she realizes this fact, but I do know that she doesn’t expect me to remember.

Today will be fun!

ETA: She didn’t remember. I win! Off to taste some cake.

Who?

Another boy in San Francisco. I'm a geek, a cyclist, and an occiasional glassblower. more…

November 2011

Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
Powered by Movable Type 5.04