Friday, December 07, 2007

Proof of the Revolutionary No-Scar Surgical Technique

Now that my hand is liberated from the soft cast that held it hostage for two weeks, I thought I'd answer my sweet wife's post about the Revolutionary No-Scar Surgical Technique.

I firmly believe that a picture is worth a thousand words. As it still hurts to type too much, that's a good deal for today:


Here's a close-up:


This picture CLEARLY illustrates that no scarring is visible. For those who believe this to be just a trick of lighting, I provide the following false-color image showing the smooth topography of my incision site:


And there you have it! Proof positive of the Revolutionary No-Scar Surgical Technique!

Yet Another Post-of-the-Day

I just saw that my last post was on September 29th.

It's obviously been a while since my brain's been full.

Hmmm...

Saturday, September 29, 2007

Home Page

Well, I've been in the IT industry for 10 years. Writing web applications the whole time, with Microsoft software.

Well, I finally have a personal web server, and it's running Linux (and C# via Mono):

http://TheJerkins.HomeDNS.org

Enjoy!

Sunday, September 16, 2007

Best iPhone review yet

(After visiting an Apple store yesterday, Carrie wondered out loud if she'd be hearing about the iPhone non-stop until we got ours. I confirmed her fears.)

This is surely the best iPhone review I've seen yet. A very well-done (and quite funny) review of the iPhone. Nothing is revealed that you haven't seen everywhere else. But the slapstick feel to the review makes it worth watching again and again. Thanks to iPhoneTower for posting the review where I'd find it.

Enjoy!

Saturday, September 15, 2007

iPod touch vs. iPhone after 20 minutes

Ok, ok. Carrie and I visited an Apple store today to see the iPod touch and the iPhone.

We're locked in a contract with Sprint, which in my mind had put the iPhone out-of-reach. And since the iPod touch is supposedly an iPhone with out the phone, I thought I wouldn't be giving up all that much.

WRONG! Apple seriously crippled the iPod touch! I suspect the reason for each feature cut was a demand made by AT&T that couldn't be overruled by Apple. Here's what I found:












iPhoneiPod touch
SafariYesYes
YouTubeYesYes
CalendarView/Edit/AddView only
MailYesNO
WeatherYesNO
NotesYesNO
SMSYesn/a
PhoneYesn/a
iTunes WiFiComingYes


Boy was I bummed! The iPod touch is definitely NOT an iPhone without just the phone! The inability to enter calendar appointments is a big loss to me - it keeps the iPod touch just a tease away from being a true PDA. My memory is AWFUL, and entering reminders as I think of them is an essential feature. Looking at that calendar link on the home page would just be a splinter in my mind, reminding me that I have a second-rate device.

So Carrie and I are scheming a way to get iPhones in a few months.

2007-09-16 Update: I found this much more comprehensive comparison of iPhone and iPod touch. Looks like there was more missing than I noticed.

iPhone Whiners - Part 2

A good friend of mine left a comment on my last post implying I had cried many a sympathetic tear for those early adopters that Apple cheated. This post is intended to clear the air on that. (This may sound like it contradicts my last post; it doesn't. But I'll explain that in a minute.)

Even as I wrote that last post I was still thinking about what kind of person would immediately buy a high-priced bit of technology the day it comes out, then publicly whine when it gets outdated/cheaper/old.

This is technology, people. The price/features curve (or price/performance, in terms of computers) is moving all the time. People know that living on the high-features end of the curve costs considerably more than living on the low-price end. For me, it's a matter of finding where on that curve you can comfortably stay.

My cellphones are almost always the free kind. My iPod is still an iPod Mini (bought just after they came out in early 2004). My computers are never cutting-edge hardware. (I made an exception when we bought our MacBook this year. Watching it get outdated a couple months later did not even phase me, and we have no plans to replace it. It's our first laptop, and we're still thrilled.)

I grew up with a friend who ALWAYS had the latest stuff. He had the money to buy it, so I never begrudged his purchases. And he taught me the valuable lesson on how to be content with yesterday's stuff.

I am a computer programmer by trade. Computers are what I use day-in, day-out. Of course I'd prefer a dual Core2Quad with 8GB of RAM and a RAID-5 array. Of course I'd prefer a 17" MacBook Pro fully-loaded. Of course I'd prefer the iPhone 8GB with a maxed-out service plan. But my kids would be hunting their own dinner instead of playing in their sandbox during the day.

So when I read that some "early-adopters" are whining because their new toy just became cheaper, I marvel at their lack of character. Did they think that buying an iPhone in its first two months of availability was a wise investment decision? Did they expect the iPhone to remain at the same price/features point indefinitely? Have they purchased any other smartphone (or computer or other gadget) the day it came out, then cried when it became cheaper or outdated?

The only entity showing good character here is Apple. Though doubtless they had the same thoughts I did, they nonetheless responded by offering those whiners half of the difference in store credit. I have no illusions that this response was necessary. It wasn't, and I think Apple surprised many by being this generous. But Apple loves its customers, as it always has, and its customers generally love it back.

Now, on contradicting my last post: My last post was a counter-point to the PCWorld.com article I linked to. I think they misunderstood what was in the minds of those whiners when they whined. I do not, however, have any sympathy for the whiners, even though I believe I know what they were thinking.

And finally, full-disclosure: The iPhone was out of my price range when it was released. I admired the technology, and drooled like many other middle-class men boys at another gadget desired, but out-of-reach. Now, however, the iPhone is more accessible. Carrie and I both plan to get one...when we've saved our money, which will be after the first of the year (around 5 months from now).

But if they come out with a new model 1 week after we buy ours, I'll just pull out the marvel of technology in my pocket, smile gratefully, and go on my way.

Tuesday, September 11, 2007

Why iPhone owners were mad about the price cut

I just read an interesting post on PCWorld.com called "Lessons Learned From the iPhone Price Cuts".

And I think they reach the wrong conclusions.

PCWorld said that introducing a product at a high price, then quickly lowering the price, is standard practice in the cellphone industry.
Their point was that Apple just lowered the price too soon, and too much.
I think Apple's mistake was in thinking it should be lowered at all.

The iPhone isn't an ordinary cellphone.
The Razr is a cellphone. Some might call it a smartphone. But in the minds of people everywhere, it's just another nice cellphone.
The iPhone, however, is an Apple.
It's not an ordinary cellphone, in the same way that the iMac isn't an ordinary desktop PC.
It has style, technology, and sex appeal no competing product has.
It's an Apple, after all.
And Apple doesn't build OR PRICE anything the way the rest of the industry does.

Everybody else comes out with a named product, and lowers the price until its discontinued.
That's why everybody else has model numbers in addition to product lines - it's the only way they can distinguish new from old.
Endless black boxes (or phones) with company names, company logos, product lines, model numbers, and CPU stickers hiding the black plainness.

Not Apple.

Apple's products are white. Clean. A logo and a product name, and nothing else to hide the white beauty.
And when Apple comes out with a named product at a premium price, they NEVER CHANGE THE PRICE.
They justify the price over time by increasing the specs on the product.
But they don't change the price.
At some point they determine that the product's "newness" has worn off.
Then they roll out a new product - a new look, new specs, and sometimes a new name.
But still at the same price.

The article mentioned Apple having lowered the iPod's original price.
However I don't think that's what happened.
If you read closely, they remember that a higher-spec'ed iPod at the same price as the original.
In other words, Apple increased the specs of the original iPod at the same price, and introduced a new lower-priced and lower-spec'ed model.
Business as usual for Apple.

Apple's pricing strategy feeds the general opinion that Apple sells premium products that justify their high asking price.
And their products really are good enough that even after purchase customers don't complain about the price because they got what they paid for.

Here's why the iPhone early-adopters were ticked-off:

For the first time any of them could remember...they felt cheated.

Thursday, August 30, 2007

mono vs Visual Studio

I've had to do some investigation of VS2005 recently at work, and I'm reminded of just how easy Microsoft can make things. It's really a nice environment. Much better than VS2003, which isn't entirely bad itself. But the decision to use it at home would represent a submission to the Microsoft juggernaught. A well-paying, life-easing master it is, but make no mistake - it shares first place with no one.

But my thoughts always stray back to mono. I can use mono on Linux, which is quickly becoming my favorite OS. I can also use mono on my Macbook, which is the only laptop we own (currently). And I can still use mono on Windows as well, for those times when I must again get paid.

The note I set on Windows Messenger at work sums it up: Linux+mono for freedom, or Windows+VS for plush, thumb-sucking ease? However will I decide...

Saturday, August 18, 2007

User-Mode File Systems - Not for Me

I mentioned in my previous post that I was thinking about user-mode filesystems as a way to write runtime- and language-independent APIs. Well, I've deciided I don't like the idea.

The single word that killed it was this: discoverability.

An API implemented as a file system would be difficult to "discover", even if you knew those files were provided dynamically by software. Here's what I mean.

1. It wouldn't be very self-documenting.
It would be difficult to learn about the API without seeing the documentation. A good API should be possible to learn and use (at least, at a basic level) without any formal help. And it always helps if the API conforms to some industry "norm" of organization. Config files and input/output redirection are very common in some operating systems. But manipulating files and folders that map to database records or domain objects is an unheard-of concept, and any pattern of mapping would be necessarily home-grown.

2. It would be hard to find the providing code.
Part of the point of user-mode file systems is that they're indistinguishable from the "regular" file system. It's hard enough to tell where one ends and the other begins. Finding out what software is "providing" which branch(es) of the folder hierarchy could be very difficult, especially if the user doing the research doesn't have administrative access to the server.

3. (I can't think of a good third point here, which I feel would strengthen the post. But I'm sure that as soon as I click "Publish Post", I'll think of a good one. So this is just a placeholder until then.)

User-mode file systems tempted me with the ability to write an API that didn't involve a wordy protocol (like web services) or have the limitations of data-level access. But I realize that currently accepted API mechanisms (especially web services) offer benefits that overcome their drawbacks. File system APIs will need to mature with a good set of best practices before I can accept them for my use.

Thursday, August 16, 2007

User-mode File Systems with Mono

Yet another thing calling for me to waste my time...

I found a post by Miguel de Icaza talking about writing user-mode file systems in Linux using Mono and C#. (For those who don't know, de Icaza heads-up the Mono project for Novell.) The idea is intriguing to me for two reasons.

First, it's just cool! Think about using cd and cp and vim to browse and modify your application's object model, or your email, or your router settings, or whatever else you decide to expose. I don't know how useful it would be, but it sure sounds fun.

Secondly, though, it might actually be very useful. I'm definitely turning into a fan of C# on Linux, with a special interest in the architecture of large applications. I have long known that data-level and protocol-level integration seem to be the best guarantee of interoperability long-term, since they transcend even the language and/or runtime used to implement them. But now there's another option: file-system-level integration. FUSE presents an option for application integration that is both interactive and intuitive. Imagine having all the customers in your contacts database show up as folders under a mount point, with all their properties (name, email, phone) exposed as text files that you can edit or copy between contacts. While actually storing the data in the file system is probably unwise (although ReiserFS could change that), using FUSE allows the "file system" metaphor for interaction with your indexed, multi-user database.

I'll have to give it a try at home (since I have nothing else to do ;-) and post my conclusions later.

Monday, August 13, 2007

Life with Three Kids

Carrie sent me this. It's an excellent taste of what having three kids can be like:

http://yonkogirl.blogspot.com/2007/06/life-with-three-kids.html

Movie Review: Facing the Giants

Our pastor is going through a sermon series on the book of James. Possibly at his suggestion, our small group watched Facing the Giants in lieu of a lesson last night. Here's my review:

Short version: LOVED IT!!!

Long version:

Acting: It's true that it wasn't all that great. However, the only time it annoys is during the first 15 minutes. That's when the plot is waiting on character development before it can get rolling.

The plot: Truly amazing. Yes, parts of it are too predictable, twists notwithstanding. But it's still enjoyable to see how the plot develops, and it is a great feel-good movie. However, the movie's best strength is in showing how faith and works meet. Coach Taylor's message to the team is that if they give their very best, praising God regardless of the outcome, God will honor the effort.

A pivotal moment early in the movie (no spoiler here) is when Taylor blindfolds player Brock Kelley and has him give his best effort doing the "death crawl". Brock thinks he's trying for the 50-yard line, which is 20 yards farther than he believes he can go. He ends up realizing he is capable of much more when he focuses only on doing his best.

The entire movie is an excellent lesson in putting your faith into action, and in how God wants your very best - no less, and no more. My only regret is that it shows Coach Taylor as an effortless leader. He clearly struggles with faith, but appears to have no trouble at all communicating his vision - there is no "giving your best" shown in his effort to lead and teach his players. Still, I managed to sense that struggles can be intellectual as well as physical, and that "leaving it all on the field" doesn't just mean physical exhaustion.

Overall: VERY highly recommended, especially for those struggling with job decisions or with issues of faith vs. works.

Saturday, July 21, 2007

The Value of Old Friends

I am surely the worst of friends.

If you're in my life on a daily basis, I can be (or I assume I am) as friendly a guy as you would want. But if you're out of sight, you're out of my mind. I am HORRIBLE about letting the very best of my friends fade out of my memory. My memory is not good, but it's really not that bad, either. I don't know why I don't call or email or visit, but I don't. And as I let them slip from my memory, I find I am losing something important, something of myself that I will greatly miss if it's gone.

For some reason, I have come to realize the mistake I'm making. So over the last few weeks I have been calling, visiting, and emailing the friends that are the main characters in so many of my best memories. Some have moved from Home, as I have, and some of those are quite far indeed. Others are still there, going on with different lives. But they're all somehow part of me, a part that I now know that I miss very much.

Tonight I was again reminded of how much I need my friends. One of the friends I grew up with came to my parent's house for dinner while we are in town visiting. She brought her two children - one of which I've met, the other (the 2-year-old) I have not. We talked about her life, and we talked about ours, the conversation suffering from neither the searches for wayward children nor from the years since we'd last talked. I was amazed at how easily the conversation came for her, my wife, and especially for me.

Last week I visited another of those old friends while visiting Home. Yesterday I called my best friend, and a bystander could not have known that it had been months instead of hours since I had heard his voice. I'm not the most emotionally articulate guy. My wife calls me moody. So maybe this post is a symptom of another mood swing.

But I've found something. Remembered something. And I think I know what it is, too: Home.

Anybody up for a game of spades? Play to 1000, no red twos, blind low is 200, bags, ...

Thursday, July 12, 2007

Domain-FIRST Design

I'm still working my way through Domain-Driven Design by Eric Evans. While the "captivation" factor has gone down, the "interest in subject matter" factor has gone WAY up.


I just read his chapter on Aggregates - twice. And I may go back and read other chapters again, too. There were two major revelations for me in the chapter on Aggregates.

The first was the subject matter of the chapter. It is a totally new concept to me. I had never really considered "partitioning" the domain model into regions of guaranteed logical integrity but between which the rules may be lazily enforced. I saw at once that this was both a very useful concept, but also very foreign to me, giving me my first reason to re-read the chapter.

But the most important revelation was that it finally dawned on me that he's not talking about domain-driven database schema. In my mind, he's talking about domain-first design.

I "cut my teeth" in fast-and-furious ASP-land. All I was doing for five years was designing small databases (less than ten tables), and exposing them through ASP pages. I always started with the database design, and my mind never strayed far from it. There was neither reason, application, nor time to do proper three-tiered or n-tiered design, since I was literally just binding controls to tables. I learned about three-tiered design during this time, and I tried more than once to apply it, but in my little databound world I couldn't make it fit.

Now, I'm in all-grown-up-.NET-land. Objects. Proper three-tiered design. But my databound mindset hasn't left me. When interviewing for my current contract, they asked how I'd approach designing an application. I answered honestly: I'd start with the database schema, and work my way up. Even five chapters into Domain-Driven Design I was thinking in terms of domain-driven database schema. When Evans talked about limiting certain relationships to one-way as a way to save work, I wondered what he was talking about - you could always join tables, regardless of which table's key you were selecting by. When Evans talked about Entity vs. Value objects, I struggled, thinking that Value objects would still need to be stored in a table, and making me wonder how you could tell the difference.

In the chapter on Aggregates, Evans finally broke through. The examples he gives are of multiple users of a large, distributed system comprised of objects in memory. And Evans specifically draws a contrast between handling update conflicts at the database level and at the domain-layer level. And that's when I got it. While I have ALWAYS designed my software starting with the database schema, Evans is trying with his book to give me a different starting point - the domain layer. He wants me to envision the ideal object model first, write it and unit test it, even before designing a database schema.

It will require discipline - real effort - to design anything without regard for database schema. To think in terms of objects and relationships, apart from tables and primary and foreign keys. I'm going to revisit the design I spent a week without kids hammering out at home. I may go back and re-read other chapters, this time applying them to object design instead of database design. And I'm going to grow as a developer, because I finally see the light.

Thank you Eric Evans!

Tuesday, July 03, 2007

Relaxing at High RPM

I may be the first guy in history to say this (the first guy to admit it?) - I'm borrowing my mother-in-law's sports car this week.

My mother-in-law - that quiet, unassuming little lady - just bought a Mazda Miata. For the gas mileage (yeah, right).

She then made the mistake of taking my wife and kids with her husband to Iowa for a week.

She may never see the Miata again.

It's my first real experience with a sports car. (Purists: Maybe you don't think it's a sports car, but I sure think it is :-) Claustrophobic, hot (the gearbox), noisy, rough, and touchy. Sometimes I think I'm riding on gravel in a shopping cart because of the suspension. But it's FUN!!! It rockets away from red lights, and that 50-50 weight distribution makes me look forward to turns. How I'll ever go back to my positively boring Honda Accord I'll never know. But Carrie tells me I need to cool my jets, that it's "not the right time" for us to get a two-seater. >sigh<

Yesterday she called and asked what I was doing. "Going for a drive," I said. She wanted to know where I was going. Then she wanted to know why. I think she's been a mom too long - she's forgotten that it can be fun to just drive on a windy rural road and enjoy the wind, the trees, the hills, and the turns. She never really understood what I was doing. I never cared.

Anybody want to buy a used Accord?

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.

Tuesday, May 29, 2007

One Hour Per Day

Dig into Blender. Get Cinelerra to compile on the MacBook. Read Domain-Driven Design. Write my build-management app. Find more pictures to delete. Take more pictures.

…or…

Spend time with my wife.

I get (or should only use) one hour of time for myself every evening. Sometimes more, sometimes less, but after chores that’s usually what is left. And yet I’ve got all these great things that I would like to get done:

I want to dig into Blender because a) it’s a great tool, and b) I really want to generate a first-rate virtual walkthrough of the new building. Even if I just settle for rendering photorealistic interiors, there’s a lot of time to be spent learning the tool, modeling, texturing, lighting, etc.

I want Cinelerra to compile because it’s probably the best video editor I’ll own for under $300 (if you can ignore the file format problem). That it costs no money at all is even better. However, it certainly isn’t free. I’ve already spent a HUGE amount of time trying to get it to work, so far without success. By the time I finally get it working, I’ll be able to spend $100 for Adobe Premiere Elements for Mac and be done with it, anyway.

I want to read <b>Domain-Driven Design</b> to a) help with my build-management app, but mostly b) to help with my career. It looks like the kind of design book I’ve been needing to read. And after that, there’s the Fowler book. Then LINQ. And I can always practice by developing a tool that will help at work – my build-management app.

And photography is probably my life hobby. Even when I “stored” the camera in the bedroom, it came back out after a week. I just can’t leave it alone.

But, of course, I am married to a beautiful girl. I really enjoy spending time with her: talking with her, laughing about the day, planning for the next, and all the other things that husbands and wives do.

One hour per day.

It is kinda funny, but also infinitely wise that God provided two great ways for us to reveal,.judge, and improve our character – money and time.

We get as much money as the world thinks we’re worth, and each person is (rightly or wrongly) valued differently. How we spend our money, however, is a function of character, not income. Both upper and lower economic classes have people with both good and bad character. And their checkbooks usually tell the tale.

But God gave each of us the same number of hours in a day. Twenty-four of them. None is richer, none is poorer; we all have the same amount of time in a day. Sure, you could say that some have more days than others. But no one knows how many days they have left. So we’re stuck with the time we have today.

When the better priority sleeps next to me every night, why do I feel so driven to get it wrong?

Wednesday, May 23, 2007

Florida Was AWESOME!

Sorry about the utter lack of activity over the last couple of weeks. We were in Florida last week - St. George Island, to be specific. Heavenly. Did absolutely nothing but swim and take pictures. Some friends from Memphis (Collin and Vicki) came with us, and Collin brought all his photography equipment. Being able to play with a studio flash and softbox for a whole week was truly...illuminating. Got some great pictures with it, and had fun at the same time. And it sounds like I got him hooked on Lightroom in the process.

Anyway, I'll be posting pictures later. I'm still excited about Cinelerra (trying to get it to compile under OS X right now), and I'm also rediscovering Blender. But I'm still catching up both at work and at home, so I must leave again for a bit.

Later!

Wednesday, May 09, 2007

Cinelerra - The Wow started last night

I’ve finally gotten Cinelerra installed at home, and I am in love.

A couple of nights ago I finally got Cinelerra to compile on my Ubuntu Fiesty installation on my desktop. (The instructions I was following didn’t mention the gettext package as a requirement. I may email the author.) And after some file format confusion, I started playing around and going through the HV manual.

As I began to learn about and understand the interface, I realized just how powerful of an editor Cinelerra is.

I’m really looking forward to what they call “two-window editing.” I’ve never done editing like that before (except in the backwards implementation that is iMovie HD). It’ll be an adjustment from the straight-up timeline NLE I’ve been using (Vegas Video). But I was impressed with the two-window editing idea, really impressed with the keyboard shortcuts (especially the numpad-based shuttle controls), and I was also pleasantly surprised at how easy color correction was. I have some reservations about adding transitions (since I’m so accustomed to automatic crossfades when I drag one “edit” to overlap another). But I expect my editing workflow (and my output) to improve dramatically.

While I haven’t done anything “serious” with it yet, I’ve got a project for church that I’ll probably start in a couple of weeks. It’s good enough that I might just install Ubuntu on my MacBook just to play with it on a more powerful machine. I may even convert my desktop’s 300GB SATA drive to EXT3 (which is read/write under XP with the right driver), just so I’ll have room to do proper editing.

Friday, May 04, 2007

To Read: Two DI frameworks

I really need to make time to read about these frameworks:

Spring.net
The Castle project

Three-Girl Circus

It looks like my sweet wife has finally written her first blog post! While I'm no big-time blogger, it's cool to see her get started. I'm really looking forward to reading her blog, even though I live in the circus!

Anyway, check out my link to the Three-Girl Circus at right to see what she has to say.

Domain-Driven Design

I finally bought Domain-Driven Design, and I got it yesterday. I'm still just in the first chapter, but it really is a fascinating book. Evans isn't giving a lecture on design; he's telling stories from his experience, and letting the stories educate the reader. And he's such a good storyteller that not only am I learning quickly, but I actually hate to put it down! I expected to learn and be interested, but I never thought a book on software could be this engaging.

As you may have seen from the flurry of posts I've been submitting recently, the topic of better software design has been stirring in my head for a few months now. I'll elaborate on that in another post. It is sufficient for now to say that my purchase of Domain-Driven Design was exceedingly well-timed. Despite my recent lack of faithfulness to God, He seems to be heaping grace upon me anyway - educating me and helping me in my career despite myself.

God never ceases to amaze me.

Thursday, May 03, 2007

Technique Digestion

Try the following policies on for size:
  • GAC - Only interfaces and the DI container engine ever get put in the GAC
  • Interfaces - All application- or layer-boundary interfaces should go into the GAC. Application interfaces may share the application's namespace, but the application's interfaces must reside in a separate assembly. The interface assembly(ies) must go in the GAC; the implementation assembly(ies) must NOT go in the GAC.
  • DI Container - Goes into the GAC, and has machine-level config info telling it which class versions implement which interface versions. Should support interface version redirection, preferably by reading policy files stored in the GAC.
  • Domain interfaces and implementations should follow the same rules as an application's interfaces and implementations.
  • Domain classes and interfaces should NOT share either assemblies or namespaces with application-specific logic. This will allow them to evolve independently, and makes domain object reuse across applications much easier.
  • Both domain objects and application- and infrastructure-specific services must always be instantiated via the DI container, or returned from factories that reside in the domain class's assembly.

Technique Indigestion

Gnawing questions:

Why do we tie domain objects and service interfaces to specific applications, sometimes all in the same assemblies and namespaces?

How can application interoperability survive the evolution of the business' domain knowledge/model? When applications finally get rewritten, they're typically also renamed, and frequently application borders are redrawn. This happens largely due to evolution of business domain knowledge. How can application interoperability survive? One answer: The new app can implement the old app's interfaces w/ proxies - in their own namespaces and assemblies - that consume the new app's interfaces. While the temptation in a DI-enabled environment might be to just have the new app directly implement the old interfaces, that presents a growing burden on successive iterations of software. Better to have independent proxies that can cascade, and that can be dropped as needed.

Think about what best practices would incorporate all of the following in enterprise-level apps:
  • Dependency Injection
  • Interfaces
  • Domain objects
  • Namespace boundaries
  • Application boundaries
  • Assembly boundaries and version numbers
  • What should be in the GAC, and what should not
Think about all this while reading Domain-Driven Design in Florida.

MacBook Hard Drive Upgrade Successful (part 2)

It's kinda funny, the psychological effect that RsyncX has had on me. Maybe funny, maybe not.

I've been planning to write my own sync program (yes, called Sync) in mono for quite some time. And my intent has always been to maintain a mirror of my Lightroom database and pics.

Now, RsyncX can maintain a bootable mirror of my MacBook's whole hard drive.

I don't know what to design anymore.

I still find myself out of habit re-entering the design process for Sync whenever I get a minute or two of spare CPU time. And right about the time I have to return my attention to whatever I'm supposed to be doing, I remember RsyncX, and realize I've just wasted several minutes of downtime.

Maybe I'll pick back up that project build-management design I was working on during my infatuation with RoR.

Or, maybe, I'll just read a good book.

MacBook Hard Drive Upgrade Successful


I must confess I was a little scared about upgrading the hard drive in my MacBook. Apple's computers are things of beauty, not collections of parts lacking a soul.

But thanks in large part to the ease-of-use and shocking functionality of RsyncX, it was easy to make a bootable backup on an external drive's partition, swap the hard drive, and boot to the external backup for the restore.

Kudos, Apple and RsyncX! Now I've got my entire Lightroom library on the internal drive!

Hello 2007 (yawn)

My dear, sweet wife has been reading blogs by Christian moms for several weeks now. She has recently decided that our family should have a blog, too. And her sudden interest in blogging finally reminded me that I have a blog.

So, to remind myself what blogging feels like, here's my first post in eleven months.

Cheers!