HNHacker News
TopNewBestAskShowJobs

abathur

2,099 karma · joined November 1, 2014

Fixing Shell with Nix + https://github.com/abathur/resholve. Blogging @ t-ravis.com
submissionscomments
abathur··on Why are Texas interchanges so tall?
Ha.

My partner (who moved to Houston around middle school age) and her mom both call it the feeder, but I always assumed it was a midwest thing since mom's side of the family is all from Michigan.

That said, the old Harvard Dialect survey does suggest this is fairly widespread (though definitely more common in the Houston area): http://dialect.redlog.net/staticmaps/q_99.html

abathur··on Okay, I Like WezTerm
I'm pretty happy with it.

I try alts when they come up since I might like to use the same thing on macOS and Linux, but I've yet to try one that both has the right features and doesn't feel sluggish.

abathur··on What happens in a mind that can't 'see' mental images
I will lightly defend a lot of this description in American Psycho.

I agree that I generally gloss over that sort of description, but in the case of this one book I felt like the obsessively-materialist descriptions in it did a great job of helping communicate the vacuuous frivolity of the culture the novel's picking at, if that makes sense?

That is to say, when I feel like the descriptions are ~fungible I'm probably right there with you in skipping over them, but they were one of my favorite parts of American Psycho.

abathur··on What happens in a mind that can't 'see' mental images
Not op, but I wouldn't call it boring.

It's a lot like thinking, I guess. (Much of my thinking is already roughly abstract-lingual, so reading feels of-a-piece. I would characterize myself as having a running interior narrative, but this isn't a voice I "hear" as I gather it is for some.)

I generally prefer reading to listening since it's easier to back up and re-read if my attention has wandered.

I can have trouble staying ~oriented when there are lots of characters because I have no strong sense of what they look or sound like. (TBH I think this is an asset when it comes to adaptations. I may notice plot divergences, but I'm rarely bothered by the specifics of a place or character.)

A fair fraction of the enjoyment I get out of reading is about wordplay and language aesthetics, and much of the rest is about ~ideas and personalities.

Reading tends to drive a lot of synthesis/connection between divergent concepts for me. Some of my most intellectually-fertile (generative) time centers around reading.

I generally can't count on any kind of eidetic memory (unlike those I know who can, say, picture a page or replay a conversation to extract information from it). Instead, I generally lean more on deep conceptual synthesis. I am much more likely to retain some picky detail when it's integrated into my broader understanding than if it's effectively an arbitrary fact. I am the person who would rather take an essay exam centered on understanding than a picky multiple choice that hinges on arbitrary details like dates.

Likewise, I don't really vibe with arch/infra/service maps as much as narrative documentation. (This is not to say that they aren't sometimes helpful for understanding, but I do find them hard to ~grasp in isolation and not the first resource I reach for.)

abathur··on Scrapscript: A functional, content-addressable programming language
You can inline the script within nix and get them all in one file (but that implies buy-in on nix, or maintaining 2 copies of the script).

At the risk of overstepping (it sounds like you might be a little interested) here are a few links in to some basics just-in-case.

For context, I extracted my bashrc into its own repo, and it in turn sources bash libraries for my shell history and git status plugins. It's also leaning on some libraries that are pulled in through those two. (To be clear, this is just a general example of the flake pattern with a separate lockfile. I can find or synthesize something with the inline script pattern if you ask.)

- Source statements: https://github.com/abathur/bashrc.nix/blob/e7c437578e2a623f4...

- Nix expression responsible for resolving and ~linking these two dependencies in to the final script: https://github.com/abathur/bashrc.nix/blob/e7c437578e2a623f4...

- Flake inputs for the two dependencies. Note that these can be specified as just the repo or a branch and updated by updating the lock through Nix, or they can be ~pinned to a specific rev: https://github.com/abathur/bashrc.nix/blob/e7c437578e2a623f4...

- A gist with examples of the entire chain of scripts that get resolved together here: https://gist.github.com/abathur/09f06f1f34b003376017d7a5c031...

These all get handled separately, so they can technically have divergent implementations of the same external command (for example, one library could depend on libressl and one could depend on openssl--and each resolved library would independently point to the correct one.

abathur··on Bashsimplecurses: Simple curses library made in bash to draw terminal interfaces
A good example for lulz is https://github.com/zevweiss/booze, a FUSE binding for bash.

Aside: I've wondered aloud if we could figure out how to systemically compile coreutils into true bash builtins for performance benefits in nix builds, but someone did rightly point out that builtins can't be completely fungible with a separate process in all cases, especially where stuff like pipelines are involved. I don't recall the exact details and couldn't readily find the conversation but IIRC it had to do with signal handling.

Edit: Found the conversation: https://gist.github.com/abathur/74e7a63b25b7bbd4a6fa9ad7e728...

abathur··on Bashsimplecurses: Simple curses library made in bash to draw terminal interfaces
Presumably:

    #!/usr/bin/env bash
abathur··on Scrapscript: A functional, content-addressable programming language
FWIW we can do this* with bash in the nix ecosystem (not that this knowledge should deter you from checking out scrapscript).

* you said locking the hash in the script, and in the nix approach these are generally locked in either a lockfile or in the nix expression.

Can elaborate if you're curious.

abathur··on Towards Idempotent Rebuilds?
Just writing to agree, since you are getting pushback.

@Foxboron wrote a compelling if clickbaity post a few months back to poke at the bit-for-bit interpretation of what reproducibility means in nixland: https://linderud.dev/blog/nixos-is-not-reproducible/

It didn't get much traction here (https://news.ycombinator.com/from?site=linderud.dev) but there was more lively discussion on lobsters: https://lobste.rs/s/jpoy4q/nixos_is_not_reproducible

(That said, the nix ecosystem does have levers and practices for working to weed out common sources of build reproducibility problems and the community is reasonably interested/active here. But there isn't any magic in it that fixes all bit-for-bit issues. People still have to catch, tag, and fix them.)

abathur··on The economics of writing technical books
Thanks :)

Generally curious about new authoring/markup tools and systems, so I'll keep an eye out for the post.

(The quoted blog post is part of an effort to explain some work I've been doing to single-source documentation and output multiple formats while taking advantage of the idioms/affordances of each format. I spent quite a bit of time reviewing and trying markup systems before deciding what I wanted didn't quite exist. Typst wasn't released when I did all of that; I'm aware of it but I haven't read enough to pull it out of my blind spot.)

abathur··on The economics of writing technical books
Thanks for the chuckle :)

Good to see you here--I noticed your manuscript on GH (probably sometime last year?) during a ~vanity search because it quotes one of my blog posts. (https://hypermedia.systems/tricks-of-the-htmx-masters/#html-...)

I went to check on it and noticed that the repo I have starred is archived and that there's a new one recently put up. I don't see an explanation--can you reflect on or link to anything about the update? (Is this a content update, just ~refactoring how the book is built, etc.?)

abathur··on Oulipo's use of the Tohoku paper (2014)
I also enjoyed Crystallography a lot: https://en.wikipedia.org/wiki/Crystallography_(book)
abathur··on Houston, We Have a Solution (2023)
On cue, I'm currently getting a late patio day on May 31st (and it's even chilly enough for goosebumps). A line of storms is pushing through this morning, so it was 67 out when I woke up at 7 and is still 68 now (almost 10:40).
abathur··on Imperceptible sensors can be printed directly on human skin
They are talking about printing something on a variety of substrates including skin.

We constantly shed skin. The powers-that-be in whatever dystopian mark-of-the-beast fantasy you're imagining would have to regularly reapply these sensors, so they wouldn't remain unknown for long.

Any power apparatus capable of regularly and forcibly applying these sensors is certainly capable of just forcibly tattooing (or microchipping) you.

abathur··on Are commercial "third places" a dying breed?
Not shocked, just wondered :)

This might be a difference between people who have come to think of their time/productivity as money or at least a resource to cultivate.

Many years ago it was very hard for me to justify a new laptop for purely personal use. One day I was preparing for a non-leisure trip that I'd otherwise have to miss out on paid work for. Even though the trip was short, it was easy to justify the purchase when the shift in opportunity cost covered the laptop.

A few other thoughts, in case you haven't tried them:

- Assuming these are mostly, say, students under the age of 25 or so--make it easy for parents to gift these memberships (whether that's a subscription or by paying for a gift card) and focus on marketing to them instead.

- See if an N-visit pass/bundle/card works. Might create a little more commitment than pure drop-in, but also avoid aversion to paying for something you might not end up using.

- On top of pure drop-in or a pass/bundle approach, leave some clear benefits to the unlimited pass (placement/scheduling preference, bring-a-friend, locker to store stuff in, etc.)

- If they won't be too disruptive, market something like a bring-a-friend subscription to more stable school-adjacent users like tutors, and then offer the students and tutors both a small referral discount if the students pick up their own pass.

abathur··on Are commercial "third places" a dying breed?
I'd be interested in seeing if giving them one or a few days free shifted their response much.

I've always liked working in a third space more than home, but there are also a lot of factors that go in to the places I pick and those evolve over time.

In my current life stage I generally spend at least $10/d in one, though it used to be a lot less when I was in college. In any case, I'd still balk at allocating $300 or even $100 for a space I hadn't hung out in for long enough to figure out how I feel about all of the various factors that matter.

abathur··on 2023 was the hottest summer in two thousand years
They mentioned "NOAA's USHCN reference network of well sited thermometers"

(I opened a search to go figure out what they mean, but work interceded.)

abathur··on Houston, We Have a Solution (2023)
> you still have to deal with Houston summers (April through October) when being outdoors for any length of time is miserable.

This is a minor exaggeration. Pollen aside, April is generally fairly pleasant. May is more dicey, but it isn't necessarily miserable. (I've managed to work from a coffee shop patio at least a couple days this month without having to call it quits in the early afternoon.) We can even have pleasant if humid days as late as early June IME.

But yes, summer can be rough. I generally say summer is 6 months when I'm speaking loosely to set context for someone who hasn't experienced it.

abathur··on Development Notes from xkcd's "Machine"
I stand corrected! :)

In my defense, I did personally find it quite suspenseful to wait for my vague sense that chaos would eventually reward me to cash out.

Now that I reflect, I might have also called it "WU WEI". I know I also used that for (at least) one of my zero-element submissions.

Also--apologies if the "ONLY FANS" submissions wore out their welcome. I'm sure I wasn't the only one, but I was probably a fair fraction :)

abathur··on Development Notes from xkcd's "Machine"
Some tiles are ~solvable without building anything.

Sometimes this is dead-simple (the balls just drop from the top on through).

Sometimes, they'll solve if you're patient enough (the balls pile up, shift around, and sooner or later enough of them exit within the time window necessary to trigger the submit UI).

Edit: to finish connecting the dots just in case--I waited quite a while for one, probably at least 10 minutes--to do this. When the clearance rate for a machine is poor, it will usually drop back under the submit threshold very quickly. In these cases, you have to watch very carefully to be prepared to submit in the brief window that the submit UI is enabled. The OP suggests that during moderation they generally waited 30 seconds for a submitted machine to do the thing before they moved on.

abathur··on Show HN: Tracexec – TUI for tracing execve and pre-exec behavior
We have some common cause / need in the Nix/nixpkgs ecosystem, where finding missing package dependencies (whether they're bare invocations or absolute paths) is a bit of an ongoing problem.

The golden path stuff isn't too hard to find during packaging, but there's a long tail of stuff that only shows up when you hold something exactly right.

We can (with some effort) handle a decent fraction of posix/bash shell statically with https://github.com/abathur/resholve. I think a similar approach could generalize to most interpreted languages (but I haven't gotten around to it myself and I think it's broadly rarer beyond Shell).

I have taken one or two steps into a lower-fidelity approach (https://github.com/abathur/binlore) that uses YARA rules to scan for signs of ~exec in both binary formats and interpreted languages. For now this is mostly just a top-N formats thing, but there's no reason we can't keep going. One of the big advantages is that it's fairly cross-platform, even if accuracy is suboptimal.

The scanning approach isn't just amazing for resholve's specific needs. I'm stepping down this path to try to identify executables that likely exec their command-line arguments--because this is a sign that resholve need to know how to check invocations of that command for other executables. But it's a good bit better at flagging things that have _any_ exec behavior, and that's a decent-enough first step for letting focus on a smaller set.

Once we find these, though, we're generally left with human analysis of the help, manpage, and/or source to figure out what exec the scanner is hitting on and whether it's part of the CLI.

I've been ~snoozing on this front for a while, but I feel like a decent fraction of the components for building something like an 80% toolkit exist in at least a primitive form. It could probably benefit from some more static source analysis bits. I also vaguely intend to look into whether LLMs can do a reasonably-good job of making it easier to answer these questions from the help/man/source. Unless something out in that space can be reliably automated, it also needs some way to ~pin assertions about the arguments to the relevant code in a way that they'll break if that specific corner of the codebase changes. (I've wondered if semgrep expressions could handle this.)

There are also some other bits around that might fit in, though cross-platform is a common-ish problem. We've looked a little at using a FUSE, but that is hard to operationalize on macOS. I also poked at 3 or so less-interactive dynamic approaches a few years back in https://github.com/abathur/commandeer/ and I'm sure a few more have cut their teeth since then. I also wrote a ~shelved-for-now WIP (https://github.com/abathur/faffer) for using some cursed shell metaprogramming to do something like fuzz/tree-shake a shell script for loose dependencies. That isn't directly viable for many languages, but its focus on ~overloading flow-control structures to make it easier for force branch coverage does seem like something that might be feasible with rewriting tools.

abathur··on Development Notes from xkcd's "Machine"
I'm just the tiniest bit disappointed to have confirmation that mods probably didn't wait around for one of my zero-element machine submissions (I imagine I called it "patience is a virtue", given how long I had to sit around waiting to click submit on it) to eventually pay off :)
abathur··on Wild orangutan seen healing his wound with a plant
I like this one: https://chocolatebar.com/products/extreme-dark-88-dark-choco...

I'm a little bitter-sensitive, and it's the most-pleasant 88%+ I've had so far.

Still inevitably some carbs in cocoa, so you can do some carb-budget damage if you eat more than a serving--but I feel like it's a good treat for its weight.

They call a serving size 1/3 of the bar, with 11g carbs (4g fiber, 3g sugar). I think the bar is 3x5 squares, and I generally just have one at a time. Not sure I've had more than 3 squares in a day.

I think that would be around 7g total carbs, a bit under 2g sugar, and about 2.4g fiber (i.e. around 4.6g net carbs.)

(edit: i've seen them at cvs and target, at least--though my nearest cvs no longer carries the brand)

abathur··on Wild orangutan seen healing his wound with a plant
I had to ponder this for a minute :)

I picked up dark chocolate as a snack in early 2020, which I chose very specifically to avoid carbs. I also use cocoa powder to make low-carb ice cream for the same reason.

I guess I've used it this way for long enough now that I've broken my default association between chocolate and sugar.

abathur··on The business of takehome assessments
I've yet to go through one of these, but I've at least imagined it would be a decent format.

(For me, at least. I don't parallel-task very well in the first place, and being under the magnifying glass makes it significantly worse. I have trouble, say, even making sense of the words someone else says when I'm already focused on coding/reading/writing something. If the interviewer interjects a thought or question about what I'm doing, I often have to stop, struggle to ~park my train of thought, and then ask them to repeat what they said. If I make the mistake of asking them to repeat before the train's parked, I may have to ask them to repeat it again.)

I think I'd also look pretty favorably on an interviewing process that gives a few format choices and lets me choose what I'm most comfortable with.

abathur··on Cindy Lee might be the future of music
They mean this: https://youtu.be/_LJi5na897Y
abathur··on Old part of International Space Station lands on family home
Falls/fell would presumably still be valid and likely satisfiy the concern here.
abathur··on Megalodon: Efficient LLM Pretraining and Inference with Unlimited Context Length
Seems like a reasonable reading.

It's only got 3 commits and 2 are from 18 hours ago--one of which fiddled the repo-made-public date and added the arxiv link--so perhaps there's a private working repo and they decided to make a ~clean public repo at the last minute (i.e., maybe the authors are self-conscious about the commit log).

abathur··on Megalodon: Efficient LLM Pretraining and Inference with Unlimited Context Length
Looks like probably https://github.com/dumpmemory/megalodon
abathur··on Trying to Understand Copilot's Type Spaghetti
My favorite kind of manual to actually read is sprinkled with hijinks-enabling arcana, and the Bash manual doesn't disappoint on this front.
← PreviousPage 3 of 31Next →