Application Level Reuse and Google Maps

I found this, once again, on kottke.org. Someone has used Google Maps to map out the casualties of the Iraq War. Each click on the (+) on the left of the screen shows 30 more casualties.

I think the reason I find this so cool is not because of what this application is mapping out (which is cool — don’t get me wrong), but the fact that it was able to be written at all. Software written this way leverages the Wisdom of Crowds concept, allowing software to be written that the original authors had no idea would be an application of the technology they were creating at the time.

More than even that though, we are seeing a lot of what I call “application level reuse”. The distributed nature of Internet applications such as Google Maps allows the application to be used as a subset of a completely different application that serves a specific, specialized purpose. Applications can be written stringing together multiple applications like this, creating something brand new and extremely useful.

I think corporate IT shops, in most instances, aren’t getting the concept. They continue to write software in a very closed, monolithic fashion, that force their view of the world on their customers and do not allow that view to change — unless they agree and make the change themselves, increasing their development costs.

Amazon.com is another company that gets the concept. All patent issues aside, they were the first company that I remember that created a service oriented API to their application that allowed their customers to actually build their own store fronts if they wanted to. These APIs were used in ways Amazon wouldn’t even have thought of. The Amazon plugin for WordPress I use on the site is a really good example of this.

I think the world has already turned to this model of development and big corporations are missing it. Hell, even SAP, one of the most monolithic software applications in the world right now is getting it. The time has come where your customers want to use your software to make their own models of the world, that are specific to them. They want you to be transparent. They do not want your branding, they want the services you provide. Your branding has a place, but not everywhere.

I believe that customers are moving to the point where they just don’t want you to intrude on them. They want you to be invisible. Being able to integrate your software into theirs in a service-oriented fashion allows you to be invisible and to be integrated into the world they actually work in, rather than the world you think they live in (or worse, making them change worlds to work with you). The more you increase your transparency, the more you can be integrated. The more you are integrated, the more invisible you become. Pretty soon, you are used by default because you are part of your customers world , rather than a vendor that must be dealt with in an additional context shift.

Now, the problem with a paradigm shift like this is that it doesn’t come for free. Employees and business users have to be taught to think this way. Software has to be redesigned with this paradigm in mind. It’s not cheap — but I’m willing to bet its a lot more rewarding, from both a financial perspective, and a customer satisfaction perspective. Once the shift happens, you can stop worrying about “features and functionality” for the customer and start thinking about services the customers can use to make their own “features and functionality”. You can start focusing on the core services you provide.

The additional advantage is if you develop these services with customer use in mind, you can use them too. You can leverage the same services your customers use to constitute new functionality in your software. This also, can decrease your development costs.

This is how I see the world. But then again, who am I? I could be wrong. I doubt it, but I guess it’s possible.

Stallman talks about Software Patents

I found this article on kottke.org.

It is an article by Richard Stallman that explains the harm that software patents can do by explaining what would happen if the same concepts were applied to literary works, such as plays, movies, or books. This winds up being an extremely simple and effective way of explaining how harmful software patents can be.

A really interesting read, and definitely makes you think — especially in light of the latest patent that Amazon was granted.

Related Articles

New Architecture Blog Available

A new architecture related blog is now available called utf-ate.com which aims to “provide a place to aggregate conversations, articles and information about Architecture, Technology and the Enterprise”.

Not quite sure I like the minimalistic theme (at first I thought maybe I wasn’t pulling the CSS), but its the content that counts …

An iPod for Fathers Day

Fathers Day PresentFor Fathers Day, Jonna got me a 20 gigabyte iPod. I wasn’t really sure I wanted one, because about five years ago she got me a Rio Lyra and I never used it. Part of this was because you had to install a card reader, and the software to use it and I was running Linux. The second part was that you really couldn’t fit that much in 128 meg.

Tom the Architect and Keith the Team Lead both have them and love them though. So I have been thinking about it … I just wasn’t sure I wanted to make the investment in something I might not use.

Well, this iPod is something. I’ve got every Steve Vai song I own on this puppy along with most of the other significant stuff that I listen to on a regular basis. I spent all day yesterday just pulling songs from my CD collection onto the iPod. As it stands right now, I still have 16 gig free.

This thing is freakin’ awesome.

Now I just need time to listen to all of it. What I really need is something that hooks it up in the car. I can’t tell you how many CD’s I have lying around from being in the car. Even worse, much of my time yesterday was just figuring out what CD was where, as nothing was in the correct case due to switching CD’s while driving. For me at least, if they have something that can actually hook one of these things to the car, it will make for a much safer driving experience, and much less car cleaning when we want to take the top down in the Jeep on the weekends.

BTW … thanks to Tom the Architect for answering Jonna’s questions during the “research phase”.

Finally, thanks honey for the gift. I love it, and I love you.

Finishing the CSS Prototype

Well, I finished the prototype that I was doing on tableless design and confirmed the results mentioned in in the stopdesign article on CSS.

The final result was a 65% reduction using CSS and XHTML, only using tables for tabular type data (and one set of form elements). Most of these space savings were in table code and redundant font and formatting information throughout the original HTML (including the non-standard <SPACER> tag, which was sprinkled liberally throughout the markup).

That’s pretty impressive and a real motivator to convert to tableless design. I can’t express enough how cool it is to see the formatting completely decoupled from the standards compliant XHTML!

While part of me wants to post up the results, I’m not going to, as I don’t want to establish a connection between this site and the company that I work for. I’d rather keep them separate. However, the savings in both maintenance and space savings are there. You’ll have to trust me.

Along with the book that I had mentioned in previous articles, I also picked up Cascading Style Sheets: The Definitive Guide, 2nd Edition, put out by O’Reilly. This book was extremely helpful in getting this project done.

On other fronts, I’ve been doing some really interesting reading over the past 4 weeks or so. Two books called The Innovator’s Dilemma and its sequel, The Innovator’s Solution: Creating and Sustaining Successful Growth, both by Clayton M. Christiansen. These are really interesting books about how disruption and innovation actually causes established companies to lose their foothold on their markets even though they are making perfectly sound management judgements given where their companies are.

As I get my head around the concepts in these books more, I’ll be posting in depth on them. I just have to figure out how to express what I’ve learned. There’s a lot of information in these books and they are really engaging.

Learning CSS

Back in my Windows programming days I used to focus a lot on user interface design. I think I was actually pretty good at it. As time went on I moved into more of the back-end type of programming (utilities and things of that nature). When I moved to Unix programming I did not even touch the graphical UI’s. There was nothing really of interest to me.

When I started web programming, HTML just seemed tedious. I learned enough to get by, but the constant use of tables and getting things to align properly proved to be just too boring for me to ever try to get proficient in web UI design.

Over the last week or so, I’ve decided that I really have to learn about Cascading Style Sheets, which as I’ve mentioned previously, I didn’t focus on very much due to the incompatibilities between browsers in the early days. My initial interest in the technology started about 3 months ago from the work that I have been doing with WordPress, however the final straw that made me think I definitely had to learn this stuff was an article called Throwing Tables Out The Window at stopdesign.com. The author talks about a presentation he gave on CSS in which he, during the presentation converted the Microsoft web site from a table based design to one using CSS. He did the conversion real time to show the audience how quickly it could be done.

The final result of this conversion was a page that looked exactly the same, but reduced the page download size by 62%.

When I saw these results, I decided it was time to learn a little about CSS, so I bought the book Web Designer’s Reference : An Integrated Approach to Web Design with XHTML and CSS by Craig Grannell and poured through it. I also grabbed the O’Reilly CSS Pocket Reference so that I would have a quick way to look things up. (OK, honestly — I bought the Pocket Reference first, and got completely lost — get a real book before you pick up a quick reference).

When I learn something, I need to apply it to something that has value to me. If I just walk through sample projects, I tend to get bored because I’m not getting value that I can use right away.

The project I picked was the home page for my company, which currently uses pretty heavy table layouts. I want to see what kind of space savings we can achieve along with the kinds of maintainability savings that can be realized using CSS based design in lieu of tables.

I started this project on Monday, and to be quite honest, was fairly intimidated, as I always am when stepping outside of my comfort zone. After all, I deliberately did not learn more than I needed to know about HTML and layout because I found it boring.

Between Monday and today, I have been working on the project in most of my spare time (getting up early and working on it when I get home). As I work more on the problems, I understand more of the technology. Given the limited amount of time I’ve had to work on it, I’ve made some pretty decent progress and my excitement builds more and more the more I get done.

I seriously don’t think I’ve been this excited about learning new technology in a long time (probably since I started learning Python a year or so ago), and though its geeky, I find myself thinking about this stuff constantly. The ability to completely detach the presentation from the content is just completely cool.

Now there have been some issues and a lot of frustration. I got things looking great in FireFox and then made the mistake of loading it in Internet Explorer only to find that everything was screwed up. However, a few hours spent this morning and I have the display working fine in both browsers, due to the wealth of information out on the Internet.

If you find yourself laying out your pages using archaic, 90’s style table layouts, you need to start looking at CSS. The possibilities are far beyond the simple font settings that so many sites limit themselves to.

At some point in the future, when I finish my first “project”, I hope to post it up as an example. There is a great site called “Tableless” which showcases corporate web designs reworked using tableless design. These examples do a really good job of illustrating the ability to do complex layouts in CSS that one with a limited idea of the technologies might not think is possible.

Following are some resources on the Internet that I have used to help me learn this stuff. Hopefully, they will be helpful.

Related Links:

Web Designer’s Reference – An Integrated Approach to Web Design with XHTML and CSS

Web Designer's Reference : An Integrated Approach to Web Design with XHTML and CSS I recently picked up Web Designer’s Reference : An Integrated Approach to Web Design with XHTML and CSS by Craig Grannell after seeing a reference to it on Slashdot. I have realized since starting to work with WordPress that I am a little behind on things like CSS and XHTML and had to get up to date, since most of the themes and styles looked like greek to me and I had a hard time modifying them – because I didn’t know what they meant.

The book is really well written. It takes you through not only the mechanics of CSS but takes you through step by step examples that you can walk through to get some hands on experience, something I really need when learning something new.

Now that I know a little more about CSS, I don’t think I’ll ever look at web page design the same way again. I’m one of those people whose markup abilities were kind of stuck in the 90’s because of the lack of consistent CSS support across browsers when CSS was first coming out. I figured if it didn’t work consistently everywhere, I might as well wait until it does. It just so happened I waited for what now seems like forever. I had no idea that CSS had gotten so powerful.

Some of the areas Craig covers in his book include:

  1. An Introduction to Web Design
  2. Web Page Essentials
  3. Working with Text
  4. Working with Images
  5. Creating Navigation
  6. Introduction to Layout
  7. Tables: How Nature (and the W3C) Intended
  8. Layouts with CSS
  9. Working with Frames
  10. Getting User Feedback (I found some really interesting stuff in here)
  11. Adding Multimedia
  12. Testing, Tweaking and Uploading

Craig also includes an XHTML reference, a web color reference, an entities reference, and a CSS reference towards the end of the book.

From an XHTML perspective, Craig covers a lot of the features related to accessibility, which wound up really interesting to me as well. I learned a lot from these sections.

If you are like me, and blew off even looking at CSS until now, this is definitely the book for you. It’s an easy read for those of us who haven’t been paying attention to this aspect of software development and includes great examples to walk you through the power of decoupling display from your mark up.

I now have enough detail to know where I need to head next and some practical experience with the examples to understand the basic concepts. Sometimes that’s all you need.

Google Does it Again with Google Mail

I received an invitation to the Beta of Google Mail from Tom the Architect a few weeks ago and finally over the last couple of days decided to activate my account. I really like the service. As a matter of fact, I like it so much I’ve configured my main account to forward all mail over to it and it has become my primary mail application, even though I tend to have control issues around things having to run in my house.

The user interface is great. Of course the first thing you will want to do is create folders in which to organize your mail. Google Mail doesn’t have them. What it uses instead are what they call labels. Labels are essentially the same things as “tags” that you find on sites like Flickr and del.icio.us. While I like the idea of tagging on email, and think its a killer feature, I still miss being able to move things out of the way and just look at stuff that is in my inbox that is not categorized. Since I subscribe to a number of email lists for software like Subversion and CruiseControl, my inbox tends to get a little cluttered. While I can automatically filter email to assign labels based on who its from, who it’s to, and subject content, and can display only those emails with a given tag, I still cannot find a way to view email that has no tag.

The user interface is based almost entirely on Ajax technology, which gives the site a very “thick client” feel, without all of the weight. Your inbox even automatically refreshes every now and again, which at first is quite surprising, and really convenient.

And of course, you get full Google search capabilities for your whole inbox. Enough said.

Google has definitely set the standard for web mail applications with the Beta of Google Mail. I’m extremely impressed. Each time they come up with something, my life is a little more dependent on them. First there was web search, then news groups, then news aggregation, THEN maps and now email.

I can’t wait to see whats next.