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 :)