Monday, July 23, 2007

Amazing Grace (Movie)

There is an interesting new movie coming out about William Wilberforce's fight for the abolition of slavery in the British Empire. Of particular interest is his mentor John Newton, an Anglican clergyman who had once been a slaveship master, before becoming convinced that it was ungodly - and who is best known for his famous hymn Amazing Grace which captures the spirit of his conversion (see lyrics below).
This is a film I'm really looking forward to seeing, not least because it stars Ioan Gruffudd (of Hornblower fame). I've blogged more about the movie, and modern slavery on Cracked Jug.
“Amazing Grace”

Amazing grace, how sweet the sound
That sav’d a wretch like me!
I once was lost, but now am found,
Was blind, but now I see.

’Twas grace that taught my heart to fear,
And grace my fears reliev’d;
How precious did that grace appear,
The hour I first believ’d!

Thro’ many dangers, toils and snares,
I have already come;
’Tis grace has brought me safe thus far,
And grace will lead me home.

The Lord has promis’d good to me,
His word my hope secures;
He will my shield and portion be,
As long as life endures.

Yes, when this flesh and heart shall fail,
And mortal life shall cease;
I shall possess, within the veil,
A life of joy and peace.

The earth shall soon dissolve like snow,
The sun forbear to shine;
But God, who call’d me here below,
Will be forever mine.

Saturday, July 21, 2007

If architects had to work like programmers ...

Comparisons are always suspect, but this humorous piece collapses several of the common recurring problems in software projects into one hilarious piece that portrays what it would be like if architects had to work like programmers:
Please design and build me a house. I am not sure of what I need, you should use your discretion. My house should have between two and forty-five bedrooms. Just make sure the plans are such that the bedrooms can be easily added or deleted. When you bring the blueprints to me, I will make the final decision of what I want. Also bring me the cost breakdown for each configuration so I can arbitrarily pick one...

Sunday, July 15, 2007

Rob Walling's developer archetypes

I've mentioned Rob Walling's developer archetypes before, but my first week in my new position has brought home to me some of how I fall across those archetypes (and I'm egotistical enough to believe it is of interest to you). This is how he sums them up:
The archetypes are:
  • Trainer/Author -
    spends the majority of his/her time teaching, training, writing articles and books, and otherwise helping others learn how to program.
  • Coder - a hard-core developer. Into design patterns, the next cool and experimental language constructs, and talking about web service proxy generators.
  • Lead - excellent organization skills, driven to make projects succeed, and skilled at leading others.
  • Technologist - into all the new applications; would rather integrate than write code.
I mulled about this myself, but I didn't like the answers I got, but I know that's never a good reason to ignore something. This last week, it all came together for me. I'm in a senior developer position - not team lead, not project manager, not even consultant. Of course a fair bit of the week was spent settling in (getting the right keyboard for instance), but I found that by the end of the week I've done exactly four new lines of code, amended about 30 lines of code, re-designed 9 web page wireframes and yet feel valuable, energised and eager to go to work each day.

This settled an internal argument I'd been having about Coder vs. Technologist. I am definitely more of a Technologist than a Coder, but I'm more of a Coder than anything else.



30%
Coder


40%
Technologist



20%
Lead


10%
Trainer/Author

The part of my week that I'm most proud about? Getting a mental picture of how the whole company operates, particularly with regards to software development and deployment. I now understand how the whole hangs together - yet I'm sure a pure Coder would not be interested in that, it's more of a sign of a Technologist/Integrator. In any case it justifies for me the decision to go back to a development role, especially in light of Rob's recent post about why good developers re promoted into unhappiness. I'm far happier now than I was when all I ever got to see was Visio network diagrams, the occasional test script and tons of paperwork, meetings and decisions about what others should do.

Thursday, July 12, 2007

Samurai.fm - music to code by

Now that Pandora has closed access from international listeners, my new favorite internet radio station is samurai.fm. With the usual eclectic Japanese way of bringing together music from everywhere it offers some cool, weird and inspiring music to code by.

Wednesday, July 11, 2007

What is .NET 3.0 and Nested Masterpages in VS 2008

Our tech lead has encouraged me to look into .NET Framework 3.0. As the diagram below shows, it is basically good ol' .NET Framework 2.0, plus a few new funky 'Foundation' elements (I'm sure Windows CardSpace was meant to have 'Foundation' at the end):


As you'd expect from Microsoft there is lots of good information online, and it makes for interesting reading. Unfortunately it is presented with the usual breathless wonder at the daring of Microsoft to go out on a limb and provide us with the very latest and greatest technologies:
“Use the .NET Framework 3.0 to build applications that have visually compelling user experiences, seamless communication across technology boundaries, the ability to support a wide range of business processes, and an easier way to manage your personal information online.”
All of that is available without .NET Framework 3.0, but I guess it was better than saying:
“Use the .NET Framework 3.0 to build applications where you actually have to provide what the designers want, that use Google/Yahoo accounts, play nice with SOA and have a consistent way to implement the workflow that makes up 0.5% of your application.”
Sarcasm aside (marketing is probably doing their best), the extra bits are well worth having. Well, okay, CardSpaces may become the next .NET Passport (remember how popular that was!?) but the rest of the package looks genuinely useful.

Windows Presentation Foundation (WPF)
I have my doubts about how Agile WPF will let a team be, I mean it's great when you mix designers into the development team, but I feel it may allow too much 'frozen design' at the start of a project, with the expensive designers being expected to hand across their tidy XAML code to the developers who are expected to not deviate one iota from it. However it may be less relevant to cross-browser websites anyway, as from what I've seen (and here) it is aimed fairly squarely at thick-clients, and the ActiveX control for WPF/E makes it fundamentally not cross-browser friendly.
[UPDATE: Here is a great blog post about why designers should be involved in development.]

Windows Workflow Foundation (WF)
I first got interested in workflow-enabling applications back in 1994 and have found it easiest to create them in Lotus Notes and SharePoint/InfoPath. However my resume is not littered with dozens of successful workflow projects. Why is that? The main reason is that workflow is usually a small subset of any business problem, and the meat of the issue is within each task. The exception is when the task is simply data capture, or is executed in an existing legacy system that needs to be more closely integrated with others to enable more efficient workflows. In the first case, WF is overkill (and may have significant performance gotchas), in the second it offers a genuine solution (especially in conjunction with WCF). So I'm interested, but I don't think I'll be wrapping every application I create in workflow just because WF exists.

Windows Communication Foundation WCF)
This looks genuinely interesting, an easy way to implement SOA within .NET, and of course extensive support of SOAP. More interesting (IMHO) is that it also supports Representational State Transfer (REST) and can be extended to support ATOM (for RSS) and JSON (for lightweight AJAX) formats. I previously mentioned how I was re-doing the Agile Web Development with Rails tutorials as a way of getting a better handle on REST, and mentioned a great slideshow on RESTful development(see 3rd slideshow at bottom of post). I can think of a couple of ways we could use this right away, but the exciting bit is really to think through REST and consider whether it adds value to our application design (or not).

Lastly, Scott Guthrie has a great post up about how Visual Studio 2008 will support nested master pages giving us WYSIWYG support, and (even better) we can do all this with .NET Framework 2.0, without needing to go to .NET Framework 3.5 (yay!). I've been acquainting myself with master pages in ASP.NET 2.0, somehow all the projects I've worked on in the past have managed not to use this feature, then again most of my ASP.NET projects were 1.0/1.1.

Thursday, July 05, 2007

New .NET Role

I'm about to start a new permanent role at a .NET web company in Sydney. I've been lamenting the fact that I won't get to play with Ruby on Rails at work, mainly because I love the simplicity of the Model-View-Controller architecture it forces on you. Then, lo and behold, what should I stumble across but MonoRail, a project to bring the MVC web framework of ActionPack (what drives Rails) to .NET (1.1, 2.0 and Mono).

So I may end up escaping WebForms horror of one-form to a page, abstracted abstractions, and the cross-browser nightmares that follow.

Well, OK, a guy can dream can't he? ;D

[UPDATE: That sounds like I'm not excited about the new role, the fact is I am, especially because we'll be using Scrum, and the guys seem friendly and smart. It's just that I was coding dynamic web pages before WebForms came along, and I hope to be doing so well after they're relegated to the scrapheap.]