Recent submissions

Comment · 1 month ago
I had assumed that there would already be a switch/case because I was going with the example in the code of there being three pseudotypes (bid, ask, and reserved). So it seemed natural to me to use a switch statement to have it execute the code specific to them, and that doing so would be less cluttered than not having the reserved option and instead doing a switch/case (or if/else-if) for bid/ask and a separate try/catch wrapper in case it was a null object.

Edit: to be clear, I agree that the distinction is not nearly as sharp if it's just a case of "is the object valid or not"

Comment · 1 month ago
Fair enough; in the example provided the "tag" was allowed to be "bid, ask, or reserved" so I assumed there would be a switch statement to control the handling of the bid and ask specifics, and that it could drop the reserved ones there. That's less helpful when it's just between "is this an actual instance or just a placeholder?"
Comment · 1 month ago
In the reserved case you do still need to check if you have a reserved entity, but you can put it (along with the other allowed "pseudotypes") in a switch/case block and have it just break back out immediately (the no-op mentioned in the article) rather than having to use a separate if/else to check for Null, or clutter things up with a try/catch wrapper.

Does that address what you're asking about?

Comment · 2 months ago
You can save/load the contents of a single buffer or all buffers. For a single buffer, select the buffer you want to save, then go to the Live menu and choose "Save Buffer As". To load a file into a buffer, choose the buffer you want to load it into and then go to the Live menu and select "Load into Buffer"

You can also save off all the buffers together (e.g. if you've put different parts of the same song into different buffers) by going to the Live menu and choosing "Save Set As" (or just "Save Set" if you want to overwrite what was previously in your last saved set e.g. you made changes to your song and you want to replace the previous version).

So to achieve a workflow similar to what you're describing, you construct your song (in up to ten buffers) and then save the set and clear the buffers or load a different set to work on another song. True, it doesn't give you infinite buffers, but it does give you a way to "manage all [your] songs as files".

You can then use e.g. Magit to version control the files just as you would if you were working in Emacs itself.

The sets are also saved as text files in a very human readable format; basically just all of the buffers dumped out one after another with some delimiters. You could even use Emacs to edit them and then load them into Sonic Pi to run them! (That said, I'm not sure there's a good sonic-pi-mode for things like indentation and autocomplete yet. Hopefully someday; I would love to have my custom evil-mode Emacs keybindings while working in Sonic Pi, but I get that it's not really a priority right now ;) )

Comment · 3 months ago
Presumably it captures a screenshot and then uses CV on the resulting image to "see" the application and identify the various things that you might want to click.
Comment · 3 months ago
I understand that this is kind of beside the point, but it seems like a bad thing to compare inventions to haunted artifacts that mind controlled their users into betraying their friends to a powerfully evil being. (Though since it is being powered by GenAI, which has also driven people to do bad things, perhaps it is an apt comparison.)
Comment · 4 months ago
I was a huge skeptic of evil-mode/modal editing for about a decade and a half. Then I bit the bullet when I switched to Spacemacs in ~2017 and I am a full convert. The "change-in-<delimiters>" functionality alone is worth the price of admission/climbing the learning curve; the rest is a huge bonus!
Comment · 4 months ago
NEVER take Hofstadter's law into account!!!!
Comment · 10 months ago
Also FWIW I understand that the furry community has a strong culture of commissioning artists for their work, so that's likely to be a headwind against using genAI that isn't explicitly trained only on licensed materials. Sure, there are likely some who would use it regardless, but I expect the use of genAI to generate furry porn to be at least as toxic within that community as the use of genAI to generate furry porn outside of that community.
Comment · 10 months ago
I am so happy that people make things like this <3
Comment · 10 months ago
So this is a post from/for a group of livecoding music jammers, but I think there's value in considering it in broader contexts. In particular, the parts about "let code die" and not being afraid to remove/rewrite large blocks of code really resonated with me because--regardless of the author's intent--they suggest to me a level of competency and familiarity with one's tools and languages that many people have not reached, and may not even realize is possible.

To me, some of the most impactful parts are the ones that talk about how sometimes someone will delete their code, and they'll just. Rewrite it! By hand! From scratch! Because they wanted it to be that way!! How different that seems than the more typical world of issue trackers and code reviews and having just enough time to figure out how to do something once before it's on to the next feature. How tightly we cling to working code, lest it be lost and we have to do it again! Whomst among us has the time?!

But what if we did have the time? What if instead of figuring something out once and then moving on to the next ticket, we erased it and started over? Like an improv sketch ("do it differently!") or learning to paint ("scrape your canvas clean and begin again!") exploring alternatives and reinforcing in our minds what works and what doesn't.

"Do it again" is much less scary, more invitation when you're on the hundred-and-second rewrite rather than the second. You know where the pitfalls are, you've internalized which shortcuts will work and which offer false hope. You can practically do it with your eyes closed, in a matter of minutes rather than days

That's when you can start to get really creative--because the risk of exploration and experimentation is practically zero: if you try something new and it doesn't work, it's trivial to throw it away and replace it with something that does.

Comment · 11 months ago
Net worth isn't equity - mortgage + 401k. Net worth is assets - liabilities. Equity is not an asset; the house is. So is the 401k. The mortgage is a liability. So Joe's net worth is 100k (IRA) + 300k (value of house) - 200k (mortgage) = 200k positive net worth.

(Another way of thinking about equity, specifically, is it is the real estate contribution to net worth, because it is what is left when you subtract the real estate liability (mortgage) from the real estate asset (value of house). That's why you shouldn't subtract the mortgage from the equity: equity is what's left after you've already subtracted the mortgage.)

(Edit: Adjusted sign in first equation to subtract mortgage. It's probably more technically accurate to keep it as addition and consider the mortgage to be a negative value, but I believe it's more straightforward and intuitive for most people as it is now represented.)

Comment · 1 year ago
It's for letters/numbers. The mechanical keyboard community has adopted phrases like "chord" and "arpeggio" because they refer to analogous things in the typing world ("pressing multiple keys at the same time" and "pressing multiple keys in quick succession", respectively).

In keyboards with a limited number of keys (such as in TFA) they become especially crucial to being able to express the full complement of "standard" letters, numbers, and symbols.

Comment · 1 year ago
Without those sorts of revolutionary claims, would they still be receiving enough funding to keep the lights on?
Comment · 1 year ago
Android phones (at least some of them) have "Do Not Disturb" mode which blocks calls from numbers not in your Favorites (i.e. starred contacts)

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton