Earlier this week I mentioned that I'm printing toys for my son's advent calendar. The Flexi Rex and bathtub boat looked great, but I'm still using the original grey PLA filament that my 3D printer shipped with.
I thought the low-poly Pikachu would be a nice next print, and wanted to switch to green ABS to do that. Changing filaments was so smooth I could hardly believe it! First you select the Unload filament option. The printer will notify you to first pre-heat the nozzle if you haven't done it yet. A couple of seconds later and you can just pull the filament out. To load new filament, you just select the Auto-load filament option. Again it check if pre-heating is required, after which you can just insert the tip of the new filament when you're ready. It feeds through automatically, and even asks you if the colour if the filament looks correct, so that you can feed through more if necessary. Man, I like it when they make things so easy!
I wear a pair of jeans for most of the year, and only owning two pairs keeps things nice and simple. That's one in the wash and one to wear. I used to love Hiut jeans that are made right here in Wales, but after I had to send them in for repairs twice, I started looking for something more durable.
I found that in Swrve cycling jeans. They're super durable and comfortable, as they're made with a cordura blend. I would have preferred something that is 100% cotton, but it turns out cotton just doesn't last that long. Most of my wear and tear happens in the crotch area, as I walk a lot, and the Swrve jeans solve this with a seamless diamond gusset. It's brilliant. Having a higher waist in the back also helps. Two pen pockets and reflective strips on the inside legs are just a bonus.
My first pair is almost two years old now, and the only area that needs to be repaired is a hole in my pocket worn out by my keys. I just received my second pair.
It's my son's second Christmas, so now that he is starting to get excited about the whole experience, we decided to make him an advent calendar. We bought a series of bags on a string that we can later re-use to hang some photos, and want to fill the bags with alternating toys and treats. The toys will be 3D-printed, and I'm basically just selecting popular designs from the Toys category on Thingiverse.
Yesterday he got Flexi Rex and tomorrow, if the print goes well, he'll get a bathtub boat.
I watched the documentary The Bleeding Edge last night, and I cannot stop thinking about it. It deals with the regulation of medical devices in the USA, and how the FDA is failing in some instances because of big pharma. It sounds like it may have a bit of a conspiracy theory vibe, but a lot of the people they speak to used to work for the FDA themselves. I do believe the FDA is a force for good and that it has a lot of people there doing good work, but I can't stop the nagging feeling that something is not right with the whole system. Not that I think the European system is any better. But it does make me wonder if there is a better, more decentralised way of ensuring that medical devices are safe and effective.
Yesterday I mentioned having Windows permission issues with a blood glucose meter that mounts as a mass storage device. After reading that someone else experienced the exact same issue while building a disk image write for Windows using Node.js/Electron, I don't feel so alone anymore.
I think I finally figured out what's going on. To make a long story short, Windows allows you to open a physical drive (e.g. \\.\PhysicalDrive1) with an exclusive lock even if there's a mounted volume, but then doesn't permit you to write to it. If you try to open using the logical name or mounted volume (e.g. \\.\E:) with an exclusive lock flag (O_EXLOCK), it fails with the error “Resource busy or locked”, but if you use FSCTL_LOCK_VOLUME to lock the volume after you opened it, it works!
It looks like one reason for this confusion is because of how Windows handles removable media differently, based on this comment from Jonas Hermsmeier:
Just remembered that the \\.\PhysicalDriveN only works for (things that act like) hard drives, not removable media. If something acts like a removable disk (or floppy, CD-ROM, etc.), \\.\X: opens the raw drive. This is due to the SD Card reader (for example) being the actual physical device, I believe. So it depends heavily on the device type.
I'm having some trouble reading data from a Verio Flex glucose meter on Windows. It seems to be some kind of permission issue, because it works just fine on macOS. On Linux we're accessing the device directly as a USB device and communicate with it using SCSI commands. This won't work on Windows, however, as it means installing a WinUSB driver for the device, which will break software that depends on the meter to be available as a mass storage device.
On Windows, the Verio & Verio Flex meters mount as mass storage devices, like a USB drive. However, you don't actually see the data as a file if you look at it in File Explorer. You have to set special permissions when opening the device and write data to it as commands in order to receive data. When I try sending commands to the device, I get a EPERM: operation not permitted, write error. It doesn't matter how I set the permissions, I just can't get it to succeed.
Strangely enough, using the same permissions, I also cannot write data to a regular USB drive. It's possible that there's just something wrong with the permissions on my computer, but I've tested it on two other machines too. It's also possible that Node.js is just not capable of setting the permissions correctly on Windows, but I would like to figure out why that is.
I'm looking at implementing a driver for some blood glucose meters that actually adhere to official standards. The Continua Design Guidelines act as a type of framework for medical device interoperability. Basically they require devices to adhere to specific standards for USB and Bluetooth LE operation.
While the Bluetooth LE specification is publicly available, including the Glucose Service descriptions required to read data from blood glucose meters, the story for the USB specifications are a little bit more complex. While the USB transport layer protocol, called USB Personal Healthcare Device Class (PHDC) is available publicly, what happens above that layer is described in ISO/IEEE standards that are hidden behind paywalls. Specifically, the .pdf file that describes the glucose meter specific parts is $94 from the IEEE store, $178 if you buy it from the ISO store, $323 from the British Standards store and $194 from the American Standards store. Standards are funded by public money, so it only makes sense that they're publicly available.
Afterfinally getting the LZO decompression module working on 32-bit Windows, there was one more issue that popped up resulting in a malloc: Incorrect checksum for freed object error.
First I thought there was something wrong with my macOS version of the avutil shared library, as the error was occurring on macOS but not in Linux. After some debugging I discovered that it didn't occur every single time the code was run, indicating that it's some kind of buffer overflow that was occurring instead.
When increasing the size of the output buffer by one, ie., malloc(outputBufferSize + 1), the error stopped happening. Then my colleague Lennart discovered that the LZO code in libavutil requires the buffers to be padded by a certain number of bytes. I added the AV_LZO_INPUT_PADDING and AV_LZO_OUTPUT_PADDING constants in the header file to the buffer sizes, and so far everything finally seems to work without any problems.
Last week I discovered write.as/WriteFreely which seems like a great alternative to Ghost. I started using Ghost because I really liked their Markdown editor and the ability to write posts on mobile. Unfortunately, with the new release of Ghost they have changed their editor to look more like Medium, and it's a bit buggy on mobile. Now while I really like Ghost, their target market is teams. I'm currently using a paid theme that seems more suited to a single author blog, but it's not ideal.
Write.as has an iOS mobile app and even a Linux desktop app. It looks great, is also open source and even federates with Mastodon! I guess the main thing will be to see if I can port the more than 100 blog posts I currently have on here over.
Once a month there's a street market just down the road from us, selling everything from jewellery to baklava. It's something we enjoy doing on a Saturday morning, just strolling through the stalls and maybe have a coffee at a nearby cafe.
This morning I noticed a South African flag waving through the window of the coffee shop where we were sitting. That could only mean one thing: The stall selling boerewors rolls and South African treats were there! Boerewors is a type of sausage made with mince and a special blend of spices. I bought a whole spiral of venison boerewors with jalapeno's. Not very traditional, but I'm looking forward to tasting it.
I also bought a pack of buttermilk rusks. South African rusks are similar to biscotti, in that it's also a type of double-baked biscuit/bread that you can dunk in coffee. I've made my own rusks a couple of times already, but they have to bake overnight so when I'm lazy buying them is a bit easier.