a glob of nerdishness

February 16, 2007

Fitting a changing world into a changeable machine

written by natevw @ 9:01 pm

An electrical engineer and professor writes

I’m concluding that there are some limits to the amount of detail that we should computerize.

in response to changes in the real world that affect existing programs. While the example he started with (Daylight Savings) is a change that good system designers have anticipated, he reflected on some issues that I have been conscious of myself this week.

In the past couple of days I’ve had the opportunity [and the burden!] to redesign a map-drawing architecture while converting it from one programming language to another. I’ve been thinking about all the “real world” details that need representation in code, looking at things like Dates, Colors, Map Projections, Shapes, Pictures, Labels, Weather Data…. The many sciences lend insights which change the way things are best codified, and the state of my art is growing as well through time. For every one I need to consider: in which aspects should I follow/trust another’s design, which can I approach better myself (and still have time to squash enough bugs), what should I leave up to the human user to do on their own, and what should I leave until later!

Computing seems to force its binary nature out through the cracks of even a well-designed program or device. Don’t we often have to make a “take it” or “leave it” choice whether or not to invest time storing bits of life in a particular format or form factor? When taking a particular tool to use, it’s nice to know there’s potential for leaving somewhat gracefully later. (For example, iTunes stores a copy of its library data in XML for re-import or use by other programs. Then again, for the time being at least, if you forget your music store password you could be restricted from your encrypted purchases.)

February 3, 2007

Fat vs. Universal

written by natevw @ 7:52 pm

Sounds like the MPAA looking to devour another tasty morsel compliments of our fine legislative system. But today’s topic is Virtual Machines, not virtual monopolies. By “Virtual Machine”, I don’t mean “Virtual Computer”, I mean “Virtual Processor”. There’s much to be said about the uses and shortcomings of virtual machines. I’d like to focus specifically on how the technology could, or could have, benefit Apple formerly Computer.

Apple has the privilege of designing it all: hardware, operating system and a leading share of the applications. Contrast “design” with “dictate” — it wouldn’t be practical for them to design all the chips they need, nor are they able to write software for every niche that has a need. Even their operating system, whether due to beneficence or lack of market domination, follows an admirable number of external standards. One of these is LLVM, a Virtual Machine standard already integrated into part of Leopard’s graphics system.

The two outside ends, hardware and applications, are the areas where Apple must take extra care in its design to give some deference to the plans of its suppliers and developers. And when it comes to processor choice, both come into play. Apple has already led a fairly smooth transition from PowerPC-compiled applications to so-called “Universal Binaries“. These programs are really just fat binaries, a technology which has been in use on the Mac for quite a while now.

Fat -vs- Universal logos

“Universal” is a misnomer: the text may read one way but, as the dyadic logo implies, the reality is that most Universal Binaries are compiled for only 2 platforms, PowerPC and Intel. The next time Apple asks its developers to “check the box” and recompile could be the last for a long time if they move to an actual Universal Binary compiled to run on top of a Virtual Machine. Apple’s involvement in LLVM has been known since at least 2005, and I have no doubt they could easily pull it off. It might feel like joining the ranks of Microsoft “Why are they yelling?” .NET and Java with its “write once, ugly anywhere”, but I think it would still warrant applause at a future WWDC convention.

« Previous Page