Wednesday, September 07, 2005

Book review: Secret of the Caves, Franklin W. Dixon

Frank Dixon and a cast of thousands, that is. But Caves was #7 in the original series, which means it was actually written by Leslie McFarlane, generally agreed to be the top Hardy ghost. I was a huge Hardy Boys fan as a kid, like my dad before me, and around 1974 he handed over a collection of probably 30 books that he had gotten originally in the 50's - Hardy Boys, Tom Swift, and others, such as the Mercer Brothers, which I've never seen again. Recently I've decided it would be fun to collect some of these old books again, so I picked up Caves at an antique shop for $9 - which may have been a bit steep, but better than the $15 they were charging for some old Tom Swifts.

I don't remember this one as being one of my favorites, though, and on rereading I can guess why - there really isn't a villain. The boys and their chums go in search of a man who has lost his memory, and the escaped prisoner from the local jail is more a distraction than anything else. There are a couple of cliffhangers - literally - which are pretty exciting though, and the missing man is discovered neatly.

I've also picked up a Battleship Boys book and a Submarine Boys book, which I'll review if I think of it. Between a couple of programming books, a spy novel, and a C.S. Lewis, my limited reading time is pretty split up :)


Icerocket tags:


Blogger toolbar broken?

I was easily able to get the Word toolbar to work on a machine where I have local administrative privileges, but I don't normally log in with those on my laptop. The Blogger toolbar does not show up on this machine when I log into an account without local admin privileges. Is that just a scenario the authors overlooked, or did I hose something up - I'm pretty sure I tried installing it without privileges before I did anything else. I used the Blogger support form, and got back some automated response, which I let sit for a couple of weeks before responding. We'll see if anything comes of it - I'm guessing not. Very disappointing; I'd like to use the toolbar.


Icerocket tags:


Friday, September 02, 2005

Fear of code

Kevin Barnes writes a nice article on Fear of code. The opposite of fear is courage, which is of course one of the core values of agile development. If you are afraid of changing your code, that is a code smell, which needs to be Lysol'd with lots of unit tests!

Tuesday, August 30, 2005

Monroe County Budget

Budget Numbers have been released for Monroe County. I haven't analyzed it carefully yet, but Kurt Van Der Dussen of the Herald-Times summarized it. (Password required). The budget is a little more than $50 million, including $12 million for juvenile services, $9 million for justice, and $9 million for adminstration.

Monday, August 29, 2005

Katrina

Here's a list of hurricane bloggers. It sounds nightmarish down there. Our prayers are with them. Some of these bloggers appear to be very near the heart of the storm, and it's unnerving to look at this list of people and have to seriously wonder whether the last post they've made, will be their last post, ever...

Wednesday, August 24, 2005

Book review: Ordeal by Innocence, Agatha Christie

My wife has been going through and reading all the Hercule Poirot stories from Ms. Christie, and we picked this one up to read together, so we were a bit surprised to find that M. Poirot was noticeably absent. As well as being a traditional mystery, the book is also a character analysis: when it turns out that the man convicted of the murder was innocent, it means that another of the family must have been the murderer, and the family members react to this information in their various ways. But the traditional gathering-together-of-the-suspects-to-reveal-the-killer also takes place, with one Arthur Calgary playing the role of detective. He's not a character I'm aware of from any other books, and since he is occupied as a scientist rather than a detective or policeman, I suspect he is a one-off character brought in to keep the focus of attention on the family rather than M. Poirot's mustaches. But he's not the only sleuth; Philip Durrant, a member of the family, also is digging around, while the local police are trying to rectify their original error.

The characters all have personalities that are a bit unusual; not surprising considering their backgrounds as war orphans. The majority of the first three-quarters or so of the book advance the plot very slowly, as the characters are developed and we watch them bouncing off each other. But the action picks up at the end, and the last part of the book moves along with the pacing of a Robert Ludlum novel.

But there are a couple of weak points, which I can't discuss without revealing quite a bit of the plot; see below. So it's not really one of Ms. Christie's stronger works. One bad apple in a barrel of really tasty ones is only to be expected, I suppose.


Technorati tags:



WARNING: Spoilers below. I'm not sure if it's all that important to place that warning on a review of a 50-year-old book, but hey, there it is if it's necessary :)








I didn't buy into the ending. It revolves around a woman falling in love and being betrayed by a man whose diapers she changed. IMO it's not likely that that would occur; if you grow up with someone you will more or less know how they will react in a given situation and you would know whether or not they are lying.

A stabbing occurs near the end of the book. The plot dictates that the stabbed woman (a) does not realize she was stabbed, and (b) walks 50 or 100 feet before fainting. A doctor justifies to us that this was possible, but is it really? I have a hard time believing it.

Dilbert's days are numbered


Within a few years, you won’t be able to make money as a salaried software developer anymore.

No, it’s not because all the jobs are going to India.  The benefits of having your employees in the same time zone as your customers aren’t going away, and the Western cultural values of innovation and initiative still have an edge over the development that goes on in India, IMO.   No, the threat to software developers is more straightforward:  how do you make money doing what people are willing to do for free?

It’s an issue that’s beginning to hit journalism, too; look at all the recent mainstream interest in blogging.   You see a lot of harrumphing about the “blogger community” does this and “the blogosphere” does that, usually in the line of not having credibility, or not doing proper research, or not doing proper fact-checking, which all misses the point:  The sheer number of bloggers means that there will be a lot of lousy blogs, like this one, and a few really great blogs.    Presumably, the great blogs are run by people who, trained or not, are doing really top-quality journalism.  So what do you do if you’re a print journalist?  People are doing for free what you are doing for a living.

How about podcasting?  One of the most lucrative areas of radio is “drive-time”; that is, the audience that listens during their daily commute.  I have a commute of over an hour, and last year I seriously considered getting a lifetime subscription to Sirius radio, since the over-the-air broadcasting in Indianapolis is pretty uninteresting, with the possible exception of Wank and O’Brien.  I still listen to quite a bit of CNBC, but lately I spent at least an hour listening to podcasts.  What is going to happen to broadcast radio when their competition is serving up basically commercial-free content?

And it’s the same situation in software, due to the open-source-software movement.  Whenever I need a new tool or utility, the first place I look is http://sourceforge.net/.  The people who work on these products are passionate and excited.  The people who work at it for a living are more interested in leaving early to get in a round of golf.

Now, it won’t happen overnight.  Open-source projects tend to be very end-user oriented.  Right now I work for a company that makes medical software, and there aren’t many developer communities that want to provide this.  (There are some, though!)  But the amount of open-source code out there really shows that people are willing to write just about anything that is necessary.  In the future, the only way to make money from software development will be as a leader, an energizer of a particular open-source community and a consultant providing services, maintaining a site-specific implementation of an open-source product.   Dilbert’s days are numbered.

Technorati tags:



Tuesday, August 16, 2005

Medical Billing Community Building

This site is surprisingly sophisticated. When I think of industries or communities that really need an online meeting place, Medical Billing is not the first one that comes to mind. But this site is running a blog with many articles and a set of forums. Nice job, guys! They're based here in Bloomington, IN.

Technorati tags:





Thursday, August 11, 2005

Bloomington Downtown Plan text

I've now made the Bloomington Downtown Plan available here. It's not very pretty or formatted very well, but it's less than 200K. I'll try to work on making it nicer as time permits.

Bloomington Downtown

The new Bloomington downtown plan is now available online. (It's a PDF file that's around 15 megs, so I hope the link stays valid.) A few years back I was very interested in the Monroe County plan, which showed certain areas that were supposed to stay rural, others that were designated for business, etc, but you look at the county now and there pretty much appears to be random subdivisions just thrown up all over the place, which probably says more about the influence of money in local government than it does about anything else. Apparently the Republican members of the town council are also making a Delay-like redistricting plan to grab even more power - I'll be keeping an eye on that story too. But the Bloomington downtown has been exploding over the last couple of years, rather like the west side in the years before that, and it has several new nine or ten story buildings and more parking garages, and construction still continuing. I find it odd that the plan was written by a Colorado company, too...

I was kind of expecting to rip the plan to shreds when I started this article. But overall I think it's a thoughtful document, with some good ideas, and worth putting online in a format that doesn't require a pdf reader and enough time to download the whole thing. I may look into that.

Of course, I do have issues with it. The plan makes the fundamental assumption that the population of childless, older households, such as "empty-nesters" and young professionals, is going to jump, and have plenty of ready cash to spend. I have my doubts about that, since the town still consists of at least half college students. It assumes that the aggregate spending in Bloomington is going to jump more than 25% over the next five years, from $375 million to $475 million, and suggests that the downtown might be able to capture a quarter of that.

Favorite quote: "The Courthouse Square serves as the center of the Courthouse Square." Uh, right.

But there are interesting ideas as well. The plan mentions a lot that everyone who spends time downtown now, considers parking as a big issue. But they point out that there are very often plenty of spaces within just one or two blocks of any given destination. I can vouch that on weekends at least, parking is not really an issue. I suspect that what people mean by parking is similar to what students mean by university parking on campus: Parking for eight hours at a time, and free. That's not going to happen. The authors threw this community a bone at the end by adding "new parking garage" at the end of their recommendations, but I think that's a result of city or focus group pressure. The downtown would probably do just as well by doing a better job of pointing drivers to the downtown spots. Also, I really like the sectioning of the downtown into areas - the Railroad Gateway, the University Village, and others.

So what will it all mean? Probably not a lot. A piece of paper to be thrown in a drawer. But with luck, enough of the good ideas will be taken away by the people responsible for permits for downtown projects to make some nice additions to downtown. We'll see...

Technorati tags:





Thursday, August 04, 2005

Docking the Feed Subscriptions window in RSS Bandit

I'm not sure how I undocked the window, but there's no obvious way to get it back. Searching for "Dock" and "Pin" on the web site proved fruitless. After a day or so of it being undocked, I finally doubleclicked sort of randomly on the top left corner of the window, et voila! It redocked back to its correct position. Whew!

Technorati tag:




Wednesday, August 03, 2005

Credibility of Scoble and Slashdot

A lot of research is going on now into what gives online writers credibility - how it is earned; how it can be rated numerically, etc. This work is important because it's directly related to the value of the web itself. If I want to hire a plumber, I'll most likely do it by asking a friend for a recommendation. The credibility of my friend with me is so high that I'm probably going to accept his judgment without question. But what if I've just moved to a new city? I can go to Google and search for Boulder, Colorado Plumbers and probably find someone, but it's not nearly as likely to be someone I'm happy with on the first try. (And of course, the credibility that Google has with me is even more than I would have for something like http://www.servicemagic.com/, even though that actually might be just as good.)

But the credibility problem has been around for decades. Take a look at Usenet (or, for all practical purposes nowadays, Google Groups.) When I was spending a vast amount of time reading and posting there, back in the late 80's and early 90's, you could spend a few hours reading a few month's posts in a group like rec.sport.billiards and get a pretty good idea who was worth reading and who was not. It had to do with authority, knowledge, politeness, willingness to respond to newbie posts, things like that. You can still do it today, sometimes - it won't take much reading in comp.lang.c++.moderated before you see that James Kanze is someone to whom it is well worth paying a lot of attention.

Of course, it worked in the other direction too. There were individuals who gained notoriety rather than credibility, and you would tend to pay less attention to these individuals than the average poster whose name you didn't even recognize.

The other interesting thing to notice is that if you ever met a person in real life, his credibility would soar with you. So if you watched an online argument between someone you had met and someone you had not, you would almost always tend to side with the one you had met.

What made me think about all this was the flack about Internet Explorer 7 and the Google Toolbar, as reported by Scoble. The actors in the drama gained and lost credibility in my sight off and on as I followed along. Since I haven't ever met them, my estimation of their credibility was based solely on their online messages. For example, when the Register posted its first correction, it said that Scoble himself had actually seen the bug. I hadn't gotten that impression from the online reports, and Robert later denied it himself. So where did the report come from? A misunderstood phone message, a private email? Don't know, don't care. It's not verifiable from public statements. The Register credibility drops.

A message is posted in the Scobleizer comments, claiming to have replicated the bug. Robert asks for screen shots. None are made available publically, but later many commenters sneer at the fact that "The bug was reported on your own comments!" Well, the original poster never responded again that I saw, so their credibility, along with the other posters, drops. A commenter named Andrew makes some snotty comments, including name-calling. His credibility drops a lot. Scoble handles him perfectly, choosing to ignore the first insult and calling him out on the second. Good responses, and more cred for the Scobleizer.

So, based strictly on what I saw online, it's clear to me that Robert is the most credible actor in this drama, and I tend to buy the Microsoft side of the story. Of course, I don't know any of the private details, and I'm not likely ever to. But the only way the Register could recover their cred with me would be to call me up personally and tell me exactly what really happened. I'm not holding my breath.

Technorati tags:






The Comics Page

So the local paper sent out a survey about the comics page. Even the the funnies are the first thing I turn to when I read the paper, I've always been hesitant to write to the paper about them since it seems more appropriate to write about I-69 or some other political issue rather than grouse about how unfunny Dilbert was today. But I sure don't mind blogging about it, and I did answer the survey. The rules were: Choose your top 5 in order, suggest some new titles, and suggest any old ones to be dropped.

The old ones to be dropped was the most interesting choices. I only had one additional suggestion, Baby Blues, so I didn't want to list out the dozen or so that I would have liked to dump so as not to seem overly negative. So I restrained myself to two, the always unfunny and fundamentalist B.C., and Peanuts, whose author is dead. But I had many to choose from! The Wizard of Id is not quite as bad as B.C.; it doesn't have the religious bombasticism but does have the endless golf jokes. Mallard Fillmore for the most part is strictly right-wing propaganda, disguising hate as satire, but it has been funnier lately.

The five to be selected were tough too, though. I selected Zits and Arlo-n-Janis as the two best; Doonesbury and Dilbert as the two that might have the most negative reactions that I wanted to keep, but I had trouble deciding on the last one.

Keeping a comic strip fresh must be really difficult. I think you have to mature and grow your characters over time, which is why Fox Trot didn't make my list. There have been a lot of good strips but there's only so many jokes you can make. If he's ever willing to send Peter off to college or Jason to high school it might gain a little more freshness. For Better Or For Worse has the interesting take of trying to age its characters in realtime, but I don't think it quite works; sometimes you have to run a week's worth of strips that the characters see in about five minutes, but yet they've grown a week in that time. Baby Blues seems to informally age its characters at about half realtime, which works pretty well. But Doonesbury handles this issue the best, which is how it's managed to survive for more than 30 years and still be good. The characters mostly seem to age when offscreen, and their ability to make major life shifts helps to keep the strip fresh; B.D.'s injury, for example, or Mike and J.J.'s divorce. Of course, sometimes the author sidesteps the issue, like Garry Larson and Bill Watterson, and just ends the strip. I salute them for that, and you have to feel sorry, I guess, for Berke Breathed, who figured out that it was time to end Bloom County only a few years after it stopped being funny, before bringing it back in a couple of awful sequels. Suppose he needed the money?

Random thoughts on some other strips: Big Top I think is probably only carried since it's an Indiana guy, but it's pretty good. Right now it's balanced on the edge between being a series of running gags a la B.C., and gaining the textural richness of Doonesbury, so we'll have to see how it pans out. Wee Pals, although unfunny, is sort of a "little kids" strip - I wonder if the name is a play on the original Peanuts title, "Li'l Folks"? - so it should probably stay just for its inclusive attitude. Garfield - someone did a blog entry using Jim Davis as an example of someone who would never be a great artist. I've lost the link, but it's not quite true; the first few years of Garfield were very good, but then it was finagled onto a corporate empire and lost all semblence of creativity along the way. Tank McNamara is usually worth reading.

Then there are a couple of tech-focused online strips I like: User Friendly - although it drives me nuts that there's no RSS feed - and Bug Bash, which has only done a few entries. Which strips are your favorites?

Technorati tags:




Monday, August 01, 2005

VS .NET not detecting ASP.NET ?

If you try to create a new web application with VS.NET, you might get this error message:

Visual Studio .NET has detected that the specified Web server is not running ASP.NET version 1.1. You will be unable to run ASP.NET Web applications

It could be that the aspnet user account is not registered. Harish Ranganathan has instructions for fixing the problem. Thanks, Harish!

Technorati tags:


Thursday, July 28, 2005

Interesting ImageGear problem

Not that I know anything about OCR, but you wouldn't really think that machine-printed characters in a TIFF file would be all that difficult to recognize. And for the most part, the Accusoft toolkit does a good job, but it has some problems with characters in a box...if the left size of the box is close to the first number, and the number happens to be -9, it will invariably drop the minus sign. After some experimentation, I found it becomes more accurate if you tell it that the box is in a zone that only numbers are in.

But that led to a fascinating issue when I attempted to run a release build, where the minus sign was still being dropped. My application is written in C++, and there is a ZONE structure exposed to set up the area where numbers are. Eventually, after I created the ZONE on the stack, I added code to initialize the struct in the same way that Visual Studio will initialize it in debug mode:

memset(&zone, 0xcc, sizeof(zone));

And now it works like a charm in release.

I suspected that a problem like this was going to come up. One of the first things I did as I was trying to get the app to work was to set the ZONE to all zeroes before I passed it to the toolkit, and this caused it to fail. I opened a ticket with Accusoft, partly since this is a bug that they should know about, but mostly just out of curiosity to find out what is working when its byte is initialized to 0xCC :)

Technorati tags:


Friday, July 22, 2005

OnTime v6 and Source Code Control - Part 1

Looks like my new company is also very close to buying OnTime for bug tracking. I wasn't sold on it after the quick demo - it certainly seems to do everything a bug tracker should do, of course. But when I checked out the web site and found that they have their own employee blog site...that's a deal maker as far as I'm concerned!

Quality Programming - Bug Analysis

Quality Programming - Bug Analysis

Good discussion of how to prevent new bugs, based on the reporting of old ones.

Tuesday, July 19, 2005

Learning to use ImageGear

My first task at my new job is learning to use the ImageGear imaging toolkit from Accusoft. I skimmed through the documentation and it looks like pretty standard stuff - I've used both DirectX and LeadTools in the past so I'm fairly familiar with imaging libraries.

But I have to say the initial user experience with ImageGear is *awful*! They have a "web install" that you're supposed to use to download an evaluation copy, but the server transfers data at around 35K/Sec, and if you don't change any of the defaults you get 450M worth of stuff. It's not suspendable or anything, and every so often it stops dead to tell you that the last file failed.

As an alternative they have a downloadable "CD" install, which is the same 450M but you download it all to the desktop first. At 35K/Sec. So be prepared to wait about 5 hours from the start of the download to the end. That's where I am now. If nothing messes up I should be just about ready to try running the install.

Monday, July 18, 2005

Opening tar files in Windows XP SP2

I wonder what happened here? If you download a tar file using Windows XP SP2 and Internet Explorer, it will change the doc type to tar.tar. If you try to open it, you get a message saying "Error reading header after processing 0 entries." But the zip itself isn't corrupt, apparently. If you change the file extension to gz it will open just fine.

Friday, July 15, 2005

10 Easy Ways to Keep Me from Visiting Your Church Because I Visited Your Website

Tony Morgan has given us a great set of instructions on how not to. I have an eerie feeling he was visiting our church site when he wrote them. Our church site really needs to be reworked anyway; I wrote it using Microsoft Frontpage, which is fine, but I tried to make the site using Microsoft Themes, and that seems to have made it extremely complicated to update. My plan is to rework it, a page at a time, using only CSS and XHTML. Maybe I can get it finished before anyone tries to review it.

Soccer camp II

Soccer camp is over. I thought Jesse had terrific ball-handling skills, but his insistence on doing his own thing really stopped him from accomplishing much. Everyone always says, "Oh, don't worry, he's too young to worry about his skills, he just needs to have fun." The unfortunate bit is, he refuses to have fun! There's nothing that makes him happier than kicking a ball around with mom or dad, but get him into a group setting and he freezes up. Note that this isn't specific to soccer groups, either, so that worries me a bit. If I'd thought about goals for the camp before it started, I would have listed them like this:

  1. Have fun
  2. Interact with the other kids
  3. Do what the teacher/coach says
  4. Learn soccer rules
  5. Learn kicking skills

#4 and #5 he did pretty well. The first three were a bust. The coach would tell everyone to dribble the ball very slowly in the circle, for example. The other 20 kids would do it. Jesse would sit on his ball and watch them. Then he would run over to us for a drink.

So I don't think we got what we wanted out of it. Oh well, he'll start in a preschool in the fall, maybe that will get him to interact more.


Technorati tag:

Thursday, July 14, 2005

The Goblet Of Fire

Yeah, well, I have a firm policy of only reviewing books that have been out for years. Plus, I was just curious to fiddle around with the Technorati tagging system. Maybe I'm finally starting to Get Technorati.

So anyway, Goblet of Fire. In preparation for the Half-Blood Prince, I've gone back and re-read the whole Potter series, which is not getting any worse with age, I'm happy to say. I'm partway through Order of the Phoenix now, and I have to say it doesn't seem even a little bit familiar, so I wonder if I've even read it. The same thing happened when the fourth one came out, and I only realized I hadn't read the third one when I went back to reread all three of them. I suppose by the time the seventh, and theoretically, final book comes out I'll have read the first one six times.

So anyway, Goblet of Fire. This isn't a real review, just a thought that I had as I was reading it about the villainous newspaper reporter, Rita Skeeter, which has to be representative of J.K. Rowlings real experiences with reporters, and like any good author she's put her own experiences into the book. Still, I think Harry's anger at the reporter putting her own spin on the stories is a little overdone - it happens constantly and for the most part, any publicity is good publicity. The exceptions, of course, are the publicity that I'm sure she's gotten tons of - Harry Potter is anti-Christian. (Note the nofollow tag I've added to that last link. I am a Christian, although a bad one, and I'm obviously a big Potter fan.) I'm sure each time a story or video like this comes out, there's a decent chance of a mailbomb or some other circumstance that will actually cause harm - not like the howlers Hermione received, but something actually harmful. But for the most part, you just have to have a thick skin about any publicity at all - and of course, any real issues you have with the reporting can be discussed on your blog!

Filed under: , , .

Monday, July 11, 2005

Soccer camp

Took the little one to soccer camp today. He'll be doing an hour a day for the whole week. They've apparently signed some British players? coaches? college students with nothing better to do? to run the camps. Today, they played Cowboys and Indians, Ghost, and a drill where they kicked the ball until the leader shouted the name of a body part, then they put the body part on the ball. The kids enjoyed it for the most part - one kid was scared of the Ghost, and a few kids here and there weren't really participating. Jesse would be in this category. He started out trying some things, but he will insist on picking up the ball, and he's generally more interested in doing his own thing than going along with the group. He's a chip off the old block in that respect to be sure - he's probably more like me than is good for him. He wasn't too excited about going back tomorrow, but we paid cash and he's going...we did bribe him with an ice cream, and took him to a soccer field afterwards to try to digest everything. I hope he participates more tomorrow.

Saturday, July 09, 2005

Since I'm changing jobs, I'm taking last week and next off. We went to Chicago for four days last week; very disappointed in Amtrak. We thought it would be fun to take a train from Indianapolis to Chicago, so we went to the Amtrak website and bought tickets online. When we got to the station we presented our tickets and the lady said, "oh, that's the bus. You board over there." But really taking the bus wasn't bad; it wasn't terribly crowded on the way up so we got to walk around and stuff. Not nearly as nice as a train car would have been though. We stayed at the Essex Inn, which has some pretty cheap rooms. I can't believe hotels in this day and age don't all have wireless Internet though, so I lugged my laptop there and back for not much reason. So what did we do?

  • Field Museum - pretty good, but their regular exhibits are starting to fall apart - they must be putting all their money into special exhibits.
  • Museum of Science and Industry - turning into a trip highlight and the new submarine exhibit is really nice. Cathy the Nurse Practitioner really enjoyed the new "Bodies" exhibit, which consists of actual cadavers on display with some kind of plastic gelled into them to make them pretty. Pretty grotesque, I thought. One of the displays had on a white cowboy hat and a notation - "Wearing a hat to show the very slight difference between life and death". I think I would have rewritten it as, "Wearing a hat because, well, we could."
  • Shedd Aquarium - Cathy would probably call it a highlight but it's never a total thrill for me. Some of the big fish and the huge anaconda were pretty cool. The dolphins did some nice jumps in their show.
  • Children's museum - it's on the Navy Pier, which we discovered you can't walk to from the south side of the Chicago river. We had to walk nearly a mile out of our way to find it. The exhibits are fairly nice, but we wanted the little one to have lots of large-muscle activities in order to tire him out for some grownup museums. The exhibits were more of the sit-down-and-play-quietly type.
  • Architectural walking tour - very well done and we will take many more. At one point the guide commented on the evil minorities who sued the city over Millenium Park, and the wonderful industrial leaders who stepped up with replacement money. I refrained from asking if she was an actual schill.
  • Adler Planetarium - not bad. I always think it's not a real planetarium unless they have a live guide and a little globe that makes glowing dots on the ceiling, which apparently shows my age. We went to the "Stars of the Pharoahs" Omnimax show, which was pretty good I guess, although I never go to Omnimax shows.

So our feet were hurting by the end of it. We came back on the bus, and this time it was absolutely full and not much fun, but we got the requisite T-shirts and some other souveneirs. Chicago is great fun. I can't wait for the little one to be old enough to do some nightlife.

Saturday, July 02, 2005

Change is good

After 4 1/2 years, it's time for me to leave Interactive Intelligence. It's still a great company to work for, but I'm ready to move on and try some new things. In a couple of weeks, I'll start work at Pro-Solv, a medical imaging and reporting software company. I'll be looking forward to it!

Wednesday, June 29, 2005

Book review: Hat Full Of Sky, Terry Pratchett

Last year at this time I mentioned to Mr. Pratchett that I was ready for another of his youth books. It took him until now to deliver; at least the paperback version, which I paid my $7 for. (BTW, my book trading site is gone now. I don't think they managed to build a community. Social software post another day!) The further adventures of Tiffany Aching are available, and it's quite a good book. Tiffany, now 11, goes off her home land to be apprenticed to a witch, but unbeknownst to her she is being tracked by a mysterious being who wants to eat her soul!

Boy, that summary makes it sound kind of iffy, doesn't it? It really isn't. The Nac Mac Feegle are back and as feisty as ever, although I think their dialect is significantly easier to understand than in the earlier books. I'm guessing you can't make major characters out of folks no one can understand. Tiffany's interactions with the other apprentices are nicely done, and Granny Weatherwax is fascinating as the other characters now talk about her the way she once spoke of Black Aliss Demurrage. Tiffany's progress as a witch is brought forth nicely, and Rob Anybody really comes across as a personality rather than a caricature like most of the Mac Feegle.

The ending is a bit nicey-nice, which I suppose is appropriate for a book theoretically targeted at younger readers. To me it came across a bit like when one of the great villains of all time, Darth Vader, decided he was really a nice guy after all and was redeemed in a single swoop. C'mon now, bad folks are a lot more fun when they're bad, now aren't they? The Mac Feegle queen was a bit wishy-washy too, and I didn't really buy into her mood swings. Finally, the climax of the book takes place at something called the Witch Trials, which appears to be sort of a renaissance festival for witches. Odd, but again maybe appropriate for the younger reader.

And for all of that, it's classic Pratchett and you can't complain. Most comedy writers, take Piers Anthony or Douglas Adams, get steadily sillier as they reach the later books in a series and have to try to wring one more gag out of the same scenario. But the great ones, like Pratchett and Wodehouse, just keep on kicking out one or two new terrific stories every year. This is one of those. Read it.

Wednesday, June 22, 2005

Living in the blurbs

Doug Jonstone comments on blurbs. (link from the idiosyncratic mind.) I'm intrigued by the correspondences between old-fashioned marketing and blurbs. As Doug says,

when such effusive hyperbole declares everything "brilliant", "superb" and "amazing" it all ceases to mean anything

which is more or less the problem with marketing - that is, the lack of credibility of the source. Are you going to read a book because it says "A real tour de force!" on the back, or are you going to read it because your buddy says it's pretty good? I would be a lot more likely to read a book if it was making the rounds in the blogosphere than for any other reason. So I guess book publishers are another on the list of people who need to learn to make blogs work for them. I know there are a few publisher-bloggers - wonder how effectively they use them to push books?

JetBrains onBoard Online Magazine :: Language Oriented Programming: The Next Programming Paradigm

The Next Programming Paradigm? I suppose it could be. Personally I'm not even completely comfortable with Test Driven Development yet.

Wednesday, June 15, 2005

VBS week

Getting Vacation Bible School organized has been taking all my time this week - when I haven't been doing that I've been stress-reading crime novels. So I have about six books on my list of reviews to write, but I doubt I'll do anything before next Sunday, the closing ceremony. I've been getting up at 5 in order to get to Indianapolis, put in a full day's work, and drive back again by 5:15 so I can pick up kids who need rides. So I'm pretty beat :) After VBS is done I'm just not going to know what to do with all my free time!

Saturday, June 11, 2005

So you wanna be a programmer?

Hazygrin links to Joel saying he agrees that you should start learning programming at a level as close to the metal as possible, i.e., C. I disagree, and I suspect that generally the people who are in this camp are the people who learned C first. (I'm not one of those; I learned Pascal before C, although a one-credit course in college in C might have been the most valuable class I ever took, practically speaking.)

Joel's alternate suggestion is a straw man, of course. No, obviously learning HTML or copy-and-pasting Javascripts is not quite the ideal learning experience. But I see absolutely nothing holy about C as being just exactly the right level to learn at, and I firmly disagree that learning the technical details about why strings are hard to manage is important for a beginner. That may be the single reason that more people aren't interested in programming, which is a shame considering the myriad of good string implementations that are out there.

But if you must get fairly close to the machine, why not start with a managed language? Being able to move from Java or C# to byte code is going to get you a long way to understanding how your source code is translated to something the machine understands, without having to really bury yourself under a load of machine code manuals.

I would replace this recommendation with Stroustrup's The C++ Programming Language, 3rd edition, which replaces all the stuff about byte copying with good object-oriented design. Going all the way back to C is, to my mind, no more necessary to a programmer starting out today than a recipe for bread has to start with "Grind down enough wheat to produce three cups of flour..."

Sunday, June 05, 2005

Book review: A Great Deliverance, Elizabeth George

I bought this first-of-the-series based on a newspaper review of the last. I'm a big fan of Elizabeth Peters' Amelia Peabody novels, and from the article I thought that it might be a similar sort of book. I was pretty much, well, wrong. About the only similarity is that Amelia and Thomas Lynley are well-off and English. Nevertheless, a good read. Lynley and sidekick Barbara Havers, members of Scotland Yard, have been sent off to York to investigate a teenager found near her father's decapitated body. As they investigate the possibility that she was not the murderer, they both have to come to terms with their own pasts, which they see reflected among the many dysfunctional characters that wander across the stage: the obligatory horrible American tourists, the drunken artist in love with the older, lonely spinster, the family man with the nympho wife who use their fights as an excuse for making up. But the murdered man's family wins the prize for "most dysfunctional", as they seem to be in the habit of simply wandering off and never being heard from again. As Lynley and Havers put the pieces together, they come to a gruesome conclusion that is not at all suitable for the genteel reader of Elizabeth Peters!

Luckily, my stomach is a little stronger than that. But I don't think I'll put this one on my wife's reading list.

Thursday, June 02, 2005

"It seems more complicated now"

A lot of programmers still believe in procedural programming even if they use an object-oriented language like C++ or C#. When you eliminate duplicate code, you can do it quite often by taking a big long procedure and replacing it with some objects. Consider this code:

for (i = 0; i<things.count; ++i)
{
Initialize( thing[i] );
}

for (i = 0; i<things.count; ++i)
{
Continue( thing[i] );
}

for (i = 0; i<things.count; ++i)
{
Finish( thing[i] );
}

There is clearly duplicate code here. Three times we run a loop over things. You can't just refactor all three calls into one loop, since the processing of the latter loops might depend on the first loop being finished.

So how do we remove the duplication? Let's create an abstract object, AThingProcessor, and use it to do all of the looping:

class AThingProcessor
{
void Run()
{
for (i = 0; i<things.count; ++i)
{
ProcessThing( thing[i] );
}
}

abstract void ProcessThing( thing t );
}

Now we can replace each loop with an instance of a class, for example:

class Initializor : AThingProcessor
{
virtual void ProcessThing( thing t )
{
Initialize(t);
}
}

And now the original code can be replaced with:

new Initializor().Run();
new Continuor().Run();
new Finisher().Run();

So what is the result? Our original code is now much more object-oriented and flexible. But without knowing the definitions of Initializor, Continuor, and Finisher, you don't know exactly what is happening here. The result is, some programmers will look at this code and say "It seems more complicated now". But it really isn't. It's just more object-oriented.

SCI-NUG

Hey, look what I found! Had no idea this group existed. Wonder if any of them blog?

Tuesday, May 31, 2005

SmugMug

Someone left a comment on my OurMedia post suggesting that I check out SmugMug. It seems like a nice enough site, but I wouldn't use it right now, for a few reasons - primarily, there is a huge commitment difference between a site that asks for a credit card and a site that doesn't. I have no idea how much time I want to spend on uploading photos in the next year; it could be hours or days, but it also could be minutes, so I don't want to lay out the cash up front. If I were them, I would offer either a free or advertising-supported basic site for simple users like me, with an opportunity to upgrade to their cooler features after they've hooked me in. My web hosting company, M6, has done this to me quite neatly - their basic package sells for $5 a month which I thought was pretty good for what was offered, so I signed up for a year. I'm sure I've put another $60 just in add-ons to what the original deal was though, and I'm already considering upping to their next service level.

Of course, the other reason I signed up with OurMedia is that Scoble told me about it first :)

Weekend family reunion

We drove from Bloomington to Penn State this weekend. I took Friday off work and drove two hours to my dad's house, piled into his van and drove four hours to Cleveland, picked up his sister and drove four hours to my cousin's house. Sort of a college road trip, with less beer and more three-year-old. But it was a good time, and there was a pretty good turnout for the "Descendants of Jesse Fulton". That's my grandfather who died a few years ago. If he'd been there, he would have seen all three of his kids, four grandkids, and four great-grandkids. Maybe he was there in spirit.

With all the driving, we didn't really have much time to visit. But we wandered around campus, and discovered that the reason there were no hotels was the big high school volleyball tournament that was going on. My brother is in theory deciding what college he's going to - in reality he'll be going to Indiana - but he gave PSU a thumbs-up as a solid backup choice. He was noncommital, though, as to the part played by all the volleyball players running around in that decision...

Getting Things Done

Mike Stall comments on how not to organize your mail. I recently read David Allen's Getting Things Done, after reading a recommendation for Take Back Your Life by Sally McGhee, visiting the Amazon site, and reading a review that said it was almost the same as GTD. I decided at that point to take the reviewer's advice and go to the original. It was definitely a good read, and I subscribed to the blog. The main thing I took away from the book about email organization was to keep your Inbox empty. The auther recommends creating three folders: Actions, To Read, and Reference. As you go through your Inbox, determine whether you can take care of the message in two minutes; if so, do it. Otherwise, move the message to the To Read folder if it is something you need to look at when you have time; move the message to the Reference folder if it's something you might need to check back with someday; and otherwise move it to the Actions folder.

This is a huge oversimplification of course, and the book recommends a few other tricks. I am deficient in that I don't carry a personal organizer of any kind, for example. But I'm slowly working towards full organization!

Monday, May 23, 2005

ISO 9000 is good

If you use it correctly, ISO 9000 can be a positive thing for your software company. Here's the secret: Observe the procedure, don't dictate it.

There are two ways of looking at software development. Some people like to look at developers as artisans. They spend a lot of time on a single application, but when it's finished, it's like a really high-quality chair - it's really pretty to look at and works really well. Other people look at developers as assembly-line workers. They kick out a piece of software according to spec, and pass it on down the line to the next worker to glue in. This software is like a chair you can get at Wal-Mart - cheap and quick and does the job.

The truth, as is so often the case, lies in between, but there are a couple of undeniable facts: Not every software developer is an artisan that can make a really great chair. And even if they were, once the original developer moves on to something else, who knows what uses his chair will be put to? So whether or not software is craftmanship or assembly work, procedures are probably going to be necessary for making changes. And in the software world, if you're not making changes, you're dead.

The true raison d'etre for ISO 9000 is that processes can be improved. But you can't improve your process until you know what it is. So observe. Find out what your developers are doing, how they spend their time. (Ask them how it could be better, too. You won't always get a useful answer, but software developers are usually pretty darned opinionated and will have something to say.)

Now you know what your process is, you can document it, and you're most of the way there to your certification. And you'll be even further along once you document how you're going to accept suggestions for improving the process.

Once all that is done, you can change the process. You might see a lot of improvements in front of your nose, right after you write everything down. If your developers tell you they have to get 17 signatures in triplicate before they can issue a fix, you've got room for improvement.

But it all comes down to knowing the procedures. The easiest way to know them is to write them down. And once you have them written down, you're most of the way to your ISO 9000 certification.

Saturday, May 21, 2005

OurMedia

This looks to be a really interesting project. They claim that they will archive your digital media forever, basically. Sounds nice, but I registered and took a shot at uploading a few files. What I'm really looking for is an online photo album - just someplace that will store my pictures for me so I don't have to worry about archiving CD's or making sure hard drives are backed up. People who are interested in archiving have to worry about a lot of things like making sure their images are dated, sourced, and described, and I bet quite a few people are doing that and then having a hard drive go south and losing all their work. So before I got onto that part I wanted to be sure I had a good file archiving system, and this site looks like it could be that. What I found was that it was pretty difficult to upload a picture. I uploaded a snapshot of my son and I had to fill in my copyrights, image information, approximate size, resolution, and a lot of stuff like that. It's not a problem for an individual pic, but if I have a couple of hundred it starts to get old fast. The site seemed pretty slow, too, but that might have been my connection. So I guess my next area of research will be image collection formats :) Wonder how they'd deal with a ten-page TIFF if I uploaded it?

Friday, May 20, 2005

Coding principles

* Avoid duplicate code. Anywhere there is duplicate code there is the potential for bugs. Code must always be changed, and anytime you leave the same code in two places, you run the risk of changing it in once place and not in the other, thus introducing a bug. This is the value of Simplicity.

* Don't go too long without soliciting input. You need to get input from users, to make sure that the application is doing the right things. You need to get input from programmers, to make sure your design and architecture doesn't overlook flaws. These are the values of Communication and Feedback.

* Make changes when changes need to be made. Don't fall into the trap of avoiding making changes because "it might break something somewhere." Ideally, of course, you have enough unit tests running to verify that things don't break when you change code, or at least that if they do, you know it quickly. But once the code is so complicated you are afraid to make changes, you can't respond to customer input quickly enough to keep up with your competition. This is the value of Courage.

It's interesting that these principles feed off each other. If your code has Simplicity, you are more likely to have Courage to change, which allows you to respond to Feedback more quickly.

Sunday, May 15, 2005

One's virus grammar must be impeccable

Quote from this article in ComputerWorld: "Another recent variant, Sober.M, which surfaced back in April, deliberately used incorrect grammar within the subject line, thereby attempting to convince recipients that the e-mail wasn't a virus and make them more likely to open the infected attachment." Why on earth would people be more likely to assume that viruses have correct grammar? Since I tend to communicate primarily with intelligent people, seeing bad grammar in an email subject automatically makes it suspect in my book. But now I know better. If I ever write a virus, I'll be sure to have this in the body.

Terribly sorry to disturb you, old chap. Here's those jolly enticing pictures I told you about earlier. Just open the attachment and Bob's your uncle. Cheerio for now!

Will that help?

Thursday, May 12, 2005

Indy NDA and VS 2005 Beta

Went to the local .Net users group meeting tonight. They showed off some of the new features of VS 2005, including refactoring and unit testing - two of my particular interests, of course. I think if they become generally adopted I'll have to find some new cause to evangelize :)

The main thing that occurred to me during the presentation was how similar the refactoring support looked to Resharper, and how similar the testing stuff was to NUnit. I hope one or both of these companies is getting a cut. (I asked the presenter to compare VS and NUnit but he wasn't familiar enough with it to say.) The refactoring support for VB was pretty jazzy, though. They're also bringing back Edit and Continue, which everyone was grumpy about being left out of earlier versions. It's just one more tool to help people write bad code, IMO. Much better to write well-tested classes instead of changing a couple of lines on the fly for each run.

Another presenter showed off Master Page support for ASP.Net 2.0, which did look pretty nice. I'm still behind in the Web world, but luckily I wasn't one of the six people tonight who went home with no door prize - I picked up a new book on XHTML and CSS. Worlds enough and time!

Wednesday, May 11, 2005

Vacation Bible School

VBS is coming up quick! My responsibilities are getting things written and printed, and handling the closing ceremony. I've written up a letter to parents and a letter to kids, and a registration sheet. The closing ceremony will be a bit scary; I'm sure I can get a couple of kids to sing, and maybe a couple to read Bible verses. But I'm thinking there's going to be plenty of time to sing some hymns and take an offering and all that good stuff :) So I guess the question is - do I start a separate blog for it? I guess the answer has got to be yes - at the end of VBS I'll shut down the blog and copy all the entries to the church site. That should be fun!

Friday, May 06, 2005

ASP.NET

I'm taking the plunge into learning ASP.NET now. I have a couple of minor things I want to do for my first application: allow posting comments on the sermon at my church site, www.universitybaptistonline.org, and read scheduling information in from an XML file. The code for each of these items ought to be pretty simple, but I'm having trouble grasping the relationship between FrontPage, which the site is primarily written with, and ASPX. Like, I have a theme defined for the site in FrontPage, and it isn't being picked up by the ASPX pages. It appears that the only difference is a meta comment, and I added that to the ASPX, but it didn't make a difference as far as I can see. Also, I wonder if you can bounce the ASPX pages around to make the addresses consistent. Like, the page you get scheduling information from is http://www.universitybaptistonline.org/worship_schedule.htm now - note the navigation bar and the yellow styling - but in my .Net project the page would be http://www.universitybaptistonline.org/worshipschedule/webform1.aspx . No navbar, no styling, and an address that's rather more complicated. I suspect it's one of those things you just pick up with experience, and eventually I'll realize either that it's not working because something's wrong, or it's not working because there's no way to make it work. But I'd sure like to know the answer now.

Monday, May 02, 2005

Book review: Getting Things Done, David Allen

I spent a few minutes before I started writing digging for the link. Doesn't it seem like anyone who makes a living as a consultant should have a blog? What a great way to get your personality across, and consultants are nothing without personality.

There was a book that came out a while ago about using Outlook as your primary organizing tool. I went to Amazon to read the reviews. Someone said that it was nothing more than "Getting Things Done" with a few tool-specific tricks. I thought at that point I should go read the original rather than the copy. I wasn't disappointed.

I wasn't knocked out of my socks either. It was a good book, and the principals seem straightforward, although to keep using the system sounds like a lot of work. For example, David recommends getting your workstation set up properly with file cabinets and in-boxes; I kept thinking to myself, yep, just as soon as I get a bigger house. But there was some useful stuff. He recommends an indirection from your Inbox, which is where everyone at my company lives, so I tried clearing out the whole Inbox to some alternate folders: "Action Items", "Read and Review", and a few others. I'm not sure how much the system will really help me, but I'm willing to give it a whirl for a while. I suppose I went into the book looking for a tie-in to XP - I figured I'd have my inbox on a set of 3x5 cards that I'd carry around with me. It does seem like you need to have some portable inbox, though, whether it's a Palm or a paper organizer, neither of which I have. Of course, my job requires just about zero travel anyway.

Anyway, my Inbox is empty now, and I have a list of things in my Actions folder, and another list of things in my Tasks, which hopefully I will remember to check every so often. So we'll see how it goes. Maybe it will revolutionize my life. Wouldn't that be nice?

Friday, April 22, 2005

How to lose a web site

Here's some really good advice, with lots of real-life examples, on how not to create a web site.

#1. Don't choose a site that's a random sequence of letters

I was casting around for a web site last year for our church, something I'd never done before. I was doing publicity for Vacation Bible School at the time, so I thought I'd try ubcvbs.org, for University Baptist Church Vacation Bible School. It was available, which is probably not a surprise.

#2. Don't choose the first registrar that you come across

I typed that address into my browser, which of course told me, that address is not available, would you like to buy it? I clicked yes, and was sent to the default MSN registrar, some company in Australia, and they charged me $35 for the site. (Now I know that $8 or $10 is probably more reasonable.)

#3. Don't let the registration expire

When I figured out that I'd overpaid, I thought, Aha! I'll just let the domain expire from this registrar and buy it again later from somebody else. I did that, but found that the Australian company's policy was to keep their domains unavailable for 76 days. So I had to wait that long before I attempted to buy it again. Unfortunately, I got squatted on. Some company in India that specializes in buying domains that might have inbound links snapped it up before I could get to it, and now it advertises gravestones. A particularly ironic fate for a church site, I thought.

So, that site is gone. I bought a new one, http://www.universitybaptistonline.org/, which is a much cooler name anyway. I'll try not to make quite as many mistakes this time.

Thursday, April 21, 2005

Narcissism

(As if there was anything more narcissistic than a blog). I've started a web site devoted to people named Ben Fulton. We are quite the creative bunch, including artists, musicians, and writers. And one blogger. I was already aware of most of these people, having Googled my own name before, but I turned up a few new ones, and even found that this blog has made it to the first page of links, which was pretty cool. My home site is titled "Ben and Cathy Fulton" which really drops its rank for this search. (I also found some really strange references , which led me to check Google Groups as well. Ah, some great stuff in the early 90's. I was a laugh a minute.)

Monday, April 18, 2005

Book review: Laws of our Fathers, Scott Turow

There's a certain kind of multi-generational book that appeals to me; the kind where you get to look back across many generations and realize how they all fit together. The grandfather was like this due to oppression and violence; so the father was like that because of his father; so of course the hero has to be just like this because of his family history. This is one of those books, which is a bit surprising, really, since it's a courtroom drama primarily, and that's how we see it from the beginning. But you are bounced back and forth between the heroes as they are today (1995) and how they were 25 years ago as 60's flower children. And while only one parent-child combination are really major players, the ghosts of all of their parents are there, and they carry along the emotional baggage. The judge who is the daughter of the revolutionary; the reporter who is the son of concentration camp survivors; the politician who is the child of a plantation owner.

Maybe the reason I like this sort of book is because of how little I relate. I've done quite a bit of studying of my family history, at least the Fulton and Alspach families, and as far as I can tell they were upstanding and sensible to a man; leading directly to my upstanding and sensible father, and leaving me with no particular emotional baggage, or at least no more than anyone else. We've no horse thieves, we've no child molestors. Maybe we're just really good at concealing it.

But of course we're all blind to our own character flaws. Maybe the rest of the world looks at my family and sees...what? Arrogance? Pomposity? Pretension? It's hard to say. Of course, for the most part no one thinks of anyone else at all, preferring to concentrate on what other people think of them.

Well, but so on the characters go, slaves to their various family pasts. The book twists and turns but holds together somehow, over the course of its 800 pages. I had trouble concentrating on some of the 60's bits, since I had picked it up looking for a courtroom. But worth a read if you have time. Lots of inner-city gang characterizations, so skip it if naughty words disturb you.

Sunday, April 17, 2005

Vacation Bible School ramping up

Our VBS has a directorship-by-committee this year, and I'm on it. It's a new thing for all three of us, but we're working together well, so that's a good thing. It seems to be coming together. We've planned just one teacher's meeting prior to VBS, although we anticipate a second, and also a meeting of the non-teacher leaders. We'll arrange a prize package for the kid who brings the most visitors, and we plan on having live animals there for the kids to see as well. Since all of our teachers are pretty experienced, we really hope our opportunities to screw up are limited :) The closing ceremony might be an issue, as our emcee plans to be out of town.

Friday, April 15, 2005

Finishing an agile project

I did a bit of research for this article, after it occurred to me that I really wasn't sure how to answer this objection. How DO you know when the project is done?

Most clients will want to specify the items I gave up front: time, scope, and cost. But specifying all three variables will, almost invariably, lead to overruns, bugs, and dissatisfied customers. Why? Because software is inherently an abstraction. If I want to build a skyscraper, I can get an architect, draw some pictures, do a 3D model. I'll have a pretty good idea of what the concrete implementation of the skyscraper will be before the first shovelful of dirt is ever turned over. But software doesn't work that way. By the time you've put together a decent picture of what the software will look like, you're well on the way down the road and have probably put a pretty nice chunk of change into it. Now, you can try specifying time/scope/cost, maybe even do a good job of implementing it. But chances are if you've done that, you've told the clients you can't make that little change they wanted without changing the contract, updating the design, and of course, charging a lot more money. Now everyone's unhappy. The clients didn't get the change they wanted, so they're not as excited about your product. You're unhappy - or you should be - because you have an unhappy customer and a product that isn't as good as it could be.

So here's the solution: Rather than allowing quality to be the dependent variable, hold it constant and let another variable, say scope, be dependent instead. So now, you've got a contract that says you will work on this project for x number of months, and it will cost y dollars per month, and for that money, the client can choose whatever features they want next at the end of the month. Or, to put it another way, get rid of the deadline.

Whew, I think I'm either going to have to stop this series, or write a book. Next time, I'll finally come back to my church application.

Tuesday, April 12, 2005

Problems of Software Development 3

One interesting thing I've noticed about Extreme Programming in particular is that any objection you can present to a single practice, usually can be responded to by pointing at one of the other practices.

"We don't have the manpower to test the whole project every two weeks!"

Ah, but you've been writing unit tests all along, right? If your application has a solid set of unit tests, and every one of them pass, then you have a pretty good feeling that even if the new functionality you've added isn't quite right, you've probably not made anything worse for the existing customers. Besides, on big, complicated applications there's usually a process for getting new, isolated fixes out the door long before the next release comes out six months or a year down the road. What these fixes come down to are sort of a "Frequent Iterations" emergency measure - that is, the company doesn't believe in releasing software very often, but the customers insist upon it, so out the door it goes, sometimes whether it's been adequately tested or not.

Finally, automated acceptance tests are a key feature here as well. Unit tests are great, but they work at a deep level of the application. When it comes down to it, the user is going to need to click some buttons and type in some data, and is going to get an expected result. But there's no reason for a person to be doing work that computer is able to do, even if the computer has to move its own mouse and type on its own keyboard.

"Our users are going to file hundreds of change requests! The developers will be buried!"

But you've got a Customer, right?

I think the word Customer in the Extreme Programming sense is really poorly named. Everywhere you read about someone attempting this practice, they say, "Oh, but we don't do that. We have shrink-wrapped software." Or, "We have a dozen customers." This misses the point. Customer, as defined in the XP sense, is required to be a single person, or at the very least a committee. Whether the person speaks for one, a dozen, or 100 million actual customers is beside the point. The customer is responsible for looking at all the change requests, putting them into a neat order, and getting them to the programmers, who will be able to estimate a date based on the highest priority items.

"How will we ever know when it's done if we don't have the requirements set in stone up front?"

But what requirements were set in stone? Generally, they involve three factors; the project's:
  • Time allotted
  • Budget
  • Scope

It neglects the simple fact that a project actually consists of four factors: the three above, plus quality. However, only three of these factors are independent; the fourth one will depend on the others. So, if you specify a project's Time, Scope, and Cost, you have fundamentally specified its Quality as well, and the only way to raise the quality is to lengthen the time, increase the cost, or reduce the scope.

So how do you know when the project is done. I'll look at that next.

Sunday, April 10, 2005

Xanga and RSS

This is a friend of mine who has been blogging for a while now, but I haven't found the site until now. Her host, Xanga, does not do an adequate job of providing RSS feeds. Skimming the web provides a whole host of solutions to this. Here are a bunch of links to RSS using various translations:

http://www.xanga.com/rss.aspx?user=amy_gs_reading
http://www.ephemeraleuphoria.com/xanga/rss.php?amy_gs_reading
http://www.joshstaiger.org/XangaRssFixer.pl?user=amy_gs_reading
http://www.mikexstudios.com/labs/XangaRssFixer.php?user=amy_gs_reading
http://www.jasontan.org/xanga/rss.php?users=amy_gs_readings
http://www.acr-web.com/xangafeed.php?friend=amy_gs_readings

How many of these give back RSS that can be read in RSS Bandit? Well, that would be: One (1), the one from MikeXStudios. Thanks to the External Mind for that.

Friday, April 08, 2005

Agile in the trenches

So who does this agile development stuff?

Ron Jeffries. Martin Fowler.

Duh. Who does it that's never met either of those two people? Who's actually doing this down in the trenches to develop real software applications? Most importantly, who's never met these two people, develops real software applications with agility, and has a blog?

Me, I guess. But here's a few others:

http://pab-data.blogspot.com
http://tedogrady.blogspot.com
http://hhroark.blogspot.com/
http://geekswithblogs.net/sbellware
http://theagiledeveloper.com/default.aspx
http://www.undefined.com/ia

Importance of the church web site

As Jordon Cooper was considering a church, he found very little about it. He'd find even less, I suspect, about our church if he looked for it. Quite apart from the generic name "University Baptist Church", the web site domain, www.ubcvbs.org, has been down for months now after I let it expire. When I realized it, I wrote to the registrar (Melbourne IT) asking if they'd drop it so I could get it back, but they told me to wait 76 days after the drop date. Ouch. But I'm sure that period's expired now, and I'd really like to get the site back to get ready for Vacation Bible School, the whole point of the vbs portion of the site. In the meantime, the site is hosted at one of my other web pages, http://fulton.home.insightbb.com/ubc , where I'm sure it gets about a drop of google juice a month, and no incoming links. Most annoying. I wonder what people would google for if they drove by and wanted to know more?

Problems of Software Development 2

I discussed some problems with software development here.

So what can be done? The basic problems I see here are #1: The Deadline, and #2: The Database. The programmers work in a panicky rush to fulfill all the items in the Database before the Deadline. So let's start with the obvious: Get rid of the deadline.

"Say what?" I hear you cry. "We can't just never release the project!" No, I'm not saying that. I'm saying - and this is one of the requirements of agility - release early and release often. Get the application into the hands of the users and let them bang on it. They may not find all the really picky little bugs, but that's OK for 99% of the users who won't ever use that functionality anyway. More importantly, the users are going to find the things like the button on the wrong form that would save each user four clicks if you just moved it. They'll find the missing report that they didn't know they needed until they saw how useful it would be with this application. Get the application out there quick enough to catch those things - and then fix them in the next release! How often? Every two weeks, I hear, is pretty reasonable.

But the objections now come thick and fast. "We don't have the manpower to test all the whole program every two weeks!" "Our users are going to file hundreds of change requests! The developers will be buried!" "How will we ever know when it's done if we don't have the requirements set in stone up front?" I'm not the greatest practitioner of agile methods in the world. But what I have found is that for every objection that someone makes to an agile idea, there's a pretty good response from the agiliots. I'll try to come up with responses to these next time. Oh, and I've even been working on an application! I'll try to get up to date on that as well.

Wednesday, April 06, 2005

Big visible belly

I love Brian Marick's idea to help him lose weight. I weigh almost exactly what he does, but I'm not as agressive in my goals; I'd like to be around 175 by the end of the year. I'll be comparing my weight to his though!

Problems of Software Development

I'd hazard a guess that most companies develop software in a manner somewhat like this: they come up with a short list of features, break those down into a whole bunch more smaller work units, assigning those to some programmers, and then go back and review the database every so often to see how many of the work units remain to be completed.

Now, for the most part programmers are good people. They're interested in the project; they want to do a good job and make something easy and fun to use. So what goes wrong? Why do most applications ship with glaring bugs and obvious usability issues?

Here's why: Everything starts to revolve around this work unit database. Near the end, emails go out to the programmers saying, "I see you still have six work units left. Will you be able to get all those finished by Friday?" As the project moves forward, additional work units are added for new features or bugs. More emails go out. Eventually the project gets thrown to a tester, who enters dozens more work units. The programmers, faced with a long laundry list of items and a deadline, starts to cut corners. "OK, this item says we need to add a State Last Worked In field to the form. I know we're eventually going to need a Zip Code too, but I don't have time to worry about that; I have 15 more units to finish by Friday!" So the program goes without the zip code field. It goes back to the testers, who look at the list of completed work items; yup, there's the State Last Worked In field, looks good. Nobody's told the testers exactly what the purpose of the application is, so they don't know that a zip code needs to be there. Finally, all the laundry lists are complete, the testers sign off on it, the application ships. And customers look at it, scratch their heads, and say, "Why on earth didn't anyone think to put a zip code on that form?"

So what can be done to break this cycle? Well, the various methodologies that call themselves Agile have some ideas.

Tuesday, April 05, 2005

Buying some oil tankers

I bought some shares of Nordic American Tanker (NAT) today. I went in looking to put some money into China or maybe Hong Kong in raw materials or transportation, but I really didn't see a whole lot in raw materials that really struck my fancy. NAT is based in Bermuda, which I find really strange; you hear a lot about off-shore tax shelters, and this may be exactly what this is; but I don't see anything wrong with it. It's a public company, and I can buy shares and make a nice dividend return, and that's all that's important to me. So we'll see. As a shareowner they'll be sending me their annual reports in nice printed pages, so maybe once I see those I'll see some disadvantages. In the meantime, maybe I'll ask them to put the current locations of the ships on their website. It'd be just like playing Risk :)

Sunday, April 03, 2005

What did we do that worked?

The site "Church Marketing...", well, something or other, asks, "What did you do this weekend that worked? What did you do that didn't work?"

Great questions. Our service wasn't a whole lot different for Easter than it was for other weeks, but all I have to do is look at this week's service to get a mountain of ideas.

Why don't I keep a camera with me every week? We planted a tree in memory of a passed congregant after service. There were some cameras there, at least. I'll hope to get some pictures for the website.

Our service recording/archiving plan needs work. I didn't bring home the cassette tape with me, for copying to CD.

We got some brand new cubbies for the nursery. That should be handy, although volunteers are needed less in the nursery now that we have a paid worker again.

What did you do that worked? What did you do that didn't work?

Church management software part 3: Creeping feature

OK, the very next thing I intend to do is expand the range of the product a little. For months I've been primarily responsible for attendance-taking in the church; collecting the sign-in sheets, checking for visitors, trying to make sure they're followed up with appropriately. So this is an obvious extension piece for this software; a way to track attendance and followups. I'll think some more about the design of this, but it's similar in many ways to what I've already stated - data entry screens, a data store, and reports, so hopefully there will be some opportunities for refactoring here. Also, requirements for security are a lot less stringent - the data that is kept is names, dates, addresses and phone numbers, rather than social security numbers and income. So it's a bit easier to put together.

So right now, we're looking at three main pieces of the application: benevolence; attendance; and updating (wonder if I can come up with a word that means "updating" that ends in "ence", that would be cool). For ease of updates, we'll split these out into several assemblies:
  1. A stub. This will be the launcher application. It will be very simple and hopefully will allow us to update the other pieces very simply.
  2. A Benevolence assembly.
  3. An Attendance assembly.
  4. An Updates assembly.
  5. A Persistence assembly. This will handle the interface to the data store. Now I really need another word for "Updateance"!

Next step: We'll throw a few screens together and see how they look.

Politics of choosing the next Pope

Friday, April 01, 2005

I still don't get Technorati

Poking around for information on this project, I did a Technorati search for "Church Software". This blog came up, updated 2 hours ago:

Reality Distortions: The Beginning

Very nice. Seems like an interesting guy. But this post was done four days ago. Why does technorati say it was two hours ago? Was there a format update? I don't get it. DLux, drop me a note if you want to talk about software for churches though :)

Church management software Part 2: Inherent requirements

So now we have a basic goal for the application; we have a vague idea what the users are going to want to do with it; the next question is, what are users never going to think about but are going to complain about if it is not present? Here's a few of those things.

#1: Security. We're talking about entering some very private information into a database here; not only are we talking about requests for charity, but personal data like social security numbers will be a likely requirement. Right now, the list of people to whom this information is available consists of: (a) the pastor, and (b) the deacons, and the file is kept locked in the pastor's office. So, while the ideal design would be a distributed one, keeping an online database behind a firewall and accessing it through a web service, I don't feel like I can guarantee the necessary security; even if I could talk all the users into keeping a nice strong password. So, for the initial pass, the data will be kept in local files on the computer. Presumably, when it is actually deployed, it will run on a single password-protected computer. I have some thoughts about using Windows Users and Groups to handle Role issues.

#2: Integrity. An important requirement for a church, huh? But specifically, I mean that the data shouldn't be corrupted; or at a minimum, regular backups should be arranged. The target audience for this project is a small church, and it's a pretty good bet that they won't be doing nightly tape backups of their systems. So at a minimum, regular backups should be done like Microsoft Word does, every minute or so; but ideally there would be a way to automatically back up to a different machine.

#3. Updatability. This is an agile requirement, really. I want to make the software very easy to update so that users will be encouraged to use the latest software at all times. This is a huge benefit for software developers. There's nothing worse than trying to figure out an issue based on a user who's running code from two releases, three service packs, and a hotfix ago. If people come to me for support, my first question will be, "Are you running the latest code? No? Update, and call me back if it's still happening."

Another agile requirement is that you avoid overdesigning the aplication. So, it's past time to write some code. One concept that really appeals to me is "Release 0". That's where you get an application out there that doesn't do anything at all except know how to update itself. Let's see if we can do that next.

Thursday, March 31, 2005

Church management software

One thing I'm looking to do is to make this blog a little more technically oriented. My other blog is really an Interactive Intelligence thing - the site is clientcom.blogspot.com, and it's named after the Interactive product ClientCOM; so it really seems most sensible to keep posts to that blog on ClientCOM - tips and tricks for using it, etc. Unfortunately, soon after I started that blog, I stopped focusing on ClientCOM in order to do other things, so it has been dark for quite a while. I'd like this blog to be about some technical work I'm doing, as well as the books and plays I'm currently seeing. (Once again - blog categories. C'mon, Blogger!)

So my church is looking for a better way to handle benevolence requests. These are requests that come in from people who need charity - say, $100 for fuel in the winter, or help with gas to visit a sick mother. I was casting about for things I might do as a Micro-ISV, so I thought I might be able to help out - and perhaps, if it works out well for this one church, be able to sell the application to others as well. That's a bit of a ways off, though.

So I'm tackling this project; more or less on my own as far as the design goes. I don't think my "customers" are going to be too demanding, so I'll have to keep on top of them to make sure that the application is actually useful to them. I'll be creating the design and requirements, etc., myself, so I think this is a good application to use some agile methodologies on. Specifically, this project will have: Test-driven development, frequent iterations, and easy updates.

So what are the requirements? If I ask the pastor, I'll get an easy answer: A way to enter benevolence requests online, without paper forms. A surprising addition, to my mind, is: A way to track down resources that might be able to fulfill a request. What this is, basically, is an algorithm for finding places that will take vouchers for gas; maybe food banks that could help a hungry person, etc. To my mind, these are such different goals that I'll just be ignoring this one, until I get further along in the development. So I'll concentrate first on the paperless form.

So the next question is, as a techie, what requirements do I see that underlie this prime requirement?
  • A backing store
  • Data entry screens
  • Reports

Seem to be the minimum. I'll think about how I'll be fulfilling these requirements next time.

Tuesday, March 29, 2005

Writing again

I've been so busy lately that I haven't bothered to write anything. But today I fired up Bandit to catch up a little bit on http://scoble.weblogs.com/, and I remembered what it's all about. It's about keeping in touch. It's about exposing a little bit of yourself to the world. Blogging is an interesting feedback loop. You write something interesting, and people read what you have to say. But if you don't write anything interesting, no one will visit your site; so it's about buzz, it's about attention. There's lots of interesting things going on in the blogosphere, and no one has time to keep up with all of it, but to keep in touch you absolutely have to do one thing: write. I think blogs, along with wikis, are the most important new internet development in years, and I'm trying to figure out where I fit in. I should be writing about work. I should be writing about church. I should be writing about interesting things I find on the internet. I should be writing about Extreme Programming, or C#, or Ultimate Frisbee, or anything I know something about.

There's some similarities between blogging and Extreme Programming, I think. They both rely on a tight and fast feedback loop. They both support rapid and easy change. They stress communication as a core value. And maybe most importantly, they both require a lot of discipline. It's easy to write code, hard to remember to write a test every time I make change. It's easy to start a blog, hard to remember to keep it going and keep it interesting.

So maybe this is my latest attempt to regain the discipline. I'll try to write some interesting things. We'll see if it works :)

Friday, December 03, 2004

Ballet Review: Nutcracker

As a matter of fact, I don't go to a lot of ballets. It's not really that I have any objection to them, but on the whole I tend to prefer opera, or at least a play. But it's definitely one of our holiday traditions now, to swing over to the IU Musical Arts Center and catch Nutcracker when it's here. A couple of years ago a friend told us that we were really lucky to see Julie Kent performing in it, as she was one of the greatest American ballet artists living, and we felt appropriately privileged, but Julie was back again this year, so she must have some kind of special connection with IU and it wasn't a once-in-a-lifetime experience.

Highlights: The Arabian Dance, Mother Ginger, and Damian Woetzel as the Cavalier. I thought his solos were an impressive display of leg strength. He's from the New York City Ballet. His duets with Julie Kent were good too. Mother Ginger is played by the same person (Colin Donnell) every year and he's utterly hilarious, camping up the role and bumping and grinding his 20-foot wide hips. Joshoa Sutton and Angelina Sansone did a very erotic Arabian Dance. They play a snake and a snake charmer, and she spends her time mostly crawling up and down his body. You could just feel the steam coming off them. I mentioned it to my wife, and she said, "Oh, the one two years ago was hotter." Guess I was still too sleep-deprived then.

Lowlights: The Prince didn't quite make it under Father Christmas's robe. You could see him running along behind, and that effect didn't work at all. I've thought the last few years that the magician (Theodore Keener) kind of gets short shrift. You can see the intent in what they're doing, to make him look mysterious and magical, but the timing always seems to be just far enough off that you don't get the impression of a puppetmaster pulling the strings of the other characters that they're going for. We thought the choreography in the Dance of the Snowflakes was slightly off.

In general: Fritz (Justin Zuschlag) was very effective, hassling the girls, swordfighting the magician, and sticking his tongue out at him when he thought he could get away with it. I wasn't that excited with any of the marionettes, which is a bit odd, because Joshoa Sutton played the Moor, and he also played the Mouse King and the snake charmer very effectively. They've redone the Chinese dance recently. I dunno; the dancers were very good, but I think I still preferred the dragon from last year. The Russian dance is my favorite to watch, it just pulses with energy. There was a baby on stage for the party scene. The lady next to me said it was Ms. Kent's, which is why she didn't perform last year. Having a baby must be one of the worst things a professional dancer can go through.

Here's what I found most odd: I think they were lacking a dancer. Not that they were lacking any of the parts, but the sequence at the beginning of the second act where the prince narrates the battle with the Mouse King, is supposed to be narrated TO someone - and no one was there! They told it all to themselves, just a little narcissistic reminiscence. I also thought that Julie Kent played the Dew Drop Fairy, but now that I check my program I see that's wrong; unless maybe that dancer was the missing one and Ms. Kent took over for her.

It seemed short to me this year, but maybe that's the sleep deprivation again. I can't imagine what they would have bothered to cut. We were home by 10:30. It plays twice tomorrow and once again on Sunday. See it if you have a chance!

Wednesday, December 01, 2004

IU loses to UNC 70-63

I listened on the radio and followed along on the free peegs board, so I don't have any real insight from watching the players. But here's a few thoughts.

What I know: IU couldn't shoot to save their lives, and I don't think Carolina was much better. So why can't they shoot? The announcers say, "They don't translate what they learn in practice into games". The fans say, "They have a lousy coach." I think it could go either way. Coach Davis' first really good recruits were Marshall Strickland and Bracey Wright, and as one Peegs poster pointed out, neither one is any better as a junior than they were as freshmen. Coach's fault, or players? We won't know until - or perhaps unless - we get to see him coach a few more recruits.

What else I know: I love the freshmen! They're out there hustling and working, and Vaden nailed three three-pointers in the last couple of minutes. That's a great sign. But, so ends the first game against a really tough non-conference stretch. We'll see if the team gels...or perhaps just learns to shoot.