HNHacker News
TopNewBestAskShowJobs

sethev

2,195 karma · joined June 12, 2012

I've worked in a variety of language but my main interest lately is Clojure.

You can contact me at sethev@gmail.com

submissionscomments
sethev··on Are arrays functions?
In Clojure, vectors literally are functions. You can supply a vector (~= array) or map any place that a single parameter function is expected. So for example:

    (map v [4 5 7])
Would return you a list of the items at index 4, 5, and 7 in the vector v.
sethev··on American importers and consumers bear the cost of 2025 tariffs: analysis
I suspect the answer to this lies in who feels the short term pain vs who benefits from the long term gain.
sethev··on American importers and consumers bear the cost of 2025 tariffs: analysis
It's one thing to vote in support of politicians who want to use tariffs to reduce imports / increase the price of goods to support US manufacturing. It's quite another to vote for a politician who wields tariffs in inconsistent and arbitrary ways and claims that it won't increase prices.
sethev··on The Cathedral, the Megachurch, and the Bazaar
Yes, I'm speaking about my experience as I remember it - not what was objectively possible for someone with the right resources and knowledge at the time :)
sethev··on The Cathedral, the Megachurch, and the Bazaar
Yes, that is the context in which I first read it (likely around 1999 when it appeared on slashdot), as a senior in high school with no access to the tools used by most professional programmers at the time.
sethev··on The Cathedral, the Megachurch, and the Bazaar
As you point out in your linked comment, the original essay captured the zeitgeist of the time. It also influenced and inspired many people. From that perspective, it's hard for me to agree that it was bad. However, I don't think the content was original at the time (perhaps that's what you mean by bad?) - in the sense that ESR wasn't out ahead of people blazing some new trail and it also didn't hold up very well factually.
sethev··on Lies, Damned Lies and Proofs: Formal Methods Are Not Slopless
Yeah, if you have a formal proof of something but you don't know exactly what then you might as well vibe code the system itself. I've been wondering if it would be possible to formally define a property (like deadlock freedom or linearizability) and then vibe-code the spec (and associated implementation).

I don't know if that's possible but it seems like that's where the value would be.

sethev··on Presidential Immunity in the United States
> The SCOTUS ruling went far beyond historical practice.

The ruling was specific to the President, not other officials. Donald Trump is the only president in US history who has been formally charged with committing a crime while in office, so I don't see how the ruling went far beyond historical practice. I do think it went far beyond what some people had assumed would be the case if it were ever tested.

The fact that Nixon resigned rather than triggering a test of this and then was pardoned by Ford (also avoiding a test of immunity) are indicators that historical practice was closer to immunity than not (i.e. past presidents did whatever was in their power to avoid having immunity scrutinized).

sethev··on Presidential Immunity in the United States
I recall when this ruling was made, there was a BBC opinion piece that took an outraged position on this and contrasted it with the position of the prime minister in British politics. It struck me as funny because they literally have a person (the monarch) who is immune from arrest or prosecution for any act at all - not just official acts.

It does seem kind of backwards that this kind of immunity is required - although i think the Supreme Court ruling made something official that was already true in practice. There is a mechanism for prosecuting presidents, impeachment and a trial in the Senate, it's just not very likely to happen...

sethev··on Statement from Jerome Powell
I was just nitpicking the nitpicking, especially the implication that using a word correctly is confusing the issue. The sentiment in the original sentence is straightforward to understand, even if the sentence is a bit ambiguous.
sethev··on Statement from Jerome Powell
If you're going to be nitpicky about definitions it helps to be correct. In this case, the person you're replying to is absolutely correct.

The government site you linked says the same thing:

> If the House adopts the articles by a simple majority vote, the official has been impeached.

Trump has been impeached twice. I think the confusion comes in when people misuse these terms, often when they want to say things like "Trump was never impeached!". He definitely was by the only definition that actually matters, which is that the House passed articles of impeachment. He was not found guilty.

Call me old fashioned, but I think these confusions are intentional and should be met with correcting the definitions - not making up new meanings of words - especially in this case where it's formally defined in the law.

sethev··on Warren Buffett steps down as Berkshire Hathaway CEO after six decades
Yes, we seem to lack the framework and vocabulary to discuss morality anymore. You may be right that this is tied to the demise of spiritualism (or perhaps organized religion).
sethev··on Warren Buffett steps down as Berkshire Hathaway CEO after six decades
We should never idolize a person (in my opinion). Here are some things Buffet has done that I admire (notice that phrasing):

  - He consistently communicated with shareholders of Berkshire in a straight-forward and transparent way in his letters and annual reports. If you read these documents, I believe that you will have a solid understanding of how he built Berkshire.
  - He maintained a disciplined approach to investing and managing risk over 60+ years.
  - He still lives in the same home he bought when he was 28 years old.
Our society has become moralistic. It's so much more useful to identify behaviors to learn from - either to emulate or to avoid - than to debate whether various public figures are good or bad people.

That said, it makes me a little sad that we've read the last of his annual letters.

sethev··on Gpg.fail
I only counted one problem:

> I want to be able to encrypt my backups to multiple recipients.

Presumably this means you want to encrypt the backup once and have multiple decryption keys or something?

The rest of your original comment are constraints around how you want it to work.

sethev··on A production bug that made me care about undefined behavior
That seems like a reasonable optimization, actually. If the programmer doesn’t initialize a variable, why not set it to a value that always works?

Good example of why uninitialized variables are not intuitive.

sethev··on Rich Hickey: Thanks AI
This and Rob Pike's response to a similar message are interesting. There's outrage over the direction of software development and the effects that generative AI will have on society. Hickey has long been an advocate for putting more thought (hammock time) into software development. Coding agents on the other hand can take little to no thought and expand it into thousands of lines of code.

AI didn't send these messages, though, people did. Rich has obscured the content and source of his message - but in the case of Rob Pike, it looks like it came from agentvillage.org, which appears to be running an ill-advised marketing campaign.

We live in interesting times, especially for those of us who have made our career in software engineering but still have a lot of career left in our future (with any luck).

sethev··on 100k TPS over a billion rows: the unreasonable effectiveness of SQLite
Right - but SQLite handily beats the case where postgres is on the same box as well. And it's completely reasonable to test technology in the configuration in which it would actually run.

As an industry, we seem to have settled on patterns that actually are quite inefficient. There's no problem that requires the solution of doing things inefficiently just because someone said databases should run on a different host.

sethev··on Why Strong Consistency?
Changing terminology is hard once a name sticks. But yeah, "eventual propagation" is probably more accurate. I do get the impression that "eventual consistency" often just means "does not have a well-defined consistency model".
sethev··on Agent design is still hard
I suspect you're right, but it's a bit discouraging to consider that an alternative way of framing this is that companies like OpenAI have a huge advantage in this landscape and anything that works will end up behind their API.
sethev··on Warren Buffett's final shareholder letter [pdf]
Hah - I think it's more likely that he has it timed and it literally takes between 6-7 minutes.
sethev··on SQLite concurrency and why you should care about it
Oh, I think you're picturing executing your transaction logic and then sending writes off to a background queue. I agree, that's not a general strategy - it only works for certain cases.

I just meant that if you can structure your application to run write transactions in a single thread (the whole transaction and it's associated logic, not just deferring writing the end result to a separate thread) then you minimize contention at the SQLite level.

sethev··on SQLite concurrency and why you should care about it
This is just FUD. The reason SQLite does locking to begin with is to avoid data corruption. Almost every statement this blog post makes about concurrency in SQLite is wrong, so it's little surprise that their application doesn't do what they expect.

>Who knows when those writes you scheduled really get written

When a commit completes for a transaction, that transaction has been durably written. No mystery. That's true whether you decide to restrict writes to a single thread in your application or not.

sethev··on SQLite concurrency and why you should care about it
These are performance optimizations. SQLite does serialize writes. Avoiding concurrent writes to begin with just avoids some overhead on locking.
sethev··on SQLite concurrency and why you should care about it
Have you tried it?

What you're describing sounds like it would work fine to me. The blog post is misleading imho - it implies that SQLite doesn't handle concurrency at all. In reality, you can perform a bunch of writes in parallel and SQLite will handle running them one after the other internally. This works across applications and processes, you just need to use SQLite to interact with the database. The blog post is also misleading when it implies that the application has to manage access to the database file in some way.

Yes, it's correct that only one of those writes will execute at a time but it's not like you have to account for that in your code, especially in a batch-style process like you're describing. In your Python code, you'll just update a row and it will look like that happens concurrently with other updates.

I'll bet that your call to ChatGPT will take far longer than updating the row, even accounting for time when the write is waiting for its turn in SQLite.

Use WAL-mode for the best performance (and to reduce SQLITE_BUSY errors).

sethev··on Fast UDP I/O for Firefox in Rust
It's always interesting how these large organizations can bring in tens of millions of dollars in excess of expenses, yet still manage to "have no money"

Source: https://assets.mozilla.net/annualreport/2024/b200-mozilla-fo...

sethev··on Strong Eventual Consistency – The Big Idea Behind CRDTs
Joseph Hellerstein has a series of posts on CRDTs: https://jhellerstein.github.io/blog/crdt-intro/

He very much leans toward them being hard to use in a sensible way. He has some interesting points about using threshold functions over a CRDT to get deterministic reads (i.e. once you observe the value it doesn't randomly change out from under you). It feels a bit theoretical though, I wish there were examples of using this approach in a practical application.

sethev··on Strong Eventual Consistency – The Big Idea Behind CRDTs
Pijul is a version control system based on a CRDT: https://pijul.org/manual/theory.html#conflicts-and-crdts

It works like you describe, with humans manually resolving conflicts. The conflicts are represented in the data model, so the data model itself converges without conflicts...if that makes sense.

sethev··on SQLite's File Format
This seems like an unnecessarily negative comment. I've been a user of SQLite for over 20 years now (time flies!), what you're calling lack of polish, I would chalk up to Dr. Hipp has been consciousness about maintaining compatibility over the long term. So much so, that the Library of Congress recommends it for long-term preservation of data.

Long term compatibility (i.e. prioritizing the needs of users vs chasing inevitably changing ideas about what feels polished or pristine), near fanatical dedication to testing and quality, and sustained improvement over decades - these are the actual signs of true craftsmanship in an engineering project.

(plus, I don't agree with you that the storage layer, column format, or SQL implementation are bad).

sethev··on Developing a Space Flight Simulator in Clojure
We're talking past each other somehow. Nothing I've said in this thread is hateful.
sethev··on Developing a Space Flight Simulator in Clojure
What conclusion do you draw from that? Nothing you're saying contradicts anything I said.
← PreviousPage 3 of 10Next →