Friday, November 11, 2005

Automated testing using Ruby

So here’s the problem statement: Write a Ruby script that will open a database, check it for accuracy, and if it is NOT accurate, send an email describing the issues.

So this will require (a) opening a database in Ruby, (b) running a test in Ruby, and (c) sending an email in Ruby. None of these is probably very difficult, but not being a Ruby expert I went searching for examples on the web. I wasn’t thrilled by the examples I found for these tasks, so I thought I’d write up what I did.

Databases: This is code that will open an Access database and grab all of the rows in the Exam table:

require 'dbi'

DBI.connect("DBI:ODBC:driver=Microsoft Access Driver
(*.mdb);dbq=" +
ENV['TESTINSTALLDIR'] + "db1.mdb ") do dbh

rows =
dbh.select_all('select * from Exam')

Tests: I started by writing my own little test procedures, until I stepped back and looked at what I’d done – I’d developed a rudimentary RUnit, along the lines of NUnit or CPPUnit. At that point I was sure that it had been done before, and it had – and not only that, but it turned out to be part of the Ruby standard library. Although what I’m doing here isn’t really what I would call unit testing, it’s close enough that I decided to use that instead.

require 'test/unit'
require 'test/unit/ui/console/testrunner'

DatabaseTest < Test::Unit::TestCase
def test_dbContents
assert(rows[1]["Media Type"] == "Image Server")

Email: There are some good email sending examples around. I started with this one and ended here:

require 'net/smtp'

class FailCounter

def TextBody()
email_text = <<END_EMAIL
To: "Ben Fulton"
From: #{@from_addr}
Subject: #{@project}
automated test failure

An automated assertion failed for the project



return email_text

def Finalize
if (@counter > 0)

Net::SMTP.start("") do smtp
smtp.sendmail( TextBody(),
@from_addr, @to_addr )
puts "No failures!"

Now, my goal was for the results of the test to be put into the email. That took a long time to figure out. Step 1 of the solution was to realize what the automated test runner was doing under the covers, and take advantage of it. So I replaced the run(DatabaseTest) line with this:

tr = DownloaderTest)
passed = tr.start()
Now I have the results back in a TestResult, which I can examine for failures, so emails only go out if some tests actually failed:

if (passed.failure_count() > 0 passed.error_count() > 0)
fc =
fc.Add( “Failures found” )

Step 2 of the solution is to get the information from the test in a format that I can put in an email. It turns out that can take a parameter defining where output should go, which defaults to STDOUT. I could have redirected it to a file, but that seemed like unnecessary work, so after a lot of searching I came up with what I was looking for, StringIO, which takes output and writes it to a string:

sio =
tr =
DownloaderTest, Test::Unit::UI::VERBOSE, sio )

I also changed the default NORMAL verbosity parameter to VERBOSE. Then I replace the FailCounter “Failures found” line like this:

fc.Add( “Failures found: “ + sio.string )

And that was it. I’m not going to glue all this code together here, since this post is already too long, but hopefully if you’re interested it should be straightforward. Good luck!

Icerocket tags

Wednesday, November 09, 2005

Kansas school board redefines science

Kansas, for shame!

I hereby pledge that I will never move to Kansas, nor allow any member of my family to attend any school in that state.

Icerocket tags

Build/Test machine

I posted here about our plans for updating the ProSolv build process. It's been going pretty well; the hallway machine is up and running, although I had to bring a table from home to set it up on, and now someone wants to buy it from me :)

Builds are scheduled for 6 PM each night, and an automated test script runs all day. Right now we just have a single script that takes about 15 minutes to run. It's powered by Ruby and by AutoHotKey, which works nicely as an automator. I especially like that the scripts are simple text files.

A lot of people don't quite understand what I'm trying to do. They look at the machine and say, "What's the point of running a test that doesn't log any results?" The answer is, that there is a lot of importance to just exercising the UI. If we have a build one day where you click on a study image and the application crashes, this test process will find that.

Nevertheless, as long as this machine is running scripts, there's no reason for it not to log results. I thought for a while that I would have to add code to the application to write out sensible log results, which is not a process to undertake lightly, but it occurred to me recently that the GUI manipulations that the script is doing mostly result in predictable changes to the file system and database. So I spent a little quality time with Ruby's DBI and Test/Unit modules, and wrote up some assertions that will send an email to me at the end of the script if the database isn't in the state I expect. It's only a start, but now I can add more assertions in the middle of the process, or add new assertions as I extend the test scripts. It's coming together very nicely!

I'm thinking also about modifying the machine to alternate test runs with kiosk-style data updates, such as how many files were compiled last night, or how many support calls were handled yesterday. It'll be interesting to see how people respond to that :)

Icerocket tags

Thursday, November 03, 2005

Gadgets and Office alive alive-o

Microsoft previewed its new Windows Live strategy yesterday. My reaction, along with a lot of other people's: It's a portal, and we don't want or need another portal, no matter how skillfully it's put together and how many neat gadgets are available on the site.

That said, here's what really got my attention in the announcement:

Windows Live™ is a set of personal Internet services and software...

So what exactly are we talking about, Internet services? Are we talking web services here? That would be cool. Here's what I want: The ability to add, to my site and not to Microsoft's, a Word document that can be edited by approved people. The document would ideally be stored on my site, but could then be bounced to a Microsoft service for some Ajax magic and editing. Is this the sort of thing that Office Live is going to make available. That would be awesome!

But I've gone searching around the web looking for any evidence that anything on Live is going to be addable to other web sites. Scoble said something - when does Scoble not say something? - but he didn't go into any details other than, "I’m still struggling to understand what I’ll get by putting a new Windows Live service on my blog or business site".

Robert, it depends on which direction it goes. I'd be thrilled to call out to a Windows Live web service as part of a mashup for my site - maybe a Click-To-Talk button using Messenger to dial my phone directly? - but if you're expecting me to make something available that users can only reach through the Live site, forget it.

So for me, the jury is still out until we get more details for developers.

Disclaimer: I own stock in Microsoft.

Icerocket tags

Wednesday, November 02, 2005

Code Reviews

Ed Gibbs says his team is about to institute code reviews. Of course, if you do pair programming regularly code reviews are pointless, since - turning all the knobs up to 11 - all of the code is reviewed all the time. But I've never worked in a shop where pair programming really took off. I'd be curious to hear how prevalent it is.

As I understand it, we at ProSolv are required by FDA regulations - perhaps here? - to do design and code reviews, although, especially for small projects, we often combine them into a single review. Currently I'm not convinced that they add anything to the quality of our software, although, as I've stated before, I think ISO can potentially be a big gain for a company and not just overhead. All the usual difficulties of code reviews apply - what sorts of things are worth bringing up? Is coder A receptive to constructive criticism? Is coder B tearing things down for the sake of doing it? Is coder C reluctant to make a great suggestion for fear of hurting feelings? Should the code be perfect, or just good enough? - and in the final analysis the review is either marked passed or failed.

I'm sure this process can be improved, but I'm not sure how. Maybe design reviews could be accompanied by UML diagrams. Maybe we just need a big slab of coding standards that have to be applied. For example, a review I'm looking at now introduces two new global variables to a C++ application. I think the industry consensus is that global variables are bad, but certainly the code works. Do we need a coding standard that says to avoid global variables? If we did that, how much extra overhead is added to the process?

I'm seriously considering offering a bounty of ten cents a line for any project that can remove lines of code from an application rather than adding them. I bet that would be more effective than fifty code reviews!

Icerocket tags

Tuesday, November 01, 2005


After my post yesterday on SysInternals and listening to the RootKit episode of Security Now, I decided to give RootkitRevealer a whirl on my system. It turned up a slab of hidden registry class ID keys underneath HKLM\SOFTWARE\Classes\CLSID:


I was mildly worried and spent a bit of time tracking down these keys. I think I can say pretty definitely what they're for now; it's Pinnacle Studio 9 hiding their registration keys. Irritatingly, Studio doesn't handle logging in as a non-admin properly, either - every time I start it I have to click the little message that says "Don't show this screen again".

Icerocket tags

Monday, October 31, 2005

Is Sony putting malware on your system?

This is a great article from the awesome Windows gurus at SysInternals. (SysInternals makes some of the best and simplest applications for analyzing exactly what is happening behind the scenes on a computer.) Apparently when you install a copy-protected CD from Sony on your system, it installs an application that utilizes some of the same tricks commonly employed by virus writers. Let's be careful out there.

Saturday, October 29, 2005

Library is Listening

There was a Letter to the Editor in the Herald-Times today, in which a member of the library's Board of Trustees made the claim that they were listening to and satisfying the citizens of Monroe County. While I'm sure that is correct, a quick check of the library web page didn't really reveal anywhere where discussions of the library or responses from the board or administrators were available. So I'm making this web page available, thanks to the fine folks at JotSpot, for anyone to add their comments concerning the library. I'm sure that, since the board is listening, they will be happy to add their responses to any comments you may have!

Friday, October 28, 2005

Attack of the blogs

Chris Pirillo on those crazy, invective-spewing magazine writers. Of course, you see magazine articles all the time on Elvis's two-headed love child and UFO's landing on Martha Stewart's prison cell, so you can't really trust magazine writers.

Anyway, the whole Forbes article response in the blogosphere really strikes me as a tempest in a teapot. Daniel Lyons is free to say what he wants about bloggers, and bloggers are free to respond. It's all good.

But the true evil and danger in the article came in the last paragraph:

Halpern... says that may change if a few politicians get a taste of what he has gone through. "Wait until the next election rolls around and these bloggers start smearing people who are up for reelection,"Halpern says. "Maybe then things will start to happen."

(Uh-oh, I quoted the article. Hope I don't get sued.) Some journalists, though, are trying to make the claim that what they do is protected under the First Amendment, while what bloggers do is not, since they don't have degrees or aren't getting paid or some such nonsense. If Congress even considers restricting free speech rights of bloggers based on fearmongering like the Forbes article, it could have a chilling effect. The beauty of the blogosphere is its take on the adage, "Freedom of the press is restricted to those who have presses." Now, with publishing on the internet cheap or even free, anyone who wants a soap box can have one, and any attempts to legally restrict this must be defeated. (Of course, bloggers are subject to the same libel and slander laws as any journalist.)

So go ahead, Forbes, write your articles on Bigfoot being spotted or whatever it is you magazines do, but don't try to use your political muscle to take away the right of the citizen to speak. It's un-American, it's unconstitutional, and it is unacceptable.

Icerocket tags

Thursday, October 27, 2005

Ben needs

I don't usually do memes, but I liked this one, via Elijah. Google for your name + " needs". Here's mine:

What Ben needs right now more than anything else is for the Boston Red Sox to win the World Series.
Ben needs your help.
Ben needs a ride home.
Ben needs to be noticed, recognised, appreciated, adored and worshiped.
Ben needs to learn to Play Purposefully with Toys.
Ben needs a peak from the nipple.
Ben needs to start doing his own writing and self promotion!
Ben needs to be rescued.

Moving day

I've moved my blog now. The new address is I hope you join me there!

Harriet, we hardly knew ye

I wrote here that I had no doubt that Harriet Miers would be confirmed as a Supreme Court Justice. I was wrong, of course. I was basing my estimate on her being voted on by the Senate, and she never even made it that far, being more or less forced to withdraw by her own party, as Democrats watched from the sidelines. Quite the political circus, and Mr. Bush eventually pulled the Krauthammer cover to get out of it.

It certainly seemed that every day we got some new news about Harriet, and it never seemed to be good. Stories came up that implicated her in Bush-related scandals, or found things that marked her as an idealogue - Heaven forfend! - or she wrote or said something that marked her as not a competent Constitutional scholar.

So, while the whole thing is a political disaster for the White House, it looks like the Supreme Court caught a break. Maybe now we can concentrate on finding someone who will be a real asset to the court. Your move, Mr. President.

Thursday, October 20, 2005

Senate overwhelmingly rejects Anti-Pork amendments

Dear Senator Bayh,

I was disappointed to read that you failed to support
the Coburn anti-pork amendments today. Government spending is woefully out of control, and Senator Coburn's attempts to stand against the tide are one of the bright spots of this Congress. I hope you will find the political will to vote against any future pork projects that may come up for a vote.

Thank you.

Tuesday, October 18, 2005

Constitution clause names

A page with the commonly referred to names of clauses in the US Constitution. It will be handy working on my Annotated Constitution project!

Monday, October 17, 2005


I think I have this set up now. Since Blogger is even being blocked by services now, it's time to move the blog. It's still powered by blogger, but its new home is

Blog design mistakes

This is a good article on web design as it applies to blogs. I'll try to take some of these messages to heart!

Friday, October 14, 2005

Why I am not a Republican

Chatting with a coworker one day over lunch, he told me, "Yeah, I would never vote Democrat. Those guys never do anything but spent our tax money." "But this Republican administration has taken us from budget surpluses to massive deficits in just six years," I pointed out. "Yeah," he said. "But at least the Republicans talk a good game."

Which got me thinking. Philosophically, I am one of those fiscally conservative, socially liberal types that some people like to call "libertarians" and others like to call "wussies". (I'll discuss that another day. Suffice it for the moment that I believe in balanced budgets, NAFTA, and gay marriage.) So where do I fit in? I can't possibly vote for massive social welfare spending or increased farm subsidies, so the Democrats are out. I can't vote for a constitutional amendment banning gay marriage, or outlawing abortion, so the Republicans are out too. In the '88, '92, and '96 elections I voted for the Libertarian party. I didn't see much difference between the major party candidates, so I voted on principle, hoping enough people would do the same to make the majors take notice, rather like the Socialist party in the teens. In 2000 I thought Gore was much in the same mold, a decent leader who wouldn't be able to make too many changes, same as Dukakis, Clinton, Dole, and Bush Sr.

But after eight years of peace and prosperity under Clinton, I was noticing that the Republican leadership suffered greatly by comparison. They seemed to have an us-and-them mentality and a feeling that they could do whatever they wanted, like the arms-for-hostages deals under Reagan, the breaking and entering under Nixon, and the witch-hunt that Kenneth Starr perpetuated on a sitting president who was getting a little on the side. Plus, I could not in any way see that the younger Bush had any qualifications for being President, so in 2000 I voted for Gore. He lost - maybe - but I wasn't terribly bothered. Give the man a chance, I thought. He surely can't be much worse than Gore.

Six years later, I think this administration will go down as one of the worst in history. It seems to have no sense of how to do anything but spin stories and mount massive propaganda battles against its enemies. Richard Clarke, for example. After reading his book I was convinced that 9/11 represented a massive failure of the Bush administration to deal with terrorism. It's unquestionable that Hurricane Katrina was poorly handled. And the vice-president's old company seems to be handed the keys to the Treasury.

So even though I am in agreement with many of the Republican party's stated goals, I think there is a clear pattern of corruption and poor management in just about every Republican administration of at least the last 35 years. Sure, they talk a good game. But when the rubber hits the road, they can't back it up. I'll be voting for the Democrats in 2008. The country just can't afford another Republican president.

Icerocket tags

General to soldiers: No Swimming

Wow, this is a strange story (via Maryamie and Tim) . Congratulations to FedEx and Direct Swimming Pools, and boos and hisses for General Harrel, who insisted that the pool should be taken down. Was there any reason for it, or was it an arbitrary display of bureaucracy?

Icerocket tags

Wednesday, October 12, 2005

JotSpot and the Annotated Constitution

I joined JotSpot today. I've been looking for a wiki to use; I put up a couple of pages at a free wiki site that I think is gone now, but they deleted your pages if you didn't update anything in 30 days. Jot still has some kinks to work out, but I like it well enough, and they have a proper pricing structure set up, which is nice. The first page I put up is an Annotated Constitution. If I've gotten it set up properly, it should be freely editable, so feel free to drop by and add your comments!

Icerocket tags

Tuesday, October 11, 2005

MFC applications leak GDI objects?

We've discovered a GDI leak in the Prosolv Analyzer application, but it appears to be a Microsoft leak rather than a Prosolv leak. According to this KB article, creating and destroying child windows with Windows XP Service Pack 2, with themes turned on, causes objects to be leaked. The article says that a hotfix is available, but it has to be downloaded rather than automatically retrieved via Windows Update. It seems pretty strange to me - why don't people hit this bug all the time? Are there just that many fewer MFC applications on the market now? Or are there some subconditions for use that mean that it doesn't come up all that often? Or maybe it's just that most applications don't create that many child windows. Anyway, if you're running Analyzer, you might be wise to get the patch mentioned in the KB article applied, or turn off the Themes service. We're looking into our options.

Icerocket tags

Monday, October 10, 2005

First principles

I'm changing the name of this blog. I chose Ramblings more or less at random, since that was what I was doing and I didn't have any real sense of the direction of the blog. Now, after a couple of years, I still don't have any sense of direction, but at least I think I have an idea of what I'm writing. Partly, it's reviews; books, plays, and operas, but generally when I'm writing on politics or programming, I'm trying to work out exactly what my position is, and to know that I have to start from the very beginning and work through it, step by step. In other words, I have to work it out from First Principles.

Early in my job at Interactive Intelligence, I was assigned to work on the COM API for the primary client application. I didn't know much about COM at the time, although I had tried at my previous job at Sunstorm to create COM DLL's for some games. It didn't really seem to buy much, though, and I eventually abandoned it.

Interactive Intelligence, though, sent me to a DevelopMentor's Guerilla COM, where I learned a lot more about why COM was superior to simple DLL's, and I started to see the point of using them. If I'd taken that class while working for Sunstorm I would have been able to apply it a lot better. Later, I was reading through a COM book - I think it was Don Box's Essential COM - and there was a line in there that said, "Most programmers have to convinced of the utility of COM, because they prefer to reason things out from first principles." This really struck a chord with me, because it was exactly why I had abandoned COM the first time - I couldn't figure out the utility of it - until I was able to work it out from first principles.

At the same time, of course, I also think it's important to have a set of principles in order to guide your life. I was thinking about joining a church a while ago, and when talking to the pastor she told me that ordinarily she would recommend to a candidate certain ways in which their life should change before they became members. She didn't really have any changes for me, though. I think the reason was that the first priority in my life is to have a set of convictions, and work from them. Inside that framework you have flexibility, but this is what you have to have First: Principles.

So hopefully this will help to guide me, both in my writing style and the subjects I choose to write about. If you're reading, I hope you enjoy it.

Icerocket tags

Saturday, October 08, 2005

Harriet Miers

It certainly is unquestionable that since President Clinton left office, the Republicans have been a far superior political machine to the Democrats. And of course, one of the primary benefits of being the party in power is the ability to get your Supreme Court nominee through the Senate approval process and on to the bench. Especially in the last 30 years, as lifespans steadily lengthen, this is a privilege that is rarely granted. President Clinton nominated two in his eight years; Ginsburg and Breyer. The current President Bush nominated none in his first term. His father was able to nominate two: Thomas and Souter.

But why is it such a privilege? Well, with only nine justices on the court, a single nomination can drastically change the structure of the court. For example, the test that everyone always talks about is Roe V. Wade; that is, the question of whether the right for a woman to have an abortion is one that should be protected by the federal government. The conservatives would like to see it overturned, while the liberals would be appalled. But the question then becomes: what would it take to overturn this decision? Is it just a matter of getting enough folks onto the supreme court who disapprove of abortion?

Well, it isn't. (Or at least, it shouldn't be.) See, when the court decided Roe v. Wade, they looked at a lot of different things: Historical precedents. Decisions made in other trials. Rights of the individual versus the interests of the state. Changing a decision made by the highest court of the land isn't just a question of getting five people up there who happen to think that abortion is icky. And even if you did, maybe a future liberal president might get lucky and nominate a couple of others who would swing the decision right back around again. So the issue that the conservatives should be trying to deal with is, "How do we get the decision changed in such a way that it won't be overruled by the next court?"

Here's how: Write up the decision in such a clear way, with such incisive reasoning, that it is very difficult for opponents to contradict. To do that, you have to have a brilliant conservative scholar on the bench; someone who's known to write impeccable, incisive decisions on the bench.

Harriet Miers will be confirmed; I don't have any doubt of that. Enough Republicans unwilling to contradict their president, coupled with enough Democrats thinking that she is the best they will get, will vote for her to get her through. She may be a good conservative, and vote the way the President hopes she'll vote. But there is surely no evidence to support the idea that she will be a shining conservative light; a justice who will write decisions both for the majority and in the dissent that will be referred to by future scholars and judges as a guiding path for the ages. This is what conservatives really wanted on the supreme court, and this is, with 99% certainty, what they did not get.

Icerocket tags

Friday, October 07, 2005

MSN Traffic in RSS?

Hey, Mr. Scoble, I have a request: The traffic reports on MSN are really nicely laid out and I'd like to check them every day before I leave the office. But I never remember to. It sure would be handy to have them in an RSS feed so my feedreader can remind me of them as they come in. As I look at the page, I see a link at the top that says "RSS", but it just leads me to a generic list of feeds. There's also a link at the bottom that says "Feedback", and I dropped a comment in the comment box there, but didn't get a response. Is there any chance of getting MSN to give me Indianapolis traffic RSS feeds in the near future?


Update: Yahoo does support this, according to this post. I subscribed, and got a couple of construction updates from last week, but of course it's not rush hour yet. We'll see how it does. Here's the relevant map.

Icerocket tags

Monday, September 26, 2005

Jazz Benefit for New Orleans

A day or two after Katrina, a blogger whose link I've now lost wrote a story about a little girl watching an ad for a benefit concert for New Orleans, and turned to her father and asked, "Why do they need to have a concert? Can't people just give money by themselves?"

I think about that now every time I see a benefit concert being advertised, so I wasn't overly enthusiastic when my wife wanted to go to this one, and left to my own devices to choose between this concert and Monday Night Football, well, pass the beer nuts. But I suppose that if you drive a backhoe you can help out; and if you're an electrician you can help out; and even IT guys can volunteer for some things. Musicians want to help out too, and hopefully concerts like this one will raise a nice piece of change for the Red Cross. The Indiana University School of Music brought in David Baker, Sylvia McNair, and Timothy Noble as headliners - all are alums - and it turned out to be a really good concert, and much better than the pigskin (as Denver rolled right over the Chiefs).

Although the lineup didn't include as much New Orleans jazz as one might hope, it was not surprising for as quickly as this concert had to be put together. So the arrangement consisted primarily of show tunes. The ensemble were upbeat on the instrumental pieces, and the soloists did a solid job. The lone female, Sophie Faught, did a fine job on Quincy Jones' Grace -albeit with a rather hissy microphone - and with a strapless gown and a shock of bright red hair amid a sea of tuxes, was the visual centerpoint of the evening, something I suspect she will have to get used to if she wants to continue in jazz.

Tim Noble performed admirably on a couple of Cole Porter tunes, while Sylvia McNair sang some swinging jazz melodies with perhaps more of an opera rhythm than a jazz one. But she did a great job on Over the Rainbow, and her performance of John LaTouche's Lazy Afternoon was nothing short of stunning.

Before the final song Mr. Noble pointed out a pair of music students in the audience who werre newly enrolled after coming from Louisiana, which was a nice way to point out the real purpose of the evening. Then he and Ms. McNair teamed up with pianist Luke Gillespie for a closing rendition of You'll Never Walk Alone. This concert was a reminder of how good jazz can be, and it left me wishing there was a good jazz bar in Bloomington, so we can hear music like this every night.

Icerocket tags:

Saturday, September 24, 2005

Pillars of Solomon, Jon Land

I haven't gotten around to reading the Da Vinci Code yet. I read Angels & Demons and liked it; I like the sort of book that combines history and mystery to reveal ancient secrets. It's what I was expecting about this book, which blurbs a "Secret born of the blood that forged a nation!" which sounds pretty cool. But I'm not sure that the recent forging of Israel holds a great deal of interest for me, taking place recently enough that many of the protagonists are still alive. Still, the five thousand year history of the territory makes for some interesting reading. The plot takes us from the murder of an Israeli businessman and the disappearance of a Palestinian schoolgirl to the uncovering of a child slavery ring, and then to the secret, going through a Jordanian archaelogical dig on the way, which presented some Indiana Jones-esque sequences. I wonder if that's a standard for Mr. Land?

The thing you always have to ask when reading a book like this, is "Does it hold together?" This one mostly does; the big difficulty I had - hopefully without giving away the plot - was in buying the complex nature of the warriors in the book who were partially responsible for the creation of Israel. Of course, all wars have irresponsible behavior on the battlefield and in the post-battle euphoria of survival; but I'm not sure that I can buy some behaviors under any circumstances. Ethics are one thing in the circumstances of hot blood and totally another after the fact, which is why the happenings at Abu Ghraib were inexcusable.

The writing is fair-to-good, with the occasional really awkward phrasing ( "Realized" is not a synonym for "Said". Ever.) The cover promises better writing than Tom Clancy, and that is not the case, but IMO Clancy is really in a class by himself for thrillers. Jon Land is a solid writer, and - the reason I'm actually writing this article is to make sure I don't forget - I will be picking up some of his other work. Isn't that all an author can really ask for in a book?

Icerocket tags:

Cosi Fan Tutte, IU Opera

It's a fun opera season this year, with the Barber of Seville, Carmen, and a couple of Shakespeare adaptations on the agenda. The opener was this Mozart opera, and it was...ok.

See, Mozart's operas to me seem like they're twice as long as they should be. The niceties of the 18th century required that the singers be given a nice slab of time for a solo on stage, and that's fine, but I wish the great one had managed to work more than one verse into each eight-minute aria. The fault of the librettist actually, I suppose, but if you choose a plot with 90 minutes of material, why make it into 200 minutes? That was the actual length of this piece, although the program said it would be 165.

With all that said, it's worth seeing. The plot goes something like this: Two soldiers make a bet with an older cynic that their betrotheds can stay faithful to them against all temptation. As part of the bet, each then tries, disguised, to seduce the other's fiance. The cynic, who is sure he will win the bet, thinks that "they're all like that", or, cosi fan tutte.

Highlights: The maid, Despina, comic relief played skillfully by Angela Mannino, with a very nice nasal voice for her turn disguised as a male. The two soldiers (Brian Stucki and Benjamin Czarnota) do a very funny slapstick bit being pulled around by a magnet. It's a truism that opera singers can't act for beans - Dorabella (Ann Sauder) for example, tended to go a bit overboard on the dramatic gestures - but I thought the two males worked very well together. I was surprised to learn that Ms. Sauder was an undergraduate, but she carried herself capably with a solid voice.

So go along and see it if you have a chance, but make sure you budget enough time for it, and be prepared to enjoy the music. You'll have to do that anyway, to keep your attention during the parts where the plot isn't going anywhere fast.

Icerocket tags:

Wednesday, September 21, 2005

Google's killer app

The blogosphere is abuzz about Google's plans for a WiFi network. There's a lot of talk going around about datamining and selling ads based on what's on your hard drive and stuff like that. But here's my take on what Google is after - it's something I've wanted for a long time: A VOIP cellphone.

If there's one thing everyone agrees on, it's that the cell phone companies are awful. Proprietary networks, $2 ringtones, basically everything they can do to monopolize and monetize absolutely everything their customers can do with their phones. The companies even have their own private networks, that no one but themselves can use. As a consumer, none of this is any good to me. I'm usually in range of a WiFi network - why can't I use my cellphone to make cheaper, easier VOIP calls when I'm in range?

If I'm Google, I'm looking at that and saying, wow, what a golden opportunity. What would we have to do to take on the cellphones? Let's see:
  • We'd need global wireless access.
  • We'd need a ton of wire to transmit all that data.
  • We'd need secure traffic.
  • We'd need our own voice application.
  • We'd need a way to determine the user's location for 911 calls.

Check, check, check, check, and check. GooglePhone, coming soon in your area. Sign up today!

Icerocket tags:

Friday, September 16, 2005

Using the pImpl idiom with an auto_ptr

Here's a interesting C++ fact I had never figured out. The pImpl idiom is a method of hiding implementation details of a class from users of the class. You define the class's interface in its .h file, and then add a simple forward-declaration:

class myClassImpl;

and in the class, include a member variable:

myClassImpl* pImpl;

(pImpl stands for Pointer to Implementation.)

Then, in the class's CPP file, the constructor news up pImpl and the destructor deletes it, and the declaration of class myClassImpl can be pushed off to a different file or even hidden entirely in the class CPP file.

But still, there's a step in there we might be able to get rid of. The standard class auto_ptr defines a pointer that will be deleted when it goes out of scope. So, instead of using a raw pImpl pointer in the class definition, we define it like this:

std::auto_ptr pImpl;

Now the auto_ptr goes out of scope when the instance is destroyed, so we don't even need to delete it in the destructor. But wait - there's a problem. If we happen to have a class destructor that's defined in the header file, it won't be able to delete pImpl because, at that point, it doesn't have a definition for it. This seems like a minor issue, until you realize that, if you don't define a destructor at all, that works exactly the same as if you had defined it in the header file. So, as Gene Bushuyev explains in the referenced article, you need to define a destructor explicitly as well, so the compiler has enough information to delete pImpl when it needs to. Thanks, Gene!

Icerocket tags:

Wednesday, September 07, 2005

Windows Services

At work my current task is to rejigger a bunch of applications into Windows Services. Prosolv has four primary applications that run as servers: An Archiver, a Dicom server, the Prosolv server, and a file server, or streamserver. We also have a series of other executables that handle data transfer for various machines such as the Acuson Cypress. Up until now, each of these applications has run as an application with a regular window, which is less than ideal for a server application - people tend to shut them down without meaning to - so I'll be reworking them into services. For most of these applications, this is no big deal - the only thing the windows do is hold a little config information. But the main server, the Prosolv Server, might be a bit tricky, because the server itself is actually nothing more than the original clientside-only application reworked into a server application! So it will have quite a few references to windows scattered through it. I think I've mentioned that all of these applications were written using Visual Studio 6, and it's not likely to be upgraded anytime soon. However, when the applications run as services, they'll need a separate config application, which I intend to write in C#.

Icerocket tags:

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


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

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.


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