# Wednesday, March 10, 2004
I'm a big fan of alternative building methods (check out the Monolithic Dome Institute for one of my favorites) so this idea strikes me as pretty cool [via Gizmodo].  It's basically taking the 3-D printer concept to a larger scale, so instead of printing machine parts out of resin (which is also pretty dang cool) you "print" your house from blueprints using concrete or adobe.  What a great idea. 
Wednesday, March 10, 2004 11:29:45 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 

And I thought I was a dork...

This guy proposed to his girlfriend by building a "bridal-themed" case mod.  With a little bride and groom and everything.  I feel pretty socially ept by comparison.

Wednesday, March 10, 2004 9:08:32 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, March 04, 2004

I love Eric Lippert's series on "Cargo Cult Programming".  I've often seen it as a problem, but never had such a catchy label before. 

I've long been a proponent of the idea that you can't be a successful architect without understanding how the underlying system (all the parts of it) work.  For example, I may be architecting a system that relies on storing data in SQL server.  I mostly likely won't be the one to do the actual SQL Server implementation, since I'm not the best qualified.  There are plenty of people who understand TSQL, indexing, and suchlike DBA stuff way better than I do, but I need to understand how SQL server works at a deep enough level that I can make informed decisions about architecture. 

I would encourage anyone working as a ".NET Architect" to read books like .NET IL Assembler, or CIL Programming.  You may never write a single line of CIL, but you can't really understand how to make good decisions about .NET architecture unless you understand what's really happening under the covers.  In case you are interested, I would recommend CIL programming over the other.  It's much easier to read, and more practically oriented, although there are some interesting details about things like .EXE headers and such in .NET IL Assembler.

To be a good architect, you don't have to know every last detail about how everything works.  In fact, IMHO, you shouldn't and can't know all the details of how things work.  That's for other people (domain experts) to know.  I would argue that an architect should avoid getting caught up in domain details, since it tends to lead you to think that everything is an exception.  Many programmers I've known in the past who really know the intimate details down to the last speck for some particular domain (an industry standard, or a piece of hardware, etc) tend to think of all the ways in which their area of expertise contains exceptions.  "Two credit reporting agencies send addresses this way, but the third sends them differently".  "The monitor always returns a valid value for this reading, except when it's too cold in which case it's -1". 

Architects who gets too involved in those kinds of details may miss the opportunity to uplevel their thinking and change their underlying model of the system.  If everything looks like an exception to a rule, then more than likely the rules are wrong.  But if you know all the details, it's easy to see the exceptions instead of trying to find new rules that work.

It's hard to find the middle way.  If you don't know enough about how things work, you'll make poor choices.  If you know too much, you may miss the big picture.  And, of course, the reality is that these days the systems we architect are often so complex that you just can't afford the space in your brain to hold all the details about the whole thing. 

It's also tempting to want to understand all the details because of how "neat" it would be to write that part of the system.  That's a trap I find myself falling into on big projects.  The reality is, though, that I just won't have time to write the whole thing (no matter how neat it is), and I have to let go and trust that someone else will understand the details. 

Hmmmm.  That ended up somewhere different than where I started, but I hope that makes sense.  Find the middle way.  Understand enough about how the system works to make good decisions. 

Thursday, March 04, 2004 9:27:48 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, March 03, 2004

I'm in the midst of doing some integration with a third party company, and their XML is driving me loony.  The worst part is, it's not something you can quite put your finger on.  Their XML is, in fact, well formed.  It might be valid, except that the DTDs they provided us with aren't internally valid, at least according to XMLSpy

I guess the biggest thing that bugs me is that their XML is, like, so 1997.  They're still using DTDs.  Every single element in the entire InfoSet is defined as a global element and then referenced.  Not a single attribute appears anywhere, so everything is element-normalized to an unhealthy extreme.  It just seems like XML that dates from a time when our ancestors didn't quite grasp the XML concept.  Anybody remember DSSSL?  It's like that.  Only well formed. :-)

And did I mention namespaces?  No?  Not a namespace declaration to be found anywhere. 

It's not "wrong" XML, it's just "wrong headed" XML.  Or maybe I'm just an effete, schema-writing elitist.  It's a tough call. 

This is what's holding back the dream of XML biz-to-biz integration.  Lack of progress in understanding how to use XML, not XML itself. 

Wednesday, March 03, 2004 3:28:39 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 

Scott's been extolling the virtues of Oddpost for a while now, and deriding the quality of the (admittedly) lame web client my ISP provides for checking my home email at work, so I finally tried it out this morning.  I've got to admit, it's pretty freakin' cool.  They have a very nice interface, it's easy to use, supports multiple external mail servers, etc.  I'll try if for a while longer, but I just may end up subscribing.  I think it's probably worth the (very reasonable) $30 a year. 

Now if they only supported Firefox...  It's become my browser of choice, and it's a pain to have to launch IE to use Oddpost, but c'est le vie I guess.  I have to keep IE around for SharePoint anyway.  SharePoint looks OK in Firefox, but I don't think they've got SSPI authentication working yet, so I have to sign in on every page, which gets old in a really big hurry.

Update: after playing with the client some more, I'm also impressed to see software written by people with a sense of humor :-)

Wednesday, March 03, 2004 9:42:29 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, March 02, 2004
Rico Mariani has posted yet another great performance improvement story, and a fabulous illustration of the fact that the best way to solve performance problems is to really know your numbers.
Tuesday, March 02, 2004 11:54:49 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 

There's been a lot of ruminating around here lately on the subject of CS degrees.  Who has one, who doesn't, and does it really matter.  I've done a fair amount of thinking on the subject, and thought I'd just go ahead and let it out.

I don't have a CS degree.  I had a very nice time earning my (basically useless) BA in East Asian Studies.  Seemed like a good idea at the time.  But then the bottom dropped out of the Japanese economy, and nobody really cared about doing business with them any more.  There went that consulting job I was hoping for.  The bottom line remains, however, that knowing what I know now I wouldn't have done things any differently. 

At the time I wasn't in touch with my inner geek.  Liked working with computers and all, but who wants to do that for a living?  Some random circumstances and the needs of my bank account landed me in a QA monkey job at Central Point Software (remember PC Tools?), and the rest is history.  I've taken a lot of professional development courses, and a few at local community colleges, but not much "formal" education in computer science.  And yet, I've managed to (I like to think) have a pretty successful career as a software developer / architect (so far). 

I think the reality is that getting a CS degree doesn't make you a good problem solver.  I've known and interviewed plenty of people with CS degrees who I wouldn't hire to write code.  I've known plenty of very talented coders who don't have CS degrees.  So on the whole, my personal experience has led me to believe that for the vast majority of jobs, it really doesn't matter.

I'm not saying there aren't jobs in which it does matter.  I'd be hard pressed to write an operating system, or embedded software, or graphics internals.  But how many people have those jobs?  Not that many, in the greater scope of things. 

I've thought about going back to school in pursuit of an MSCS or some such, but over the last 6-7 years, multiple people have told me that it really wouldn't make much difference at this point.  And I have to hold down a full time job and raise two kids, etc, so taking the time and money to go to grad school hasn't been a big priority. 

And yet, I still run into people who are hung up on the idea that you can't possibly be good at your job unless you have that piece of paper hanging somewhere.

All right, enough of my obviously biased opinion.  But if any of you out there happen to be in high school wondering what to do with yourselves, pursue a liberal arts degree.  If you learn how to think about things, what you choose to think about is just a detail of syntax.

Tuesday, March 02, 2004 11:04:32 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [3]  | 
# Monday, March 01, 2004

I'm currently listening to Tenacious D's eponymous first album, and I've got to say every time I hear it I'm amazed. 

Not only is it some of the funniest stuff I've ever heard (Tribute being my personal favorite) but it's actually pretty good musically too.  If you like that sort of thing that is.  I guess I do. 

Speaking of good music, I listened to the new Johnny Cash box set, Unearthed.  I guess I'd never fully appreciated Johnny Cash.  What a great collection of music.  Some of the modern rock songs he covers are truly fabulous, and there are some great duets.  I love his cover of Marley's Redemption Song with Joe Strummer, and his cover of Nine Inch Nails Hurt is possibly one of the saddest and yet most beautiful songs I think I've ever encountered. 

I'm getting all this through Rhapsody, but I might just have to shell out for Unearthed (which just happens to be available on iTunes).  So much media, so little time.

Monday, March 01, 2004 9:42:16 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [2]  | 
# Thursday, February 26, 2004

Bah!  I'm trying to make some sense of some "schemas" that I got from a third party.  Whoever wrote them is stuck in the 1998 "isn't XML a neat idea" stage of their career.  They are, of course, DTDs instead of W3 schemas.  Better still, pretty much every single element in the entire corpus (the whole thing is defined in one file, although it contains multiple messages) is defined as a global element, which makes a complete mess. 

As if that weren't enough, the DTDs don't actually validate. 


So I'm struggling to rationalize them into some more useful (W3) form. 

All I can say is that it's 2004 for cryin' out loud.  XML isn't just a neat idea, and people should know better than this by now.  If you're defining a group of atomic messages, do yourself a favor and define one per schema file.  If you have repeating elements, import is your friend.  It makes it so much easier for the schema consumer to deal with.  Don't define every single element as global.  If you have structures that are used in more than one place, great, but for simpleTypes, it doesn't make much sense to make them global, and it really clutters up the schema. 

As with any other design task, think about how your schema is going to be used, and by whom, instead of starting from the idea that it's just really neat.  It's been long enough now that we should really be seeing better XML practices globally, but I fear that's not really the case. 

Keep trying!

Thursday, February 26, 2004 9:42:18 AM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, February 20, 2004

I'm just pages away from finishing Drop City, by T.C.Boyle.  This is one of the more riveting novels I've read in quite a while.  It's been hard for me to put it down.  It portrays two completely different sets of people who really have the same goals, but come at it from two totally different perspectives. 

It's set in 1970, and the two groups of people are a hippie commune from Sonoma County and the residents of Boynton, Alaska, 150 miles from Fairbanks where the roads stop.  The health department shuts down the commune, which decides to relocate itself to Alaska. 

The focus of the story is really around how the long term residents of Boyton, and the surrounding bush, are just as "dropped out" of mainstream society as the hippies are.  They too are looking for personal freedom, and escape from the rat race and rapidly plasticized society of the late 60's early 70's.  The difference between them is in their approach.  Libertine vs. Libertarian.  Peace love and brotherhood vs. live free or die.  It's a very interesting and original juxtaposition, IMHO.

I grew up in Marin in the early 70's and I remember first hand what the peace love and brotherhood crowd was like.  Boyle does a great job of capturing not only the ideal of hippieness, but also the factors that inevitably crushed it. 

If you remember the hippies, are into Alaska, or just looking for a diverting read, check it out.

Friday, February 20, 2004 1:58:49 PM (Pacific Standard Time, UTC-08:00)  #    Disclaimer  |  Comments [2]  |