Update for July, year of total chaos 2020

I’m trying something new. I’d like to regularly write some sort of an update which explains what I’m working on. Since this website doesn’t generate any meaningful traffic, I’m doing this for myself. I’m not imposing any strict time frame on this. I don’t want to do this too often, since I don’t want my blog to be full of posts like this one. I want the blog section to be useful for weary travellers who look for answers, in this world full of questions! Anyway, lets get to it.

Last month was very busy. Working from home during pandemic isn’t particularly exciting… I certainly miss having people around when working. Not having to commute saves a lot of time though. I’ve finally started working on several projects that I really wanted to start or continue.

First one would be the BLE controller for digital artists. I really like this project. There is still a lot to do but I’ve finally managed to build a rough prototype. This project is based on the Sparkfun Artemis Thing Plus board. I’m not using Arduino framework (which doesn’t have BLE support yet anyway). That means I’m using OEM’s SDK… and it’s rough. It’s just poor quality code. I’ve had to rewrite a big chunk of the code that stores the bonding information. I’ve learned that when iPhone pairs with my device it uses a random address (RPA - Resolvable Private Address). The device has to have the IRK (Identity Resolving Key) stored so it can… resolve the address. That’s just the first step of restoring a connection between bonded devices.

After building the prototype I wanted to play around with ZBrush. At that point I’ve realized that device fails to properly pair with Windows… I’ve only tested pairing with iOS devices up to this point. First of all Windows uses a public address, not an RPA. That difference exposed a bug in my code, which I quickly fixed. Unfortunately the device isn’t recognized as a HID device. I think the problem is in reading the HID descriptor. I’ve ordered Bluefruit BLE friend, which I will use as a BLE sniffer. That way, I’ll be able to learn more about the host/device communication. I actually plan on sniffing other BLE devices to see if maybe I’m missing something in my advertising packets. I’ve already linked to that project’s worklog but here it is again.

Lets move on to the next thing… this one? A bit embarrassed. I’ve googled three.js. One thing led to another and I’ve made my first mini-project using three.js. I’m embarrassed because web is full of excess. Websites are crazy heavy and browsing web can make your hardware sweat like crazy. I’m not a fan. Any delay or lag, in interacting with a device, chips away at my soul. I’ve always wanted this website to load quickly. I’m not a web developer, which means I don’t know all the tricks to make that happen. One way to achieve, without that knowledge, is restrain. Just don’t add things that don’t contribute to the original goal of the piece.

That intro was pretty long. I just wanted to say that I’ve added a 3D model of the Sparkfun Artemis Thing Plus board to this post. It spins… it doesn’t really communicate anything that a photo didn’t communicate before. I like it though and I’ve learned a lot making the model and adding it to the website via the three.js library. It needs some refinement (it doesn’t scale with the devices' screen) but for someone who has no experience with web development… I think it’s neat. Adding this trinket made me go back to some of the images, used on the website, that needed optimizing.

Last project that I’ve worked on is my own take on Anki. If you don’t know Anki, it’s an app for spaced repetition. I’ve been using it a bit, since I’m learning Swedish. I think it’s very important to create your own card decks for spaced repetition. You can import and export your cards from Anki, but what I’ve started doing is storing everything in JSONs. I’m using some scripts to convert JSONs to TSVs, which Anki accepts as import input. I thought it might be interesting to build my own web app for space repetition. Once again, not a web developer. That means I’m learning a lot. For now, I have a simple frontend which fetches a card deck JSON and cycles through the cards, while asking you how easy it was to remember that word. Answering results in changing to the next card… but nothing more than that. I’m also working on the backend, which is a Flask app. I’m designing the REST API and trying to figure out how to store the information about reviewed cards. At the moment that means playing around with the SQLAlchemy in Python. It’s always very educational to try to make something outside of your comfort zone.

That would be it when it comes to technical projects. My flight to Poland was cancelled since Poland has extended the travel ban for another 2 weeks… That absolutely destroyed my vacation plans, but complaining about that during global pandemic seems tone deaf. Unfortunately local weather is going nuts, which makes spending time outside difficult. If you work in front of a computer that should be the goal during vacation. Recharging outdoors is so important. At least I’ve watched the final season of Dark. It’s a great show!

I think this will do. Next one of those in a month or two…?