I know it may sound stupid but in my latest project I chose ULIDs because I can easily select them as one word, instead of various implementations of browsers, terminals, DB guis, etc each have their own opinion how to select and copy the whole UUID. So from that point of view ULIDs "look" better for me as they are more ergonomic when I actually have to deal with them manually.
I don't think it's stupid and this is one of the reason I prefer ULIDs or something like it. These IDs are very important for diagnostics, and making them easily selectable is a good goal in my book.
Wow, this might be the push I needed to automate certificate renewal on my personal website [0].
Manually clicking `make renew-cert` was barely tolerable every quarter, but if I have to do it twice as frequently I may as well ask an LLM to figure it out on my behalf.
And that is the very point of the short life span. One year certs had the potential of the person responsible for the cert no longer being the same person at time of renewal. Making it easy to automate so that it was just a cron task meant it didn't matter how often the person responsible changed.
Your pain and intolerance to that button push proves their intent.
Strong disagree. This trend has been underway for a few years already. There are a few reasons for this:
1. Musicians love tape. We like the frequency roll-off, we like the imprecision - but these are nostalgia. What we like most is the with tape your options are largely reduced to Record and Play, because doing anything more complicated (eg editing via punch-ins with synchronization) is such a PITA. They're a great tool for just making you commit to a performance instead of editing it to death.
2. In similar fashion, young people are fascinated by a medium you have to sit through by default, because skipping around is inconvenient and might damage your tape. Not being able to listen nonlinearly promotes a different sort of engagement with the material from the fragmented one provided by streaming. To a lesser extent, music on tape has better dynamics not because the medium is superior, but because maximizing loudness over the entire track means the whole recording will be saturated. This is desirable in some genres (metal, some kinds of dance music), but most cassette recordings avoid maximizing loudness which sounds refreshingly different to people who grew up during the Loudness War.
3. Chinese bootlegs. In the 80s and 90s China was a target country for first world garbage disposal, so unsold CDs and cassettes would be damaged by being run through a table saw and then shipped to China in bulk for recycling, sold by weight. While publication or importation of western music was heavily restricted by censors, garbage imports were uncontrolled, and enterprising minds soon observed that damaged media could often be rendered playable, at at least in part. This led to the emergence of a "dakou" (打口 - saw cut) music scene, with parts of albums being sold to enthusiasts in semi underground stores with no regard to release date, genre, or marketing campaigns. This had a big impact on China's domestic music scene.
4. Differing media preferences. Other countries (but Japan in particular) never lost the taste for physical media the way Anglosphere countries did. Japan was always record collectors' paradise because industry cartelism kept the price of physical media high, but buyers were rewarded with high production quality of CD mastering, vinyl grade, and printed media, and labels would typically add bonus tracks exclusive to the Japanese editions of albums. A combination of Japanese taste for the best-quality version of something and 30+ years of economic stagnation meant Japanese consumers were more into maintaining and using their hifi equipment; if you watch Japanese TV dramas a fancy stereo is still a common status marker, much like expensive furniture. Record stores are still a big deal, and music appreciation its own distinct hobby and and social activity in a way that fell out of fashion in other countries.
5. Developing world and cheap distribution. Cassettes were popular in Africa and other developing economies for decades for reasons that should be obvious, and they're popular again with emerging/underground artists for similar reasons. You can self-release on cassette very very cheaply, at the loss of time efficiency. You won't make much money doing this, but you can make a bit, and it's a way to target serious fans who like collecting things and want to support obscure and cool artists who have not yet got big and sold out. Also making $3 on a cassette sale through Bandcamp or at a show may be easier than 1-2000 plays on Spotify or some other service for artists who are not already famous. Self-releasing on vinyl is also possible but typically you need to invest $1-2000, whereas you can get into duplicating your own cassettes for $50 or a few hundred $ in bulk. Vinyl is the way to go if you need to reach DJs but cassette players are dirt cheap or free for consumers and are less effort to use than a record player.
Physical media are still a Big Deal for people who obsess over music, who care about quite different things from the median consumer.
I could skip around on tapes relatively well on a walkman, you just had to remember the counters or roughly how long it was to rewind/fast forward. It wasn't that inconvenient. It just wasn't as quick as an mp3 player, CD or Winamp.
I think this is an example of the emojification of communication. I suspect that trend is being sustained, at least, by LLMs who are prone to abusing vapid emojis everywhere.
I think that to a certain superficial level of analysis, a matched set of icons looks "complete" and indeed impressive. Designers and implementers of the interface can fool themselves through customary use that they're creating a language of ideograms. Their users, who interact with their product only a few hours per week, only perceive visual noise and clutter.
This article made me realize why I always struggle to get through long documents generated by LLMs. The overuse of emojis doesn’t make it easier for me to find useful information, instead, it just adds a lot of noise.
1. Stacked PRs. I like to be kind to my reviewers by asking them to review small, logically-contained pull requests. This means I often stack up chains of PRs, where C depends on B depends on A, and A is being reviewed. If I receive feedback on A, jj enables me to incorporate that change within A, and flows those changes down into my dependent branches. I can then merge and close out A, whole continuing to work on B and C. Achieving this in raw git is labour intensive and error prone.
2. Easily fix up commits. I like to work with atomic commits, and sometimes I realize that I've made a typo in a comment, or a small error, or missed a test case. Jj makes it really trivial to timewalk back to the commit in question, fix it and resume where I left off.
3. Decompose a big PR into multiple PRs. This is the flip side of point 1: I can take my own big PR and rearrange and partition the commits into A, B and C so that they can easily be reviewed.
In general, jj seems to encourage and reward you for being disciplined with your commits by enabling you to be more flexible in how you stage, review and ship your code.
On the flip side, if you're the kind of person who is used to typing `git commit --all --message "xxx"` you might not get as much value from jj until that changes.
I kind of don't get this comment. Isn't the `jj` default behaviour effectively `git commit --all`? There's no staging area -- and I personally find `git add` or `git add -p` a better UI than `jj commit -i`.
Meanwhile, there are git tools that solve the above three problems. My organisation uses `git-spice` (https://abhinav.github.io/git-spice/) which tightly integrates with Github to give you stacked PRs, editing of branches and management of your stacks in Github.
I've been trying jj for a while now because Steve Klabnik heavily recommended it, and so far it hasn't clicked in as nicely as my existing git setup.
I think everyone uses jj a bit differently. Personally I don't like having a staging area; for me it's an opportunity to forget to add a change to a commit. I don't keep files in my work tree that I'm not going to commit or ignore.
But when I first moved to jj I tried to make it work as closely to git as I could. The model I used back then was to have a commit that I meant to upload eventually, and then a working commit on top of that. Then `git commit --all` was `jj squash` and `git commit foo bar` was `jj squash foo bar`.
Eventually I got lazy. It was an extra command, and I almost never have the situation where I don't want to include a file. In the rare case that I do, I'll create a new commit with `jj new` and squash that file into there (you could have a shortcut for it, but the long form is `jj new -m "foo changes" --no-edit && jj squash --to @+ foo`, and then keep working.
Thanks, I'll try that :). Despite the fact that I've worked my way back to `git` for my mainline work, I've still got some repos that I've left jj live in to keep picking away at it.
My theory for why "San Fran" is looked down upon is that the person saying it is perceived as making a claim to status: 'I am so cool and hip that I am on familiar terms with "San Fran".'
But shortening San Francisco to San Fran is both very obvious, and betrays a cheap attempt at sophistication that the soul of SF rejects.
SF feels like a transitory city as multiple successive waves of people drift in and out. That also contribute to why a shibboleth like this gets a lot of airtime. The episode probably recurs weekly in bars all over the city as someone who's just moved here calls it "San Fran", only to be corrected by someone who's been here for just a little longer.
A couple of results that I was convinced of, and then memorized without also memorizing the proofs:
A perfect computer would only need to do "work", in the entropic sense, when it deletes information. Of course we're orders of magnitude away from these theological limits right now and computing today is very hot and very gross.
Reversible Computing is the ability to compute a function without actually deleting, or otherwise confusing the states of your program. In theory you could run the program backwards, deterministically, and return your input. Reversible computing could be implemented on a theoretical "cold" computing substrate to not require any loss of energy.
One fundamental problem with the schema this author decides is how to separate the running of the program from it's output. Essentially this has wired the cpu % load to stdout.
Naively, you'll start to leak output in arbitrary programs. You could be clever and specifically cap "computation" below 50% and output above it, but then I'd argue that you're just using your CPU as an output device.
I'm happy for you! Some feedback as I walk through the app.
I like the styling, it's really slick. I also like that you enable me to use the tool online without signing up. I was curious about how you're supporting this, and paying for inference, but I see now that you haven't really wired up anything. When I try to generate my 1pager, it returns a placeholder.
> Turn your messy ideas...
I'm not a fan of this framing. Messy has negative connotations, so it's not clear why you're insulting me when we just met. ;)
The wizard:
There's a bit of duplication, since you have "Tell the agent..." as well as "Tell me...", both conveying the same information.
I can jump through steps without competing prior ones. Isn't that going to cause a problem?
It's hard to truly evaluate this further without seeing it in action. As other authors have said, many agents already support Plan Mode, so it it's important for you to distinguish yourself from that.
Thanks for the response! I have wired it up...it's using gpt-5-mini. I just have API-level usage limits - I figured if it hit those, I could worry about how to adjust costs, rate limit, etc.
The jumping through steps is not intended - that's a regression.
I think the "messy ideas" was a reference to the homepage copy "Turn your messy ideas into crystal clear specs.", not continuing the previous thought about the placeholder. I'd agree that "messy" might have more negative connotations than you intended.
reply