Fall 2009 Web Browser Outlook

The names are familiar: Firefox, Google Chrome and Safari. These relatively new browsers have been shaking the foundations of Internet Explorers complete victory over Netscape. These new browser are implementing fresh ideas and breaking out of the crusty browsers of the early 21st century. With the second browser wars in full swing, lets see where things stand and what’s coming.

Mozilla Firefox 3.6

The Firefox team is focusing on startup performance, JavaScript performance, lightweight themes, and a few new features for developers. Firefox 3.6 is expected to arrive Nov 2009.

After that, Firefox 3.7 will boast a revamped user interface, a WebGL implementation and ongoing speed and responsiveness improvements.

Safari 5?

Safari 4 was just released, and we have not heard any official statement from Apple what features Safari 5 will include, but looking at WebKit we can see what core browser technologies are being developed. WebKit has added geolocation support, HTML 5 draggable, and HTML 5 forms patterns and required attributes. What directly user visible changes will Apple make? We will have to wait and see.

Internet Explorer 9?

The next version of IE is still quite a ways out (3 years if you look at the release time-frame of IE 7 and 8 ) but it’s expected to boast many new HTML 5 features including native video and audio playback. Internet Explorer 9 should be quite a feature packed release with HTML 5 goodness, better performance, and improved standards support.

Opera 10.10

Opera 10 was just released this month but the team is working on Opera 10.10 with Unite. So far we’re waiting to hear more from the Opera team about what they are working on.

Google Chrome 4

With Google Chrome 3 being released, the Chrome team and external developers are hard at work making the browser cross platform with support for OS X and Linux. User end features include bookmark synchronization, extensions and surly will include more JavaScript performance enhancements.

Metatunnel by FRequency - WebGL Demo
Metatunnel by FRequency - WebGL Demo

Overall the competition looks quite healthy and browsers are being enhanced to be the Operating System of the future.

WebGL Coming in Firefox 3.7

Vladimir Vukićević, the pioneer of bringing the well known OpenGL standard to the web, has just blogged using Firefox to render Spore creatures. Check it out, it’s a pretty impressive demo of this upcoming web standard.

Development on what would become WebGL started back in 2007 with Canvas 3D as an extension for Mozilla Firefox 3.0. Since then it has grown from a single project to an open web standard through the Khronos standards group. The standard is currently under development with a target release date of first half 2010.

Firefox isn’t the only web browser to be experimenting with WebGL, Google and Opera have also pledged to support this standard. The WebKit source code has recently picked up preliminary support.

The web has mostly stayed 2D, but with the advent of CSS Transforms and WebGL, the browser is moving into new territory. The web is evolving into the most important platform of the future.

Software Complexity

Have you ever worked on a software project where you had no idea what would happen to other parts of the system if you made a code change? I have, but I have been able to ask developers on my team that know the system better than I do.

If it’s a larger software project and nobody on the team knows what a change would do, then it would be fair to say the software is overly complex and making forward progress is like wading through a swamp. Software projects, especially larger software projects absolutely must have code that is understandable. When designing software applications, a key component to the architecture is managing complexity to a workable level.

Managing complexity is the most important technical topic in software development. In my view, it’s so important that Software’s Primary Technical Imperative has to be managing complexity.

– Steve McConnell in Code Complete

Unless its a small project, no software developer can contain the design, constraints, and all the technical details in their head at the same time. Software must be made modular so that a developer can work on one section of code without worrying about the rest of the project.

How do you deal with complexity?

  1. Break up the problem into sub-problems and sub-tasks so you don’t have to solve everything at the same time.
  2. Contain the complexity to one part of the code.
  3. Before you solve the complex issue take a step back and make sure you have to solve it that way. There might be a vastly simpler problem that you can solve that will still fulfill your requirements.

Tackle software complexity before it defeats your software project.

Fixing MySQL Gem on Snow Leopard

NOTE: See my latest post for a solution for OS X 10.6.4 and later

A fresh Snow Leopard (OS X 10.6) install does not have the mysql gem installed, and installing it fails because of missing header files:

Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install mysql
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

To correctly install the mysql gem:

  1. Download and install the MySQL package.
  2. Install XCode that’s bundled with Snow Leopard
  3. Install the gem for your architecture (use -arch i386 if you have an Intel Core Solo or Intel Core Duo processor):

# sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql-5.1.38-osx10.5-x86_64/bin/mysql_config

Install Git on Snow Leopard

To install git on the latest version of OS X (10.6), use the git- (or later) package from git-osx-installer. So far it works fine for me on Snow Leopard.

I like how OS X comes with a large number of open source packages such as PHP, Apache, Vim, Subversion and Ruby on Rails; however, I’d really like to see Apple add Git to the list.