Last night someone came into the Mumble IRC channel with a complaint about our permissions system not working correctly. Initially, I responded with some skepticism - our permissions system looks pretty complicated to an end user, but the code to actually implement it is merely a pair of
for loops toggling matching states, with the last state "winning", and for the most part it hasn't changed in about 5 years. I consider it (in my uneducated opinion) to be one of our most thoroughly-tested pieces of code.
After a bit more complaining, I eventually got the user to elaborate on what exactly the problem is, attempted to replicate it, and managed to! What the hell? I was certainly not expecting that. I also figured out a workaround too.
It seemed at the time that creating a new channel, then editing the ACL of the channel to not inherit from it's parent, then adding an
@all rule to deny all the privileges to a channel then adding another rule to allow
@admin write/speak privileges meant that only the user who edited the rules could actually enter the channel (enter is implied by write).
That last part makes sense - Murmur detects when you're denying everything to everyone and automatically creates a rule allowing the user who made the change to write ACLs so you don't end up with a broken channel that only the superuser can fix. But if you have an
@admin group last, anyone in the
@admin group should be able to enter the channel. What's going on?
It also seemed that simply creating a new group that wasn't called
@admin fixed this, which the user agreed with: it fixed their problem to simply create a copy of the
@admin group and assign permissions to that. However as I was documenting the how-to-reproduce, I blew away the channel and recreated it using the exact above steps - at least ten times in total - and not once could I reproduce the error! Every single time it worked as you'd expect.
I've asked the user if they can anonymize a copy of their server's sqlite database and send it my way, but at the moment the only thing I can think of is that there's some mistake the user made in creating the
@admin group that I managed to reproduce the first time but not when I paid more attention. I can't see any reason in the code for there to be special treatment of the
I'm not entirely sure if this qualifies for "Heisenbug" status, but it's sure infuriating!
I arranged to take Duncan out to Mum and Dad's today so he could hang out with his cousins for a while - the entire way there he wouldn't shut the fuck up about playing Terraria on his tablet with Cody.
We got through to Avoca, where he revealed he had gotten car-sick right on the bridge, I managed to screech into the park and stop. He got out of the car before spitting up, so thankfully there wasn't that much to clean. He was chipper again by the time we got to Mum and Dad's.
After lunch I snuck up the shed to take yet another look for the C64, which I'm pretty sure is gone now... which doesn't really make sense because Mum doesn't throw anything away, and doesn't recall selling it. Maybe it is still there, as it took me three or four rather thorough searches to find the SNES.
I found the SNES again this time, albeit with only one game and missing the RF adaptor, so I decided to bring it home and see if it worked. Interestingly enough, when Dad was asking about something to do with his computer, we found the RF adaptor just laying under a pile of cables.
I tried connecting it up to the TV there, and it had a really shit signal no matter what I did, and it took several attempts to get the game working. It kept coming up with something along the lines of "This unit won't work with a device for copying, please see your instruction manual" which I later learned is what newer cartridges do when a certain signal pin isn't connecting properly.
I also later learned that the poor picture isn't due to the RF adaptor, but because most modern LCD TVs don't cope terribly well with 240p60 (or 288p50 for PAL), but interestingly enough our 32" cheap-ass TV works great with it.
The TV is one Dad gave me when we moved out, and I really lucked out with it. It's a Hi-Sense HL32K26PL, and it's played everything I throw at it (including the Wii, once we found the adaptor to get RCA inputs on the TV) and it doesn't lag whatsoever.
Another impressive thing to note is that it must have been a minimum of ten years since the game was last played, and in excess of 20 years since it was bought (for the princely sum of $35, no less!) and yet the battery backup keeping the save RAM alive is still functioning.
I need to pick up a 4.5mm "security driver" to open the SNES up and clean it, but it does work intermittently, and I would also like to grab a multi-out cable or potentially mod it for component out (though I think I'd rather keep it stock).
But now to track down the missing cartridges.
The end of the financial year is upon us, and rather than leaving it until the last minute, I decided to get in early and thus spent the morning doing taxes. I'm not due a refund or anything (in fact, I had to pay a small portion), but I've gotten myself into trouble leaving the taxes until the last minute before.
I've got to say, when it's working (presumably multiple other people had the same idea I did) the ATO's new system is a marked improvement on the old "e-tax 2015" system, which is a Windows-only application that is so dogshit slow I mistakenly believed it to be written in Java. One of the primary complaints that I had was that for self-employed and small business owners, when it asks you to enter your "business type" the search box is almost useless.
Other than that, and the breakage of the back button and re-opening closed tabs (seriously, if you go to the "print confirmation" page, close the tab, then re-open it, it's blank no matter how many times you refresh), and the usual breakage on the ATO's website (application errors and the generic "we have a problem" errors both), the entire thing was rather painless, and I do believe a good bit quicker than last year's taxes.
Before that I got the BAS done as well, which went rather smoothly too. Hopefully this isn't all a dream and when I wake up tomorrow I really will have done my taxes. To top it all off, one of my employers snuck a final payment in before the EOFY which was a nice surprise to wake up to in the ol' bank account.
Duncan's friend Lincoln was over to visit today, and the two of them wanted to play Team Fortress 2. That's fine, Lincoln's parents gave us their old laptop that runs TF2 acceptably so that's fine. The problem, though, is that Duncan only has one Steam account - easy enough to fix, just create a new one for Lincoln. Then I tried to add him as a friend on Duncan's account, and I can't, because Duncan's account is limited as it hasn't spent five bucks yet.
Apparently, you have to spend at least $5 USD, and gifts don't count (our normal way of giving Duncan games). I didn't feel like heading out to EB games to get a Steam card just to put money on his account. I heard Bitcoin was high recently and I still had a little left over, and I heard that Steam accepts Bitcoin via Bitpay now. Do I have $5 USD?
Not only do I have $5, I had nearly $11 at current prices. So I went through the process which was incredibly painless. After clicking "return to Valve" from the paid invoice, it told me the transaction was pending, but by the time I reloaded the "account details" page the $5 was in his wallet. But what to buy?
I could find almost nothing on the Steam store for exactly $5, most things were $4.99 or some equivalent thereof. Bugger.
While looking around, I just happened to try adding his friend, and it let me do it - you don't apparently need to even buy anything. I checked his account (append
?xml=1 to the end of the Steam Community URL to a user's profile and inspect
isLimitedAccount) and it still says it's limited, but he can add friends now, so that will do.
We ended up buying him LEGO Marvel Super Heroes, leaving him a solitary cent in his wallet. I'll probably add another $5 to his account at some point just to make sure he's over the $5 limit.
They ended up abandoning the TF2 idea right after purchasing, and opted to play Lego Worlds instead. I have to admit I'm impressed with how well this game works for an early-access game. The Xbox 360 Controller support is flawless, and plugging a wired controller in and pressing a button jumps straight into split-screen multiplayer exactly like you'd expect it should.
My only gripe about it was that they advertised that if you bought the game, you'd get a free copy to gift to someone else. Sabriena already had it, which meant that Duncan could only play it via family sharing when she wasn't using her library. I figured I'd go in the morning, get a Steam card and buy a copy so that both Duncan and I could have one. Unfortunately, that deal was shortlived and we missed it - but during the Steam Summer Sale we ended up picking it up at a discount anyway so we just bought two copies. We'll have to try out the internet multiplayer at some point.