Programming Choices
The past few months have pretty much been both a blur and a grind. Most of my work time has been spent on a classic big, dumb enterprise Java application. They’re a drain to write, and I’ve found it also saps my creativity for trying new things. Java, powerful as it may be, really has become the new COBOL and I definitely don’t want to be one of the grey-beards left maintaining crap code in another decade.
The tough problem is there are too many choices today, and Java ends up being the safe bet by default. There are several other technologies out there that I find more interesting. The challenge is finding the time and project to use them on.
WordPress – Yes, don’t laugh, I said WordPress. We finished up a custom WordPress site for a local home builder and it was a blast. WordPress has grown in to quite the little powerhouse and you can almost think of it as a mini web framework. PHP is a bit kludgy, but no worse than many alternatives. I’d like to get a chance to do another WordPress and push it a bit father.
NodeJS – I really enjoy working with NodeJS. As I’ve mentioned in a prior post, it reminds me of Java in the JDK 1.1 days. NodeJS is fast to work with with, and allows you to build an application about anyway out want due to an emphasis on tightly-focused “micro modules”. Think JavaScript Legos. The downside of NodeJS is it tends to be a lone genius technology. I couldn’t see a large team working on a NodeJS application.
Scala – I’ve never had such a love/hate relationship with a language as a I do with Scala. It feels like a modern language but it is still, at its heart, Java. This can be both a good thing and a bad thing. In some ways, it feels like it tries to be too different from Java, making for an abusive learning curve. And if I wanted to stay on the JVM, I could just keep doing Java and cut through the complex abstraction. Scala has moved to my “watch, but don’t play” list.
There are always other little things that pop up too competing for my attention. Now we’re firmly into spring so I can bust out of the winter doldrums and try to get creative with my coding again. I suspect though I’ll be slitting braincells between WordPress and NodeJS.
A Majority in the Minority
I’ve deployed a couple major web projects recently, and one of the biggest pains has been cross-browser testing. Most developers, including me, use Chrome or Firefox for development. They’re both very fast browsers with excellent development tools, and are on the leading edge of web standards support. But then there is always our special-needs friend, Microsoft Internet Explorer, and version 8 in particular. We’ve spent a hell of a lot of time trying to get some beautifully designed sites to play nicely with the abomination that is Internet Explorer 8.
After one of the larger sites went live, I had a chance to check out the Google Analytics data for the site and review the user agents hitting the site. I was curious if the effort we put in to making the site play nicely with Internet Explorer 8 was worth the effort. We also spent a lot of time creating a responsive design, so that was another set of clients I was curious about. I ended up being pretty surprised by the data.
This site is not a technology site, and your mileage may vary, but the visitor traffic is probably pretty representative of an average American adult population. I anticipated Internet Explorer to account for around 50% of the user agents. The actual number was much lower.

Internet Explorer effectively held the majority among the minorities. The really interesting one was Safari. If we combine the in-app and regular version, Safari was actually the winner. This probably comes from the fact 30% of the site traffic came from mobile sources.
Since Internet Explorer has a major problem with users clinging to outdated versions, I was also very interested to see the breakdown of versions in use:

On the bright side, a strong majority are on IE9, which can almost pass as a modern browser. But nearly 30% were still clinging to IE8, a horrible, abomination of a browser that Microsoft should still be embarrassed about. In spite of the “millions of copies” Microsoft has shipped of Windows 8, only a tiny percentage of the users were on IE10. In fact, IE10 only beat IE7 by one percent.
So here are some insights from these stats:
- The days of Internet Explorer owning the show are over. Test for it, but don’t pander to it.
- IE10 doesn’t matter (yet?). This is going to be a huge problem for Microsoft, but no one outside the wild-eyed cult of .NET developers gives a damn about IE10 right now. For today, test for IE9 and you’re fine, unless you are specifically targeting some IE10 touch features.
- IE8 is the new IE6. The browser is an eon behind anything else out there and will be the bane of web developers for years to come. It, alone, is enough to drive someone to an iPad or Android tablet.
- You must embrace responsive design. From a pleasing-your-users standpoint, a responsive design that renders correctly on a phone or tablet is even more important than being IE8 friendly.
Skyfall and Rebirth
I finally went and saw the latest James Bond movie, Skyfall yesterday. I’m a huge James Bond fan. I remember coming home from high school in Germany and putting in a James Bond film on the VCR because AFTRS television was really bad during the after school hours.
The new film was both beautiful and thought provoking. I hadn’t seen any of the previous Daniel Craig versions of James Bond, and was really impressed with his interpretation. The cinematography was beautiful, even trumping Prometheus, which, even though the story was a train wreck, was visually stunning.
The thought provoking part of Skyfall was the whole story line on middle age. While Daniel Craig plays a slightly older version of Bond than himself, in real life he is actually two years younger than me. The underlying plot point of “is he too old” got me thinking about my own trajectory.
I share James Bond’s unwillingness to accept his own mortality and soldier own. I’ve always taken the perspective that you are really whatever age you want to be. That works until the mid-40s when your face starts to betray your actual years of hardened experience. In my case, a decade in the USAF and a war abroad contributed to a lot of those wrinkles.
I was actually inspired by the film. Here was Daniel Craig, playing a middle-aged James Bond, keeping strong and carrying on. Living in the past is a fool’s game, and Craig’s version of Bond was unrepentant of his age and never looked back. Craig is also in better shape at 44 than a lot of my fellow geeks in their 20s, and that is the real inspiration.
I refuse to call it a mid-life crisis, but Daniel Craig has actually inspired me. I need to get off my ass more and actually get fit and care about my health. To maintain a mental edge, you also need to maintain the physical edge, and I have neglected that aspect for too long.
Tim Ferriss has also been a big inspiration of mine with the Four Hour Body, and he preaches one of the best ways to achieve a goal is to make it public, so I’m going to start asking myself “what would Daniel Craig do?” and turn myself around for 2013. I have three simple goals for myself for next year:
- Fit in to my flight suit: I’m at over 200lbs now, but I still have two of the original flight suits I was issued by the USAF twenty years ago. I plan to fit in to them again without looking like a stuffed sausage. As an added bonus, I’ll be able to fit into the leather flight jacket I have too.
- Complete a 10K run: The last time I ran a 10K was in 1997 when I ran in the Pacific Grove, CA Run to the Beacon. I wasn’t a competitive runner, and ran it with a few friends for fun. In 2013, I will run another 10K run and live to tell about it.
- The GORUCK Challenge: This is the tough one. I’m a huge fan of GORUCK bags. They are high-quality, American-made bags created by some ex-Special Forces guys in Montana. My daily laptop bag is a desert tan Radio Ruck and I love it. They also put on the GORUCK Challenge, which amounts to a night of brutal SEAL training just to say you did it. It’s about camaraderie and fitness, and I want to do it.
So these are the goals. And I’ll be asking myself the Daniel Craig question every day. I’m hoping my crazy fit friends at work will be there to help out, and I would love to see us field a team at Credera for the GORUK Challenge next year.
Things They’ll Never Know
I picked up a new camera a few weeks ago. It’s a current generation digital monster, and it takes phenomenal pictures, almost too easily. I’ve been a long-time photographer. I had a B&W darkroom in a basement closet when I was 12-years old. I had a camera pretty much glued around my neck through high school as the year book photographer. I even started college as a photojournalism major, before realizing how bad the career prospects are.
I look back at how photography has evolved and there is a whole lot of history, tools and techniques modern shooters will never know. I love me some Photoshop, but I’ll always have a nostalgic weak spot for these things:
- Nikon FM3A – the best all-manual SLR ever made
- Bulk Film Loders – to save money, we bought film in 100′ rolls and loaded it on to 35mm cassettes ourselves
- Tri-X B&W Film – ISO used to matter. Shooting indoors with and without flash usually meant Tri-X in the camera
- Split-Image / Microprism Focusing – A lot of people never knew a day without autofocus. This was how it was done prior.
- Deketol Devekoper & Indicator Stopbath – These were the first two steps in the chemical bath for processing enlargements. They have a distinctive smell that brings about a reaction similar to eggnog at Christmas for greybeard photographers.
- Rolleiflex TLR Camera – I always lusted after one of these. Now, my digital camera takes higher quality pictures.
- Kodak Polycontrast RC Paper – Contrast for prints was controlled by putting purple filters in the light path during enlargements. The Kodak paper was the baseline, although I also liked the Ilford papers a lot.
- Bessler 23C II Enlarger – This was the equivalent of the WW II Jeep in the darkroom. It did it all and was built like a tank.
Times have to change, but it’s sad a lot of kids starting in photographing will never these things, or know that photography used to be a lot of work.
The State of ExtJS
I’ve been a big fan of Sencha’s ExtJS since I started using it several years ago. When I was first exposed to the framework in its v2.0 days, it was a breath of fresh air compared to anything else out there. It had a well-documented, powerful framework and a comprehensive set of widgets. The grid widget alone scratched enough itches that the rest of the framework was gravy.
I haven’t been able to use it on any projects, though, for a couple years, but I have tried to stay up to date on the releases. Unfortunately for Sencha, in the intervening years, the internet has started to catch up and I’ve been taking a much more critical eye to ExtJS. There are still several good parts to ExtJS, but there are also a lot of bad things that will limit its suitability for any future projects.
The Good Parts
- The Documentation : The guys at Sencha have continued to do an excellent job at creating documentation for ExtJS. As a Java developer, I found the API documentation pretty similar to JavaDoc, and thus instantly appealing. The documentation has continued to improve and now includes extensive sample code and even videos. This is an area where ExtJS leads the industry.
- The MVC Framework : While there is significant competition in the JavaScript MVC space, most of the competition is still in catch-up mode. ExtJS still has one of the most well thought out and comprehensive MVC frameworks available. Similar to Rails, it even provides a consistent project configuration and directory hierarchy to improve the maintainability of ExtJS applications.
- The Support : The support forums for ExtJS are first rate. Questions get answered quickly and the Sencha team does a good job staying on top of them. Sencha also offers commercial support and training, which is critical for enterprises where developer skillsets are hit and miss.
- The Ecosystem : Sencha has built a comprehensive developer ecosystem around ExtJS. This includes command line tools (Sencha Command), design tools (Sencha Architect), and Eclipse plugin, charting and a mobile framework (Sencha Touch). Yes, these are commercial offerings, but from the perspective of the enterprise users they are targeting, Sencha provides a one-stop-shop for building rich JavaScript RIA applications.
The Bad Parts
- Outdated Theme : This is the biggest area where Sencha has been caught with their pants down. When I started using ExtJS, everyone was trying to web-enable desktop applications. Sencha provided the typical desktop look-and-feel in HTML widgets which made it perfect for implementing intranet applications to ween users off of Visual Basic. Today, the objectives have completely flipped. Even Microsoft is working to desktop-enable web applications. Clean, modern web applications have set the standard for user interfaces and the theme for ExtJS still looks like Visual Basic for the web.
- (Un)Resonsive Design : The ExtJS library is designed for desktop browsers. But the world is moving to a post-PC world with BYOD Tablets and Smartphones. Just try viewing the Feed Viewer demo application on an iPad to understand how badly ExtJS is being left behind in the area of responsive design. Yes, Sencha has a mobile framework, but we’re moving to a world of responsive designs that we expect to scale satisfactorily to an device.
- The Competition : While the ExtJS MVC framework is still at the top of the heap, the competition is climbing fast. Frameworks like EmberJS, AngularJS and Backbone continue to close the gap, and due to their open source nature, there is a good chance they will overtake ExtJS in the near future.
- Monolithic vs Micro : ExtJS is a monolithic framework. It has an answer for every problem and you need to embrace the complete paradigm. Using ExtJS means you don’t want to play nice with others. The web world has swung the other direction towards micro frameworks, or pulling together only the small, best-of-breed libraries you need. JQuery is usually the base, and then you pile other things on top it like RequireJS for code structure, Twitter Bootstrap for the user interface and LESS or Compass for CSS.
- Learning Curve : ExtJS is not a casual framework. Learning the framework requires a lot of work and it is not something you decide to use for a small project every now and then. You would pull your hair out going through perpetual ramp-up. In some ways, ExtJS has become the PowerBuilder of web development. It is an extremely powerful framework that people build careers around, but is way too complex for a casual user. The high learning curve can make it extremely difficult to staff a qualified team for a large project.
- Bad Blood : I do not fall in to this camp, but it still amazes me to this day how much bad blood there is in the developer world over the ExtJS licensing fiasco from a few years ago. A lot of developers I know who are familiar with ExtJS will literally start frothing at the mouth if the name comes up.
- Uncertainty : Sencha is still a VC-funded startup that is going to have to get bought by someone for the vultures to get their pound of flesh back. As the web evolves, it is going to be increasingly difficult for them to find a suitor. Would anyone still have as much enthusiasm for ExtJS if it were owned by SAP or Oracle?
The Sweet Spot
ExtJS really only has one sweet spot today: developing data-centric intranet applications that users will spend all day in front of. These are scenarios where you would have used a VB or WinForms application. Nothing comes close to ExtJS in solving this problem.
That sweet spot is shrinking. Users are expecting their work world to mimic their private worlds. They like the clean designs of Facebook, Twitter, Google+, etc… and are increasingly expecting even in house applications to function and look like what they’re accustomed to. ExtJS does not fit the bill for this future.
What to Do
If I were Sencha, I would be hiring some top UX talent and coming up with a cleaner, more internet ready theme for ExtJS while it still has a chance for relevancy. The theming framework also needs the equivalent of ThemeRoller and several pre-built, high-quality themes distributed with the framework. The theme also needs to be responsive. You can’t just steer people to Sencha Touch to solve the tablet problem.
If I was already invested in ExtJS, I wouldn’t change anything right away for existing applications but I would carefully think through using it for anything new. I would ensure I stayed current with the versions to ensure my teams could take advantage of the awesome MVC framework, but I would be keeping an eye to a future without ExtJS.
If I were building a new internet facing application, I wouldn’t touch ExtJS with a ten-foot pole. The outdated look-and-feel, and the difficulty in themeing it, is an absolute deal killer. I would start with a solid micro framework like AngularJS and layer it on top of Bootstrap and LESS.
I don’t want to be too harsh on the Sencha guys. I’ve met a lot of them, and I think they’re great and can absolutely rebound from their problems. But similar to an alcoholic, the first step is acknowledging you have a problem. And that problem for Sencha is that ExtJS is no longer ready for today’s internet. Sencha has to resolve this, because even if they only want to focus on enterprise intranets, that world is changing too.

