This is the weekly thread to discuss what you have done recently and are working on this week.
Be descriptive, and don’t hesitate to ask for help!
Gearing up for a job change which will finally afford me some time to work on personal projects. I’m leaving IBM – and a 5 hour per day commute – to work as an embedded compiler developer. Entirely remote.
I’m moving my domain to a new hosting service and I’m dusting off the UNIVAC emulator code that I have, among other things.
O.O 5 hours? Daaaaaamn, that is a lot of time back congrats.
I’ve gotten some feedback on the TLA+ guide and the general consensus is that it’s useful, but doesn’t give any sense of how to use specs. I’m going to do some revisions on the guide, with the main focus being adding longer, more complicated examples.
Otherwise, I’m still sloooooooooowly working my way through Idris.
I am in week three of my new job so I haven’t been able to settle in enough to where I want to program in my free time. Although the project I am trying to make progress on is a client for NSQ written in Rust. It’s been fun to learn more about binary protocols and the asynchronous world at the same time.
For those that are interested NSQ can be found at this page: http://nsq.io
Working on a Heroku site using Django as an internship for my school’s technology class. The site will be used to keep track of the building materials being used, using QR codes on the containers to navigate to a URL that updates a remote database. I find I like Django’s system of switching responses based on a regex of the URL. Mainly getting tripped up by Django’s template system as well as the precise logistics of Postgres and how it integrates, but I only just started today. Tomorrow will be an interesting day ;)
Started my 3 week countdown to my last day at Apple. Doing a lot of thinking about what I’ll do next, but I think I’m done working for other people. Hoping to get back to doing more teaching/training/coaching (Java, Go, K8s, Docker) as well as contributing to some open source projects. I also can’t decide whether I want to do some more work with Solr (what’s occupied much of my time for the past 6 months at Apple) or never want to see it again.
Replaced my BT VDSL (fibre) modem with a different model, so I can extract line stats from it because who doesn’t love having more graphs in their life? (More details on hacked modem) This in turn means I need something to capture the stats into, so I’m spinning up Prometheus on the home server. (Just noticed I can slurp stats from unifi controller into it with https://github.com/mdlayher/unifi_exporter too. Yum.)
ProjectBoat continues strongly. Replaced the hard rubber jockey wheel on the trailer with a pneumatic one at the weekend, went swimmingly well and she glides over the mud to get to the slipway now.
ProjectBMW spewed the contents of the cooling system on the road after a spirited drive through North Wales. Current hypothesis is a stuck thermostat, running her up to temp on the drive didn’t reveal any leaks in the system but the return feed from the radiator/the radiator itself never gets warm which suggests to me that the thermostat isn’t opening to allow cold coolant into the block when she’s up to temp. Main irritation is the thermostat housing is one of the major leak points on that engine, and it’s not leaked a drop since I fitted it last year. Bit annoying to have to disturb that.
I launched kurly at version 1.0.0 today.
kurly is a replacement for the HTTP(S) functionality in curl, which I started about a month ago with my friend and collaborator Al S-M. I have been kicking around the idea of taking on modern replacements for various infrastructure-ish code out there for quite some time, and with Tony Arcieri’s “memory safety intervention” post spurring me on a few weeks ago, I felt it was time to kick off with kurly.
My website has been pretty busy today after announcing in a few places, so I’m hoping for this to gain traction with feature requests (even better with pull requests!), bug reports, feedback, etc. One feature requested this morning has already been fulfilled and is awaiting merging.
Please feel free to pitch in and help; there’s lots to do! :-)
I was recently given the opportunity to write another technical article on a virtualization tool I maintain called iohyve. I’m torn on whether I want to update and polish a topic from a previous article, or write a new one.
Whether or not I pick a new topic or use an old one, I am glad to have an excuse to set aside some time to give the project some much needed TLC. Some folks who have been around the project for a while continue to help out and make improvements as well. Because of this, I am going to better outline contribution guidelines, and implement simple ways to streamline that their work gets into the project and tested in a somewhat timely manner. An obvious one, and one that has been suggested time and time again, is to move work off of the master branch into a development branch. I’m not quite sure if github allows it, but then I’d like to grant certain users certain access to branches.
I’d also like to hit some of the low hanging fruit on the ever evolving roadmap for the project. Most notably, the Guest import/export functionality. ZFS send/receive recently got compression in FreeBSD, and a lot of people ask about how to move guests around from one machine to another. I’d like to automate the process and (of course) document it.
A friend of mine had an odd idea involving the largest prime found so far (22,338,618 digits) that required conversion to another base. Finding the number was easy—less easy was finding a way to convert to another base. I ended up dropping down into x86 assembly to use the unpacked BCD instructions (AAD and AAM) for the division routine (needed for the final conversion)––I figured it was easier to work with unpacked BCD (which is ASCII digits with the upper four bits set to 0) instead of attempting to convert a 22M+ digit number into binary and then working with it.
I’m cycling through a bunch of projects right now.
I made some progress on my D-Bus client implementation in Rust/tokio. I’ve been a bit stuck on how best to let users serialize request data and deserialize responses. Originally I had traits for encoding and decoding data structures to/from the D-Bus wire format, and planned to implement an RPC call method that took a request object implementing DBusEncode and returned a response object implementing DBusDecode. After a lot of hand-wringing I’ve decided to accept and return simple byte buffers, and provide a collection of combinators for encoding/decoding various types in the D-Bus format. I’ve got most of these implemented now; next up is adding support for signatures, object paths, and variants, and writing tests for these.
Over the past several months I’ve been doing (mostly remote) programming mentoring for my former high school robotics team. I’m very proud to say they won their division at the world championship this year and were one of six division representatives to compete in the final playoff round. In addition to helping them put out fires, I built a bot which watches the various livestreams available for a competition event, records matches as they happen, and uploads and posts the resulting videos within minutes after each ends. It detects matches by watching for the presence of a scoring overlay on the video feed, and uses some custom-trained OCR to read off the corresponding match label. For fun I also added the ability to monitor scores and other data in the overlay live during each match. After running the system successfully for the last championship event, I want to go through and reorganize some bits, make deployment more automated, start publishing data to Firebase, and add support for alternative scoring overlays which are used at unofficial offseason events.
There’s some Haskell and Firefox code I want to dig back into this week that will probably be higher priority than everything else, and of course there’s classes and homework to attend to—I just finished up a practice set on Bayesian inference. Maybe I can squeeze in a little time for my game project, too…
Still working on developing and documenting the HIDIOT.
Last week I finished the setup documentation and started on project docs. I’m working through a project to teach Morse code this week. We start by decoding secret government messages in Colombian pop music - this doesn’t need the HIDIOT, so feel free to check it out if you’re interested.
The next tutorial is going to use the HIDIOT to teach live Morse code decoding by decoding the final communications of the RMS Titanic. I’m hoping to start that today.
The final project in the Morse series is a device to blink out arbitrary Morse code. It’s more to show how the programmable LED can be used to send information in other projects than anything else, but hopefully the people working through it should be able to read some Morse code by then.
Did my first big release at my new job today, it went rather okay, though the email servers went down and the ensuing chaos meant that I could fly slightly below the radar, I will see this week if I managed to catch most of the bugs, I’m guessing some more will pop up under heavier use.
At work I’m making a tool for distributing traffic between multiple datacenters. DNS and anycast seem like blunt tools. Thinking of supporting utilizing H2 alt-svc records. They are like a H2-level CNAME.
They are blunt, but ultimately how traffic and requests are steered.
What is H2?
It has the concept of a an alt-svc record which is a bit like a redirect or CNAME, but transparent to the browser. Your url bar continues to say https://awesome.com/ even though awesome.com sent an alt-svc record and sent you to https://edge-1.awesome.com/
It’s not really an alternative to a load balancer, but could be used to shed load that anycast was distributing unequally.
Had a really crap computer week.
Arch is forcing an update to libinput which breaks my touchpad, and ignoring it has predictably broken other X related things and I can no longer run or work on my game.
On my desktop I recently switched to void Linux which looks like it was a big waste of time. They split everything into a million packages which you have to install manually and is annoying, some stuff in their repos is mispackaged (qt5 things, curl…) and the tools they provide for making your own packages are very very bad.
On Windows, Firefox was kind enough to install a bitcoin miner, which I was lucky enough to spot after 20 minutes. Again I am running a couple of versions behind because new Firefox versions routinely break my extensions, and with the big break coming up I’m wondering what my options are. I can either have malware or a broken browser, unless there’s some way to sandbox programs on windows that I don’t know about.
In spite of this I was able to add release signing (with monocypher) and get my shadow map implementation in a usable state. Next up is instancing, and after that I can get some nice screenshots and push a new release.
At work we demo’d what I’ve been working on lately and they liked it, so hopefully I can start working on something more interesting soon.
Almost all of my time right now is on fiction (Farisa’s Courage). I’m reading Self-Editing for Fiction Writers. I want to get everything right before I send to an editor or a publisher.
I’m really looking forward to read it! Can I ask what kind of fiction? Sci-fi ?
if it is not a spoiler, does it contains a programmers union? ;)
Steampunk. 19th-century tech level. Set in a world where the tropics are uninhabitable (52°C equatorial temperature, as opposed to 27°C in our world) so the two hemispheres have diverged. First book in the series is N. Hemisphere.
Since it’s not at the right tech level, it does not contain any programmers or a programmer’s union. But, the antagonist is a company (the Global Company, owning 70% of the world’s wealth) that started out as in witch hunting and (like the real-world Pinkertons) violent suppression of labor. There are plenty of hits on 21st-century corporate culture, and there’s a minor antagonist named after two SV personalities.
I hope I can start https://interpreterbook.com/ and somehow improve my Go abilities
Working on my Elixir Ostatus server that started federating with GS and Mastodon over the weekend.
Finalizing Mastering Rust for Packt Publishing: https://www.packtpub.com/application-development/mastering-rust
The goal was to get it out in April, but that clearly didn’t happen :) May or June seems quite likely, however, as I just got out the fixes to technical reviews done.
I’ve had a lot of Rust in the past 9 months thanks to this project. Lots of sacrificed weekends and nights. Good experience overall, but quite exhausting.
aws devops pro certification. Company requires it for partnership agreements w/ aws, so despite my profound aversion to certifications, I’ll have to bite my tongue and study.
Evaluating PHP-centric build tools for work. Boy howdy is this a big pile of trash.
Finally getting back to working on Prose for Programmers again.
I’m planning to get back to working on my little side project in the form of a mutation test generator for the .NET platform.
There shouldn’t happen to be anyone who has a good reference for the IL language?