Brandon Werner

Call To Arms: Our Elders In Computer Science Are Leaving Us

January 8th, 2008

I seem to be visiting a lot of my prior entries from 2005, but a while back I wrote about an experience I had meeting an old IBM programmer at the local Catholic store. She was female, which seemed like a trail-blazing thing to have been working in the heavily male dominated technology industry in the 1950s. Her story, and her eagerness to share with me, led me to write my experiences with gurus in my life, entitled In The Presence of A Guru (On Catholicism, VAX/VMS and Geek Culture). I still feel profoundly stupid for not having spent more time with her, as it was obvious she wanted to share her story. I will regret it for the rest of my life, not just because of what the exchange could have done for my understanding, but more refusing my obligation, the obligation we all have, to listen to and carry on the mythology and history of our elders. I am afraid that mythology may be vanishing, and none of us are listening.

I thought about this again when I stumbled upon a new blog from Dan Weinred as linked from Lemonodor. His career in Computer Science and his contributions certainly qualifies him as a Guru.

His essays so far are a treasure trove of information and computer science archeology. One of my favorites is called The Technology and Business of ObjectStore, where he recounts taking his ObjectStore technology to Microsoft and Bill Gates as well as Steve Jobs. The reaction of both icons demonstrates humorously their approach even now:

When the new Windows technology (which was OS/2 at the time; IBM and Microsoft were still working together on it) came out, it was crucial for us that it be able to support memory mapping. Dave Stryker and Tom Atwood, flew out to meet with Bill Gates in September of 1989. Dave Stryker recalls: “We originally had a 45-minute appointment, but Gates extended the meeting to a couple of hours, and called in Dave Cutler [the architect of OS/2]. At Tom’s urging, we told Gates and Cutler everything they wanted to know about ObjectStore. Gates was complimentary of the Object Design approach, but said, in a nice enough way, that if the Microsoft Empire ever needed such a thing, they would build it themselves. Still, Gates told Cutler to make sure that the OS/2 equivalent to mmap was powerful enough to run ObjectStore, and there were some changes made to make it so.” Later, this OS/2 technology turned into Windows NT. Dave Moon adds that it turned to have a bug: it doesn’t free up disk space when it ought to. For some reason Microsoft hasn’t fixed this, even after many years. We found a way around it.)

Speaking of industry luminaries, we also met with Steve Jobs when he was at NeXT, and Jobs made a big announcement praising our technology, which resulted in a nice press release. There was some discussion that NeXT might buy Object Design, but that never went anywhere.

This type of history is fascinating and important. There have been efforts to capture this knowledge, such as Fokelore.org and ACM’s excellent ACM History Committee trying to archive CS knowledge, but their efforts so far is approaching it the wrong way. It’s getting the stories, while these people are still alive and can tell them, that is important. Much of it will not be academic or well checked, but that is missing the point. It’s the mythology as well as the history of these pioneers in the 1930s - 1970s that we should be after. We’ve already lost Jeff Raskin, Adam Osborne and others.

If we do not do this, their legacy and our history as a profession, one that has changed the world as much as any other in human history, will be lost forever.

Facebook, Scoble and Web 2.0: It’s Not The Data, It’s The Work You’ve Put In To It

January 6th, 2008

Way back in 2005 I wrote at length about the danger we all face putting data online. Back then, I was running The Planning Studio Inc., and we had experienced a lot of expansion and were outgrowing Salesforce.com as a Sales/Contact manager. When we became aware that extracting not just our data but also the relationships between those data was impossible, I wrote a word of warning to the blogosphere about data. I would have assumed three years later there would have been a common and demanded way to export your data. Sadly, that is not the case. Scoble became a victim of this with Facebook, and what shocked him was what occurred to me back in 2005: In Web 2.0, you don’t own your data.

It’s Not Just About Your Data, It’s About The Relationships Between Them

Although a few bring up the fact there are some ways to export your data from these various services, that missed the point badly. What Scoble and the rest lost, although they may not have been able to articulate it, was the work they put in to their data. When we import our data in to a social network application, we don’t expect to leave it in a static state. We usually import our address book and calendar, among other things, so that we can then begin creating relationships and making our data more valuable.

Think of the tagging feature in Flickr and Facebook. How often have you sat and painstakingly tagged your friends or photos for maximum social use? You may have even organized your photos in to sets that would be more viewable and easy managed, spending hours uploading and tagging. What about the APIs that allow you to visualize, browse and draw conclusions from this metadata that exists from these relationships you’ve made? You may have seen relationships you had never expected. By using social applications on the web, you have changed and made your data more useful, as simply as if you imported a CSV file in to Excel and made graphs of that data.

Does that mean that Microsoft can claim that data and the charts you’ve generated are their property? Can they take those graphs and spreadsheets away at a whim?

The same problem applies to Google and Yahoo!, among others. While many wonder if these Web 2.0 application providers are looking at our confidential data, the real worry is if they decide you can’t anymore. Although Google says publicly they have no process to look at our data we store on their servers, they most certainly have a process to remove you from it if you violate their Terms of Service, something that is at best arbitrary and a process in which you have no legal right to appeal.

The Worse Part Is, Your Hard Work Benefits The Social Network Too

The most insulting part of Facebook and others wielding that sort of power over our meta-data is that it’s through our hardwork their service is useful. Although you could call our work managing and forming relationships between our data a non-zero sum game as we also reap the benefits of the connections, our hard work makes their social websites a better and more fun place to be. If no one took the time to tag their friends in their photos, or enter tags on blog postings and pictures how interesting would these places be? It seems to me that claiming complete control over that data is a slap in the face no user of social networks should tolerate. The same holds true for other Web 2.0 apps that manage our data, including Google and Yahoo!. Deli.cio.us would Just Another Bookmark site if it wasn’t for the hard work it’s users put in to tagging and managing their bookmark data.

Although social networks can be considered non zero-sum, other Web 2.0 companies are decidedly zero-sum; we do all the work. Although there is no social component to these services, it is usually this data and the relationships between them that are more important. Many small businesses use Salesforce.com and have their business contacts linked to companies they bill for services which are in turn linked to billing and payment systems. If they don’t pay their bills for a month, or worse if they wanted to take their business elsewhere, that painstaking work linking these data pieces together, notes and all, would be lost. The same is true with financial analysis of your bank account on Mint or Notebooks on Google.

How To Fix It

Being in software architecture for large enterprise systems, the solution to this seems simple and easy. We need a way to export this data in XML or some other format that, even if it doesn’t contain the content itself (pictures and files would not be practical) the relationships between this data could be exported. It need not be wrapped up in some long drawn-out collaborate standards body in which Flickr, Facebook, Salesforce.com, MySpace and IBM (they join every standards body) would sit down and spend five years coming out with a standard.

My proposal? Facebook just does it.

In the Web 2.0 world, the prime mover is usually the standard maker for the rest of the industry. When Facebook provides it’s users with some export tool, no matter how complicated or mangled the XML would turn out to be, immediately developers would come up with tools to parse and import this data in to other applications and systems. Some would even take this data and provide analytics across various networks, something that other websites are attempting to do but at a substantial risk to your privacy as you must provide them with your login credentials to every site you belong to. Facebook may be bearable to give your login information to, but your Amazon.com profile with your One-Click Buy enabled is quite a different matter.

Other Web 2.0 environments, either through customer demand or marketing reasons, would be quick to follow. Soon, some standard schema would emerge that would be predicable or at least validated online by the services themselves. XML transformation is standard fare in the enterprise world, and there are many C# and Java developers who know how to transform some XML to another XML standard with their eyes closed. It could open up more avenues for migration and populating social networks, as well as doing personal and business analysis of your data.

Whatever the format, as long as the data inside the file is described and well formed (what XML was designed to do, describe the data it contains so any software can make sense of it) we should be able to make quick work of migrating that data to other services or applications.

Why It’s Important

Although we often don’t see it, Scoble, you and I are still “in the bubble” when it comes to technology and social media trends. We often think that because something is important or obvious to us, the rest of the world should be up in arms about it as well, when in reality they are just sitting in the living room watching TV. There are many users of Salesforce.com, Facebook and Google Notebooks that don’t think about this problem, or worse assume that there would have to be a way because it’s just logical there would be. Why would they take your friends and your photos away without giving you any recourse? Why wouldn’t you be able to export your entire client list and company list and maintain those relationships? Even just drag them in to Quickbooks Professional Edition? Wouldn’t there be some law making sure they can do that?

The answer is no. Hopefully, those who have larger voices than I did in 2005 will take this issue to a more public sphere. The danger is that this problem fades back in to the blogosphere, where Scoble gets his traffic and his hits and moves on. I don’t want to write this article again in another three years.

We should do something now, maybe using those same social networks to organize.

How To Install Lisp With Threads on OS X Leopard

December 22nd, 2007

Cosmin Stejerean does an awesome job laying out how to get experimental x86 OSX threads support compiled and enabled for SBCL on Apple’s latest operating system. I can’t wait to try this out with my cl-semantic project I’ve been working on off/on for some time. If you’d like to help out, I wrote detailed instructions on how to get up and running if you are using SBCL.

How High Resolution Are The New Apple Icons? The Coffee Has Bubbles

November 25th, 2007

If you download the images from this website and look at them full screen, the exact detail Apple went to for their icons is breathtaking. They actually have coffee bubbles in the Java application icon. Personally, I think Mike Matas is just showing off now after his move from Delicious Monster.

Cut Out Of The Apple Java Application Icon Showing Coffee Bubbles

Homage To The Crazy Ones Hidden In Apple OS X TextEdit Icon

November 25th, 2007

There are lots of fun things to find in the new high-resolution icons if you explore. The most interesting so far is the text in the TextEdit application I saw going through cover-flow in my Application folder. Written on the icon’s page is a letter addressed to Katie from our good friend John Appleseed, a favorite demo user introduced during the iPhone demos last year. It contains the text from the famous Apple Think Different campaign in 1997.

Here's To The Crazy Ones

I wonder if anyone new to the Apple platform would even get the reference, although the commercials are still fresh in most Apple fan’s minds.

Leopard, Conduits, iPhone And The Apple Last Mile: Why Apple Needs To Put On The Breaks For a Year

November 23rd, 2007

I came to the Mac in 2003, shortly after getting my first iPod. It was my first visit to an Apple retail store and having a small business at the time geared toward urban planning and technology it was easy to migrate over. If I had to nail down one thing that made me a Mac fanatic it was the integration of what I had assumed from years of Windows and Linux use were technologies impossible to orchestrate and manage in an effective way. There was the graphical tools over the core UNIX/BSD tools that made administration a breeze. There was the bluetooth management done right, with the ability to SMS text message and display incoming calls through Address Book. There was PIM synchronization done right through iSync, where all your various synchronization efforts no matter if it were an iPod, .Mac or Motorola phone were gathered in one place. It was how PDF and other display technologies were not some API installed on the side and slow to load but first class citizens sitting on top of the OS. It was a revelation.

Later, I would discover the Mac community, with Daring Fireball and TUAW that provided a unique and demanding view of technology that made me better at my job and my profession.

Apple technology inspired me to push harder for better solutions and to demand better solutions and experiences from other vendors and software developers, including myself. You could no longer use the status quo excuse with me anymore. I didn’t care if other applications were ugly or information dense or laid out incorrectly. You could do it right. People would care, not just Grandmas and kids. It made my life better, the programmer-geek who always clicked the Advanced tab on all my applications, to have this beauty and thought in applications. I don’t think I’m alone, as almost all the most unforgiving and critical users of any online or personal application are Mac users.

The Apple Last Mile

In almost all of these examples, one thing stands out. The concept of the Last Mile. In technology it is often used to refer to the final last hurtle in integration, no matter if it’s bringing faster internet speeds to your home, better security to the corporate network or even a better web experience to the end user. The understanding is that it’s relatively easy to build an incredible infrastructure and technology within the confines of your control and influence, but as soon as you need to build that bridge to the end of the experience things usually get complicated, unpredictable and constrained.

It’s also generally understood that the Last Mile is where experiences and projects are won and lost. It has broken the hearts of many entrepreneurs and business executives alike, particularly in technology. Many people have laid their pipe right up to the beginning of another pipe and stood there scratching their heads perplexed. Many are even forced to give up having come that close.

In all the experiences Apple software gives us, the idea of the Apple Last Mile is what makes the Apple experience a good one. You can find the example in the Google Maps application on the iPhone, the SMS interface on the iPhone and in the iTunes Music Store and iPod integration among many others. How many companies simply leave the experience of the music purchase and sync to someone else while they control the device? How many companies just provide J2ME on their mobile device and leave Google or others to write the application? It is always these very places, where one pipe faces the other, that defines the user experience.

It’s not a small thing. When you spend hours trying to configure your wireless router, when you spend 30 minutes getting your bank statement to download to your financial software, when you have to spend time telling the phone representative your account information you just entered on your phone over again for the third time, when you get a sync error message on your MP3 player minutes before your bus arrives to take you to work, you get the reason why this is important.

If you take the time to analyze what creates such trust in those that use Apple products, and why other products fail to generate the same trust, it is the Apple Last Mile that holds the secret. It may seem easy on the surface, but the Last Mile is the hardest thing to get right.

Sadly, however, the experience that Apple got so right, and that users trusted and assumed Apple always would, has begun to erode. They have, through the break-neck rate of development of products and software, lost the Last Mile focus.

Example: The ExchangeConduit and iSync

One example is the state of synchronization in OS X. In Leopard, Apple introduced a few new interesting synchronization options in to their operating system. Showing a curiously growing closer relationship to Yahoo!, they added Yahoo! sync to the Address Book as well as Exchange address book synchronization. These were introduced by means of iSync conduits. Conduits are amazing pieces of engineering from Apple. They are plug-ins to the synchronization engine that powers any and all data synchronization across devices and platforms. It has been used by many device manufacturers and software developers to add syncing of personal information across diverse platforms, and has proven to be an extremely flexible framework.

Sounds cool, huh? How do you do it?

Good iSync Hunting

The first question is where do you go? There are currently three places where you have to look to interface with iSync. The first is the old standard, the iSync application itself. Previously, this was the hub of all synchronizing activity and confusingly still is, it just doesn’t tell you. In fact, it is probably one of the most important applications in Mac OS X, and it wins the prize for the most understated application interface in history. All of your Address Book, .Mac, Yahoo! and Exchange synchronization runs through the iSync framework, including your iPhone. Pretty busy application, right?

iSync's silent conceit

Although previously the place where you could see your iPod, your mobile phone and even .Mac listed along with settings and management features, now iSync sits there with a blank stare. Worse, although there is absolutely no applications or devices on the iSync application, clicking the sync button will actually sync your devices and your applications universally. As we’ll see below, Apple even directs you to this application when there’s no indication how to sync your data any other way.

It would seem Apple has decided this iSync application is only for non-apple phones (even though the iPhone is there, just hidden). It’s not being neglected; Leopard has even included a new iSync plug-in maker so you can make your own phone plug-in.

As mentioned, although it was once the hub of all things sync, there doesn’t seem to be any sync options for Exchange or Yahoo! here. I would say we are safe leaving this interface as it has nothing to do with Exchange synchronization except that, in very un-apple fashion, it does. We are actually going to have to return to this interface when we eventually do synchronize with Exchange, even though Exchange Address Book synchronization has nothing to do with third party mobile phones at all.

The second place one might look is the iTunes/iPhone/iPod sync interface. You can sync your address book to Yahoo! from there, so it could make sense they would also add the same functionality for Exchange:

iTunes synchronization

Here we do find the Yahoo! sync, and it would make sense that this not only means iPhone to Yahoo! but to Yahoo! and your personal Address Book as well, although this is not nearly as clearly indicated as it was when all of these various sync points were in the iSync application. Someone might pause extra long, as it seems this is where you would setup Exchange Address Book synchronization since the Yahoo! conduit for your address book is represented here. Some might even assume if it’s not listed here, the feature isn’t available to them.

The last place someone might look would be the .Mac synconization screen.

.Mac synchronization

This interface, while showing no un-checked Exchange option, does show us yet another Address Book conduit, this one for .Mac accounts. Many users are surprised to find applications that have registered themselves with this screen that may have long been deleted or did not give indication they were adding themselves to the list. On mine is a Transmit Favorites that I don’t use and a “Entourage Notes” from Office Beta 2008 that has been un-installed. You can’t remove them, and you can’t inspect them to find out what data they actually synchronize if the title isn’t descriptive.

We finally find Exchange Synchronization

At this point, I’ll assume we get lucky and go to the Address Book itself, an application designed so simply and elegantly that we might not think it has Preferences at all. After all, we haven’t had to go in to the Address Book’s Preferences at all to synchronize with our iPhone, iPod, other mobile phone, or even Yahoo!. Why would we even be tempted to look there? Turns out, it’s sitting there with other duplicate interfaces for both .Mac and Yahoo! address book synchronization.

The Address Book Preferences Pane in Leopard

Configuring the options is slightly complicated, but nothing that a poor soul use to typing in Exchange servers and authentication information would have trouble with. Using this feature depends on WebDav being enabled on your Exchange server and that your administrator has Outlook Web Access (OWA) enabled. Apple is smart enough to append the /exchange/username to the mail server you enter. So, if you go to mail.mycompany.com to get your email on the web from Exchange, that’s all you need to type in the server field. After you are finished, just click OK.

Then nothing happens.

It’s at this point someone, even a technically savy user like myself, has to do what they would never admit doing to their geek friends: go to the Apple Support website. It’s here that it gets really ugly.

From the Apple support document on Exchange Address Book synchronization:

To manually synchronize Address Book and Exchange, open iSync (located in the Applications folder), choose iSync > Preferences, select “Show status in menu bar”, and choose Sync Now from the iSync status menu.

In case your wondering if there is any indication that you have enabled Exchange Syncronization in the iSync application you are told to open, there isn’t. To make matters worse, if you do click “Show status in menu bar” as indicated, and you click on that icon, you are greeted with the text “Open .Mac Sync Preferences”, even though it has nothing to do with .Mac synchronization. Someone might assume you need a .Mac account.

In fact, it has nothing to do with iSync the application as far as the end user is concerned, as there is no visual indication that the iSync application actually does have the power of setting every enabled conduit in to action. And just in case you need another interface snafu, the iSync application icon still says “Never Synchronized” even after synchronizing your Exchange Address Book with your Mac Address Book.

Even when you do click Sync Now from the iSync status menu as the Apple document suggests, there is absolutely no progress bar or indication what is being synchronized and where you are in the process (synchronizing Exchange Address Books can be a very long process). All you have is the swirling iSync button that is… according to the application itself, synchronizing nothing.

Last Mile Missed By A Mile

Once a feather in the cap of OSX, especially in the world of Microsoft’s ActiveSync, iSync and it’s pluggable architecture and trustworthy synchronization has now turned in to something that is much worse. Yet, returning to the idea of the Last Mile, it is usually this area that Apple gets right. It certainly did when it needed to sync with mobile phones and iPods in the past, and it even took the time to write an API that allowed others to expand and add functionality that Apple hadn’t. Just see MarkSpace’s Missing Sync products. Just as a comparison, look at the old iSync interface from Mac OS X 10.3, when iSync still had a duplicate interface in iTunes but managed to keep everything registered with the iSync interface in one location as seen in this shot from Terrie Miller on MacDevCenter:

iSync In The Good Ol Days

iPhone Island: They’ve Even Built The Pipes!

It would be fine if iSync was the only thing that was slipping away from Apple’s Last Mile philosophy. However, we can also see the same lack of connection between the Note functionality in Mail and that on the iPhone. Even though they both were obviously written to connect and be used in unison, the pipes don’t connect. The best you can do is synchronize with your IMAP account, a hack that makes your notes and ToDos appear as email messages with no special metadata attached. There has been complaints about ToDos lacking on the iPhone, and even the ability to synchronize widget data between the iPhone and your Mac. Doing any of this wirelessly through Bluetooth, something that Apple beat Windows PCs hands down with in 2003, is lacking as well. It was un-thinkable they wouldn’t have SMS messaging from Address Book integrated with their new iPhone, a feat even the Motorola Razr is capable of.

Beyond the iPhone, the iPod Touch shipped with no calendar editing, the dock on the side last minute fix, Time Machine on a remote AirPort disk being removed, iTunes allowing ringtones and then disabling them only to re-enable them again, and of course the iPhone price cut.

Apple Needs Some Time Off

All of this would be easily dismissed as nit-picking if it wasn’t for the fact that Apple had demonstrated the ability to execute so amazingly before. The almost shockingly smooth Intel transition and the steady iPod updates gave Apple the aura of a company so good at product line execution and strategic planning it seemed magical. It was almost Willy Wanka-ish in the public consciousness. It reached it’s height during the iPhone unveiling in the beginning of 2007, and from there on the year has been one of delays, back-peddling and many many hours of overtime.

This is simply signs of stress fractures on the part of Apple. Their level of quality and Last Mile ingenuity is being squeezed by their other efforts, and it’s showing through in all of their products. Now that Apple has released the Leopard OS and the iPhone, I hope the employees who’ve had one horrible stressful Steve inspired Macintosh-esque 2007 get a very cool t-shirt, have a long drunk New Years Eve, and in 2008 are given the time to stop and focus squarely on the Last Mile again.

On Moving To Seattle: The Mid-West Decline

September 14th, 2007

This was a hard decision. I spent two years of my life working with my own planning firm and the Cincinnati re-vitalization CDCs on making Cincinnati a better place to live and work. The entire business plan of the company I started was based on this as it’s goal, and enabling others to do the same. I would sit on the boards and the committees where the statistics of the “brain drain” that Cincinnati was experiencing were laid out; and we all were filled with desire to make Cincinnati a “cool city” again. I lamented when other young professional friends I had left the city. I volunteered with the United Way’s Emerging Leader’s group and tried to get young urban professionals interested in volunteer opportunities with the Red Cross Disaster Services team. Leaving, I always saw, was a sort of giving up. A failure.

Attending A United Way Young Leader's Luncheon downtownHowever, even though the city has shown progress on re-vitalization downtown and in other areas, I can’t ignore the steady decline in this city of both population and opportunities that it and many mid-west cities are experiencing. I was getting worried back in 2005 when the economic numbers out of the region weren’t doing well, with a 3.5% growth rate and sad .04% job growth rate (while by comparison the rest of the country was growing at 4.0%). On the health front, smog alerts have become the norm and Cincinnati’s air quality was only rated good 48% of the time, while Seattle (while certainly not the highest of the nation) was at 70%. Cancer mortality is also 173.1 per 100,000 households in Seattle, vs. 237.3 in Cincinnati. Cardiac deaths are 165.6 vs. 275.4, respectively.

None of this matters as much as the quality of life and opportunity that Seattle and the West Coast offers, and I am extremely excited to be working for SAFECO doing the same work that I’ve been doing with Midland and others in the past: building the best financial services architecture in the industry. I’m certain we will.

Although I do not like leaving my remaining friends in the area, I have watched for too many years as my friends and colleagues have left for bluer skies and better opportunity. I do believe Cincinnati has some life in it yet, and the mid-west in general, but not enough for me or my family to have the opportunities I want to provide for them.

The bluest skies you’ve ever seen are in Seattle. And the hills the greenest green, in Seattle.

Apache Is SOA Ready

September 10th, 2007

You have to be impressed with Apache’s strategy and execution. Although many enterprise companies have stumbled or confused customers with their numerous SOA offerings in the marketplace, Apache has, behind the scenes, been dutifully executing on the core standards (WS-BPEL 2.0, SDO specification 2.1, SCA specification 1.0) that make up a SOA and plugging them neatly in to an overall stack. All of this has been accomplished while also removing any hype or marketing and focusing squarely on the technology and it’s usefulness. It’s hard to imagine SOA would gain any great credibility beyond vendor brochures if it wasn’t for Apache’s volunteers showing that.. yes.. there is real technology underneath the rhetoric.

This stack can be viewed in Apache Tuscany, which brings the SDO and SCA specification to us in vendor neutral Java or C++ and Apache ODE (Orchestration Director Engine) which uses WS-BPEL to execute business processes in an SOA similar to IBM’s Websphere Process Server, which I’ve written about here and here. I’ve done work with the Tuscany, including implementing it and managing it’s deployment. Aside from some problems with Websphere (Tuscany uses the EMF libraries from IBM’s Eclipse and Websphere products, so some library version clashes occur in deployment) I can say that it works as advertised and can handle a decent load.

If you couple this with Eclipse’s community contribution on the visual side, with a graphical BPEL editor and the SOA Tools Project, and you have a stack that rivals millions of dollars in IBM license fees for Websphere Process Server and Websphere Integration Developer IDE. Of course, all of these tools don’t come with support and are sure to need some hacking. Regardless, the future is bright for any size company wanting to leverage the best enterprise technology in an open and free development environment.

PHP On Rails?

August 24th, 2007

One of the new technologies I’ve been playing around with has been Project Zero from IBM. Before everyone gets too excited this software is not free; at least not in any way normally understood by the development community. Although the source code is available, IBM takes some time to explain what it’s use of the term “Community Driven Development” means, but it boils down to this: “this is something we’re going to charge for and we’d just like you to help out for free, please.”

From the About Project Zero page:

We are still building commercial software here, as the licensing makes clear, but we are doing it in a more transparent fashion. This transparency provides a way for you to influence the project much earlier in its lifecycle. It also serves a role in our notions of radical simplicity. Every discussion, every technology decision, the full history of this technology will be accessible, searchable, preserved on this site. That means that finding answers to your questions will never be more than a search away. Development means that this community is about the technology and how it is developed and evolves. This is not a product community. It is not the place for the finished item, but rather the lab where it will grow.

You could be angry with that, and it certainly leaves a bad taste in my mouth. IBM has had a lot of success moving technologies to the open source community, and they have received nothing but benefit as a result. IBM would not have the mindshare of enterprise developers it does today if it had not allowed Eclipse to grow openly and organically.

It has also had success including “torjan horse” frameworks in to Eclipse such as UML2 and EMF, which only see their real fruition in their pricey enterprise products for Rational, Websphere and to a lesser extent Lotus. If you want to see the true power and future of Eclipse as an IDE, you should look at what IBM is doing with their paid products. However, IBM has always been good at folding yesterday’s Rational release back in to Eclipse. For instance, Rational Application Developer 6’s amazing WSDL and Webservice editor tools has found it’s way in to Eclipse Europa as a direct copy, and you can find some XML editor features moving over as well. This is a win/win scenario that promises to keep both developers and IBM happy for a long time to come.

Yet it seems here that IBM has tried to redefine “community driven development” as giving software to developers to create buzz and get free development work from excited community members, and then shove them off like a birthing husk and sell it to large consumers for more than your yearly salary. If I found myself in a community like this, I’d move.

If you choose not to move any farther in to IBM’s work here, it would be understandable, but you’d be missing out on some incredible work. Why not just take a peak?

Project Zero: PHP with REST/AJAX

Project Zero is essentially a Groovy/PHP/Restlet/AJAX framework that tries the “batteries included” approach that Ruby on Rails has with it’s application framework. To be sure, there is a lot that a Ruby or SpringMVC developer will be familiar with when playing with Project Zero, especially it’s Restlet/MVC patterns and it’s scaffolding separated in to an /app, /config and /public directories. You can use Project Zero from the command line, but the real productivity gains are found in using the Eclipse plug-ins. You can program in either Java or PHP as nicely illustrated in the downloads page.

Comparison Between Ruby and Project Zero File Layouts

There are a lot of Restlet/MVC frameworks for Java, which is why I choose to focus on the inclusion of PHP. Simply put, it’s the fastest way for a PHP developer who feels the AJAX/Restlet/Ruby world has pulled away from them to get back in the game building quick and powerful AJAX/Restlet applications. This is all accomplished by the use of the Eclipse PDT project, currently in incubation, which allows for PHP development inside the Eclipse IDE. Project Zero uses this framework to give users right-mouse click control over their entire application.

It also uses Dojo as the JavaScript framework for AJAX. Why this was chosen over others I have no idea other than it’s robust support of file IO and other nice things DHTML doesn’t give you. Dojo has a pretty good following and shouldn’t cause any restrictions on what you can do within your application, although the version included with Project Zero is 0.4.3, which means you won’t get any of the goodness Dojo 0.9 gives you as demonstrated by the cool Mac OSX inspired Fish Eye demo.

Dependency Selection in Project Zero

There are many other libraries that you can use with Project Zero to build a robust application, assuming you’re using Apache Derby, that is. Sadly, although the software libraries in the repository are still in development, there isn’t a lot of juice in the batteries. Further, you can only deploy your PHP / AJAX applications if you have Project Zero installed on your remote environment and running. This means that those host providers who provide simple PHP and php.ini support will not run Project Zero applications you develop.

PHP being RESTful easily

Just like with Ruby on Rails, Project Zero maps RESTful resources to controllers based on names to speed development and reduce resource mapping. Therefore, the RESTful URL: /resources/people calls a people.php file in /app/resources/ that contain the following methods:


People:onList()
People::onCreate()
People::onPutCollection()
People::onDeleteCollection()

and individual resources can be specified as /resources/people/001 (e.g. id= 001 of a person in a people database) which have these methods in the same people.php file:


People::onRetrieve()
People::onUpdate()
People::onPostMember()
People::onDelete()

This makes programming in a RESTful way in PHP as easy as it is in Ruby, but without the language barrier.

JSON in PHP

Much in the same way that the SpringMVC framework uses HttpServlet to pass information back and forth to the calling application, Project Zero prefers to use JSON. This approach is nice since JSON has got a lot of traction lately from AJAX users who don’t want to wait for large XML documents to be sent across the wire. Project Zero exposes an API for PHP that maps roughly to the same HTTPServletRequest/HTTPServletResponse that SpringMVC and Struts uses, called json_encode and json_decode.

Getting data from the POST through JSON is easy enough:

$employee = json_decode($HTTP_RAW_POST_DATA);
$sql = "SELECT * FROM employees WHERE employeeid = ".$employee['id'];

and writing data in JSON is easy as well:

indexedArray = array("a", "b", "c");
$result = json_encode($indexedArray);
echo "Indexed array = " . $result . "
“;

Yet, this method of writing data leaves a lot to be desired. It would be nice if we could forward JSON data and then redirect to a RESTful view, the same way many other frameworks (Ruby on Rails, SpringMVC) does. It turns out you can do this using what Project Zero calls Response Rendering, which is a pattern of APIs to do just that.

In PHP this would be:

$customer = array('name' => 'John Smith');
put('/request/view', 'JSON');
put('/request/json/output', $customer);
render_view();

Wrap-Up

When you think about it, it’s pretty amazing that PHP has been given this much functionality from a product out of IBM’s research. The question on my mind is if PHP even deserves it. Although many websites leverage PHP on the front end, it has always had a mixed history when it comes to separating presentation from the code itself, and is usually re-factored away as an application grows. Further, with Sun and others focusing so heavily on migrating Ruby to the JVM, it makes you wonder why IBM would choose to pick PHP as another language to do web 2.0 in. Remember, IBM made it clear from the above talk about “community development” that they plan on making this a commercial product, so it seems they have settled on Groovy and PHP to be their torch carriers with Project Zero. For PHP developers, they have been given a very powerful toolset. Shame they can’t use it until IBM decides to sell it to them.

My advice? Although large applications such as Wordpress and Facebook use it, for new development PHP’s time has passed. You are better off moving to a Ruby or Java web framework.

.Mac Now Has Server Side SPAM Filtering!

August 7th, 2007

Something that is hidden from most coverage of the Apple announcements today is that .Mac, beyond getting bumped to 10 GIGs of storage, now has server side email filtering for your .Mac account.

This is an answered prayer to those who are annoyed that their iPhone doesn’t do spam filtering unless their Mac is on and also checking mail. This should allow you to have your Mac off and only check mail from your .Mac account without all those Viagra adds popping up in your inbox.

Apple also posted a link to an information page entitled “.Mac: Keep Junk folder contents consistent by using the same Junk mail settings on each Mac used with .Mac mail” discussing how you should change your settings on your Apple Mail application to ensure that both your server side and local junk mail stay in sync.

.Mac mail is almost getting to be GMail useful now.

.Mac SPAM filtering