Ramblings of a software developer with a degree in bioinformatics. Agile development mixed with DNA sequencing - what could go wrong?
Thursday, July 28, 2005
Interesting ImageGear problem
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:
programming
c++
Friday, July 22, 2005
OnTime v6 and Source Code Control - Part 1
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
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
Friday, July 15, 2005
10 Easy Ways to Keep Me from Visiting Your Church Because I Visited Your Website
Soccer camp II
- Have fun
- Interact with the other kids
- Do what the teacher/coach says
- Learn soccer rules
- 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: soccer mom
Thursday, July 14, 2005
The Goblet Of Fire
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: Books, Harry Potter, public relations.
Monday, July 11, 2005
Soccer camp
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
Wednesday, June 29, 2005
Book review: Hat Full Of Sky, Terry Pratchett
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
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
Wednesday, June 15, 2005
VBS week
Saturday, June 11, 2005
So you wanna be a programmer?
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
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"
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.
Tuesday, May 31, 2005
SmugMug
Of course, the other reason I signed up with OurMedia is that Scoble told me about it first :)
Weekend family reunion
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
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
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
Friday, May 20, 2005
Coding principles
* 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
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
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
Monday, May 09, 2005
Friday, May 06, 2005
ASP.NET
Wednesday, May 04, 2005
Hitchhiker's Guide to the Galaxy radio show
Monday, May 02, 2005
Book review: Getting Things Done, David Allen
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
#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
Monday, April 18, 2005
Book review: Laws of our Fathers, Scott Turow
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
Friday, April 15, 2005
Finishing an agile project
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
"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
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
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
Problems of Software Development 2
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
Problems of Software Development
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
Sunday, April 03, 2005
What did we do that worked?
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
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:
- 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.
- A Benevolence assembly.
- An Attendance assembly.
- An Updates assembly.
- 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.
Friday, April 01, 2005
I still don't get Technorati
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
#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
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
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
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
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.
Tuesday, November 30, 2004
IU Basketball
Now, the Davis philosophy towards recruiting is a lot different than Knight's. We've moved from the real recruiting of student-athletes to going after the NBA talent that all the Kentuckys and Arizonas like to have. I really miss watching a smart kid with not much athleticism, like Jarrod Odle, going up against some bozo with no interest in anything but the NBA draft, like Joel Przybilla, and taking him to school. We won't see any more of that.
Well, we must move with the times. Indiana, our Indiana, Indiana, we're all for you!
Saturday, November 13, 2004
Letter to the Editor
After a long battle, it seems fairly clear that the issue of I-69 has resulted in a victory for big business interests over consumers, and the highway will be built. Those who continue to fight on must surely console themselves with the adage that the only cause worth fighting for is a lost one.
But the Herald-Times' position on this issue has moved beyond "supportive" to "obsessive" and maybe even as far as "flaky." Almost the only mention of the highway in the last month has been on the editorial page, first by telling highway opponents not to vote for a tiny third party, and later, bizarrely, by claiming that the tiny third party's tiny vote totals must have represented all the opponents. For my part, I suspect that many voters found the arguments in the first editorial compelling, although judging from the second the H-T must not have thought so.
Still, those who are against the highway can do nothing less than thank the Herald-Times for keeping the issue in the public eye. No cause is ever truly lost until it is no longer talked about.
There is a 200-word limit; this is about 190 words. I worked for a while trying to get in some points about the Libertarians, and how the number of people who were even aware of Gividen's anti-highway position was probably pretty small, but I decided to keep on message for this one. (I can write one letter per month, maybe next time!)
Friday, November 05, 2004
Oooh, new cell phones today
Tuesday, November 02, 2004
Election liveblog
The most interesting thing I've heard so far was a report on CNN that the Kerry folks were very optimistic about Ohio. There certainly hasn't been any formal report - none of the networks would dare - but this informal report is the most exciting news I've heard so far. Current score is Bush 171, Kerry 112. Dan Rather says the "Election is humming along like Ray Charles." Hmm.
9:56. They've announced that Mitch Daniels has won out over Joe Kernan for governor. I don't know how much difference that will make, really. I'm willing to give Mitch his chance. I voted for Kenn Gividen, of course.
10:00. Switching over to Jim Lehrer's Newshour. I'm sorely tempted to switch off the TV; I think more information will be available on the radio. For some reason I went and looked at the radio station websites for results, without success, before going back to my favorite, www.heraldtimes.com, which had all the information.
10:40. Bush takes Missouri. He's now up 193-112. We're still waiting on the exciting states, though. No new news on Ohio, Pennsylvania, or Florida, and Michigan and Wisconsin are still in play as well.
Looks like a shift on the Monroe County Council. The three Democrats are up, and if they win the Dems will take control of the Council back. I have no real idea what that will mean for the county :)
10:55. www.cnn.com lists Pennsylvania going to Kerry. As I type this, Jim Lehrer also announces that, but the AP hasn't announced it yet. As I watch the election, I automatically add 55 votes to Kerry's score to represent California; if you do that Bush is still ahead 193-188. Yow, how long will I hold out tonight?
11:10. CNN now adds California officially to the Kerry side, and Idaho and Arizona for Bush. Bush 203-188. The Newshour analyst thinks Florida will go to Bush; if so it's very simple; whoever wins Ohio will win the election.
11:15. CBS shows the count as Bush 219-199. The "Bloody Ninth" is showing 49% each for Baron Hill and Mike Sodrel. I didn't realize that district was so much in play. I wonder if Baron Hill is regretting not answering the survey I blogged about before?
11:28. Hmm, CNN's "Crossfire" guys aren't too happy with Florida. Tucker Carlson: "I think we should give Florida to Puerto Rico." Paul Begala: "How on God's Earth do we not have absentee ballots counted in Florida?" (You would think that with all CNN's correspondents, they would be able to update their blog more often.) Newshour now shows Bush, 203-188.
11:42. ABC is willing to call Florida for Bush now. They were beat to it by several minutes by Instapundit. PBS announces Bush by four percentage points in Ohio, with 65% of the vote counted, and apparently people are STILL trying to vote in Ohio. VodkaPundit is practically calling the election over.
12:17. Cuyahoga County in Ohio seems like it could put Kerry over the top all by itself. PBS now reports Kerry taking or ahead in Minnesota, New Hampshire, and Michigan. CBS, the most daring of the networks, shows Bush ahead 246-207. Barack Obama is giving his victory speech now; I bet he'll be a good senator.
OK, that's all I can do. Off to bed...but I'll have the radio on for a while!
Monday, November 01, 2004
Vote Green Libertarian
Saturday, October 30, 2004
Writing encouragement
Thursday, October 28, 2004
Endorsements
Maybe not all of them. There's a voter's guide in the paper today. What gets my endorsement?
(1) A response. Candidates here and there didn't respond at all to the questionnaire from the League of Women Voters. What are they, too good for them? Kevin Enright gets my vote for surveyor. Richard Bray in the 37th and Vi Simpson in the 40th for State Senate.
(2) A non-incumbent. Perhaps unsurprisingly, a lot of incumbents didn't bother to respond. Put these first two items together and you'll know why I endorse David Sanders (D) over Steve Buyer for US Representative in District 4.
(3) Libertarians, and lost causes in general. Mike Englert is running for County Comissioner in district 2; I understand he used to go by the name "Moss" and protest logging by sitting in trees. You got to love that! Endorsed.
(4) You must know how to *write*. Al Cox is the Libertarian running against Baron Hill (D-9th), and so I would ordinarily vote for him. But he didn't even run a spellchecker over his answers to the surveys. Hill didn't bother to respond. Mike Sodrel? You get my vote by process of elimination.
(5) Reputation. Or in some cases, the lack of one. I've never met Jeff Ellington, but it seems like I've been hearing sleazy things about him my whole life. Iris Kiesling gets my vote for Monroe County district 3. I've always liked the work Paul Hager has done for small government, even if he did ditch the Libertarians. He gets my vote for State Rep in district 60.
(6) Skillz. The paper endorsed Sandy Newmann for Auditor, citing her experience with computers and accounting. Her opponent, the incumbent, is someone who seems like she's been in local government in one position or another forever. Time for a change.
There you have it. If the candidates want my vote in the next election, they should now know how to get it.
Wednesday, October 20, 2004
Winter exercise
Sunday, October 17, 2004
Bloghunting
I suppose what it comes down to is that the best blogs are just written by good writers, rather than topical ones. Wouldn't it be cool if you could aggregate blogs by topic rather than by author? Maybe that's the next big thing; of course we don't get topic listings here at blogger. Something to look forward to.
Friday, October 15, 2004
Added Haloscan trackback
Still, when I get a chance I fiddle around with the settings and add stuff here and there. Today I turned off Blogger comments and put in Haloscan instead. Trackbacks are way cool and I can't understand why Blogger doesn't have them natively.
Windows automatic reboots
Wednesday, October 13, 2004
Bush / Kerry again
9:27. Kerry just said he doesn't care if an idea is a liberal idea or a conservative idea, as long as it's a good idea. That was one of Clinton's strengths, to pick up good conservative ideas like balancing the budget. It's a shame neither of these candidates have any good ideas, though.
9:22. Bush is claiming that America was divided in the 2000 election and in the 90's, too. Not true, certainly not like it is today.
9:18. One thing I've always liked about Bush is that he's always talked a very tolerant position for other religions. He's talking about everyone's right to worship or not to worship as they choose. This is in contrast to his father, actually, who said he didn't think atheists should be granted full rights.
9:13. It's amazing how far apart these two are. It seems like every response by Bush starts out with, "That's just not true!" Kerry mentioned Bush has never met with the NAACP, but the president ignored that. Might as well, it's not like he's going to get any black votes anyway.
9:09. Is it just me, or is the President looking really flustered? ...nice response by Kerry on assault weapons; managed to sneak terrorism into it too.
9:04. Good grief, the moderator brought up the draft. I really hate when they ask questions where the answer is, "Yes, I oppose that. Now about Iraq...".
8:58. Minimum wage. The whole debate is silly, really, as minimum wage issues are like public schools, the only thing they're good for is political posturing. If anyone was serious about fixing the minimum wage, they would peg it to the inflation rate like social security is.
Saturday, October 09, 2004
Play Review: Pride and Prejudice
Of the three "acted" performances I've seen, the A&E miniseries was my favorite, I think because it was the one that had the length to stay truest to the book. Most good stories can't be told in video in less than five or six hours, so the movie I found pretty disappointing. The play was in a category by itself, though. There was a fair amount of slapstick in it; not many serious scenes at all. The acting was certainly fine, I had no issues with the skills of the actors at all. Mrs. Bennett and Mr. Collins were especially good, probably because they camped up the characters pretty heavily. The girl who played Lydia Bennett gave her a very thick nasal accent, which I didn't really see any reason for. What bothered me the most, though, was Mr. Darcy during the first hour of the play, when it was very clear that what he was doing was courting Lizzy. This is certainly not true to the book. In the book, Darcy's pride would never allow him to court anyone as low-born as Lizzy, and even when he paid her compliments, they wree usually done as an attempt to fend off Caroline Bingley's advances. So to have him up there actually making googoo eyes at Lizzy, I found a bit odd.
One reason why I shouldn't be writing play reviews is that I don't see enough of them. This is a case where I want to say, "Oh, but in the London production Darcy was acted most excellently." I can't say that, though, because I haven't seen any other production, and for all I know the courting is part of the play, not something the actor does. Maybe they need to play up Darcy's attraction to keep the plot moving? I wasn't sure, but if I had been directing I would have told Darcy to act the part more as the proud, arrogant nobleman he was.
The other fault I found was with the Bennett sisters' costumes. They looked like they were all wearing nightgowns for the whole play. I suspect this was due to a lack of available period underwear; if you want to make a gown like that look right, you need to be buttoned, strapped, belted, and tied in properly.
But I enjoyed the play, overall. Definitely worth seeing, and, although I suspect the Indianapolis audience isn't overly critical, they gave a standing ovation.
Friday, October 08, 2004
Bush / Kerry debate
9:24. Wow, a very blunt abortion question. If someone asked that at a confirmation hearing they'd be booed right off the committee. Bush's straight-up pro-life position is an advantage here - Kerry has a more subtle point to make.
9:21. Bush put out some nice generalities on the Supreme Court issue. Kerry is hammering back with specifics, pointing out that Bush said Scalia is one of his favorite judges. Scalia is the worst judge on the current Supreme Court.
9:16. President Bush is talking about his stem cell decision, which is a pretty political balance - not going out too far on the pro-life agenda to alienate the moderates.
9:10. Senator Kerry is wearing a red tie. The President is wearing a blue tie. OK, maybe it matches the background better, but c'mon! Got to have the power tie!
Thursday, October 07, 2004
Book review: Huckleberry Finn, Mark Twain
Huck Finn makes a lot of banned books, of course, and let me see if I can get my blog on any available banned blog lists by revealing why: the constant repetition of the word nigger. I suppose it's less likely now, though, due to its relatatively common usage black-on-black. So I'd guess anyone Googling for that word will find my blog pretty low down on the list. In the book, the usage is absolutely authentic; Huck uses it, Jim uses it, every character in the book uses it. At any rate, I distinctly remember reading a letter of Abraham Lincoln referring to "Darkies", and I haven't heard anyone suggesting that his books be banned.
The flak over banning of books is really a tempest in a teacup, though, IMO. The only true definition of censorship is when the government disallows the book entirely. To claim that a book has been censored just because a single school library has decided not to carry it is disingenuous, especially in these days when pornography is available for free and books can just be downloaded. I don't buy into the NRA-style slippery-slope arguments. Things that are right, are right, and a library's freedom to make its own decisions about what books to carry is right.
I suppose the key question about Huck Finn, though, is how relevant is it, really, today? I can't answer that. For literary critics it's probably important as the Book That Spawned American Literature, but I find that analagous to playing Pong, The Game That Spawned American Video. It was a great game then, but today's games are a lot better.
Wednesday, October 06, 2004
Broadcast censorship
Friday, September 24, 2004
Birthday the Third
Recent ways I've found of wasting money on cool toys:
- Sirius Satellite Radio
- Product 9 Video Editor
- Wireless Print Server
Thursday, September 09, 2004
Church web site
Saturday, September 04, 2004
Internet sports video
I don't want all college football games. I want today's IU game, that's all. Who knows when I might have time to log in again during a football game? So that's out of the question. What else is there?
Starting with the IU website, looks like they might do something with Yahoo. Yes, they can do football broadcasts, but for IU, only radio...and what's this? What do you know, you have to subscribe for the whole season. Huh.
Wonder how much they're getting out of IU fans wanting to listen to IU football over the Internet? $20 a month or so?
Why on earth aren't these games PPV? Is anyone actually subscribing any other way?