What are you doing this week? Feel free to share!
Keep in mind it’s OK to do nothing at all, too.
I am creating a website with a map of all the public pianos in the world 🎹. Happily learning a lot of leaflet, postgres and jquery in the process.
This might be a fun little app, “Play the Piano for Me”, where people visit public pianos and take pics playing them.
Actually, some of the data comes from Instagram where people do exactly that! The data source is been the trickiest part, there are lots of places on the internet where people post about public pianos but there is no unified source so the information is extremely fragmented. I’m attempting to unify it but, based on the previous attempts, it seems unlikely I’ll be successful. Sometimes you have to try!
What a great idea!
I recently finished and set up project that reminds me about saved Pinboard links with exponential backoff: link. Inspired by a talk by Andy Matuschak I saw recently where he talked about how he gets a lot out of journaling prompts that come up with a similar cadence, and how that helps him build up a library of his ideas around a topic.
I’m also working on a web search interface and indexer built with Rust and WebAssembly: link. It’s built for static sites with lots of different pages, and the idea is that the indexer precomputes a search index at the site’s build time, then the WASM part can search through that index really really quickly. This is a project I hope to capital-p-Publicize, and I’m hoping I can spend some time this week to polish it off beforehand!
Work is lots of docs cleanup and small bug fixes, etc.
I have been working on my static site generator Haskell library: rib. I’m planning to add support for AsciiDoc.
Just had a great conversation with my friend Michael. He and I are both interested in this technical topic we haven’t seen covered in the literature around programming. I think we might start setting up an example project to walk through some scenarios, maybe make a few videos later on. Should be a hoot.
I’m curious. Are you intentionally not mentioning what the technical topic is?
Yes. I’m not trying to be coy, but I want to make sure we frame it up well. To me we were talking about something obvious that didn’t need much explanation. I’ve found that I suck when I try to describe things like this since there are so many things I take for granted that others might not. So I’m waiting on jumping in and getting feedback in order to have some sort of catchy/explanatory title.
I spent my entire weekend putting together a presentation for our biggest client. My morning was spent on last minute adjustments. The presentation felt like a disaster. I was interrupted several times with criticism while I was building up to our call to action, and the final slides felt like a question mark rather than an exclamation point.
The following discussion period felt adversarial, to say the least. I received heavy criticism from one of the science directors. However, another department head, one who had previously been heavily critical of my work, stepped up to bat for us. The reactions were extremely mixed (in a way that is confusing to me), and as the meeting abruptly closed due to time constraints, I felt like I unintentionally provoked a turf war at a federal institution. Biggest client, not good.
I’ve been kicking myself all day for missing the mark, not only on the presentation, but on the months of development work leading up to it.
I’m used to nailing it on stuff like this. But somehow this one slipped through my fingers, and I didn’t even realize it until I was wrapping up the presentation. Shit. This could be an exprensive mistake, even end the company.
What am I doing this week? I’m trying to find a way to turn this situation around.
Currently, I’m studying for a Threads and Operating Systems exam. Once I take that, I’m on break for a month, which means I can work on [redacted] book project and qaul.net, and (I hope) some open source stuff.
Porting the BERT model from Hugging Face’s transformer package to Rust using the tch-rs binding. BERT is what we need right now. Maybe I’ll port some other models as well, once BERT is done. I did not have any experience with PyTorch or tch-rs yet (have been using Tensorflow the last few years), so I have been reading some PyTorch documentation at the same time. My current approach is implementing a part of the model, loading weights from a model that was converted to HDF5, pass in some word piece indices, write a unit test to verify that the output matches that of HF transformer package. Rinse and repeat.
Besides that wrapping up things before the holidays.
$Work: Making a Linux-based version of our firmware.
$Home: Should be getting started on the 8 bit computer by Ben Eater
As part of my independent research project, I’m splitting out parts as Rust libraries to exert some evolutionary pressure on them and myself.
The first library is a lexing library that is made to operate as a library, rather than a code generator. This means it won’t be the fastest on the block, but I can differentiate it other ways, namely as a good batteries-included lexer that should be fast enough to make you not have to write it yourself.
Last week, I did a quick sketch using the regex crate, where each rule was an alternation. This was fantastic to get going with, but it doesn’t support longest match in cases where the matches overlap. I moved onto Brzozowski derivatives, which are amazingly small, but my worry is that they aren’t fast enough, and there isn’t a whole lot of literature out there on making them performant. (Most of what I found shows how to avoid making more complex expressions than need be, which is fine, I’m just unsure if it is a path worth staying on.) This week I’ll be compiling them to NFAs, which is an area I haven’t yet explored myself.
First pass I’ll run each NFA over each character of input and stop running them when they are fully rejecting the input. I imagine a better approach would be to combine them all, but that can be an iteration. I’d also like to explore the possibility of enumerating the first character accepted by each rule’s regular language and then using that to construct a lookup table of character -> rules that may match, then only running those rules as regexes/NFAs.
Third week on a new job. The website is French only, but it’s basically a CRM and ticketing solution for property managers - think specialized Zendesk Suite. I keep getting acquainted with the code base, start fixing more complicated bugs, and jot down ideas for how some things could really be improved. Pretty happy so far.
At home, I’m doing Advent of Code for the third year in a row. Inch is mostly Rails, and I haven’t touched Ruby in about 8 years, so I took the opportunity to use it this time. Not seriously laddering or anything (that would mean waking up for 5 AM everyday in my timezone) but I do keep up so far.
Making some automation pipelines using GitlabCI, Symfony Framework and Bash use LTS version numbers…
Finally holidays, however I’m moving to a new apartment so I’m really busy with that at the moment.
Been doing the Advent of Code for a few days with Rust (never used Rust before), it started really slowly but I’m starting to get a bit more into the language, enjoying it so far.
Adding some client-side caching to take pressure off one of the noisy “microservices” my team has just inherited to hopefully keep the pager quiet over the holidays :-)
On the home front I’ve just sent out the yearly batch of “season’s greetings” letters, which is the last stressful thing on my TODO list for this year. It has meant no guitar practice today, but I’ll be able to practice guilt-free the rest of the week!
I’m going to be visiting my in-laws in a bit, but made some progress on my work on making the D language easy to use for Android. I’m particularly happy with how the JNI usage is turning out: https://github.com/adamdruppe/d_android/blob/master/android-dub-test/source/test.d
I might play with actually outputting some java bytecode to define new classes this way too instead of just calling/being called from existing Java classes.
I’m now effectively the acting Director of IT for my business unit of around 200 peeps. This week will be comprised of:
After finishing my Google Professional Cloud Security Engineer (or whatever it is called) the other week I’m now reading for AZ-500.
Now that I finally have some time to be creative outside of work now and I hope to be able to write a couple of blog posts and (stretch goal) make a simple online photo album based on my family’s group chat this year.
I’m rolling out code I wrote last month, overseeing its testing, and spending as many hours in leisure as I can through the end of the week.
I’m traveling to visit my family for Christmas. Thankfully, my mother’s mountain fastness has decent internet and reliable power, unlike a couple of her previous residences.
The code I wrote is mainly quality of life improvements for a CRUD app, replacing interdependent AJAX auto-populating dropdowns and a datagrid with much faster controls that were written in the last decade and handle the workflow without making the user wait. I tested this stuff across our browser matrix to the best of my ability, but I know that I will probably be fixing little issues with the new code into mid-January once the official testing is done.
I’ll be working on my side project DnD. Last week I converted it to use Node instead of Rust, but I need to still implement some frontend functionality for it to be at the same spot it was when I did the conversion.
I ported my triple store to Chez Scheme. I did some microbenmarks. It is faster to import wikidata-lexemes (5.6GB) by 11%, and the first query (cold cache and very simple query) is 10 times faster. I should prolly automate those benchmarks.