billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-28 09:41 pm
Entry tags:

Old School

We have a lot of unit tests that are running fine in the JDeveloper environment that do *not* run in the build environment. This has been a source of a lot of frustration for my co-worker who has been trying to solve the problem so I set out to dig into it today.

The first thing I did was get him to confirm that the build wasn't doing anything acutely stupid, since there are multiple separate build steps that actually rely on each other in a loop. This is an annoying problem (and not correctable in any reasonable way), but you can check through the loop by hand and he did so and determined that my first guess was wrong. Oh, well.

Ok. If you can't use the debugger because the failures are in the Gradle build, you can always go old school. It was time to start modifying the code and putting in debugging statements to drop data to the console. And so I did.

I got the stack trace for the mysterious exception that was shutting down a large number of the failing unit tests and went to stare at the source. Eventually I realized that *someone* (and it may well have been me) had written a particularly stupid little class loader that will load one class in one environment and a different class in another environment -- say, for instance, when you are running your unit test in the build environment. And when the alternate class it is trying to load isn't in the build environment either *and* is the completely wrong class to be loading, well, you've hit the jackpot.

I quickly wrote the missing class to implement the interface, causing every method to throw a NotImplementedException. This was the right choice in this case, because the interface described how to talk to the database and none of the database code is present in this particular part of the build, so you can't get it to run the unit test. And now my Class Not Found exception turned into a NotImplementedException -- and I was already dropping the stack trace out so that I could see that I was attempting to load the access record.

Huh. Now the model that I was working with in this set of unit tests was one that I had initialized by hand and it normally works fine -- until you try loading a feature that requires an access record, which it then tries to load from the database, which is not present. I wrote a class to initialize the access record and tucked it into the model initialization routine and almost *everything* started running correctly.

Happy dance! Except there were still a few (like four) unit tests that were failing for some unknown reason. One of these was working with a tiny grid that I'd initialized in my tiny model. Other things were working correctly with the grid, so why wasn't this one?

I finally wrote a routine to dump the tiny grid to the console and discovered that none of the values that I'd tried to change in the grid were actually getting stored -- with the result that the unit test didn't find the expected values and promptly failed. I managed to find where the error codes were stored and they were all the same code, so I found all of the places that could give me that error code and stuck a debugging statement in, which eventually led me to the point of failure.

I was getting an exception when I tried to parse the input value of "160.1". The exception claimed that the character in the zero position was failing, but when I looked at the exception, I realized that I had cleverly just passed back a zero instead of looking to see which character in the string was the problem. Well, *that's* easily fixed. It's the character in the *third* position. It's the decimal point. Why do I believe that a decimal point is an illegal character? Could it have something to do with localization and assembling the set of valid characters based on the locale's decimal separator?

Yes. Yes, it could.

Gradle not only runs the unit tests in multiple threads, but it *reuses* threads. The LocaleTest switched a thread to the French locale, where the decimal separator is a comma, and didn't switch it back. It does now.

And suddenly, the rest of the unit tests started working. Well, except for one test where the correct files aren't present in the build environment. I commented that particular test back out as a problem for another day.

And then I pulled out all of the spurious debugging code that I'd put in. I kept the grid printing code around though.

You never can tell when you're going to need it. :)

Or to quote one of my songs:

"I want to be old. I want to be wise.
I want to be just a little bit smarter than all those younger guys."

Amazing what you can learn from experience.
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-27 09:16 pm
Entry tags:

Eye See

I had my follow up appointment with the opthalmologist today. Everything appears to be progressing well and Z'hadum (my name for the giant floater) is getting smaller and thinner as it is slowly getting absorbed. I've got another follow up scheduled in two months, by which time I hope there is a whole lot less of Z'hadum hanging around.

The problem, of course, is that as the floater gets smaller, it becomes lighter and more mobile, so it spends more time drifting across my field of view. But it's getting better and that's what counts.
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-26 10:11 pm
Entry tags:

Sunk

The new heatsink for Julie's computer arrived today (a day earlier than forecast, probably because the part was already in the Chicago area), so I installed it tonight around dinner. This was a little bit of a challenge, because the design has changed a bit with the newer model of the heatsink, but I eventually interpreted all of the pictures correctly and got it tucked into place.

The computer is now back in its place in the basement and substantially quieter than it was with the stock heatsink from Intel. :)

Julie got to observe the process, because it is good to learn how to fix your own computer.
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-25 09:34 pm

That Sort of Day

We apparently got around four inches of snow, which Julie has shoveled off the driveway. The cold means that the salt that is hitting the roads is not nearly as effective as you might hope, so things are very slick around here. This was slightly important when I ran out for lunch, but got to be a whole lot more important later in the day.

Julie noticed that her computer was misbehaving again and asked if I could blow the dust out of it. Since Gretchen gifted me with a fine blower fan for just this purpose, I said I'd be happy to if she brought it upstairs, but then it decided to shut down from overheating before then.

Ok. There was some initial confusion about what fan was having the problem before Julie made it clear that the CPU's heatsink fan had given up the ghost. Oh. I had replacement case fans that I'd picked up at an earlier date, but I don't have a replacement for a CPU heatsink. If we were having good weather, I'd have just shot down to Micro Center to pick up a replacement, but I was positively not making this trip on these roads. And unfortunately, the replacement I ordered from Amazon won't be here until Tuesday, assuming that there are no weather delays.

But we have a computer in the dining room too and everything Julie wanted to be doing was on line, so we were able to get her set up on that machine and she is happily tapping away. Well, except for the fact that there's a noticeable hum when her headphones are plugged into the speakers, because she's listening at a very low volume. There's nothing trivial to be done about that, so here we are. (I checked obvious things with no luck.)

Calvin the Dog picked today to have two separate "accidents" in the house; one of each kind. This was especially annoying, because accident number two (of number two) was right after we had let him back in. *grumble*

On the better news front, the Seahawks beat the Rams. :)
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-24 10:09 pm
Entry tags:

Little Things

I didn't get a lot of big things done today, but I did get three loads of laundry done. And I went down and prepped the keyboard so that it is ready to loan to Capricon.

I still need to finish up the Dodeka taxes, but I need some more data to do that, so that may be a bit longer.
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-23 10:07 pm
Entry tags:

Damned Cold

It was frigid cold here today, -3 degrees when I ran out for lunch and to the pharmacy. I was the only one to leave the house today, not counting the excursions that the dogs made into the back yard and Julie's trip out to grab the trash cans and put them away.

It is supposed to be equally cold tonight, warming up slightly tomorrow. With snow.

*sigh*

I think I will find things to do around the house tomorrow.
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-22 08:48 pm
Entry tags:

This and That

Made some progress at work today which is always good.

Julie got the garbage out with my help tonight. This is also good. I am hoping that our forecast of extreme cold doesn't keep the trash collectors away tomorrow.

I seem to be making some progress with getting Calvin in from the yard. I position myself inside the door in a position where I can intercept Ruby. When I do that, Calvin seems to realize that I'm there to protect him and trots in.

Now, we have to get him to believe that *Gretchen* can protect him too. :)
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-21 09:39 pm
Entry tags:

Not a Fit Night Out For Man Nor Beast

Ruby continues to bully Calvin. This has Calvin spooked to the point where he does not want to come in when the two dogs should be coming in from the back yard. Ruby trots in. Calvin sits outside on the porch.

If the weather were better, this would not be so much of a problem. I can usually get Calvin to come in, although there have been cases where I have had to pick him up by his harness like he is a four-legged suitcase and lift him over the threshold. This is not infrequently followed by Ruby coming over to bark at him as Calvin assumes a submissive position.

The weather is *not* better. It was close to freezing today, but tomorrow night, it is supposed to get down to -12 degrees around here, then rise to a balmy -6 degrees on Friday. This makes standing there with the back door hanging open, well, suboptimal.

The dogs and I are going to have a discussion about this.
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-20 09:20 pm
Entry tags:

Eye See

It was back to work today. I was supposed to have a follow up with the opthalmologist today, but I called yesterday to have them reschedule it, because I didn't want someone to have to be all up in my face and exposed to the cold that I'm getting close to being over. So I'll see him *next* week.

In the meantime, things are improving in the affected eye. All of the dust has vanished, probably drawn into Z'hadum, which is what I'm calling the big floater. And the big floater is getting smaller, indicating that it's being reabsorbed, which is good.

Unfortunately, as it gets smaller, it also becomes lighter and more mobile, so it is spending less time at the bottom of my eye and out of the way, and more time in the field of view where it is more annoying.

But it looks like progress from this point of view.

I'll see what the doc says next week.
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-19 06:21 pm
Entry tags:

It's Taxing

I spent some time working on the Dodeka taxes today and I am awesomely close to done. I have a few more things to compute and a bit more data to track down, but the mess is almost sorted out.

Yay, me!
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-18 09:24 pm
Entry tags:

Ah, Well

Bears gave it a great try, but lost to the Rams. Now I have to root for the Seahawks.

My miserable cold continues. It's not so miserable as to send me to bed, but it has become increasingly tiresome. I think it's getting better though...
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-17 10:31 pm
Entry tags:

Laundry, Taxes, and a Big Old Nap

I managed to do four loads of laundry today, along with filing the Illinois Sales Taxes. This was pretty much enough to take the starch out of me (no pun intended), so I crawled into bed for a two hour nap before dinner.

I foresee more sleep in my future shortly.
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-16 09:57 pm
Entry tags:

Oh, Well

Happily, I did not catch anything at GAFilk. That waited until I got home and I caught the lurgy from Gretchen that she had caught from Julie. It's unpleasant, but not debilitating so far.

I'm going to take it easy this weekend and try to keep it that way. :)
billroper: (Default)
billroper ([personal profile] billroper) wrote2026-01-15 09:22 pm
Entry tags:

Weekend On the Way

I have a weekend coming up (three-day!) with nothing scheduled but laundry. This improves the chances that I can catch up on some of the other things that I need to do.

We'll see how that goes. :)