1. 10

Feel free to tell what you plan on doing this weekend and even ask for help or feedback.

Please keep in mind it’s more than OK to do nothing at all too!

1. 4

I’m gonna be setting up my new keeb (second moonlander) and probably am gonna tackle some more of the boxes. I may do some writing.

I’ve been starting to keep a paper journal. Let’s see what that turns into.

EDIT: lol my arm hurts

1. 2

I’ve picked up bullet journaling this week, and this weekend will be my first “planning” session

1. 1

Good luck with the BuJo! It’s been a lifesaver for me and my executive dysfunction.

2. 4

Working on converting Lark from Python to Javascript, by writing my own transpiler.

Just as an anecdote, it’s able to automatically convert this:

``````x = [(x,y)
for x in range(10)
for y in range(x)
if x+y==5
]
``````

To this:

``````let x = [].concat(
...range(10).map((x) =>
range(x)
.filter((y) => x + y == 5)
.map((y) => [x, y])
)
);
``````
1. 3

Do you walk the ast? Which language is the transpiler implemented in? Looks like a really fun project! If you’re willing to bother with a basic test suite, a license I’d be interested in helping. Just for fun. Totally understand if you don’t :-)

1. 2

Hi! I’m writing it in Python, using Lark to parse the Python code in a way that preserves the comments and keeps track of line ranges. I walk the resulting ast, once to make structural transformations, and another to convert the code. I’ll probably add some analysis layer soon, because the code needs to change according to the types.

I put it here on github: https://github.com/erezsh/py2js

But because I was writing it to myself, the code is a little hacky. But if needed, I’m willing to refactor it a little to make it easier to work with (for example, to use AST classes instead of Tree instances).

Let me know if you’re still interested in helping :)

1. 1

Are you not using the python ast module? Do you emit a JS ast or directly source code?

1. 3

I started using the ast module, but decided against it because it throws away the comments.

The code currently emits JS source code directly.

2. 3
• Sailing on Saturday, daughter is at youth squad and I’ll get the supernova out. Intention is to try my two sails and see which I prefer. Weather forecast is currently dry, so lets hope that holds.
• Driving round Oulton Park race track on Sunday. Not a fully bred track day, but a “drive round in your road car at road legal speeds” experience which should be interesting if nothing else. I’ve only ever been round the drift circuit at Oulton Park and spectated. Going to be interesting being on actual circuit. Vague intention of doing a track day there at some point in the future too. No doubt this will fuel that idea.
• Shearing the lawn. I lose my feet walking across it now.
• Setting up a new server. Having gotten fed up with planning on how I want to recommission the old server, I picked up another HP Microserver G8 to setup instead. First choice: Debian, or NixOS. And then figure out how to install either on a ZFS root. Both look possible, think I’m going to start with NixOS as I haven’t yet had the pleasure.
1. 3

Refactoring my life. We’re not changing (metaphorical) architecture but rather performing the personal equivalent of linting my habits, DRYing up my environment, and extracting methods for my routines. Some specifics:

• Doubling down on the slow carb diet, including optimizations for cheat day
• Returning to the 5-Minute Journal after too long of a hiatus
• Ramping up my exercise
• Targeted cold techniques for weight loss and sleep quality.

Wish me luck.

1. 1

Good luck!

2. 3

Hopefully work more on Garnet, my playground for a “what if Rust was smol” programming language. After a few weeks of reading papers and noodling around with ideas, it seems like the simplest approach for some kind of more sophisticated type system is something like OCaml’s modules, probably attempting to incorporate refinements from 1ML. If I’m understanding it correctly, you can define something like Rust’s traits or Haskell’s typeclasses simply by having a `type` type, treating types the same as any other value, and letting normal structs contain values that are types. This is appealing ’cause it means that structs, code modules and traits are all the same thing, and a type implements a trait simply by creating a const struct containing the methods it wants. Then you say “things that manipulate `type` types must be able to be evaluated at compile time” a la Rust `const` or C++ `constexpr` and you can compile everything down to bare code with no RTTI, and if you add a few more extra rules you can do type inference as well. So, I want to try to implement this and see how it works out in practice.

From what I understand, I may have just snuck up on Zig’s type system from a new angle. Or maybe it’s the exact same angle that the creators of Zig used? Either way It’s appealing because it takes a bunch of different parts of the language and folds them together into a single concept, a struct. On the other hand, my experience from OCaml is that the ergonomics kinda sucks ass. We will see.

Will probably also play too much Subnautica: Below Zero. It’s a good game.

1. 2

Another company has approached me and made an offer that more-or-less matches what I’m making now, but with the promise of less stress at work and a very generous stock grant. Of course given that, for the first time in a while things are calming down at my current job and are really looking up business-wise so…I gotta decide if leaving a very established and more-or-less indispensable leadership position to go to a more individual contributor role at a company where I’ve got no established presence is worth it.

(When it rains it pours; I’ve been approached a few times over the past couple of months. It’s a lovely problem to have, and I’m very blessed, don’t get me wrong. Part of my problem is that I am a very sentimental person so having been here for 6+ years makes it very hard for me to consider moving, regardless of how stressed I am…I’m also a worrier, so some significant portion of my stress is self-imposed.)

1. 2

I know it’s a super obvious question, but have you talked to the people around you to see if there’s anything that can be done about the stress in your current place, if you feel attachment to it? I’m projecting that pattern where people quit because \$x and then the people around them say ‘well we didn’t know you felt \$x, or didn’t understand it was so severe and actually there are a bunch of mitigations to \$x and we value you so have time to try to figure it out’. But of course by that point it’s super uncomfortable because the quitting process has begun and now if you leave it’s weird and if you stay and try to figure it out it’s weird and you’ve got one foot out the door so people might understandably not commit as much to changing things if they feel like you’re half gone anyway. Doesn’t matter the source of the stress, self imposed or otherwise, the process to work with other people to understand and mitigate it is similar, and people who you’ve been around for some number of years know you a bit and can make much greater contributions to supporting you than new people. I always feel like it’s a shame not to try and be mentally half way out the door when it’s likely if the actual problem is not understood and addressed for what it is, it’s just going to crop up in another place anyway.

2. 2

Mowing the lawn, expanding and fencing off a couple of garden beds, getting the rest of my seeds/starts in the ground, and maybe doing some maintenance on the irrigation ditch out front.

1. 1

I’m working on a one or two weekend project using scipy’s optimize within Blender to do lighting/material matching to reference images.

1. 1

This weekend, my SO and I taking are it real easy. We’re taking walks and bird watching and I’m leasurely learning/practicing Russian/Русский.

1. 1

Moving servers from a shared rack to my own rack at the datacenter, which means moving the core router with them. I’ll take the downtime to make some network changes to improve redundancy and also add a new switch. One of the fibers that connects the router to an upstream provider isn’t long enough to reach the new rack, so I need to figure that out too. Then mowing the lawn at home, cleaning around the yard, taking the doggo out for walks and hopefully don’t get called in to work since I am on duty through Monday.

1. 1
• Keep tweaking my brand new Nextcloud instance. It works, but the photo management side needs further research. There’s also the job of getting my family on it.

• Throw a good-bye party; after a decade in the Chicago tech industry I’m moving to Scotland for music grad school.

1. 1

Chugging towards the light at the end of the tunnel!

For a few months I’ve been picking at how to enable resholve (resholve replaces bare command invocations in shell scripts with absolute paths) to also identify and resolve commands that are in the arguments to command-executing commands (builtins like builtin/command/exec, externals like sudo, find, xargs).

I’ve composed work mentioned in some previous posts (https://lobste.rs/s/rgyjgo/what_are_you_doing_this_weekend#c_n4absd, https://lobste.rs/s/waj0ky/what_are_you_doing_this_weekend#c_0dncay) into a tentative tool called binlore that addresses a slice of the problem: identifying whether an executable can/cannot/might sub-exec.

The last few weeks I’ve been implementing resholve’s side of this as part of a broader refactor, and enough of that is finally in place that I can turn my attention back to how well binlore does its job.

I don’t have any previous binary analysis experience, so I’m flying by the seat of my pants here. binlore is currently better at determining can/cannot on macOS (enabled by macOS restrictions around libsystem) than on linux. resholve will make the user triage invocations of can/might executables, so this gap means it’s possible to package something on macOS that will need additional triage directives to work on Linux.

My concrete next-step is hammering out a CI process that makes it easy to compare the macOS/linux verdicts.

1. 1

Wrote down some planning for this weekend, so hopefully all of them. Most notable things:

• order a table, after 5 months of living here it’s about time.
• finalize the mailserver setup and testing. Maybe see if I can get some family to use it
• writing a report
• hopefully some hobby programming and cycling as well. I’ve been slacking and want to get to 100km this week on the bicycle!