Thursday, June 28, 2007

Interesting Take on an Interesting Email

I subscribe to the CodeBetter.com blog. Very interesting stuff (if you're a programmer).

Apparently an email that was circulating around in Microsoft has leaked out. It's a "transcript" of a conversation between a Microsoft manager and their new hire - a former Google employee who had worked at Microsoft before. The topic of the conversation is comparing Google's work environment with Microsoft's. It's been commented on a thousand times. Now I've finally seen it and read it.

Here is a CodeBetter post commenting on the email. (There's a link to the email at the top of the post.) I pretty much agree 100% with his conclusions. See what you think:
http://codebetter.com/blogs/eric.wise/archive/2007/06/27/google-not-for-me.aspx

Best Software Design Tool EVER

I'm reading Domain-Driven Design. Fascinating book. Written by a strong proponent of agile development methods, one of which is Extreme Programming (XP).

I'm also still thinking about writing a personal project management app. Something to help track the many things on my work plate, and all the details involved in each (especially paperwork), while leaving enough of my small mind to actually be productive.

So I decided to combine these two interests. I still consider reading the book to be my primary activity at home. But, needing a break from the book last night, I decided to try an XP-inspired technique and do some design on the project app.

So I got some index cards, and started a domain model.

I worked in pencil, knowing that I'd be making changes. And, sure enough, I was erasing enough that I stopped to get a "click eraser". But I was working very quickly - making cards for the objects I already knew about, and quickly filling in holes I didn't realize I had. Then I went through and added properties to each, and labeled each as either a value object or an entity. Last, I took up half the living room floor to lay them out to spacially view the relationships. This led to more properties and objects, as the relationships became obvious.

I've never had so much fun designing software.

I realize this was the easy part. Writing the classes, sorting out the logic, and finding bugs in the model have yet to be done. And the other layers must be written, too. (I dread UI more than infrastructure, but neither is fun.) But that's when you start to see results, too. I enjoy writing unit tests (or, rather, seeing them pass) because of the sense of accomplishment - the software I wrote actually works! And even the first iteration will save me time and confusion at work.

I worked on a Ruby on Rails version of this for months. But I abandoned the project, because learning Rails while designing a complex app in a relatively new language/environment was just too much. I expect that using my familiar environment of gvim, nant, mono, and nunit on my MacBook will limit my work to the app itself, and Domain-Driven Design will help me manage the app's complexity. (No, it's not an enterprise-level app. But for one guy to do at home, especially with three kids, it's a lot.) I also have several ideas for expanding the scope of this software. I don't know how to plan for that level of complexity with Ruby. I do know how to plan for it with C#.

I'm actually excited about this project now! I'm looking forward now to planning a few iterations (2-3, most likely) and working on the first to see how iterative development works for me at home.

Now where did I put those index cards...

Friday, June 15, 2007

Ubuntu Studio

OK, I'll admit it - I'm a little slow. I just now found out about the release of Ubuntu Studio.

This could become my favorite OS, bar none. Especially in light of the media work I do for my church. I'll do what I can to get at least them to devote one machine to Ubunto Studio in the A/V booth. At the very least, it would be perfect for recording services. I'm definitely going to install it at home.

Screenshot tour here.

Wednesday, June 06, 2007

Celtx - Open-source Production Writing/Collaboration

I'm sure both of my readers are well aware that I serve my local church with various technical media needs. I have become increasingly aware that open-source software can meet most software needs for a church, even a media-centric church like ours.

The latest bit of software I've run across is Celtx - software for pre-production writing, organization, and collaboration. Not only is the software itself free (under the Mozilla Public License), but the collaboration website (pc.celtx.com) appears to be free as well.

My wife is in charge of a family-oriented worship service our church has after the adult morning service. I expect that this software could save her some time, both in the writing/editing of the scripts, but also in collaborating with the others involved - the Children's Ministry director, our pastor, actors, and technical people.

I haven't played with it yet, but based on the video tutorials, it looks like a great addition to my open-source software library.