Archive for the 'Technology' Category

Rails Flashback

While poking around one of the Ruby on Rails sites, I stumbled upon the video of DHH’s keynote at RailsConf 2009. Rails 3 looks really cool, but DHH has definitely mellowed from the 2006 and 2007 RailsConfs I attended. Just watching the keynote brought back some good memories of the 2007 RailsConf.

RailsConf 2007 was held in Portland, Oregon, which is about the most awesome city I’ve been to for a conference. It has all the amenities of a big city, but still keeps a quirky small town feel. Between the conference, awesome micro-brews, and Powell Books, it was a really good time.

This was the RailsConf I went to with my Windows notebook while 99% of everyone there was running on a MacBook, so I played the leper. The speakers were great, and it was absolutely hilarious when one of the vendors had the Extra Action Marching Band show up at lunch the first day to perform. It pissed off the stodgy convention center management, but it was a sight to see. Check out James Duncan Davidson’s excellent photos if you want to see how fun a RailsConf could be.

I was thinking of going to RailsConf this year, but it is in Baltimore. I’ve never been a fan of east coast conferences, and I’m worried RailsConf is losing its fire. Just like JavaOne tapered off in to boredom, RailsConf on the east coast could be its jump the shark moment. But if they ever get around to having it in Portland again, I’ll be there.

The Road Ahead

Seeing as I did pretty well on my technology predictions for 2009, I’ll head out on the limb again for 2010. Here’s what I see happening:

  1. Three Words: Dead Cat Bounce – If you haven’t heard this term before, it is a way of describing the financial markets when they make a small bounce after a downturn and then head downwards again. Unfortunately, I’m expecting things to get much worse this year, as all the problems that caused the Great Recession are still present and the mortgage mess is only getting worse. Add in the fact that all our large financial institutions are still fundamentally insolvent and exist at the grace of the American taxpayers, and you have a recipe for a big mess. Looking back in December 2010, people will say 2010 was much worse than 2009.
  2. Oracle will buy VMWare – VMWare tried to gussy themselves up by acquiring SpringSource, and this will be the year they go a courting. Oracle is a natural, as it fills some holes for them and gets them the crown jewels of Java, the Spring Framework
  3. .NET 4 will be a Killer – This is almost a gimme, but it is worth stating. With the dynamic language features in .NET 4, we’ll see a dynamic language crack the corporate mainstream market. This is nothing but good news for all the other dynamic language warriors out there like Ruby and Groovy. 2010 will be an awesome year for dynamic languages.
  4. Java cements its position as the new Cobol – With dynamic languages making inroads on the heels of .NET 4, no one will want to be starting new straight Java projects anymore, relegating it to the world of endless maintenance.
  5. Silverlight starts to kill off Flash – Silverlight 3 has almost caught up with Flex, and Silverlight 4 should push it ahead. Yes, there will still be a ton of Flash out there, and most of it will be annoying banner ads or boutique marketing websites. Developers who do not want to learn JavaScript but still build RIAs will be using Silverlight 4.
  6. Chrome starts to kill off Firefox – Let’s face it, the only reason most of us use Firefox is for the plugins, with Adblock Plus being the biggie. Chrome is blazing fast and has a more streamlined browsing experience. When Chrome gets a rich plugin community going, and a port of Adblock Plus, Firefox will be on the ropes.
  7. Someone buys ExtJS – This was my wildcard last year. I expected Microsoft to buy them, but they went with JQuery instead. They will be purchased by someone this year, and I’ll bet on some oddball shotgun wedding instrumented by greedy VCs.

The 2009 Crystal Ball

Last January, I hopped up on my soapbox and made several predictions in the technology field for the coming year. Now that we’re wrapping up the end of the year, I went to take a look at how well I did.

Prediction #1 – Sun is toast : yep, nailed it.

Prediction #2 – Windows 7 will rock : another gimmee; Windows 7 is very good and was what Vista should have been.

Prediction #3 – Google and Apple will turn out to be evil after all : probably debatable. Google definitely, and Apple is still working on it.

Prediction #4 – Microsoft won’t be the evil empire anymore : swing and a miss. They’re sure trying to sound less evil, but they’re still Microsoft. I guess Ray Ozzie is not going to be able to move the mountain.

Prediction #5 – Oracle buys SpringSource : I was pretty close. They got bought by VMWare instead, which makes zero sense. I still think I’ll be proven right, as you’ll see when I make my predictions for next year.

Prediction #6 – Microsoft buys ExtJS : no dice. Admittedly, this was a wildcard guess. I am surprised that someone hasn’t bought them yet.

So all told, I had four of my six predictions mostly on the mark, which isn’t bad. I’ll have to start working on my scientific predictions for next year over the holidays. I just need a few good cups of eggnog first.

Almost Perfect

I was at the Apple store this week drooling over the new iMacs. As I’m sure everyone knows, Apple refreshed the iMac line and released some really stunning boxes. My main computer right now is a 13″ Macbook Pro sitting behind a 23″ cinema display in a Bookarc. I also made a rather nice monitor stand to boost the display about two inches. It works awesome, is completely silent and plenty fast for dev work, but I’m still impressed by the new iMacs…. with one exception.

The good stuff first. The new 27″ LED screen is beautiful. The video card is an ATI 4850, which is plenty fast for most non-bleeding edge games, and it can be pretty cheaply boosted to 8GB of RAM. And Apple finally has quad-core CPUs! I can live with a dual core in the laptop, but if I’m paying for a chunk of metal that sits on my desk, it better have four cores. And the price isn’t bad considering what you get. A quad-core i5 bumped to 8GB is$2200.

If I didn’t have my current setup, and was the market for a new desktop, I would snap it up in a second, except for one small problem — I don’t like the glossy screen. I tolerate it in my current configuration because I still do all by Photoshop work a my PC with a good 20″ matte screen LCD. I’m sure most other serious Photoshop users have the same gripe. Apple has built their best desktop computers ever, and has handicapped it with a glossy screen.

I’m at a loss for why there is at least not a matte option, like on the 17″ Macbook Pro. My only guess would be they don’t want to cannibalize sales on the Mac Pros and 30″ displays. If I ever bought one of these, it would have to become my main computer and kill off my wintel box to justify the cost. That is not going to happen until Apple does right by their customers and ships these with a matte screen.

Stopping the Racket

The concept of Net Neutrality has really started to heat up recently. The geeks who understand the internet have been pushing for it for years, but it fell on the deaf ears for the past eight years. Now, with a new president, the FCC is finally taking steps to make it a reality. Yet low and behold, some in congress are now going to try and stop it.

So let’s talk about what Net Neutrality really means. Imagine if your electric company got in to the appliance business and the next day your refrigerator quits running. You take a look and nothing appears wrong. Being the wise troubleshooter, you remember to test step #1: is it plugged in. It is plugged in but you figure out it is not getting any juice from the outlet.

You check the breakers; they’re all fine. By this point, you’re pretty irate so you call the electric company. The third-world tech support person tells you they are sorry to hear about your problem, but there is just too much demand for electricity. You see, too many people are plugging in those amperage-hogging power tools, so they have to prioritize the allocation. If you want to ensure your beer stays cold, you either need to buy one of their refrigerators or pay a bit extra a month for the additional guarantee on quality of service.

This is effectively what the large ISPs want to do with your internet connectivity. An educated person would call this extortion, but to them it is colloquially referred to as “an additional revenue stream”. If two large Italian gentlemen in thousand dollar suits paid you a visit and said “nice computer you have there, it would be a shame if you couldn’t get electricity for it”, someone would go to jail. Yet when large publicly traded companies do the same thing, we’re supposed to call it the “free market at work.”

There are only two reasons to oppose Net Neutrality: ignorance or corruption. I’m attempting to address the first problem by helping people understand the swindle that is taking place. Everyone with a computer should be up in arms that we don’t have Net Neutrality already. There is not a lot I can do about the second part. The national ISPs are lining the pockets of our elected officials to have them ensure they can continue their extortion racket. And with the United States Senate, there are ample quantities of both ignorance and corruption.

So write your representatives, post on blogs, make some noise! Americans need to know this matters and we’re not going to be led like sheep to the slaughter by the ISPs in pursuit of greed.

Summer Is Over

This was basically a pretty lazy summer for me, as you can tell by the infrequency of my posts. That is not to say a lot didn’t happen; I just reached a pseudo-burnout state on technology for a bit. The geek equivalent of writer’s block.

The big news is the new job. I left my position at Orange Leap and returned to work at Bank of America in the Office of Architecture working for one of my favorite former bosses. It was a huge shift of the pendulum for me. At Orange Leap, I was spending 99% of my time doing heads-down coding. Start-up mode. Now, at Bank of America, it is completely the opposite. I’m doing enterprise architecture more at what one might call the “paper architecture” level. For me, that means zero coding, which has jolted me out of my slump since I’m still a geek at heart and need to feel the satisfaction of writing cool code.

One advantage to not being bound to code at work is I can invest in the code I want to write, not have to write. I had a lot of time to reflect on the state of the Java world, and have decided to invest my personal coding into Ruby instead of Java. I’ll have to eat some crow with my Canadian friend, whom I mercilessly harassed for his Rails habit at ExtConf, but it is worth it.

I’ll address the easy part first: why not Java? I not exactly giving up Java. I’m perfectly happy to be paid to code in it, and will probably use it for years to come. But I see a bleak future ahead with the pending purchase of Sun by Oracle. I can’t really think of a company I hate more than Oracle, excluding the dirtbags at SCO. Java will be monetized to the detriment of the community; count on it. And yes, there is some cool work being done with languages using the JVM as the base (Groovy, Scala), but I would like a clean separation from a possible Oracle impact.

The second nail in the coffin was the purchase of Spring Source by VMWare. This made no sense to anyone, in spite of Rod’s blog entry explaining the reasoning behind the madness. As I suggested in my prior post, this is just a small course adjustment to SpringSource’s final destination. VMWare will be acquired by one of the big players, and SpringSource was only acquired to serve as additional bait. Even my good friend who is very involved in the local Spring community is acknowledging this gig is up.

So with two of my favorite technologies headed for a gruesome destiny, I decided it was time to bust out of the box. Ruby was my only choice. Ironically, I was pretty passionate about Ruby a few years back before it was cool. I attended the 2nd RubyConf in San Diego, and the first two RailsConfs. I’ll never forget seeing Why the Lucky Stiff perform at the Chicago RailsConf.

I put down Ruby because work called for Java. I should have stayed up on it. But now, getting back in to it after a few years absence, I feel like a kid again on Christmas Day. Ruby and Rails have matured dramatically as a language and framework, respectively. The community is even more vibrant than before and the syntactic prowess of Ruby is a breath of fresh air after years of Java. I’m looking forward to burning my personal braincells on something as enriching as Ruby.

What about JavaScript? It is not going anywhere. Some of the first stuff I want to figure out with Rails is how to get it to play nice with ExtJS and JQuery. JavaScript really is the future, and Ruby on Rails feels like the perfect match for getting it to the browser in an elegant manner.

So Hello Ruby World! I’m looking forward to getting to know you again.

Shark Bait

Another one of my predictions for the year came at least partially true: SpringSource has been bought out. I was expecting Oracle, which would have been a disaster for the community, so at least there is a silver lining. Unfortunately, VMWare is such a wildcard that I have no idea what it means.

Rod’s blog post gives an interesting spin on it. I can see the synergy, but I would still question VMWare’s future. Microsoft has been going after them in the virtualization market and Xen is eating their market from the bottom. This was essentially a small fish being eaten by a less small fish. I don’t think we’ll see the end of this until one of the sharks takes a nibble.

So here’s my theory on why VMWare purchased SpringSource: it is all just a ploy for VMWare to be a more appealing target for Oracle.

Rounding Error

A few months ago, I ran some performance comparisons of various JavaScript selector engines using Slickspeed. My intent was to validate claims made by the ExtJS team as to why they didn’t use the Sizzle selector engine in Ext Core.

Ext Core has now gone final, so I wanted to re-run my tests. But there was also some news on the browser front: Apple released Safari 4 and Google dropped Chrome 2. Being the geek I am, I had to try them out. My Slickspeed test was the perfect candidate for seeing what Safari 4 and Chrome 2 could do.

In my prior post, I said developers should be bowing at the throne of Google for Chrome and its pack-leading JavaScript performance. That crown has now been abdicated. Safari 4 and Chrome 2 are leaps and bounds ahead of everything else on Slickspeed.

Here are the details on Safari 4:

  • Prototype: – 9ms
  • Dojo: – 3ms
  • JQuery: – 4ms
  • ExtCore: – 19ms
  • Sizzle: – 2ms

safari4

Safari 4 didn’t get along well with SnagIt, so I was only able to capture the bottom of the results output. Here are the results for Chrome 2:

  • Prototype: – 13ms
  • Dojo: – 4ms
  • JQuery: – 2ms
  • ExtCore: – 41ms
  • Sizzle: – 1ms

chrome2

This is simply stupendous. The performance of JQuery turns into a rounding error in both these browsers. As a basis of comparison, here are the prior results for Chrome 1:

  • Prototype: – 13ms
  • Dojo: – 7ms
  • JQuery: – 8ms
  • ExtCore: – 13ms
  • Sizzle: – 8ms

So what conclusions can we draw?

  1. Choice of JavaScript engine becomes irrelevant with any of these two WebKit based browsers. They all fly, even lowly Prototype.
  2. Ext, LLC, screwed the pooch in not using Sizzle for the selector engine in ExtCore. It would have been a better investment in them adopting Sizzle and working to improve it rather than blazing their own trail. The difference in Chrome 2 between Sizzle and ExtCore is staggering: 1ms in Sizzle vs 41ms for ExtCore.
  3. The latest and greatest from Microsoft (IE8) starts to look absolutely pathetic compared to the competition. Microsoft should be ashamed of themselves for having their asses so soundly handed to them on such a critical piece of infrastructure as the browser. Whether it is due to their outdated opinions on open source, or that they can no longer attract top talent, Microsoft is proving to not even be a contender in the JavaScript performance race.
  4. Both Apple and Google use WebKit as the basis for their mobile offerings (iPhone and Android). The sheer power of WebKit is going to offer both these platforms outstanding opportunities for rich browser-based applications. It is clear why neither platform cares much about Flash or Silverlight: the don’t need them.

Abel and Ready

This is the story of Abel, a hard-working, dedicated Java developer. One night, after a hair-pulling coding session with Spring Security, Abel was visited by the Ghost of Java. “Abel, you have been extremely dedicated to me,” said the Ghost, “and for that, you will be rewarded.” “You will be visited by three ladies of the night as a reward for your years of sweat and turmoil hacking me,” the Ghost continued.

Two thoughts quickly raced through Abel’s mind. First, being a Java developer, it meant he would actually have to shave and shower for the next three days. Second, being a dedicated Java developer, three ladies in three nights might be a bigger task than he could handle. But throwing caution to the wind, he told the Ghost of Java he was up to the task, although he mentioned he would have preferred Java 7.

On the first night, a rather mature woman, slightly past her prime, showed up at his door. She was perfectly dressed in a revealing blue dress, but her exquisite makeup was not up to the task of concealing her sags and wrinkles. She said her name was IBM and that she would show Abel a good time. What she lacked in looks she made up for in conversation. She treated Abel like the center of the universe and was always ready with a supportive comment or another glass of expensive champagne. Abel was somewhat satisfied with the happy ending to the evening. It wasn’t spectacular but IBM made sure he knew it was all about him.

Abel’s second night took an abrupt turn for the worse when the next lady walked in. Looking like a crack whore in a thousand-dollar mini skirt, Abel’s new date introduced herself as Oracle. Upon seeing her, Abel’s first reaction was to put his hand on his wallet. Unlike his prior date, Oracle made clear the world revolved around her. She talked all night about the great many tricks she could do for Abel, but all for a price. Abel was thoroughly distracted from the happy ending between trying to keep an eye on his wallet and worrying he might catch something from his new date.

On the third night, Abel hid in his closet, fearing a repeat of the second night. Instead, he was pleasantly surprised when a curvaceous, girl-next-door redhead came in to his room and introduced herself as Microsoft. Although not much for conversation, Microsoft had curves in all the right places and not a wrinkle to be found. Abel got a chuckle over how she liked spinning in the flowers and talking about her MySpace page. The happy ending was very easy; so easy in fact that he wondered how he would ever be satisfied with anything more complicated again.

Abel’s plight is one that many Java developers have run through their head this past week as news made it out that Oracle had purchased Sun Microsystems. IBM, the aging monstrosity it is, would have killed Java through neglect. Oracle, the crack whore of software, will possibly kill Java through trying to monetize (read “nickel and dime”) the development community to death. And then we have Microsoft, with C# 3.5, whispering sweet nothings in developers ears.

So what is a Java developer to do? I fretted over this most the week so that I could be more rational when I put the pen to it. IBM owning Java would not be pleasant due to IBM always managing to be five years behind the technology curve. While that might be popular with large enterprises, it does nothing to please the alpha geeks that made Java what it is today. We can joke about Java being the new Cobol. IBM would have guaranteed it.

About the only worse possibility would be for Oracle to own Java, which is where we find ourselves today. Whereas Sun was an engineering company, Oracle is a sales company, and software developers strongly prefer dealing with the former. I have no doubt that Oracle will try to find a way to monetize Java, to the detriment of the community.

Finally, we have the wildcard Microsoft. C# is not much a leap for a Java developer. And having sampled their forbidden fruit, there is definitely something to be appreciated. Microsoft would be more than happy to offer disenfranchised Java developers a new home.

But ultimately, there is another option, as Rod Johnson pointed out. Through the open source community, Java has grown beyond any one vendor. Yes, Oracle may try and stifle this community through a future Java release under a restrictive license which breaks compatibility with open source Java, but that would only cement their irrelevance.

Oracle’s ownership of Java means that the fate of Java is now in the community’s hands and not a vendor’s. There will not be much love for Oracle with Java developers, so I expect the next version of Java anyone cares about to called JDK 7 and not Java 7. And it will be a true, open effort of dedicated developers and the Java ecosystem they have grown. So as tempting as it is to cave in to C#, I’m going to stick with Java for now and see where we can take this.

Slick Speed

One of the big questions that people have had about ExtCore is why didn’t it make use of the Sizzle selector engine. That was one of the questions I wanted to get answered at the Ext Conference last week, and I managed to pin down one of the core developers to get an answer. Their opinion was that Sizzle is too large and too slow. I don’t really care about the size aspect. They all tend to pack down into the 25K range, but I was interested in the speed comment. Like a lot of folks, I was led to believe that Sizzle had a lot of, well, sizzle. So in the interest of getting to the bottom of the story, I did a little unscientific testing of my own using Slickspeed, which tests selector engine performance.

I grabbed the latest of the main libraries: ExtCore (beta1), JQuery 1.3.2, Dojo Core 1.3.0, Prototype 1.6.0.3 and the Sizzle engine by itself. I ran Sizzle by itself because although JQuery uses Sizzle, the version of Sizzle in JQuery 1.3.2 is 0.93 while the current version on the Sizzle website is version 1.0. I used the latest version of Slickspeed and made three runs in IE8, Firefox 3.0.8 and Chrome 1.0.154.3. Yes, I disabled Firebug in Firefox. My dev desktop is a rather beefy Windows Vista 64-bit machine with a quad-core 2.66ghz CPU and 8GB of RAM. I did a complete page refresh between runs to start relatively clean. I was going to relaunch the browser between runs, but it ended up not making much of a difference.

First up was the latest and greatest from Microsoft, Internet Explorer 8.

  • Prototype: 440ms
  • Dojo: 61ms
  • JQuery: 48ms
  • ExtCore: 80ms
  • Sizzle: 46ms

ie8

The image shows the results from the last run. I was actually surprised that IE8 did reasonably well. One thing is clear, friends don’t let friends use Prototype with Internet Explorer.

Firefox was a slightly different story. The selector engine in Prototype still got its clock cleaned, and ExtCore swapped around with JQuery and Sizzle:

  • Prototype: 145ms
  • Dojo: 64ms
  • JQuery: 77ms
  • ExtCore: 49ms
  • Sizzle: 71ms

ff3

It was interesting both Sizzle implementations slow down in Firefox. I would wager that the Sizzle folks made a conscious decision to optimize the core selector engine for the most widely used browser (Internet Explorer). ExtCore leaps ahead with Firefox 3, while Dojo is still pretty consistently finishing in the middle. Oh, and friends don’t let friends use Prototype with Firefox either.

Chrome is an absolutely game-changing stunner of a browser. Based on the selector benchmarks, the developers for all these engines should be offering to have children for the Chrome developers:

  • Prototype: 13ms
  • Dojo: 7ms
  • JQuery: 8ms
  • ExtCore: 13ms
  • Sizzle: 8ms

chrome

Even lowly Prototype with Chrome makes any of the other libraries running in Firefox look like they’re standing still. Chrome is simply ungodly fast with all them. ExtCore could probably still use some tweaking, but we’re talking about a 7ms delta between the fastest and slowest.

So the Ext team’s claims for Sizzle being slower are only partially true. Sizzle appears to be faster in Internet Explorer, while the story flips around in Firefox where ExtCore is faster. All of them, even Prototype, are fast in Chrome. Pray for the day when Chrome takes over the world. Until that time, It looks like all them (Dojo, JQuery/Sizzle, ExtCore) are good in IE and Firefox, with the nod going to JQuery/Sizzle for Internet Explorer, the browser market share leader. And you really, really don’t want to use Prototype until all your clients have moved to a modern browser with native selector engines, or Chrome.

One glaring omission is that I didn’t test with IE7 or IE6. Using either of those browsers is also on my “friends don’t let friends…” list. It would be safe to say that they would both be slower. As I don’t have either installed on any of my computers, I would be happy to add an update for anyone who wants to run the tests themselves.

The Ext team earns some slack in their Internet Explorer performance as they are only a beta compared to the others. I’ll rerun the test again when ExtCore goes GA. And on a final note, here is the config.ini file for Slickspeed in case anyone wants to try the benchmark themselves, or you can grab the whole Slickspeed install with the selector engines configured.