Back From Capricon

Feb. 8th, 2026 09:56 pm
billroper: (Default)
[personal profile] billroper
And I'm back from Capricon.

This is a slight exaggeration, because I commuted to Capricon this year, living about 15 minutes from the hotel and having discovered that there were no rooms with two beds available in the block when I was looking to reserve a room. (The hotel would rent me a king room in the block or a double/double outside of the block. Neither of those would have been particularly helpful.) Anyway, the result was that I was commuting to the con with a whole passel of kids.

The good news is that sales at this year's Capricon were better than the sales at my last pre-COVID Capricon back in 2020. That is largely because the sales at that previous Capricon were abjectly terrible. (Pulls up old tax paperwork to check. Yes, terrible.)

Looking at the tax paperwork causes me to realize that what I paid for two tables and a membership this year was the same as I paid for three tables and multiple memberships back in 2020. This is not a complaint that's unique to Capricon. *All* of the general-interest SF cons that I go to have boosted their table prices substantially post-COVID at the same time that their membership has gone down noticeably. This is why I no longer attempt to deal at Confusion -- there's just no prospect of making enough sales there for it to make any sort of economic sense.

Now, I understand that conventions are trying to get enough income to survive. I have worked enough cons over the years for that to be clear. But it doesn't *appear*, for instance, that the rates that are being charged to artists are a lot higher than before. (I can't speak exactly to the amounts that the artists are paying for hanging space, but that 10% commission is the same before and after COVID, to the best of my recollection.)

When I questioned the rate increase for the tables at Windycon, I was told that this is what other nearby cons charge and I *think* that referred to anime and possibly furry conventions in the area that have more members than Windycon or Capricon. I could be wrong about which cons they were referring to, as I didn't feel like it was even worth trying to make an argument (and I am *on* the Windycon concom).

All that said, my sales at Capricon were definitely ok. They were a bit less than at Windycon and I have no idea what the actual attendance at the con was like, because you couldn't divine it from the badge numbers. Maybe it was announced at Closing Ceremonies, but I was busy knocking down the table. :)

I just feel like the cons are going to price too many dealers out of the market. Maybe I'm wrong. Maybe other dealers are doing a lot more volume of sales than I am, but that's not the impression that I get. I will make money on Capricon this year, but only because I commuted to the con and am only charging one membership against the table. (Which is fair, because I was really the only person who worked the table, which meant I was pretty tied to it.)

This is not a complaint about Capricon. The folks who ran the Dealers' Room were nice and competent and good to me and I *appreciate* that. This is a complaint about general-interest SF cons in general. It would be good if they were not trying to balance their budgets on the backs of the dealers, because having a large and diverse selection of dealers is an asset for a convention, IMO. And if I am going to spend all of my daytime during a convention sitting behind a dealer table, I need to be making my nut or the IRS is going to wonder what I am doing -- and so am I. Witness that I don't try to deal at Confusion any more. :)

Ok, all of that rant out of the way, I had a good time at Capricon. I had some nice conversations. I enjoyed the two panels that I was on. It would have been nice to have a concert, but that didn't work out for whatever reason. Maybe next year. The art auction was a lot of fun and it is great to have K there auctioning beside me and Dr. Bob and Mike. And K's friend from school and Julie ran art along with Lisa and did a fine job. I had fun at the open filking on Saturday -- I was too tired on Friday and had to get back early to open the dealer table (there is a recurring theme here :) ).

The new hotel seems workable, although the restriction on taking things out of the con suite was a bit of a problem when you're a dealer. It is, in any case, in the suburbs, which means that it is much easier for me to deal with. And being able to do move in on Friday made a *big* difference for me.

So I am happy to be back at Capricon for the first time since the remote con in 2021 which was the last time where I ran filking for the con. :) My perfect attendance run is well and truly blown by 2022-2025 and that's ok.

We'll try it again. :)

Capriconning

Feb. 7th, 2026 09:06 am
billroper: (Default)
[personal profile] billroper
Day 2 of Capricon (Day 1 for me) is down in the books and it's time to head over and open the dealer table.

This, of course, depends on my ability to get four teenagers back into the car...

Unpack Me

Feb. 6th, 2026 08:12 am
billroper: (Default)
[personal profile] billroper
I need to finish shaving and then I can run over and unload the van for Capricon.

The new CPAP worked admirably last night.

Take a Breath

Feb. 5th, 2026 10:10 pm
billroper: (Default)
[personal profile] billroper
The new CPAP arrived today. I suppose that I should go unpack it now, but first, a piece of important cat news.

Sunshine has taken to sleeping on top of the heating vent in my office. It is, of course, nicely accessible.

And nicely warm.

Circling the Problem

Feb. 4th, 2026 09:42 pm
billroper: (Default)
[personal profile] billroper
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!
mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
[staff profile] mark posting in [site community profile] dw_maintenance

Hi all!

I'm doing some minor operational work tonight. It should be transparent, but there's always a chance that something goes wrong. The main thing I'm touching is testing a replacement for Apache2 (our web server software) in one area of the site.

Thank you!

Breathe Easy

Feb. 3rd, 2026 09:07 pm
billroper: (Default)
[personal profile] billroper
Over the weekend, my CPAP machine was sitting on the nightstand next to my bed at the hotel. This meant that I noticed the message on the screen letting me know that the machine had reached the end of its motor life and that it was time to get a new one. A bit of research told me that this doesn't mean that the machine will imminently shut down -- but it does mean that we are past the rated life for the CPAP machine.

I am very fond of having a working CPAP machine, so I set out to get a new one. This turned out to be more difficult than it should have been, as I called my health insurance. First, I would need to get a prescription from a doctor in the network and *then* they would get me a machine on a rent-to-own basis, which meant that I would be paying the maximum possible price for it, because rent-to-own is a strategy that you use when someone might not use the CPAP machine because they just can't adapt to it.

I've been on a CPAP machine for 30 plus years. I don't think there's any question of my not "adapting" to it.

Oh, and the clinic said they would want me to come in for an appointment and take another sleep study, because I obviously needed one since I hadn't talked to them for the annual follow-up for some years since the annual follow-up consisted of "Still using the machine?" "Yes." "That will be some hundreds of dollars for the consult."

CPAP.com has been advertising an excellent deal on the AirSense 11 (one generation newer than the machine that I have and with more features than my particular older model which was a stripped configuration). $699 for the machine and a ResMed mask. I don't use a ResMed mask, but Gretchen does, so I ordered the machine for me and the mask for her. Then I signed up for their $35 prescription service, where I had a telemedicine call with a PA who went over my chart, passed it along to the doctor, and they wrote me a prescription for a new CPAP, which was what I needed in the first place, since I have had sleep apnea for *more than thirty years* and that seems unlikely to be changing any time soon.

The new CPAP shipped today, so I should see it soon.

All of this was a good bit cheaper than going through my health insurance, even if it did not help meet my deductibles for the year.

And it does help explain why health insurance is so expensive.

Back to Work

Feb. 2nd, 2026 09:24 pm
billroper: (Default)
[personal profile] billroper
Cleaned up a bunch of stuff at work today, which was good.

And more to do tomorrow...

Home Again

Feb. 1st, 2026 09:52 pm
billroper: (Default)
[personal profile] billroper
Sam, Bonnie, and I packed out of the room at Confusion at check out time, loaded the car, and just kept going, stopping for a nice lunch at the BBQ place in Chelsea. The weather was good and we made excellent time getting home.

I had a good time. I didn't manage as much music as I'd hoped (and never got to the Dealers' Room), but Clif's and my concert went well, and I had a lot of good conversations.

On the way home, Sally called to let me know that Capricon had resolved their insurance problem, so I should be in the Dealers' Room there -- but not until Friday, because given the amount of time that I've taken off, working a full day on Thursday seems like a really good idea! :)

Closer to Packed

Jan. 30th, 2026 08:49 am
billroper: (Default)
[personal profile] billroper
I am asymptotically close to being packed up to go to Confusion. Since Sam and Bonnie are running a bit late, I should manage to be ready when they get here. :)

See you later!

Packing Up

Jan. 29th, 2026 10:05 pm
billroper: (Default)
[personal profile] billroper
I am getting things together for my trip to Confusion this weekend with Sam and Bonnie. Right now, that means finding all of the devices that need to be charged and getting them plugged in before I leave.

I'll see some of you there!

Old School

Jan. 28th, 2026 09:41 pm
billroper: (Default)
[personal profile] billroper
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.

Eye See

Jan. 27th, 2026 09:16 pm
billroper: (Default)
[personal profile] billroper
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.

Sunk

Jan. 26th, 2026 10:11 pm
billroper: (Default)
[personal profile] billroper
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.
Page generated Feb. 10th, 2026 02:50 am
Powered by Dreamwidth Studios