Wednesday, June 24, 2009

Fulfilling a Dream

Before I started my new job, I had many conversations with the Senior Software Architect discussing domain-driven design, isolating the business layer, and so on. He had faith in this approach and selected it for their new architecture. Now I get to participate in that new architecture.

It has been a good experience so far. The business layer is a host of separate projects that expose themselves as internal business services with data transfer objects matching the domain. The separate presentation layer is an MVC that consumes these services. More specifically, APS.NET MVC controllers are communicating to the business layer application services through WCF proxies, wired together using the Unity DI container. These technoligies have made it realtively easy to adopt this architecture.

It's a breath of fresh air from JEE's stateless session beans, Struts 1.1 and a host of anti-patterns. To be fair, my ex-colleagues and I recognize the error of our ways and architectural limitations (or at least impeadances) imposed by the technologies; however, that application is already into its maintenance cycle and there are not enough people there with the faith to purposefully move towards a better arhitecture.

Monday, June 22, 2009

Losing My Religion

Many programmers defend their languages religiously, and I've done the same for my language of choice, Java, at least for the sake of starting a fight. However, just today I started a new job as a .NET developer. I'm quickly overcoming the hurdles of switching language, libraries, platform, source control, issue management -- not to mention an enitrely new business space for me.

Its amazing how undifferent a language can be. I had always theorized as much, but now I'm experiencing it first hand without the safety and controls of a labratory experiment. The concept of source control is largely the same between Subversion and Vault. The language keywords are finite enough to be easily translatable between Java and C#. Many of the libraries from Java also exist in .NET (Spring.NET, NUnit, MemCache, etc.). The biggest difference so far has been the IDE -- Visual Studio 2008 vs. eclipse.

I'm finding many of the features I love in eclipse to be absent in Visual Studio 2008 (or, at least, undiscoverable to me as of yet). For example, what I affectionately call the "God Key" in eclipse (Ctrl+1) -- because it can do anything -- doesn't seem to have an equivalent in Visual Studio. On the other hand, because Microsoft controls so much of the stack things that were frustratingly difficult in eclipse are a breeze. For example, to run my project on a server, I simply click "Run" and its got a local test server all prepped for me. In eclipse, its a nightmare of getting various ports and Server Runtimes all configured correctly (the price of freedom, I suppose).

So far, its been easier than I thought to switch, but this switch has only just begun.

Tuesday, June 9, 2009

Nokia 5800 XpressMusic

I recently switched from a Nokia 6300 S40 to Nokia 5800 XpressMusic S60v5 all-touch phone. This is despite my ranting that I'd never use an on-screen keyboard and had to have a tactile keyboard. But, after a week or so, I'm finding that the on-screen keyboard with haptic feedback isn't that bad. My accuracy has already improved. With my Zagg Invisible Shield screen protector, the screen is a bit less slick, so my fingtertips don't slide as I type (but my fingertip also doesn't slide as well when I drag). And having an s60 OS means there's even more software available. Early verdict: win!