
the kebabpizza special, basically a dönerteller on a pizza, what’s not to love?
Famous rather than infamous. Aaaand now it’s time to have a nap…
the kebabpizza special, basically a dönerteller on a pizza, what’s not to love?
Famous rather than infamous. Aaaand now it’s time to have a nap…
it’s so quiet staying in ruralish Sweden that I hear the hum of the fridge/freezer more than anything, pretty great when you’re using to hearing traffic all the time 😀
I shared my swedish pizza lunch, and while I know people have strong feelings about pineapple on pizza, I’m genuinely surprised at how strong the reaction is to the creative use of ingredients we have for pizza. Swedish pizza is some of the best around and that’s a hill I’ll die on!
(one person asked “is this throw-up on pizza?” 😅)
drove a car for the first time in a looong while today (years), and after I backed out of the driveway something felt off: I wasn’t 100% sure where I was supposed to be on the road.
I just came to Sweden yesterday, after five days in Bengaluru, India, where I sat in the front passenger seat (i.e. the Swedish driver’s seat). I was positioning the car like I had been sitting in India (fast thinking?).
So I decided to go back to the driveway, because I’m not putting someone else at risk when I haven’t driven for a while and I’m getting a weird feeling.
As I went back I reflected that I know it’s right-hand drive in Sweden (slow thinking?), but I had mostly experienced sitting in that seat as a passenger in left-hand driving countries (Singapore for more than a decade, and just days before, India). I was 95% sure it meant I put myself so I’m closer to the middle of the road.
As I looked it up online: yes, I’m supposed to be towards the middle of the road when driving. I didn’t hit anything. And the sense of the car started coming back after a couple of kilometers. Just like riding a bike 😉
random nice thing from visiting my mom: hanging the laundry outside to dry in the sun
in Sweden I can enjoy one of the best uses of curry: the banana, chicken, curry powder, and peanut pizza! Washed down with an apple/orange soda.
…I really think it would be slightly better with some pineapple, though 😉😇
hack/jugaad vs kludge/bodge
I’m in Bengaluru to attend a friend’s wedding, and it has been fascinating walking around and seeing “the creative ways” of cable management, and my perspective from Singapore and Sweden is definitely to question the safety and longevity.
Coils of cables, some without the protective coating, all just lying around. What looks like some fiber cables for good measure.
[… more]Justin Searls asks which of your colleagues are screwed?
I’ve been writing about how AI is likely to affect white-collar (or no-collar or hoodie-wearing) computer programmers […] Think about a random colleague you don’t feel particularly strongly about as you read the following pithy and reductive bullet points. […] They’re going to be screwed if they exhibit:
- Curiosity without skepticism
- Strategy without experiments
- Ability without understanding
- Productivity without urgency
- Creativity without taste
- Certainty without evidence
I recently said that I think curiosity is what makes a good software engineer, and gave examples of when/how they should be curious, but never pointed out that it has to come with a balancing function.
I can’t think of anything done 100% full-throttle that isn’t detrimental without something to balance it, but it’s tacit and not something I often think about immediately. For example, if you live your life 100% in service it will be limiting, a bit of selfishness is required, see Doug Forcett from The Good Place.
Kent Beck has a subscriber post called return of Multi-tasking? where he’s realizing he’s more often working on different things across a day now that he’s working with genies. Less time doing clackety-clack and more time thinking about next steps (or napping for epiphanies).
I’ve noticed the same pattern, this “productive multi-tasking” where you shift to something else when you’re stuck or “cogitating in the background.” Whether it’s waiting for feedback, getting help from the CI team (why won’t their plugin inject the AWS credentials it’s supposed to?), or just running out of brain juice and needing to let things percolate (which I want to remember Slow Productivity also recommends, especially for more nebulous work).
…because someone said in a meeting to use the lemons to make lemonade and this started shouting in my mind
…and why they're (nearly) impossible
As I was writing up angry at the genie, about getting frustrated at a bot for not having my context, I realized I’d done the same thing to a human colleague just months earlier.
A new colleague has been speed-running five years of my accumulated context, and I was getting really annoyed at all their questions. Why weren’t they making any reasonable assumptions? They’re a human after all, with decades of experience. In hindsight, I think that’s exactly why they’re not assuming and instead clarifying.
[… more]…getting exactly what I wished for, eventually
A colleague mentioned he’d like a genie coach to practice first principles thinking, because we had talked about the cooking coach I made and have been using. So I decided to give it a try, whipped up a prompt, and gave it a spin.
I had a problem I’d been working on and wanted to see if there was another way of thinking about it. I also asked it to add behavioral economics as an angle because I’ve been interested in pulling in a more human angle to my thinking (still learning what that means).
[… more]“this is what would change my mind”
I was in an AMA at work, and someone asked me what makes a good software engineer. I said: Someone who is curious and wants to understand why from many points of view (tech, product, customer, etc.), and someone who cares about the outcome, not that they were the ones to “get it” or “make the decision.”
The more I think about it, the more I realize that curiosity is the foundation. You need curiosity about the system you’re building, the organization’s actual goals, and especially about the people you’re working with. But curiosity alone isn’t enough, you also need to be intellectually honest about what you find.
The principle I try to live by is: I would rather be correct than right.
[… more]gum simplifies making shell scripts interactive: no more wrestling with read commands and ANSI escape codes for user input: just proper text editing, defaults, and clean UI.
For example, if you run:
gum input --width 50 --header "Favorite author?" \
--value "Terry Pratchett"
It will give you a question with a sensible default that you can then change as you want, and what you wrote as you hit enter
will be returned so your script can then use it.
If you instead has some options where you want to select one:
gum choose --header "Favorite book?" \
"Hogfather" "Thief of Time" "The Night Watch" "Small Gods"
Which gives you a selection box, you can configure to allow multiple selections, and the one you pick is then returned.
And one I really love, have it show a spinner to indicate that yes… something is still going on:
gum spin --title="Counting down from 10" sleep 10
Built on bubbletea, a Go TUI framework, use that directly if you need these components in Go code rather than shell scripts.
…classification of different types of understanding
Curtis shared the DIKW pyramid, that I hadn’t heard of, and said that he feels that the genies helps him process the first two layers much more quickly than he can alone, that it can somewhat help penetrate into knowledge but not much. Which allows him to spend less time in D/I (collection) and then more to then K/W (processing?)
[… more]If you start a non-interactive bash shell it will source the content of the file defined in BASH_ENV
(and ENV
for a POSIX shell).
When bash is started non-interactively, to run a shell script, for example, it looks for the variable
BASH_ENV
in the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute. Bash behaves as if the following command were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the
PATH
variable is not used to search for the file name.
YAML does not support unsplatting lists (basically, merging list items inline like you can with objects) and that’s intentional.
So if you have a document like below, there is no syntax to make the commands
a three item list:
---
example: &example
- "Hello"
- "World!"
name: "hello"
commands:
- << *example
- "Oho!"
WILL NOT turn into:
---
example: &example
- "Hello"
- "World!"
name: "hello"
commands:
- "Hello"
- "World!"
- "Oho!"
…and just because before I found the issue where it was described that this isn’t happening I had made a test repo to try and understand if it was a library/usage issue, because I noticed I could get things running on CI with << *example
which syntax didn’t give syntax error, but also did nothing when running on Drone CI.
Commands with commas: I came across this a couple of years ago, and I’ve been using it for my new scripts since.
Debian today supports a huge number of commands; my modest Ubuntu laptop shows several thousand available:
$ apt-file search -x ‘^/usr/bin/[^/]*$’ | wc -l
21733The solution was obviously to adjust my command names in such a way that they were still easy to type, but would never be chosen as system command names.
[…]There was but one character left: the simple, modest comma.
A quick experiment revealed in a flash that the comma was exactly the character that I had been looking for! Every tool and shell that lay in arm’s reach treated the comma as a perfectly normal and unobjectionable character in a filename.[…]
And, best of all, thanks to the magic of tab-completion, it became very easy to browse my entire collection of commands. […]
I simply type a comma followed by tab and my list of commands appears
/usr/bin/env
executes commands with flags/subcommands, not just bare executables. Which is great if you, for example, have a script/lint
that’s a Python script, and it needs dependencies from a virtualenv that isn’t active when you call it.
Just put your shebang as /usr/bin/env uv run python3
and it always runs in the virtualenv, no wrapper script needed. This feels obvious in hindsight, it’s what you expect from these tools 😃
…and musing on genies possibly teaching empathy
Anthropic has released some recordings from their Code w/ Claude event in May and the Prompting for Agents presentation’s “key principles” are basically to empathise with your agent, imagine it’s a brilliant new grad, book smart but missing all things practical at their first job: You need clear concepts, unambiguous instructions, and well-named and designed tools.
I’m more than a little amused that we’re basically coming to a point where, if things pan out with the genies, then the best wranglers will be the ones that can empathise the most with others. Then again, I always thought the brilliant asshole was the exception, they only survive if they’re in charge or are legacy to the company. And sitting in on the review meetings at work… it’s definitely the ones that help the team that we like the most, even if we sometimes need to push them to have their name on something so people don’t overlook them.
[… more]