« April 2005 | Main | April 2007 »
March 26, 2007
Rad Server Diagrams
Entertaining diagrams from admin++, what root never told you by Ron Gorodetzky of Digg and Revision3. It really is a series of tubes.
|
|
|
Posted by Devon at 06:11 PM | Comments (0)
March 25, 2007
UNIX Commands = Startup Ideas
Marc Hedlund reveals his favorite business model suggestion for entrepreneurs.
Posted by Devon at 05:15 PM | Comments (0)
Flex Class Hierarchy
I was playing around with Flex a few months ago and made this graph to figure out how the class library is structured:
The interesting bit (at least to me) is the depth of the inheritance chain from Object to the control classes. There's quite a few shallow classes for generic services (Timer, IME, Effects, Files, URLs). This is coupled with a really deep hierarchy to controls via Object > DisplayObject > InteractiveObject > DisplayObjectContainer > Sprite > FlexSprite > UIComponent
Years ago, when WPF was still called Avalon, Miguel de Icaza criticized the depth of the inheritance chain from Object to Button. At the time, it was 10 degrees of separation between the two. Flex weighs in at 8 for its Button.
Alan Kay first said Simple things should be simple. Complex things should be possible. This was one of the stated goals for WPF. As an object-oriented framework, WPF/.Net3 is a descendant of great grandaddy of GUI frameworks, Smalltalk (as is Flex). However, the Squeak class hierarchy reveals that it uses a very short inheritance chain for controls: Object > Morph > BorderedMorph > RectangleMorph > SimpleButtonMorph > ButtonMorph. This is 5 degrees of separation, but only one of them is essential to a Button's behavior: Morph. Squeak's Morph is a god class that contains the lion's share of behavior. The other base classes for ButtonMorph are lightweight, mostly adding rendering behavior.
Over the past year I've mentored several developers in WPF and .Net 3.0, which have a similar object model for UI controls. I observed a trend in how these deep hierarchies affected these developer's learning curve. On the one hand, there's the advantage of the common behavior forced on the plateau of controls that inherit at the deepest leaf nodes of the tree. Idioms learned for one control tend to generalize to other controls. On the other hand, the long, flat stretch of intermediate subclasses means that the implementation of this common behavior is widely distributed. So it takes longer to find answers to questions like: "Can I cast X to a Y here?" and "Can I add Foo as a child of Bar?".
Posted by Devon at 01:10 PM | Comments (1)
March 24, 2007
200,000,000 Google Earth Users
That's a lot, considering there are only 1,114,274,426 people online worldwide.
Posted by Devon at 10:21 PM | Comments (0)
RIA 2.0
RIA 1.0 was a no-show. The majority of desktop apps are still written in C++, with a vocal, rare, but increasing minority written in .Net, Java, et al. Most web apps are still written in PHP, Python, Java, Flash, Javascript et al. Yet RIA 2.0 is launching:
- Joyent Slingshot: Ruby on Rails on the desktop
- Adobe Apollo: Flash on the desktop
- Mozilla Firefox 3: local datastores for offline content
- Pramati Dekoh: Java apps on the desktop (started as a prank)
This re-branding of the original RIA vision seems to be focusing on the desktop and sometimes-connected offline scenarios.
And what of the RIA 1.0 wave?:
- Mozilla XUL: Javascript + proprietary XUL markup
- OpenLaszlo: Javascript + proprietary LZX markup
- Microsoft WPF: .Net + proprietary XAML markup
- Macromedia Central: Actionscript
- Adobe Flex: Actionscript + proprietary MXML markup
And RIA 0.0?:
Posted by Devon at 12:06 AM | Comments (0)
March 23, 2007
Interactive Underwater Effect
Check this out:
I'm not one for gratuitous special effects for their own sake. But the potential for these kind of effects to transform the user experience in branding apps is undeniable. Typing my user name into a "swimming" textfield (as an example) is so much more immersive than the clinically-clean stock textbox.
As an aside, I've been skeptical of the performance of user-land bitmap processing code since the possibility was introduced in Flash. Per-pixel processing is slow. Per-pixel processing in a bytecode-interpreted scripting language is really slow (but compelling). This app confirms my suspicions: I'm running dual-cores and this single Flash app brings Firefox up to 50% CPU. There's opportunity here for the Flash runtime engineers to devise a way for users to write code that gets good "inner-loop" performance.
Posted by Devon at 12:06 AM | Comments (0)
March 22, 2007
Picnik
Full-window Flash image editing. Free Beta for now, freemium later.
I used Picnik to resize this image and create the image above. What's cool is that the entire process occurred almost entirely online. The only "analog" bit was downloading the results to my desktop for upload to my site. If I weren't too lazy to sign up for a Flickr account, then the whole shebang could have been done online.
There are some really nice touches in the UI. What I found really impressive was the "auto-recovery" of the most recent editing session when the site was re-opened. I gotta hand it to the designers. This is a beautiful, clean app. I especially like their choice of grass as a banner background ;).
Picnik was founded by Mike Harrington, co-founder of Valve, Darrin Massena, and Jonathan Sposato, who sold his widget company PhatBits to Google in 2005. All three are Seattle-area former Microsofties.
Next? has an interview with the founders. SolutionWatch has an article with more details.
TechCrunch has a list of similar and competing applications.
Posted by Devon at 09:28 PM | Comments (0)
March 21, 2007
Papervision
Papervision is an interesting Flash hack. This engine is roughly as powerful and graphically expressive as a very high-resolution Sega Saturn console from 1996.
As I understand it, Flash's bitmap support is limited to affine transformations, so like 3D engines of yore, it doesn't support perspective-correct "textures". The Saturn lacked perspective textures as well, which led to "swimming" on textures as they come close to the camera.
There's no easy way to fake perspective texturing. What's more, this kind of pseudo-3D is at least an order of magnitude slower than a full-on 3D engine. So expect Adobe to put native 3D into Flash in upcoming versions.
Update: March 23, 2006: Here's a workaround from Andre Michelle to get nearly-perspective-correct textures in Flash by affine transformations of a grid of subdivided sub-images. And a discussion of the problem. For reference, here's a thorough explanation of transformations and matrices as they occur in Flash.
Update: March 24, 2006: Tinic Uro explains why Papervision is as fast as it gets for software rendering
Posted by Devon at 10:24 PM | Comments (0)
Deconstructulator by Ben Fry
Ben Fry's Deconstructulator is a visualization of Super Mario Bros implemented as a Java applet. Ben is co-creator of Proce55ing
Posted by Devon at 10:11 PM | Comments (0)
March 20, 2007
I'm Blogging Again
A lot has happened since my last post (nearly two years ago):
* The network is the computer (again).
* The web is cool (again).
* The industry is hot (again).
With this in mind, I'm going to start writing a bit about the business of web software and what it means for the desktop.
Posted by Devon at 10:52 PM | Comments (0)











