kivikakk.ee

no politics!! unless, of course, we are discussing tolerating nazis or ragging on CoCs :)

In what I’m sure is not a sign of the times, just a week later we have this beauty. See if you can spot where a leap was made that surprised me!

Submission title: We will not accept changes created with the aid of “AI”.

Top-level comment:

[…] if the code is right, I don’t care that it was written by an AI, a Nazi, or even a dog.

This in the same discussion where the “Nazi bar” idea has already been brought up twice.

In what I can only accept as the universe consistently striving to deliver us fresh humour, the same comment concludes:

If it’s wrong, it doesn’t get a pass just because it was written by a staunch feminist.

Phew! Up until that sentence, I was starting to really get worried they might accept bad patches from feminists based on their activist credentials alone! Crisis averted—now we can get back to reviewing @1000YearReich’s behavioural profiling PR in peace.

resources for improving as a software engineer

Been too sick to do anything but play Stardew Valley lately, but hey, I’ve never gotten past day 20 before, and now I’m having a lovely time :)

A little while back, a lovely person reached out and asked for some advice. After some interesting discussion, they asked if I had any good resources that helped me improve as an engineer. I feel like my reply might be more helpful generally; here it is.


I’ve been thinking on your question for a while; it’s hard to pick out single things, but here’s a start after going through my bookmark archive:

  • https://www.infoq.com/presentations/Simple-Made-Easy/ — I very rarely watch talks, I have bad hearing/audio processing and find them really inefficient besides. (Same goes for podcasts; I’d rather read something and be able to scan through it or search it; I’m not spending an hour listening to you and some other guy with impossible accents mumble interrupted only by ads for Audible.) But this, this one I have watched, quite a few times, and recommended it a lot back when it was new (2011). You don’t need to know or care about Clojure to get the most out of this.
  • https://prog21.dadgum.com/ — this guy knows what’s good. Consider starting with any interesting looking titles from the lists on the homepage, and then scan the archive.
  • https://blog.regehr.org/archives/942 — random good post. At the end he says: “Finally, we probably need to do more code reading in class.” I would emphasise this. Read much more. Get very, very comfortable diving into new codebases to add tiny features, fix bugs, or to diagnose/understand why something happened the way it did. (Nix is an actual super-power when it comes to just diving into new environments, and is very worth the effort to grok, for so many reasons, despite its steep learning curve. Here is a post on Just Diving In to something, when I decided to replace the Markdown library at the core of a Fediverse/ActivityPub implementation with my own. Here is another one where we add our very own bespoke feature to git, in a way where we get to keep it forever, even with upgrades, new machines, everything.)
  • https://ferd.ca/lessons-learned-while-working-on-large-scale-server-software.html — another random good post, and Ferd writes a lot of other good stuff too; scan the archive.
  • https://www.youtube.com/watch?v=F785myaMdR8 — another talk, this one from last year instead of last decade. Dude has a big personality, and some of the time you might wonder why he loves the word “modality” so damn much, but he gets at something important — something increasingly lost as folks continue to drink the “we’ll all be prompt engineers in a few years” Koolaid while trying very hard to ignore the material reality of “but what’s going to be funding this” and the more abstract reality of “perhaps abdicating thousands of tiny decisions to an RNG is not, strictly speaking, the best way to improve our ability to construct systems we understand and can maintain”.
  • https://ratfactor.com/papers/naur1 — further to that last point, this is a (commentary on a) classic text by Peter Naur, who diverged from the (then more dominant) idea that programming was a kind of mathematics. The text is linked at that first dot-point. I’d suggest reading the commentary/summary first, and then the original if your interest is sufficiently piqued.

Outside learning resources like this, I’d suggest:

  • Get really comfortable with using your VCS. Learn to do black magic with git, and learn to do it fast. This will probably take a lot of aliases — scroll down to the “Git aliases” section on this page to see what I mean. You’ll write bad quality commit messages like “update project files” if you have to type out “git add blah” and “git commit” and “git push” every time you commit, and you’ll make larger, less useful, less self-contained commits too. If staging just what you want and committing and pushing it as as simple as “a”, “c”, “w”, you’ll do it more often. If amending a commit is as easy as “cx”, and reordering commits is as easy as “ri HEAD~10”, you’ll do it more. This is a basic observation from linguistics: more commonly used words/signs evolve to become shorter/simpler. Apply this to your own environment: see what you use most (check your shell history! pipe it into sort/uniq and find out what you do most!), create aliases for those, and retrain yourself to use them. (e.g. with git, create an alias for git itself that just instead echos “bad! use the new aliases!”, and after a dozen or so tries you’ll get it. You can apply this technique in lots of places where your muscle memory would otherwise prevent you from adopting an improved/different workflow; see also unbinding keys in your editor.)
    • I’d suggest learning jujutsu, too; per that README, it’s what I use 100% of the time now, as an interface to git repositories! This post contrasts them a bit, and this one in a specific case.
  • Per above, Nix is a wonderful way to accumulate learnings and improvements in a way that is version-controlled and reproducible.

I hope these links and ideas prove enlightening, or at least interesting!

how to leave lobste.rs for good in 3 easy steps

This weekend’s absolute fucking shit-show could’ve gone better1, and for the second time2 — after some well-intentioned efforts by Lotte in that thread that ultimately left her feeling even more burnt out and apathetic about humanity — decided I was done for good.

Here’s how you do it:

  1. Change your email address to something no-one can ever access — the .example TLD is a wonderful provision for this purpose. You do not need to verify your email address to change it, which is why this works.
  2. Delete your account normally.
  3. Profit!

You can only reactivate your account by resetting its password, which involves you receiving an email that can no longer be received.

11.5 years and 1500 comments later — good. bye.


best hits:

  1. thanks for re-opening that can of worms, mtlynch! love that for queer folks!

  2. this was the last straw (the second!) after SO MANY conversations that left me feeling utterly dead. allies, please understand — it’s not enough to upvote. there are way more of them, and they are a lot less exhausted.

nóssa: now with a prettier homepage!

Now that I can bump the software in my cluster with just a push, I finally decided to make the homepage (and userpages) of nóssa much, much prettier! Have a look sometime, if you like :) → https://nossa.ee

SLITHER

https://blackdresses.bandcamp.com/track/slither

1. we slithered out of your reach. all of us had someone like you to run from. our wings were clipped and our limbs were damaged but we crawled and picked our way out as far as we could.

2. we lived by the water. took care of something that made its home deep below the surface. the mother of the depths returned our kindness by giving us her flesh to sustain us. she was sick and diseased like we all were, but she kept us alive.

3. things settled and some of our feathers started to grow back, a different color than before. our bones began to heal - at new angles, but almost as strong as they used to be. we held each other close at night and whispered that things were different now. things were safe. we had to be reminded nightly, or else we’d forget.

4. you found us. you came while we were sleeping. you talked with warm familiarity and i threw up at your feet. you asked me what was wrong - sincere - and i couldn’t answer. i wish it was easier to hate you. i wish you were a bad person, but instead i just think that i am for wanting that.

5. we drove you away, haltingly. i told you i needed more time as if i hadn’t already decided what you were to me. i wish you knew what you did, but i don’t want to tell you. it would be easier if you were something i had nightmares about instead of ugly, complicated dreams. i want to flatten you into a villain but i think that would only turn me into one. please leave me alone. i’m happy now. i’m happy here. please don’t look for me. i promise i’m okay. please go.

listen to me. i’m going to speak plainly
i’m not going to say your name. i’m afraid
because of what i know you won’t mention
all those years of horrible tension
i don’t think youre a monster, hardly
i just think that you fucked up, badly
i can never tell you what you did to me
so i have to settle for this, i hope truly
that you never hear these words that i’m speaking
this is just for me as i’m healing.
it’s not my fault that my soul is a war
that i don’t want to say i love you on the phone anymore
i blame you. but i don’t want to hate you
…but maybe that’s because i’m afraid to
there is a memory of when i was young and i admired you so much.

we got away
but everything reminds us

i admired you so much

6. what comes next? is there anything after? where will we go to now? who will we become?

i wonder.

i’ve never wondered before.



everything always changes but its always the same
everything always changes it flickers like flames
everything always changes dice roll to a different face
everything always changes new skin new name
everything always changes but its different sides of one thing
everything always changes in a circle in a ring