December 26, 2006

Keyboard Diarrhea

Funny, but in my head, all my posts are short. In real life, not so much.

Time-wise, its all about the same - the only posts that take more time than the average e-mail (or two, maybe) are the
coding-type posts, which are few and far between. Verbosity has never been one of my personal challenges :)

Still, I'd rather be concise - "Brevity is the soul of wit", and all that. There's some positive reinforcement that you'd think would help me: my
smaller articles and posts tend to generate more comments and discussion - seems to be less interest in my more wind-bag-y dissertations.

On balance, that's probably because (a) the smaller posts get read more - "
economy of motion" in action, and (b) they get misunderstood more - that is, people read what they want into them, which always makes for good fun. Or it could be because (c) my "insights" are, well, a bore :)

And that's all I have to say about that.

Really :)


(Except to mention that this post title is not
SEO friendly :P)

December 20, 2006

Best. Product. Name. Ever.

Updated: My bad. Amapi is till kicking (and NOT to be confused with this :))

I was looking for a 3D appplication to play with some things, and noticed that (it appears) Amapi 3D is no longer on the market.

Amapi was a Mac 3D modeler (from back in the day), with a killer innovative "workbench" UI and a gestural interface. It was a enjoyable, useful product, but got squeezed quite a bit (along with a lot of other rich authoring tools) as people moved from productive to consumptive behaviours with the explosion of the Internet (not to mention the time-coincident shift from Mac to Windows - a move from which many Mac products never recovered).

Amapi survived though, moving through various acquisitions and continuing to improve and innovate through the years- its a little sad to no longer be able to find it.

But as good as the product was (and I loved it), the best part was the name. It was (originally) developed and marketed by a French company called Yonowat.

Get it?

Yonowat? Amapi.
(or, in English: You know what? I'm happy)...

It's the little things, you know :)

December 19, 2006

December WPF/E CTP: First Impressions

Updated: Some more details about WPFE and texture sampling issues.

So.... not bad.

I've been playing with the Microsoft WPF/E CTP a little over the last week-ish (its a slow time of year), and I thought I'd post some early thoughts. These are mostly a ramble - no particular point that I'm making, and it might not be entirely coherent.

Appears to be a pure software rendering pipe (that is, there appears to be no Hardware acceleration in this CTP). Good antialiasing quality - appears to 4X oversampled in the y-direction and analytical in the X. As with GDI plus, I think they botched the texture sampling rules. Its a little better than GDI plus was, but still wrong (IMHO) for resolution independent UI - which of course, is a big part of the goal. Macromedia got this right (at least, starting with Flash 8). Although its a software rendering pipeline, it also looks like WPE/E employs a front-to-back display (or some form of overdraw prevention, at least), and performance is pretty decent - though I haven't stress tested complex shapes or the like yet (Updated: I tried, and failed, to load the simplest benchmark - must be a point limit, though I couldn't find any documentation/info on that).

And no 3D support.

No controls (buttons, menus, text edits, etc.) are present in this CTP - you get events, and you get shapes and images (textures), so... hard to say much about this yet. Startup time for the WPF/E plug-in appears good - the header of theWPFblog (appropriately) is WPF/E, for example, and loads nicely/quickly - WAAAAAY better than .NET 3.0/XBAP (e.g. try this sample).

Still, I think the packaging streaming model, although goofy in Flash, makes it much easier for developers to explicitly control and manage assets loading. It will be interesting to see how important this becomes in the real world for building larger scale applications - I think Microsoft is at major experience deficit in this one key area.

Animation is a bit odd still, and the property/element "." syntax rules still throw me a bit...

Documentation and SDK - really nice.
Samples? Laaaaaame.
Pretty much most of them could have been built trivially in Flash, or even DHTML. Even the Page-turn example is mostly about clever content (for example, the shading is a part of the ARTWORK). Not one example shows the expressiveness potential of the runtime. Most of these HTML samples are more inspirational. I realize this is just the first CTP - but *ONE* killer sample would have been nice.

The language is nice and expressive - its pretty easy to get started and build "rich" interactive content. If you're starting from scratch, much easier than Flash, Flex, or DHTML even. The browser integration and support for multiple platform (browser and OS) right out of the gate is a good move. CLR integration (and the release of the mini-CLR) is the big "FUD" thing we're all waiting for, I think. The code-behind model really leverages the excellent "first class" host DOM integration. Plug-in size and updating may be an issue, but its early enough that I'll reserve judgment on that. Currently, the IE control is 1.1 MB - the other variants (browser and OS) are quite a bit bigger.

All in all... a decent first CTP - looking forward to more... and some clearing up of the massive general confusion about how WPF, .NET 3.0, XBAP and WPF/E are supposed to fit. Everything I've seen so far seems to be after-the-fact rationalizing of internal competition and overlap.

December 14, 2006

Math is your friend

This made me smile:
Isn't that what friends do? :)
(of course, this made milk come out my nose... but to each his own :))

from xkcd under CC license.

December 13, 2006

Epilogue: AOL Layoffs, 2006 Edition

So... I didn't think I'd be posting about AOL anymore (buh-bye). But today was my last official act (I think): laying off more than a few people as the Company restructures around the Web (and advertising). It was a fairly crappy way to spend a day, but I was asked to help; and I guess I'd rather folks that work(ed) for me hear it from me as opposed to some person they don't know - even if I am done there.

Its a tough thing, but it is a [media] business... and costs have to trail revenues :/ - though knowing that doesn't make the human component any more palatable, and I do feel AOL tried to make it as right as possible, all things considered.

I was also sent this today (I don't know who the original source was - I got it from someone no longer at AOL) ... It's in clearly poor taste (but still funny) - some employee's reaction (that last one had me in stitches) - in the category of gallows humour, I suppose.

December 12, 2006

Java 6 and Scripting

Sun released Java 6 yesterday. Of particular interest (to me at least) is the explicit direct support for scripting languages as a "core" part of Java (more or less - of the Java 6 edition "package" at least...).

Though I intuitively understand it (and believe it), I've still yet to see a reasoned justification as to why we need scripting languages? Is the compiler that much a barrier to productivity?

Otherwise - some nice additions to Java 6 (especially the XML APIs, which, like E4X, are critical for easing web services development - nice), but despite them, I think Java 6 moves it further away from a credible client-side computing platform - too much increasing complexity, which creates distribution issues. I think Microsoft's mini-CLR is a better step in that direction. Open source and mobile/phone development may change that for Java, but I think a variety of factors will continue to impede relevance in that space.

December 11, 2006

So long, and thanks for all the fish...

Went to my good-bye party at AOL on Friday. It was fun :)
(Armughan has a picture).

Everyone keeps asking me what I'm up to next. I have some definite plans... but none concrete at this time, and I hope to keep it that way for a little while yet. At a minimum, not even close to ready to discuss it yet :)

Meantime, you can find me here.

Closing thoughts:
1) They say all truths go through 3 phases - first ridicule, then violent opposition, and then self evidence. AOL's getting through its truths, and that's a healthy thing. Good luck and good wishes. I think the company has the assets to be successful. I hope that it will.

2) Always good to remember: At software companies, the intellectual capital is in the people, not the code, and not the products. At software companies.

December 6, 2006

I must be getting older...

I'm more interested in the Wii than in the PS3 (neither of which I'm likely to get anytime soon...). It just looks like more fun (for everyone :))

(Note: The Wii clip below is a spoof - but be warned, its a little sexist/sexual)

December 4, 2006

WPF/E CTP now available

The application runtime arms race is off.

Adobe's Apollo is due early next year, as is a more functional (read: useful) XULRunner from the Mozilla foundation. But first out of the gates is Microsoft with their cross platform web content runtime framework: you can now try out WPF/E. Read more here.

At least from a "promise" perspective, WPF/E more squarely what Avalon - now WPF in Vista - or even ChromeEffects (for you old-timers) was going to offer, but, significantly, this is cross-platform from the get-go. The "E" is for "Everywhere". And just to prove it, the CTP is available for Windows and Mac OS X (well, Safari on OS X anyway).

I'll post some thoughts later this week after playing with it. As I've mentioned before, the evolution is towards
general purpose computing technologies to make rich application distribution instantly ubiquitous. There are some significant and interesting technology choices that imply certain classes of applications and uses... more on this in the future. Confusingly, WPF will ALSO run in your browser and enable web applications but only on Windows, and its, uh, somehow different than WPF/E, and, uh, richer (?) somehow... though neither is a subset of the other... yeeeeahhh.... quick over there! Linux is eating your IP!!!! .....

Of course, still an open question is what "rich" really means and if people really care at all ... :)

My (biased) guess is that it does, but our current generation of applications and infrastructure (not to mention imagination) just isn't there yet. After the fact, I think we'll go "of course!" (iPod anyone?)

(and oh, btw, this was the idea with
Boxely and the OCP, too, but... cie la vie :))

Unicode is a pain in the @$$

I was playing around with some code-y things, and wanted to find a simple, cross platform way to deal with Unicode strings. Good luck!

The closest thing I could find for C/C++ was the
ICU library from IBM. While its VERY complete and functionlly rich - oh my god is it huge and complicated!

In the past, I've had to write my own (simple) functions to deal with really exactly the cases I needed, but, this being 2006, I thought I could find some nice publicly available routines to deal with this.

Not so much.

There's definitely code out there, but either by license or implementation, its bound up in ways that make it not so useful... so...

...I think I'm going to have to roll my own on this (again), which I'll then release source code for publicly - something simple, but hopefully more useful than what I've seen. Anybody have/use anything they like better that's already out there, let me know please... save me the hassle :)

As far as I can tell, here's what it takes to decode a single UTF-8 character:

code snippet)

Ouy!! ...and its not even "fully" right for the invalid/stict case - there are invalid bit distributions within the byte group ranges.

And UTF-16 isn't much better... it's a little less code, but FAR more complicated in logic. Originally, it was intended to be 1 code point per unit (an unsigned short), but that become untenable over (a short amount of) time, and so they introduced support for multibyte surrogates, just like UTF-8. But because it had not orginally been designed for UTF-16, it used some odd ranges to support them (one of many reasons I don't like it). So THAT code, to decode a code point from a UTF-16 stream, looks like this:

code snippet)

And all this just to decode ONE codepoint... of course, if you've ever actually looked at the algorithmic complexity of converting a floating point number to a string (even most veteran code monkeys haven't)... well, you start to appreciate the value of a good code library.

Anyway, I want length, count, cat, copy, compare (case sensitive and not), at least, and probably one or two other classes of functions (conversions betwixt UTF types certainly, but that's reasonably there already, if a little "stricter" than necessary). Locale code pages I can do without .... I'm looking for "pure" Unicode functionality in a lightweight package.

Pointers welcome.

November 30, 2006

Vista v1, Office 2007, and
a preview of Vista v2 UI - lucky us!

Vista launches today, and so does (officially at least) the new version of MS Office. I have to say, from all appearances, the UI changes for Office look to be a gutsy, necessary, and successful revamp for the Office franchise. I often say "you can't lead by following..." (which is dumb, but you know what I mean :)) - and I have to hand it to Microsoft; the changes don't feel arbitrary (for the most part) and at a minimum have created the kind of buzz for Office we haven't seen in probably nearly a decade.

Again, sounds dumb to say, but change doesn't mean "well really kind of the same"... so, kudos - to both Vista and Office launching (well, sorta), on the same day no less. Both products genuinely are a major achievement that balance familiarity with forward movement pretty well. I don't love the real estate compromise(s), but I'll get over it - it does bring forward a LOT I didn't tend to remember to use in the Office Suite.

Interesting in all of this is MS's attempt to proactively control the IP surrounding the product's "look and feel" with their Office UI licensing program - I particularly like how they're willing to "share their invesment". Thanks guys! (*cough* zune *cough*)

I also particularly like the last answer in this interview with the PM for MS Office:

"A: Historically, most of the more substantial UI breakthroughs have happened in Office and later moved to Windows. We continue to talk to the Windows team about what aspects (of the new Office UI) would make sense for them."

That guy MUST have read How to Win Friends and Influence People :P
(kidding! - we knew what he meant... at least, I'm sure the Window team does :D)

November 28, 2006

Car Communication

Updated: Ask and ye shall receive (link courtesy of a commenter - thanks Chris!)

Its seems like the car horn has basically become an instrument of anger. I don't think you can honk it without seeming mad. Even a tap is a sign of impatience, not communication (think about whenever you're on the receiving end).

I guess CB radios were an attempt to create transient communities for commuters and the like - and cel phones have taken their place for fixed communities, but wierd to me that there's no good way to communicate with the folks around you when driving... maybe this will be one of the emergent expressions of location based services?

In of itself that's surprising - you'd think geography and technology would be a great(er) fit; look at the success of GPS. Like wireless computing, once you do it, you'd can't go back. So why is it so hard finding a behaviour pattern for location enabled computing that's more than a techno-fad?

Important factors (I think): ease of setup, discovery, of course, but more than that - what's the new behaviour eco-system this enables?

November 27, 2006

Vista Week

Updated: Yeah. What he said.

Microsoft officially launches Vista to businesses Novemeber 30 (Thursday). Pretty big news, considering the length of time since it was first previewed and number of reboots of what Vista is (heh :)). Its been 5(ish) years since the last major OS upgrade from Microsoft and though I think this will be a better upgrade than the technogeeks expect, there's no way it will live up to the hype.

Bottom line: its way overdue, so its going to be hard to be impressed.

That's OK though, in the scheme of things, but... can someone tell me what "release to businesses" means exactly? From what I can tell, there'll be nothing at retail; I guess people (IT folk that is) will be expected to download it from MSDN?

Its a shame - this OS launch strategy is really turning the Vista release into a limp whimper. Perhaps that's on purpose (worred about negative press?), but I don't think so - I think Microsoft is schizophrenic about what to do now (big-picture), and its coloring what, warts and all, ought to be a major event for them.

November 21, 2006

Reflecting back

This seems like the appropriate time of year for this..... :)

As I look back on my time at AOL, here's how I view the technology "periods" we, as a once-but-no-longer technology-team, rode through:

- Year 1: Stablize the base (and prepare for the future)
Basically, we cleaned up some significant technology architecture and cleared the ground for AOL on the web. Among many other things, the process slowed (too briefly) from feature competition to clean-up and we improved core business and product metrics (for example, what we call "Abnormal Disconnects" or "AD"s significantly; 25% to 60%) across the board. This is particularly significant when you imagine that in previous years the company struggled for every single percentage point gain (every percent of AD mapped to [EDITED FOR PUBLIC CONSUMPTION] difference in membership churn). Particularly, important in this was disconnecting Identity and Connectivity (capitalization intentional) throughout our application and content stack - one of the key things to prepare for the future.

- Year 2: Unwall the garden
In 2005, we went from one major product ship (with one slipstream update) to shipping a signficant number of new products, both on the desktop and on the web, including itself. Though it still required deep cross-coordination, AOL built out significant new infrastructure, transforming
as well as just force-fitting a lot just to gain the opportunity to learn, and have our products be available for the first time on the web-at-large. A lot wasn't right, but was necessary to learn what the company didn't yet know it didn't know.

- Year 3: Embrace the web
There is/was a lot that this idea implies, both technically and... karmically (for lack of a better word). Its why I had accepted the added responsibilities over the last year - to renew the soil of our core services (i.e., mail and IM), publishing and search infrastructure, and business technologies platform. This year has been about really embracing and evangelizing what the Web means from a development, deployment, and infrastructure perpspective. Its been not just about technology change (even the old in-client AOL "Welcome Screen" is - finally! - in HTML), but embracing the change in role implied by embracing the the web eco-system.

Overall, slower than I would like (and loooong overdue: as I tell my folks all the time - "not Rocket Science, barely Computer Science"), but ultimately valuable - growing pains and all.

From the product side of things, I'd say things were more muddled than I would like. Not that it wasn't enjoyable, but I had influence more than authority, and I've learned a few things in my time at AOL about that.

November 20, 2006

Amazon Web Services Strategy

Amazon's got an interesting new strategy they're pursuing: to become an infrastructure provider for the web-at-large. I'd mentioned this before - and its one of the places I had been trying to drag AOL for some time.

As this blurb in Tech Crunch mentions, its not without its substantial risks, but ultimately I think you want people rowing the boat with you, not against you. I think its why Yahoo still struggles, and Apple, despite flashes of brilliance, will always be (end up? :P) an underdog.

I think the biggest risk, in this area, is that your utilities get commoditized. Without some sustainable differentiated value, either in data services, user base, functionality, etc., its very tough over even the medium haul. Its great that Amazon is providing cheap storage for example, but more unique value propositions will be needed to create dependencies - otherwise their margins will get crushed.

Got to say this for Bezos - he rides the edge of the curve...

November 17, 2006

I'm leaving AOL

Some confusion over my last post - so allow me to clarify (this should be of no surprise to folks inside AOL).

Yes, I'm leaving AOL, and, no, its not connected to Jon Miller's departure, except in the zeitgeist-of-the-Company-atmosphere/sign-of-the-times kind of way.

I had first resigned some time ago, but was asked to help stabilize through a significant company transition and "keep an open mind through the process". I think I did that (really, I tried) - even running the Open Services Developer's conference, creating participation opportunities with external developer communities and helping accelerate the Company's (metaphorically and literally) thinking around what embracing the Web means.

That said, it became clear some time ago that where I'd want to invest and direct our technology and efforts just didn't align quite enough. I was offered some very generous senior opportunities inside the transforming organization - for which I'm very grateful - but after 7 bosses in three years, and having participated in and initiated quite a bit of transormation at the Company - I think its just time to move on, professionally and personally.

Officially, I'll be wrapping up next month - so don't be surprised to see me still wandering the halls. I had also been asked to ease the change - to make the transition smooth, and that's been going on for the last few months.

I'll still be blogging here, so don't expect any particular change in that arena - you'll see here what develops as I'm ready to talk about things.

Important footnote: My choice isn't a reflection of AOL's opportunity. I genuinely do believe that AOL can be signficant, relevant, and successful again as a leader on the Internet - I hope that it will. People like Jim Bankoff, Kevin Conroy, Mike Kelly, Joe Redling - these guys aren't dummies.

Anyhoo - it was a good time: met some great people (many of whom are also gone :P), took away some things, contributed some things, and hopefully left a positive wake.

Time for the next thing :)

November 16, 2006

AOL CEO Switch: Miller replaced by Falco

Jon Miller was a deeply thoughtful leader. There is no question he'll be missed.

I had resigned from AOL, back in June of this year (no surprise for AOL insiders), for professional as well as personal reasons (which still stand - I'll elucidate in the near future). But I had stayed on in my role because the (then) CEO and the
(then) CTO personally asked me to help through the significant transition immediately ahead - and to keep an open mind about the future through that process. I am/was senior enough, and had been entrusted with enough responsibility, that that seemed more than reasonable.

He certainly taught me, personally, a lot about what it takes to run an organization at scale, through significant transformation - I think people forget how differently the Company operated 3 years ago. For example, when I started we had 300+ developers still working on the upkeep of an aging AOL client and hitting quality targets for our Dial network. Now its a dozen or so, from our
Bangalore development center, no less - and all core development is about embracing the Web.

And more than that, Jon's a professional, in every positive sense of the word - and in culture of personalities and politics, that's refreshing. I appreciate the time I got with him - as well as the growth opportunities he offered me during his tenure.

Although it became clear by the fall that I was not long for AOL, and though I feel I've been able to positively impact the Company's fortunes, this kind of leadership change is a big deal. I hope they know what they're doing... and more importantly, what they're trying to accomplish. This level of turmoil without clear direction seems a little... I dunno, desperate - and, in my view, furthers AOL from the
battle field in which in needs to compete. I hope that's intentional, and that they have a plan (Good luck Randy :))

If I had one complaint of Jon, it would be that he was not able to be involved enough in the day-to-day execution and operations of the Company - AOL would've been better for it. I imagine his responsibilities with Time Warner made that difficult.

You can read more
here. Jason sums up the somber surprise well...

Updated: Some clarification on my status at AOL.

November 13, 2006

Bye Bye Mac

Update: Apparently a hoax. D'OH!!!!

Not not that one... I meant that, apparently, Justin Long is no longer "the Mac". Hopefully that doesn't mean the end of the ad campaign - which was just frikkin' funny... though, (as the Wired guy points out) not sure where it goes from here without being a little wierd.

Bad call! Bad call! (though I reserve the right to change my mind... :))

November 8, 2006

Adobe Flash AVM and Mozilla join forces

Adobe has open sourced the VM used in Flash Player 9. As I mentioned previously, its pretty good.

Even further, the Mozilla foundation plans to migrate their JavaScript engine, SpiderMonkey, to this VM in the future. This is a good move for both organizations- and it nicely cements a credible non-MS rich runtime for the Web.

It still all effectively proprietary (i.e. the direction is controlled by a very small few) ... but that's mostly OK.

November 6, 2006

Mac is back

I bought a Mac mini last week - my first Mac (personally) in maaaaany years. I started my professional life as a Mac programmer, so its something of a "return" for me. Its nice - Apple's really done a great job making a great out-of-the-box experience. And I'm really stunned by the design - its just frikkin' lovable.

There's a lot of prognistication about Vista's impact on the market (mostly negative for Microsoft) - the pricing structure and broken promises make it tough, even though the OS itself (not to mention the new Office) really have some very nice (somewhat overdue) features and robustness that will get overshadowed.

But there's an elegance and desparation that Apple finally shed before making its turn around which is instructive, I think, to lots of companies somewhat trapped by their own past success - it doesn't come quick and requires persistent commitment.

Its not that OS X or Apple are perfect - there's a lot that stinks and/or just doesn't work, and I don't think I'll be switching permanently anytime soon (and honestly, I think Safari's kind of poop-ish).

But... the video below is an oldie, but a goodie - and it embodies the "karma" of what I mean... If design is the new black of business - and it takes a leap to embrace, then its also requires more a holistic approach to the consumer; it's not just about the product itself. And, as always (and obviously), you can't lead by following.

And before you laugh too hard at those "MS losers" - remember that Microsoft commissioned the video; so there's not a self awareness gap, lack of intellect, or even a lack of humour there - doesn't make it much easier to actually do.

November 1, 2006

The Elephant Stampede: RIA and Standards?

Saw this article on slashdot discussing desktop/web convergence - and the elephants chasing to define the experience. There are some interesting points in this discussion - but one missing thought/question is that I'm not sure what role open standards play (if any); the contenders are (effectively) single source solutions: Flash/Flex (Adobe), XUL (Mozilla), WPF/.NET (Microsoft), Java (Sun), etc.

Previous posts on this:
RIA innovation?, Disruptive trends, Content Engineering, Orbit and Java, and RIA Battlelines.

Of course it could all
end up like this...

October 31, 2006

Random Pixel Toy

Updated: New version (this one runs :) - even for Mac Parallels folks). Sorry about that - improper manifest file with VC Express 2005 (or something); I'll have to look at exactly what the issue was later. The links in the post have also been corrected.

I was visting
a friend last week, to see some of the VERY interesting new work he's doing, but, as an aside (nothing to do with any real project), he had just been playing around with OpenGL on his manly MacTel box. He wrote this fun little particle system thing that treated every pixel in an image as a particle... it was very fun, but only ran on the Mac.

So (being me) I did a version for Windows - no OpenGL, DirectX, or other (though those would help), of course, just code. Its not very optimal (its only 9kb compressed) - but kinda fun to play with. You can
download it here. Click and drag in the image to see it work; press the 'o' key to load a new image.

Remember, its just a little app I compiled on my computer: there's been no QA, and it probably has a bug or two - other than that, its harmless :)

October 30, 2006

Disney Pix

Finally uploaded all the family pictures of our Disney Trip. A few little sneaks and peeks... :)

Its really a bit more of a pain than it should be - its easy to publish galleries; tougher to make sites for this type of thing. Somebody should do something (or recommend something) on that...

WPF and Rich Internet Applications

I finally decided to install .NET 3.0 so I could play around with some XBAP demos. They're interesting (for example, from the New York Times). It still seems like the primary value of "RIA" applications is (a) ease of deployment, and (b) state transitions, i.e. animations (note: WPF required link).

Whether its Flash, AJAX, WPF, OS X, etc. - haven't really seen any new interaction paradigms (that aren't fun, but useless) - it just looks prettier; you could have presented the same utility with the original Mac OS user interface, more or less. That's not the case with the transition from DOS/command line apps to GUIs.

Heck look at the Firefox 2.0 UI...

That's not a bad thing or anything, but a little surprising I guess - its been more than 20 years (at least 15, if you want to give it a few years). Evolution, not revolution...

Updated: Reminder - some "older tech" examples of richness (in Flash, DHTML, Java); some adding value - some not so much :) ... And speaking of useless but fun - here's a image/photo "sand" simulation in plain old C code :)

October 26, 2006

AOL and the AJAX Experience

The Conference that is... Looks like Will did well (no surprise :)). As discussed...

Heh. Those pesky integers....

I didn't see this at the time article was published (10/11) - but my timing was good (10/3) :)

Co-routines (as of JavaScript 1.7)

So I was playing around with some of the new features in JavaScript 1.7 - not a lot of discussion about them in the Firefox 2.0/IE 7 release brouhaha, but definitely really useful improvements there for developers.

In particular, co-routines (in the form of the "yield" operator) are the key big improvement (IMHO). The rest is mostly syntactic sugar - and in fact, most of those are indeed enabled by co-routines (which they label as "Generators").

I have to admit, though, to being a little disappointed with trying to use them in practice, for "programming in the large" with JS type things. As always, I might be missing something - but what I'm finding is that most of the time I don't want to necessarily yield to just the calling function; I want to yield waaaay up the stack. I think what I'm really looking for is a "resumable" exception of sorts- where I can yield all the way up somewhere, take some action, and then continue execution back to the yield - ALMOST there with JS 1.7 generators - but the implementation seems to be more about keeping up with Python superficially... ah, well.

Still - it does simplify A LOT of real world design patterns, so I can't complain. No denying that co-routines are a powerful programming paradigm, which I first saw in Ruby, then Python, and now JavaScript. There are even a few attempts to bring them to C - but I guess the interesting question will be how much browser adoption (in a fragmented market) of these features affects their real world utility and use.

Adobe has much less of that particular adoption problem - being a single vendor monopoly for core technology has its advantages.

October 23, 2006

Debian/GNU IceWeasel and GPL Firefox:
"But sir... aren't YOU the man?"

Probably more than a few folk at Microsoft (among other places :P) were laughing their @$$es off last week. If you haven't heard about the debate - it basically boils down to this: Although Firefox is "free" (distribution and source code use/re-use), the name and artwork are trademarks of the Mozilla Foundation.

So they (the Foundation) have made a few pointed requests to Linux distros like Debian, with regard to how they may distribute work product from the Mozilla Foundation, particularly with regards to their key successful product, Firefox.

The problems are basically this, as (I interpret) the Mozilla Foundation sees it: (1) All distributions using their name must include exactly their artwork and logos and (2) they wish to review and approve "substantive" patches for distributions using their trademarked names. The rationale is pretty straight-forward: consumers have come to know and recognize the Firefox brand, and the Mozilla Foundation has invested in building that brand - and they don't want to see its value eroded by confusing imagery or shoddy product.

Straight from the horse's mouth, I'd have to agree these are fine and reasonable things when you're running a business. And now that Firefox is generating real revenue and market share, apparently many in the open source movement seem to be unhappy their new web browser overlords.

They should remember though, money's important - and it may not flow if its too far from "core" Firefox.

So the counter plan is to branch Firefox and ship "IceWeasel" (fire=ice, fox=weasel) - of which there are two variants already: Debian and GNU. The whole point, they argue, of "free software" is to enable EXACTLY the type of customization of products the Mozilla Foundation is arguing to prevent under the Firefox brand. So they're going to fragment in response...

Much better.


What's funny is both sides aren't wrong - and a good example of where being right (on either side) is to the detriment of both. Maybe they should try a brand family strategy to compromise - something like "Firefox Prime" (but, uh, better... :P) for the "official" Mozilla distributions, and "Firefox Debian" for branches/changes... ah, whatever.

Let's hear one for those young whipper snappers "stickin' it to the man!"... oh wait... who was who again?

October 19, 2006

October 18, 2006

Boxely CTP and RIA Content Runtimes

Speaking of content runtimes and Rich Internet Applications - the Boxely Community Technology Preview is available for download. Its used by a bevy of AOL applications and will be more broadly available for use by third party developers, for plug-ins to AOL applications, as well as "other" things.

While you were out...
GooTube/DRM and J2ME/Lazlo/Orbit

Well, I'm back, and had a great time with the family. We stayed on the Disney World premises - which harkens to how Casinos have no windows or clocks - a completely immersive experience. Those Disney theme park guys really know how to make you happy about spending, and they manage every detail - about my largest complaint is that the 1/32nd scale 3D princess crown chocolate replica at our Cinderella dinner was made of dark chocolate.

I prefer milk chocolate.

In other news,
Mark Cuban did a funny bit why GooTube is going be a legal nightmare - but I still think its possible that DRM, at least as currently envisioned, is NOT the "end state" solution for content creators.

And, this is also a bit old, but J2ME's evolution is interesting to watch in the
distributed application runtime game. They've had some success on devices, tons and tons for server development and none to really speak of on the desktop (yet). Nevertheless, they continue to flog the "write once/run anywhere" banner with this news with Lazlo Systems about "Orbit" and application portability. Like Microsoft, Sun is attacking this market from a developer perspective - and as application execution context boundaries blur, that may become more effective in the marketplace. I still think they're a dark horse vs. the "top 3" in this space, but it is still an emergent technology space, so who knows.

October 11, 2006

House of Mouse: see you in 7

We're off to Disney World! We'll be gone for a week or so, so... see you then :)

The kids have been packed for a week and had their suitcases by the door - just in case we have a vacation emergency.

Soooooo fun!

October 10, 2006

GooTube: Google buys YouTube


I guess they can
afford it, and its nice to extend the brand (if you're hunting for some rationalization - which we all are :)), but still - it's a bit nutsy (and they're potentially risking more than the invested cash).

Well, no matter how you slice it , its a bold move in the citizen video space - and it should be interesting to see what Google make of it, if nothing else. In particular, if they can stick to their new mantra ("features, not products") seriously with this acquisition - well, could be very interesting. All in all, I'd say: crazy deal, but probably not a bad idea for the involved parties.

Let the good times roll - :) remember this?
Dot-com-2.0 craz-azee-zaniness (and some background).

October 6, 2006

Google Code Search

Yesterday, Google publicly released their source code search tool - which is pretty nice. I'd not like to be koders or krugle just now (hey, this is just like when Microsoft used to release products, back in the day!)

When people wonder what possible
chink there could be in Google's armor: this is it. Specialization of presentation - of interface - tends to win over time. This is at once less of a chink and more of chink than I think people generally think (I think :)).

That is, although I do believe in the power of specialization over consolidation, from a UI perspective, that doesn't necessarily speak to economies of scale, from an execution perspective - it only addresses
user fickleness and opportunities for behaviour disruptions.

On a minor note, I'd wish they'd be a *tiny* bit more consistent with the root URLs for their products - as a user, its annoying. For example, their
code search product is at, while you reach their blog search at or For a company that pays attention to the little details of experience, you'd have hoped they'd have codified that at least.

Updated: I take it back (I did say that Google cares about details :)) - works now; it didn't until well after my post.

October 4, 2006

Some new AOL software

You should check out Light AIM (*ahem* LAIM) and AOL OpenRide.

Very different product, uh, vectors, for lack of a better term, but both are interesting because they're DIFFERENT (yay!). Good to see some products that are not just cloning the marketplace from AOL... whether they're great or just flops I guess the market will tell us, but certainly they're not attempts to produce "good enough".

October 3, 2006

Problems with Integer Overflow Math and Detection, pt 3:
Easy overflow arithmetic, no assembly required.

Updated: Some nice profile results on GCC from Eric O'Laughlen. Full optimizations on I think is the important case.

Continued from Part 2. Inspired by this post from Google.

I think I'll do a full article on this shortly - covering the full range of mathematical operations, because this is fairly simple but important (for example). Oddly, most of the default answers seem to be 64-bit math (Microsoft and Linus/Linux) or assembly (everybody else). I'm not sure why - perhaps I'm missing something? But first, some performance results:

--------- Testing Addition
--------- Math requiring no overflow detection, but still testing for it
-------------------- This is for speed (overhead)
Test Simple........... total: 100000001 Time = 651.314 ms (1)
Test ASM Safe......... total: 100000001 Time = 1799.14 ms (2)
Test MS Safe.......... total: 100000001 Time = 1205.74 ms (3)
Test ASM SETTO Safe... total: 100000001 Time = 706.609 ms (4)
Test Sree C Safe...... total: 100000001 Time = 694.44 ms (5)

(1) is a+b, just for a baseline
(2) is the common Assembly solution I've seen a few places on the web
(3) is the Microsoft SafeInt class
(4) is the assembly recommended by Eric, following Mike
(5) is my C version (below)

The basic idea is really simple, and pretty obvious for the unsigned integer case, as everyone points out. If you add two positive numbers, and the result is smaller than either number, your addition overflowed.

It gets a little more complicated for the signed case, but not really THAT much more complicated. Basically, if you want to test if the result of an addition is supposed to be greater or less than a specific number, you only have to look at the sign of the OTHER number. That is, if you're testing if "a+b" overflowed, the unsigned test is "a is greater than c" and the signed test is "(a greater than c)!=(b less than zero)" (we can optimize that "b is less than zero" test, such that this becomes two compares and one jump).

So the code for my fast C version - you can plug it into the benchmark source I posted yourself:

__forceinline long __sreeSafeadd(long a, long b)
long c = a + b;
if ((a<=c)==(unsigned long(b)>>31))

return c;

Its not what I might call "maximally" portable, in that it presumes two's-complement and basic processor oveflow arithmetic, but its basically as good as it gets (IMHO). It also uses one of my favored "mini-patterns" - using comparison as a computation value, as opposed to just as just a branch variable. This pattern extends fairly well to all the common overflow arithmetic math operations, amongst other things, though being a graphics guy, I really just want the stuff to clamp - I'm not sure that people are prepared to deal with integer overflow exceptions. I only used that in these examples because that's how the MS stuff worked that I started with as a benchmark for performance - I think exceptions are generally bad for most programmers and should not be used.

But what suprised me about all this, was (a) lack of "first order" information online, with real benchmarks, and, relatedly, (b) the assumptions folks tended to make about performance (particularly the "its Assembly so its faster"). This is a pretty basic simple (but important) thing, but the error propagation of information on the web was quite high - seems like people have just pushed around the same code and ideas from site to site, as opposed to actually investigating from first principles.

This assumption driven "error propagation" seems like a common problem that I'd hope at least technologists would be more immune from - not so much. I wish I saw more stuff like this for developers.

October 2, 2006

Tech Geeks, Inc.

Heh. Veeeerrry funny, over generalizations, blah blah blah, etc. - but consistent with my experiences with tech culture delusions of grandeur - read this if you're a geek with start-up dreams (and you're vaguely serious about it).

Funniest (to me) were #6 and #7 (Hah! Lisp sux because it is SO productive it makes you anti-social - brilliant!).

Courtesy of Slashdot, naturally (news for nerds).

Somebody should produce the counter - top ten business-guy business myths; any doofus who starts quoting "Good to Great" should Google "logical fallacy" and "appeal to authority"... :) (you know who you are... :P)

September 26, 2006

Firefox redux: Safer Browsing in 2006

Shocking - more Firefox users=more bugs and exploits! Still, major props for response times (less than a day to patch), and market share growth.

Just remember - just because your sh#@ is a different color, doesn't mean it doesn't stink :)

If you really want users to be "safer" tell them to use Opera - though I still think all those plug-ins and extensions that are (essentially) shared across all the desktop browsers makes that choice all more moot than people think...

And of course, the report was produced by a party with an interest in the world being unsafe -
read it for yourself and see what you think.

September 25, 2006

Jet Li's Fearless: Go see it!

Fearless is a straight up, guy-flick Kung Fu opera - so don't be surprised if it does not wallow in the metaphysical being of personal martial combat the way movies like the Matrix, Hidden Tiger Crouching Dragon, or Hero did. From the opening text crawl - which proclaim a trial-by-combat challenge from four of the best fighters from around the around to the "Sick Men of Asia" (an epithet directed at the Chinese) - you know all you need to know about the plot. The movie's marketing, about Jet Li's "last marital arts film" is of the same vein.

And the movie ROCKS.

Not just that it clips from fight-to-pause-to-fight in a frenetic cycle - though it does slow down before the third act begins to allow us to catch our breath. And not just that the movie is a parable of accepting change, grounded in friendship and loss. And not just that even the standard "revenge" motive for such films is upended (just enough for freshness), as our hero Huo Yuan Jia transforms his battles from a journey of divisiveness, destruction, and strength to one of unity, purpose, and the strength of body, mind, and soul.

Really, the back story (grounded in just enough history and truth to make the movie work) is there only to ensure we're emotionally invested in the combat.

And it works.

And the comabt! Wow. Just: wow.

There are a few moments where you see "cracks" in the cinematographical firmament - where the wire fighting or camera tricks break the framework of disbelief. But those are fleeting execptions. Whereas the other movies (of the metaphysical nature) I referenced above embraced the uncanny valleys their special effects created as a part of their storytelling fabrics (to generally good effect), in Fearless you're seeing astounding fighters in deeply physical, real, painful, solid and astoundingly unbelievable yet believably natural battle.

It's good - very good. Go see it - its a spectable that benefits from the big screen.

September 22, 2006

Problems with Integer Overflow Math and Detection, pt 2

Updated: as promised, my solution in Part 3.

Continued from
Part 1 -
following some discussion in the comments

Michael Herf
and Eric O'Laughlen suggested I try a bit of x86 assembly to salve my problem (a good suggestion - at least to establish a performance baseline; I still ultimately want C), but I must be doing something wrong...

Here were my time tests:
-------------------- Math requiring no overflow detection
-------------------- This is for speed (overhead)
Testing Simple..... total: 750201700 Time = 484.331 ms
Testing ASM Safe... total: 750201700 Time = 1370.02 ms
Testing MS Safe.... total: 750201700 Time = 872.027 ms
Testing Sree Safe.. total:
750201700 Time = 523.12 ms

-------------------- Math requiring overflow detection
-------------------- This is for correctness - ignore timings for 'Simple'
Testing Simple..... total: -120255288 Time = 482.925 ms*
Testing ASM Safe... total: 2147483518 Time = 222.645 ms EXCEPTION
Testing MS Safe.... total: 2147483518 Time = 141.048 ms EXCEPTION
Testing Sree Safe.. total: 2147483518 Time = 101.048 ms EXCEPTION

Simple is just "a+b" whereas ASM is the code others
suggested, and MS is from Microsoft's MSDN article on the subject. I fully expected the ASM one to be faster than the MS case - so its gotta be me (or that just is the fastest/cleanest way?). I think the conditional is killing it. My C case is I think as good as it gets, and a nice replacement for Microsoft's, but I should verify validity before I go shooting my mouth...

(*btw, Simple is there just for reference for perf and correctness. In particular, since it DOESN'T throw an exception in the bottom tests, it is "slower" because it COMPLETES the test - the other two do not; they throw an exception part way through, as noted by "EXCEPTION".)

You can grab the benchmark executable or the source, and try it for yourself.

I had added both of their suggestions (Mike's and Eric's), but neither passed the correctness test. They didn't toss exceptions in the right cases, or (in Eric's case) were much slower than MS and ASM both once I added an exception-toss-on-overflow-flag-set test - though both were faster so long as you didn't want to actually look at the overflow result immediately, which unfortunately, I think you usually do.

As Herf points out - I think the branch prediction kills the assembly attempts.

I have a (probably too) simple idea in just C, but want to validate it (perf and correctness) before I post - hopefully I'll get a chance to do something this week. This so seemed like an already well solved problem to me?

Python 2.5

A new version of Python (2.5) came out this week... I still have trouble with the importance of whitespace in Python, but there's no denying its continued growth and power. I do worry, as it adopts convenience grammars and features from other languages, that its gets a bit sprawl-y, but thus far, their PEP system keeps things in line.

And Python's got some nifty things going for it (check out
Yahoo's Python center). In particular, I've a new found appreciation for their language evolution model of late.

Most of the time, (
Perl 6 is a good counterpoint) classic CS design philosophy suggests if you're going to make changes, make them once (and complete), so that everyone can get over it and get on board. Enh.

Python's been more incremental - generally they break you just a *little* with each regular-ish rev, though some 5 revisions down the road it might not be so compatible. Basically, they create an incentive for people to stay on the upgrade chain.

September 21, 2006

Problems with Integer Overflow Math and Detection, pt 1

Updated: Fast(est?) portable simple solution outlined in Part 3
Continued in Part 2.

: I see Linus Torvalds (of ye verily Linux fame) crying about the same problem way back when - did he ever find a better solution than the MS one?

I was checking out a
new blog site that the Microsoft Vista Shell team has (a former friend of mine runs that group there), and, digging around, happened upon an old post from Raymond Chen (that guy is amazing - LOVE his blog)

This particular post was about integer overflow and resultant subtle problems. Its a trickier thing than most people think, and has all sorts of
well documented long standing "famous" bugs.

That led me to Microsoft's very nice
SafeInt class - but yowza - safe addition takes 3 compares and 3 branches? In the trivial case? (i.e. positive number plus a positive number)

I saw that there's been an update that deals with this by casting to int64, doing the add, and then two compares and 1 branch, and a cast into a int32, but yoinks... someone must have a better solution than that.

I'm going to do a little research - but someone? anyone? Faster/better solution?

(My timing tests show - I wrote a tiny benchmark - with the "safe int" exception throwing on, that simple addition takes twice as long (almost) - that really the state of the art?)

September 17, 2006

The RIAA battlelines

I took a cheap shot at the RIAA in my last post, and have often wondered whether DRM was really the solve (or perhaps I should say "fate") for content distribution issues.

I think the jury's still out in a big way on this topic.

Either DRM technologies will become
THE way that all digital content is licensed (even if that license is simply "unrestricted"), or it'll go the way of the Dodo. The middle ground will get squeezed out on this in the next 4 years.

Obviously, publishers (distribution middle men) and to a lesser (at least less vocal), but very real extent, creators want to ensure they're properly credited for their work, both financially and artistically. On the converse side, users want access to stuff as broadly and cheaply as possible - but most importantly, as conveniently as possible, with as high fidelity as available. This last has been a HUGE boon to the movie, music, and publishing industries, generally, as technology advances have meant people are re-purchasing essentially the same content in a variety of formats (e.g. LP, Tape, CD, AAC /VHS, Laser-Disc, DVD, HD-DVD).

But that trend has delivered broadly available commercial-grade content creation tools to (essentially) consumer cost points, in combination with federated broad digital communication (read: syndication) and personal publishing channels.

Case in point: MySpace's MP3 Store and this recent article about iTunes and iPod music consumption in the real world fly directly in the face of Microsoft's Zune, iTunes, etc, with things like YouTube skirting a narrow middle. The RIAA hopes you like Apple and Microsoft.

That iTunes/iPod usage article is the most interesting - and the big question is whether the trend it reveals is of the moment, or of the future.

You know this is something the software industry has been dealing with since its inception - its done OK. I realize its easy for me to say (because I have nothing at stake in this particular debate), but sometimes sweating the threat means you squander the opportunity.

September 12, 2006

The RIA battlelines

(Not to be confused with the RIAA battle - that's an entirely different funny/sad Monty Pythonesque story about how suing your customers is really in their best interests...)

Interesting article yesterday at Zdnet about the upcoming technology infrastructure contenders for Rich Internet Applications (RIA), primarily Flash/Apollo, XUL/Firefox, and XBAP/WPFe.

Not sure how much I agree with the details, but the broad strokes are interesting at least (to me at least :P - I've written on this topic more than a few times). The business models for the technology originators gets pretty short shrift though - Adobe's charging directly, through tools and the runtime (at least for devices), whilst the Mozilla Foundation's stuff is free (as in beer and as in software) with Microsoft somewhere in the middle. Wonder what impact that will have on success opportunities?

Also interesting is the implicit notion/question that the main turf war will be over browser plug-ins and/or extensions, as opposed to server-ware or development paradigms (like AJAX, Rails, etc.) - remains to be seen if that's true, though it feels right. Even Flash is still primarily ad-ware - and wherefore art though client-side Java or .NET apps?

Complicating matters further is the increasing user/input interaction fragmentation caused by portable general purpose computing devices like smart phones, PSPs and the like.

Some examples from the past.

September 7, 2006

Unicode-y-ness UTF-16 Nonsense

UTF-16 is an abomination. It is a lot of wasted code and space, doesn't really solve any real world issues and is just generally bad (not to mention responsible for probably billions of dollars in wasted code fitting and retrofitting). Everyone should just stick to UTF-8 . Strings are not randomly accessible data structures (unless you want to REALLY waste memory with UTF-32) - get over it. Adjust your coding practices appropriately, and for god's sakes don't convert everything to "mostly" two-byte character strings.

(and yes, it is a bit more space for far east languages, but is still just better - for example, do you know what endian UTF-16 you're using?)

p.s. this only applies if you're writing code, not script and its high-level equivalents.

September 5, 2006

Back to School

Summer's over. It's official (well, not official, but you know what I mean). Some interesting tidbits from over the long weekend:

  • Tessseract (OCR software) has been open-sourced by Google. This is an underdeveloped area, especially in the OSS community (and so, very nice of Google), but expect to see an increase in CAPTCHA cracks. No good deed goes unpunished.
  • Vista's in lock-down mode, getting ready to ship. As is always the case with these things, it'll be less and more than people expect, and it'll have a long tail of issues and upgrades that follow. Also, a funny side story about how Mactel machines from Apple being able to run Windows isn't as good for Apple as the zealot crowd thinks (not sure I agree).
  • Slightly older, but always compelling stream of conciousness from John Carmack (of Wolfenstein 3D, Doom, Quake, etc. fame) about stuff.
  • Browzar (an IE "privacy" wrapper) has been getting some buzz; though it doesn't really appear to do squat. Still, though I think its useless, I feel compelled to defend it. There's been GROSSLY unfair criticism about it being "adware" in the press; appears this is the new "Red Scare" tactic. Truth is it, it IS Adware (you get it for free, and it generates money from advertising/search revenue) - but so is Firefox, the Google Toolbar, etc. What ought to be a simple statement of business model fact has instead has become a loaded, scary epithet. Pretty much every site on the 'net derives revenue from advertising, and the quid pro quo is free access to said software and services - but Adware and Malware (thanks to more than a few bad eggs) have become synonymous for desktop applications. There's nothing "tricky" about Browzar - other than it doesn't really work :P - let them be judged on the merits of their software, not the politics of public flagellations (half-wit, half-brained punditry seems the order of the day in the tech press these days...)

August 29, 2006

Its good to be the Wolf

So my kids have been having a little trouble lately with asking for stuff and complaining about things when they don't really mean it. ("I'm hungry!", "I'm tired!" , "I want that!", etc.)

These things go in waves, and this seemed to be the latest - no big deal. And so my wife thought she'd tell them a story, to maybe help them understand actions and consequences a bit bitter. And in this case, she thought the story of the "Boy who cried wolf" would be a good fit.

They thought it was pretty engaging and amusing at first. But they definitely got quieter as the story concluded with the real wolf showing up, and the boy getting thoroughly eaten (important to make an impression after all).

And their wide-eyed thoughtful silence lasted for about 7 seconds.

my older one,who's all of 5, says: "That was good mommy - tell us a story about the 'Girl who cried Jewelry'!"


Its good to be the Wolf...

August 25, 2006

AOL CTO resignation

Maureen Govern, until just recently CTO of AOL, was my immediate supervisor. While its true that she has left the company (and abruptly at that), everything else publicized, including any thought of associated causes or related dismissals is speculation (and often rarely coincident with actual causality, or reality) - it does no service to the company, or the people in question, for that matter. The Company does not comment on personnel issues like this.

But that's probably the intent (intERNET?) - after all, why should anyone let facts get in the way of opinion? (Can't happen to you? Welcome to a taste of the future...)

There's a lot going on at AOL these days for consumers (in the last few weeks alone):

... all predicated on major business and organizational shifts, that in turn are following required massive internal technology upheavals and untangling over the last two and a half years - a shame that more process and bad press are what now emerge following this sad but seminal event in search research caused by AOL. It overshadows those works, successes, teams, and (most importantly) customer relationships.

I understand it, am sorry for its root, and it truly is a shame on many levels.