1. 13

What are you doing this week? Feel free to share!

Keep in mind it’s OK to do nothing at all, too.

  1. 15

    A lot of work stuff - but most excitingly I have used the rest of my vacation days to give me 4 day weeks until the end of the year.

    1. 3

      Hey, I did this, too! I’ve tried various things through the years:

      • All of December off - worked OK
      • Half-days November–December - ended up working 5-6 hrs/day instead of 4. Still had to go to work and come back, so with that overhead, I didn’t really feel like I was using the PTO meaningfully. I’ll not do that again.
      • Off Thanksgiving week (last ~full week in the month for non-US folks) and the following week, one week on, then two weeks off - That week on was lost. I couldn’t get anything done other than some small stuff. That was OK at the time and I might do it again.
      • Fridays off October–December - trying it this year and really liking it so far. I end up “working” on Friday doing stuff for Code & Supply, the professional community and coworking space I run, but I’ve also done some restful stuff, too.
    2. 8

      At this point, I’ve largely given up on xmake for the CHERI microcontroller RTOS, so I’m hoping to have time to learn Build2 and see if it’s a better option.

      1. 2

        What was the problem?

        1. 4

          A lot of things. From the top of my head:

          • Generally, things just don’t work that should (sometimes they work on one machine, sometimes they work in reduced test cases but not in our build system). For example:
            • xmake detects supported compiler flags, but it doesn’t seem to query our compiler, so it detects that the system clang or gcc doesn’t support our custom flags and drops them.
            • There’s a policy to disable flag detection. It doesn’t work in the top of the main xmake.lua or when used from the one included in the second line from that file. There is no useful debugging output in the flag detection logic to tell me why not.
            • Dependency tracking doesn’t seem to work reliably. Some things are rebuilt every time, even if nothing changed, some things are not rebuilt. We end up with a flow that is rm -rf .xmake build && xmake config {lots of flags} && xmake for normal rebuilds.
          • There’s a lot of magic building high-level abstractions rather than useful building blocks. For example, the config file stuff is not intended to be used from script scope and so I have to use undocumented APIs (which the author of the code tells me not to use) to be able to use it from a rule. The same is true for the release / debug / whatever mode logic.
          • We can’t dynamically create targets in the current release. There’s something in dev to do it, but the order in which the various hooks are evaluated is not well defined. Not defining ordering for things in a system that needs deterministic output is a big worry.
          • A lot of things are not documented, or have misleading documentation. Again, the most worrying thing is that there’s no documentation on what the abstract model is. Build2 is lacking in detailed docs, but has high-level design things that let me understand what the authors are thinking (I don’t agree with all of it, but at least I can then disagree from an informed position).
          • There are a lot of private (and unstable) APIs that are necessary for anything non-standard. A lot of the custom platforms and targets in-tree use these unsupported APIs. A good build system should be layering things so that all of the custom rules and targets for SDKs that are shipped in-tree are implementable on top of stable APIs. It looks as if build2 is a lot better in this regard.
          • xmake really likes you to drive the build from the source directory and makes it hard to put the output anywhere else. When I drive it on a clean build from a different directory, I get failures from .d files being missing that go away if I build from the source directory. Making it work with a read-only source tree requires a lot of hoop jumping, but is basic build hygiene for reproduceable builds.
          • A minor point, but there are no mechanism for extending the imperative language, so all of our additions require people to write on_load methods that then add properties, rather than allowing us to expose add_foo interfaces in the declarative mode.
          • Almost nothing is type checked, so if you provide completely the wrong type to things then Lua coerces it to something and then something else behaves unexpectedly later.

          I’ve spent several days making our builds work with xmake but at this point I have no confidence that they’ll work reliably on someone else’s system, or keep working with a different version of xmake on mine.

          All of this makes me sad because I really like the idea of a build toolchain written in Lua, with no dependencies, and a declarative dialect that builds structures to be interpreted by the imperative rules.

          1. 1

            I really like the idea of a build toolchain written in Lua,

            Have you tried Premake?

            1. 1

              I hadn’t heard of it before. It seems a bit sad that there isn’t a Ninja generator. I’d rather not require either an IDE or gmake. It does look as if it’s intended to be able to add new kinds of target (which we need to) but the docs don’t really make it clear what the core abstractions are. For example, we need to be able to back-propagate information from targets to their dependencies, which is possible with xmake and Build2, kind-of doable with CMake, but not possible with Make.

      2. 8

        Started a new job today! So I’ll be adjusting to the schedule change (working New York-ish hours from California – for once in my life, the end of daylight time worked in my favor) and hopefully remembering how to write OCaml.

        I’m probably not going to get anything done outside of work, but recently I’ve had an urge to write an introductory book about the Janet programming language. It’s a great little scripting language that I’ve used to make command-line tools, browser apps, and desktop games. So I might putter around with that for a while before I decide that it’s too much work.

        1. 1

          Working on a street starting with J?

          1. 2

            Hey now, there are dozens of shops using OCaml in the industry!

            but umm yeah in this particular case yeah

            1. 1

              I’ve now found that Facebook and Dropbox and Bloomberg use it. None of them have a primary address starting with the letter J

              1. 3


          2. 1

            Nice. I havent stumbled upon Janet programming language. Share your book

          3. 4

            I am working on a Rust rewrite of Pylint, mostly to kind of flex my muscles a bit. I got test infrastructure up so that I can run the Pylint functional test suite against my thing, which gives me a nice “number that goes down” strategy moving forward.

            1. 4

              Work: Hopefully finalize that scale testing framework that I’ve been working on for a while.


              • Start outlining all the documentation needed for ahkpm. I now have a decent website up, but it needs to be fleshed out a lot more.
              • Add an update command to ahkpm to fetch the latest version of a dependency allowed by what was specified in ahkpm.json.
              • Trying to avoid getting sucked into writing an extensible linter for AutoHotkey (a la ESLint), because I’d probably need to write a whole parser beforehand to support it. (Other parsers exist, but don’t meet the needs of a project like this.)

              I’ve used more classic comp-sci data structures and algorithms in the past couple of weeks working on a package manager than I have in my entire 16 year career prior. Which is nice as a change of pace, but I definitely don’t want to be doing it all the time. :)

              1. 3

                Looking forward to your next comment announcing ahk-language-server!

                1. 1

                  And 0.4.0 with ahkpm update has been published. ✅

                2. 4

                  Off work, so doing my best to forget all passwords before returning again on Monday.

                  The plan for the rest of the week is going to a variety of concerts, with Brimheim, Swedish House Mafia, Sea Girls, and Magic Sword, then out in the weekend with friends.

                  1. 4

                    Later this week I have some random calls from my “office hours” (https://sonnet.io/posts/hi). Essentially, anyone can call me to chat/pair program or rant.

                    Otherwise, I’m wrapping up the Practical Deep Learning course from fast.ai and trying to create a good home for a dog we adopted +1 week ago.

                    I regret not having done both things earlier. ML is less magical/daunting than I’ve been led to believe. Dogs are amazing.

                    1. 3

                      $school: Working on my grad research. I’m working in the Machine Learning Research Lab at NAU, researching surrogate functions for AUC maximization. I described a bit of this in my first cohost post. This week I need to build some experiments that show my algorithm is more efficient / accurate than the last paper for the particular surrogate I’m working on.

                      I’m also in a computer graphics course, and the final project is building a raytracer. We’ve got 3d objects rendering with very basic light, and next week we need to do actual tracing of the rays we’re casting.

                      $work: Our Minecraft modpack was used at Twitchcon in a Twitch Rivals event at the beginning of October, and we are continuing the event online throughout the month. There are a bunch of content creators (CaptainSparkles, AntVenom, etc) that are streaming the event live. The gamemode itself is a MOBA inside Minecraft, and the company I work for made the clientside component of it. I’m not working on any of the ingame features, so I only help on that when needed.

                      Over the last couple months, I’ve completely rewritten how we write our mods. Our toolchain can target all versions of Minecraft and we can now write pretty complex JVM bytecode injections that can retarget themselves at runtime to account for the differences between Minecraft versions (field or method signatures can change a lot). There are some bugs I need to iron out this week.

                      1. 3

                        $work - continuing with our build out of the Next Generation, and also starting to think about what our goals (North Star) should include for 2023. What problems irritate us? What problems does the business need answers for?

                        !$work - continuing to empty the spare room (née office) of stuff so it can be tidied up (we’re not decorating it) and the new sofa bed installed ahead of friends staying at the end of the month. Also working on my Scavenger Hunt app, given it’ll be needed in less than four weeks now. Probably upgrade my Mac to Ventura at some point too.

                        1. 3

                          $work: migrating numerous packages and services to use a modern, reasonably standard dependency manager rather than the homegrown stack of tools that’s been in place for $work’s history. rewarding work, because dependency management has been one of my bigger pain points at work since joining.


                          • more additions and tweaks to the homelab
                            • moving my docker compose configs to be under source control so i can set up some cicd integration
                            • move aforementioned configs from yaml to jsonnet
                            • investigate more containers to add to the stack (password manager+totp, rss aggregator)
                            • ask myself why i did those things since i want to move this to a nixos machine eventually anyway
                          • point my domain’s nameservers to luadns away from digitalocean’s dns (yay source controlled dns records!)
                          1. 3

                            Work: Back after a week of PTO and trying to catch up on a torrent of messages on Slack and Email

                            Private: The great mastodon migration continues. I keep finding more of the people I used to follow on twitter on mastodon. I like it so far. Feels like the early twitter

                            1. 3

                              I’m learning the various AWS Python APIs (boto3). I’ve deliberately put off dealing with anything revolving around AWS in my career, but it seems like today’s world loves vendor lock-in, so…

                              I’ve got various job interviews lined up for the week. I’m hoping to work towards having an offer on my desk by the 16th of this month so that I can start on or around the 21st.

                              Tomorrow (Tuesday), I’m going to serve as an election judge in my local gubernatorial elections. I suspect we’ll have a huge turnout.

                              1. 3

                                Work: I, an embedded developer, try to fight with AWS and Terraform to stand up the MQTT ingestion, API, backend, and frontend infrastructure for a new product.

                                Personal: I have no idea. Maybe work on my homelab some.

                                1. 3

                                  Home: the reolink python api has fallen out of sync with the newest reolink apis. So I’ll be synchronizing it while I set up some cameras.

                                  1. 2

                                    Been building a prototype of a mapping-based web app with PostGIS and PostgREST. They really are two of the best open-source tools I’ve used: smooth, elegant, mature, fast. Not to mention PostgreSQL, great performance and everything’s just there out of the box - even been experimenting with PL/Python, which makes some things a lot easier. Also using QGIS for PoCing views and UI ideas, which has improved enormously in terms of stability and performance since I last used it (about 5 years ago). Quite the winning combo, having fun with it.

                                    1. 2

                                      got onto mastodon late last week and now I’m toying with some ideas. For one, I’d love to be able to follow any RSS feed. That would make it super easy to make a bot in the fediverse.

                                      1. 2

                                        I’d love to be able to setup a bot that reads from an RSS feed. I’ve got some feeds I manage that I’d love to make easily available on the Fediverse but I don’t want to code up the integration myself right now.

                                      2. 2

                                        Cleanup. Things like fixing a small bug in my Emacs package, switching from scli to Signal Desktop on my FreeBSD daily driver, and creating accounts on our home “NAS” for the older kids so they can use SyncThing to store their documents.

                                        Oh, and getting my Yubikey setup running on FreeBSD, as well.

                                        1. 2

                                          Ubuntu Summit. :-D

                                          Any other crustaceans there, feel free to say hi!

                                          1. 2

                                            Going to visit some friends that moved to Zürich for the (extended) weekend. Excited to meet them there! We are planning some hikes as well as trying out some of the local cuisines! :)

                                            On the way there I hope to organise what computer and not-computer things I would like to learn by the end of the year. I’ve noticed I set very, erm, optimistic learning goals for way too extended periods of time, so I am trying to have some more short-term goals and see how it goes!

                                            1. 2

                                              Wrapping up a paper on Alloy, learning how to use ocamllex and menhir. After a few years toying with Haskell I’ve been finding ocaml a bit nicer. Plus work stuff.

                                              1. 2

                                                @home I’m reading Stanislaw Lem’s book “Eden”.

                                                And I’m writing a Lisp package to represent and manipulate mazes, with the main goal being to visualize them as OpenGL textures using Blend2D.

                                                And I’m researching upgrades I want to make to my bikes over the winter. I’m thinking about writing a Lisp library to model the bikes and help keep track of different builds.

                                                @work I’m mucking with some of the “data connector” code that’s used to associate attributes and external data with CAD models in our system. First I had to add hyperlinks to our XML format (to the schema, and then the parser), and now I’m adding the ability to use tables from the XML format as “Process Plans,” which we use to describe processes associated with the CAD model.

                                                The existing system reads plain text from Excel and CSV, but going forward we’ll allow more limited rich text formatting, like hyperlinks. This is turning out to be a bit of challenge to integrate, due to some assumptions we make about everything being simple strings.

                                                After that, there’s one more change in this ticket, related to how we publish to our back-end server, but I’m not expecting much trouble there.

                                                1. 2

                                                  Juggling between three different projects…

                                                  1. 2

                                                    Continue pecking away at my 100% canvas mobile app. And more Hyper Demon.

                                                    1. 2

                                                      Hyper Demon looks amazing. What’s the app?

                                                      1. 2

                                                        Unfortunately I can’t share what it is, but I can explain that one of its goals is to show purely canvas based UI design can be manageable and more powerful than what we’ve been convinced with HTML/React/etc. I think this is why Flutter is becoming more and more popular, because of its near canvas-like capabilities. You may or may not ever hear about it, but the secondary goal is that it’s a PWA so you can install it directly to your phone without the need of an App Store.

                                                        Yeah I was huuuuuge Devil Daggers fan, and I literally just logged into Steam after like 2 years and saw Hyper Demon was released by the dev (Sorath) in September, totally unexpectedly. I’m currently at ~70 as my score. I really want to achieve the ending which wasn’t a thing in Devil Daggers.

                                                    2. 2

                                                      Continuing my intentional break from writing about markup. Taking a little time to tend some back-burner shell profile projects (https://github.com/abathur/shellswain, https://github.com/abathur/shell-hag) that I’ve been neglecting.

                                                      Over the weekend I replaced socat in tests with expect/unbuffer. Might still be some output-order flakiness caused by expect to wring out, but otherwise working. Also managed to get some bats helper functions (for more humane/declarative assertions) that I’d been copying around between projects extracted into their own repo and de-duplicated in 3 of the 5 projects I’ve used them in.

                                                      This week I’ll focus on trying to fold one of the projects’ associated daemon into the Nix flake definition and validate it by getting it set up in my own system and/or setting up some kind of ~integration testing for it (hopefully both…).

                                                      1. 1

                                                        WORK: Just keeping weeding out between the needs of my new team and my insecurity about being newly a manager :) Trying to find a system to manage tasks on time and learn to not do everything by myself. Painfull mentally and will see if it suits me really in the future :shrug: Looking back at the GTD methodology to get a simple system to track tasks and todo and stuffs to keep in mind. I am really looking to a few to offload mental burden.

                                                        REAL LIFE: Trying to plan a few boardgames night, try to play some music for fun and get back on going on a regular schedule to the gym (stress just blocked me to do anything the last two months)

                                                        1. 1

                                                          Mostly process docs and customer-facing paperwork. Converting a bit of Python glue for getting Plex to display Now Playing info to Go. OpenSCAD code for a new case for a MacBook motherboard.