In which I disagree with Marc Andreessen

Marc Andreessen posts thought provokers all the time on his must read blog, but this once, I just have to comment. In “The three kinds of platforms you meet on the Internet” he attempts to clear up confusion about the concept of “platforms” and how they relate to the Internet. Specifically, he describes three “levels” of platforms that you find on the Internet. Go read his post for context. But let me just say that I feel his descriptions are spot on. But the examples he gives for “Level 3” platforms miss a biggie…

The Web itself is a Level 3 platform according to his definition.

It looks like Fred Wilson agrees with my point of view on this.

Simple RESTful URLs with JSPs

Bill de hOra posted an interesting question the other day, that has to do with mapping views to requests, cleanly, in a RESTful way, as Sam Ruby framed it:

it’s easy to forget that Servlets were Java’s response to CGI, way back when. Here’s is the link for Stefan’s entry:

http://www.innoq.com/blog/st/2007/08/15/java_web_frameworks.html

I’m wondering how would one produce a URL space for a blog style archive, using Servlets+JSP, and do so in a way that isn’t a CGI/RPC explicit call? That is, the URLs don’t end up like this:

http://www.innoq.com/blog/entry.jsp?id=java_web_frameworks

with one constraint – “just a servlet” that pulls java_web_frameworks.html direct from a “2007/08/15” folder on the filesystem and byapsses JSP is out. All the response is to be generated via JSP. Would we need to a create framework, however ‘micro’?

In Django world, answering such a question is rather easy. And for PHP hackers, you’re probably saying, hey, use .htaccess to route requests, but in Java, this question becomes a bit more complicated.

A Java developer would want solve two problems here: enable “clean” RESTful URLs, and do as little Java coding as possible by distributing responsibility for defining views to a templating language. Hopefully empowering someone who knows just HTML/CSS to work their magic. The benefits to such an approach can’t be underestimated. We we went down such a path at Knight Ridder with the Cofax CMS and it empowered a lot of creativity with little resources on hand (lots of folks know HTML/CSS/JS, few know Java).

Carbon Five discusses an approach that decomposes path info into parameters for Spring MVC controllers: Parameterized REST URLs with Spring MVC. This solves problem one. It still routes requests to a Controller defined in Java, and I’ve seen far too many not solve problem two, which leaves a design where you have a Request, that maps to a Controller that maps to a single View. But this leaves you with an *excellent* foundation to solve the second problem.

Sam Ruby points to URLRewriteFilter as one possible solution. This potentially solves both problems.

Stefan Tilkov explains how to decompose path info and use RequestDispatcher as a solution. In Sam Ruby’s comments, I suggested just such an approach and it’s worked great for me in previous (and current) projects. This potentially solves both problems.

BTW, if you’re interested in a templating language, outside of JSP (and who isn’t?), consider FreeMarker. A huge project I’m helping design and develop is having terrific success with it and Spring MVC. Real magic starts to happen when you decouple Requests from Views. A shortcut to this in Spring MVC is implementing a RequestToViewNameTranslator.

Moving to a Mac?

There’s a possibility I’ll be switching to a MacBook Pro as my development machine at work. A few years ago, before OS-X, a switch like this would have made me feel a little worried. I’m productive in Windows. One of the reasons why is how I arrange my Windows environment to mirror, in a sense, the Linux and Solaris machines I typically develop software for. OS-X eliminates that distinction. As for software, I use a stack of free and open source applications that have analogs on OS-X.

Eclipse (has a Mac distribution)

Sun’s Java SE SDK (has a Mac distribution)

Python (has a Mac distribution)

ActivePerl (has a Mac distribution)

WinSCP and PuTTY (Fugu and Cyberduck)

Notepad++ (Textwrangler)

Emacs (has a Mac distribution)

wikidPad (runs on a Mac)

Cygwin (OS-X has Terminal :))

IfranView (iPhoto)

Inkscape (has a Mac distribution)

Subversion (has a Mac distribution)

Trac (server side, browser accessed application)

Been Nutso Busy

Sorry for the sudden lack of conversing and blogging as of late. My day job has been keeping me really busy. That, along with physical therapy (which has stalled btw – I’m going to try epidural steroid injections next), has really been kicking my ass.

In addition to all this, the past month or so, Philly Future started to crash uncontrollably. Drupal’s aggregator isn’t built to scale, in terms of size, as I have painfully found out. It took some major indexing, cache tuning, and aggregator module tweaking, to stabilize things. Along the way I learned quite a bit about MySQL and Drupal. Enough to know that I need look for a replacement for the aggregator or majorly refactor its database usage. Even so, I plan to submit the improvements I made to the community. They’re going to give us a few more months I think.

Some days I still can relate to Chris Gardner’s character in “The Pursuit of Happyness”, where instead of traveling a myriad of buses, perfectly timed, each day to negotiate making it to my place, the job, or school, six hours on public transportation, now it is balancing work, home, health, and passions like Philly Future. A far better situation. But still not enough time to do it all.

Movable Type 4.0 Is Going to Rock

Movable Type 4.0 Beta Launches, Platform To Be Open Sourced

Burningbird » Movable Type: The Princess Time Forgot

rc3.org: Movable Type 4

I’m excited to see the participatory media functionality being added to MT. A while back I wrote a piece that was a little controversial – “del.icio.us is going to die, so is Digg, so is Flickr”. I believe that personal blogging solutions will evolve to enable us to host our own social networks (they do already in a sense). PC computing history leans towards personal empowerment.

I’ve tried more blogging solutions then almost anyone. Folks tend to break things down into false choices, thinking that a marketplace can only sustain one ore two options, when over the past few years, I think it’s been obvious that in the blogging ecosphere not only can two or more options co-exist – they can thrive.

While I’ve used WordPress and Drupal on other projects, I’ve kept Movable Type as my personal blogging solution, and it has been my recommendation to use it in various projects of differing scope. It’s always come through for me.

No solution is perfect. Don’t believe the hype. These are just tools to keep in your toolbox. Loyalty to a hammer over a screwdriver makes no sense.

This is a good day for blogging. And a good day for freelancers and corporate developers everywhere that require a reliable, flexible, content management solution.

What’s exciting about Google Gears

A lot of folks are going gaga over Google Gears and its capability to enable partially connected web applications (web applications that can run offline).

Here is a paraphrase from a comment I left at Burningbird (Shelley Powers’s blog is one of my favorite places to discuss web technology and how it relates to society, politics, and more):

What really interests me about Google Gears is the local web server.

It’s the Dave Winer Fractional Horsepower HTTP Server idea (from back in 1997), that’s finally come of age.

Just what is possible when each of us have our own web servers, running on our desktops?

Immediately you think p2p heaven. But the possibilities for building collaborative apps is just massive.

I know, I know, for anyone who knows Perl, Python or Java, it’s never been too much of a big deal to spin up your own webserver, but this looks like it makes it more than simple – it makes it practical.

If I’m reading it right, you’ll need some form of centralized web app to co-ordinate collaboration across machines, which is no big deal.

The web’s about being connected. And it’s the online possibilities that Google Gears opens up that are rather mind boggling.

Flex, Flash, and Comcast Interactive Media’s Fan 4.0 Alpha

The team I belong to at Comcast, Comcast Interactive Media, released an alpha version of our video player, The Fan, this week.

You can give it a try here. If I say so myself, it’s pretty sweet.

While more information is available on its official cimLabs page, including links to give feedback, I’d like to point you towards one of its developers, Arpit Mathur, and his blog entry about it.

This version of The Fan was built with Adobe’s Flex and Arpit has a lot to share about the project. Feel free to leave a comment and tell him what you think.

As Arpit mentions, we’re on the lookout for Flash developers. But there’s more to the CIM story than Flash. In fact, the development stack we use at CIM resembles what Bruce Eckel proposed in a piece called “Hybridizing Java” on Artima a while back. We are looking for experienced Web developers of all stripes to join us. Check out cimLife for more.

Update:

Arpit’s post about the new version of the Fan is earning some buzz.

RIApedia: Comcast Launches New Flex Based Video Site

Masable: The Fan – Comcast’s New Flex Video Site

Ryan Stewart: Comcast jumps into Flex 2 for media content

Shelley Powers: Cool Thingie

Update:

Aaron Held, my manager at CIM, checks in with more about Flash, Java, and The Fan.

————————

Follow the linkage on Techmeme.