End of Week

Mar. 6th, 2026 10:33 pm
billroper: (Default)
And thus, we arrive at the end of another work week -- and probably at the end of the short project that I took on, which seems to be working pretty well. We will, of course, keep an eye out for bugs, but I should be able to work on something different next week.

Tomorrow is the last full day of K's spring break, so we are making a ginormous brisket for dinner. We are also working on getting her income tax return filed for her summer job.

And anything else that needs to be done. Whatever that may be. :)
billroper: (Default)
I've merged the reference counting changes to our code so that we can build it for testing. There will be a brief shakedown cruise, but I think we'll end up with things being much more stable once we finish this up.

Refactoring

Mar. 3rd, 2026 10:42 pm
billroper: (Default)
Today was another day of mild refactoring around one of my classes at work. This included adding a reference counter (which I had removed in an excess of enthusiasm for Java reference counting that was not entirely warranted) and changing many of the calls that fetch a member of the class to use try-with-resources to guarantee that the close() method will be called and the reference count reduced.

Tomorrow, I hope to start testing this. All of the unit tests are running, but that just proves that nothing acutely stupid is happening. It's the *system* tests where all of the action will be here.

And I want to see if this runs or just sits there and starts smoking. :)
billroper: (Default)
The treadmill left for its new home today and the library looks a good bit less crowded. This is good.

In keeping with the theme of moving things, today at work was largely spent rearranging things so that I could combine two classes into one. I think that's done and I can move on to the next bit of this project tomorrow.

Yay, me!
billroper: (Default)
Today was spent writing unit tests and fixing bugs that turned up when I ran the unit tests.

Which is, I suppose, the best reason for writing unit tests.

I have a few more unit tests to write tomorrow and then I can move on to the next project.
billroper: (Default)
It was back to work today. I think I've gotten a bit of coding done, but we'll see what happens when I finish writing the unit tests *and* the guys who are supposed to hook it up to the UI take a run at it.

In other news, I was pinged by one of my fellow programmers today who was playing around with the OLE compound document format that our desktop files are stored in. I showed him the set of Java code that I wrote on top of Apache POI to provide additional support for features that we're using. Then I said, "Watch this."

I bounced into VS Code and fired up Cline and told it to look at these classes in my source base and then write a code snippet that would open up a desktop file and dump out all of the custom settings from the user defined property set. Now this isn't overly hard code to write, but even so, the resulting code was very nice and took advantage of features like try-with-resources and such. I cut the code out and emailed it to my coworker, suggesting that he could put this somewhere that we could get at it. :)

It was, in any case, faster than writing it myself and certainly not bad code.

On a completely different note, if no one is interested in the treadmill, I am going to list it sometime in the next few days as available for free on Nextdoor, which is a pretty good way to get large objects to leave my home. If you *are* interested, let me know.
billroper: (Default)
I am working with the code assist AI at work to try to clean up our Gradle scripts. It did a magnificent job of doing so, but managed to delete some instructions from the scripts that we use and that it didn't realize were being used. Oops.

But that's no problem. I'll tell the AI to restore the missing parts from the version that's saved in our Git repository.

If only it hadn't accidentally discarded all of the changes in one of the files when it retrieved the backup copy. Oops again.

So I have the AI remaking the changes that it discarded.

And a new appreciation for knowing when to back up code changes to defend them from the AI.
billroper: (Default)
It was back to work today where I have picked up what I hope will be a short, but interesting project.

Over lunch, I mailed the Dodeka taxes. Now, let's see if the IRS can be bothered to open them...
billroper: (Default)
I am apparently a minor deity of some sort.

It doesn't take much to be one. You just need to read the console output from the build process and then read the documentation for the Gradle build and test processor. Do these things and you can make all *sorts* of things behave properly.

I tossed a thunderbolt as a warning shot tonight. With any luck, it will get the attention of the right people.
billroper: (Default)
After a whole lot of work on my VM, I finally just deleted the directory that holds all of the configuration information for my JDeveloper and now it is working properly again. I suppose I should have tried that first.

We had a walkthrough of the new Windycon hotel today and are discussing various items of space allocation that we will settle eventually. Figuring out how to carve up a new set of rooms is always interesting. :)

Gretchen and I had new passport photos taken today, because we are just within the deadline for being able to renew our passports online. Those applications are now filed. This is more immediately useful for me than it is for Gretchen, as I have now paid for my FilkONtario membership and just need to book a hotel room. Sadly, the website wasn't working earlier tonight, so I'll just try again tomorrow.

Meanwhile, Capricon starts tomorrow. Because a full day of work is a good choice for me, I'll be showing up Friday with my dealer table. At an annoyingly early hour, but I have a panel at 1 PM and want to take a run at having the table set up when the dealer room is actually ready to open.

Wish me luck!
billroper: (Default)
Cleaned up a bunch of stuff at work today, which was good.

And more to do tomorrow...

Old School

Jan. 28th, 2026 09:41 pm
billroper: (Default)
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)
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)
You take three days off and what do you get?

A big gosh darned bug, that's what.

I am sorting through this mess, which seems mostly to be the result of a failure of understanding. We'll see if I've solved it in just a minute.
billroper: (Default)
I fired up the work computer tonight, because I would rather not discover in the morning that it needs an update. And it *did* need an update, so I win the battle.

I also discovered that I had a bunch of e-mail that I hadn't seen while on vacation, because I had managed to pause all of my work apps on my phone. Happily, none of it was something that I needed to handle.

Now, I'm back to work Monday through Wednesday, then off to GAFilk.

I love chaos. :)
billroper: (Default)
I have to get K down to the bus that departs at noon tomorrow, as break is going to be over as of Monday for both of us. (Although I'll be taking time off at the end of the week to go to GAFilk...)

While off from work, I have devised a clever (?) scheme that may sort out some of the problems that the UI team is having with caching models in our updated environment. We'll have a meeting first thing Monday morning and I'll find out whether the scheme satisfies them or not.

Gretchen has been valiantly trying to get all of the dishes washed in the absence of a working dishwasher. This has been a game of three dishes forward, two dishes back. She is *so* close to the end of the queue here. But the new dishwasher will arrive on Monday according to the schedule and at some time between 6:30 and 10:30 AM. The 6:30 estimate seems unlikely, but if they are loaded by 6 AM and we are the first stop, not impossible. Gretchen is not looking forward to this timing, but I'm back at work, so she is in charge...

I have several things that I'm hoping to finish tomorrow, some of which are more necessary than others. I note that I *still* haven't managed to get the GAFilk quilt hung, but we *did* take down the Christmas tree today. Normally, we would leave it up until January 6th, but that is Tuesday, which is shortly before I depart for GAFilk and *after* K has returned to Ball State, so the tree is now out by the curb and the ornaments put away.

But the first order of business is to get K on that bus back to school, because I do not want to be driving to Muncie tomorrow. :)
billroper: (Default)
Julie has officially finished high school. I am impressed.

Today was my last day of work before Christmas break. This made it a bad day to break anything, so I wrote a little utility method that should be useful for several projects that we're working on. Since nothing is using it yet, it could be checked in harmlessly. :) I'm not traveling, so I have promised to show up if anything that I changed recently *does* decide to die horribly in the lead up to Christmas.

Now, I just need to finish my Christmas shopping...
billroper: (Default)
I think I have finished cleaning things up at work for a while and need to get some fresh things to work on. :)
billroper: (Default)
I am going through some code, cleaning up old constructs before a major release that's coming up. This takes me into some interesting places.

Today, I realized that there is a whole species of things that can be simplified by cutting out a lot of intervening code that is building unnecessary objects and doing unneeded lookups. I've patched a couple of places and will continue looking at the problem tomorrow.

Some of the fun, of course, is that we've moved up to Java 8 since this code was originally written which opens up all *sorts* of possibilities for playing with Java Streams. The amount of things that you can now do with one (longish) line of code is really impressive. :)

Catching Up

Dec. 9th, 2025 09:56 pm
billroper: (Default)
I am gradually catching up on things, both at home and at work.

The problem is that as I catch up on one thing, another thing comes careening down the track.

The good news is that we went out to dinner with friends tonight and had some good conversation. And the chance to talk to someone who is not one of my coworkers is a fine thing!

Profile

billroper: (Default)
billroper

March 2026

S M T W T F S
1 2 3 4 5 67
891011121314
15161718192021
22232425262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 7th, 2026 07:51 am
Powered by Dreamwidth Studios