HNHacker News
TopNewBestAskShowJobs

wgjordan

1,393 karma · joined August 29, 2012

submissionscomments
wgjordan··on JuiceFS is a distributed POSIX file system built on top of Redis and S3
Related, "The Design & Implementation of Sprites" [1] (also currently on the front page) mentioned JuiceFS in its stack:

> The Sprite storage stack is organized around the JuiceFS model (in fact, we currently use a very hacked-up JuiceFS, with a rewritten SQLite metadata backend). It works by splitting storage into data (“chunks”) and metadata (a map of where the “chunks” are). Data chunks live on object stores; metadata lives in fast local storage. In our case, that metadata store is kept durable with Litestream. Nothing depends on local storage.

[1] https://news.ycombinator.com/item?id=46634450

wgjordan··on Sugar industry influenced researchers and blamed fat for CVD (2016)
Please follow the HN guidelines [1]:

When disagreeing, please reply to the argument instead of calling names. "That is idiotic; 1 + 1 is 2, not 3" can be shortened to "1 + 1 is 2, not 3."

[1] https://news.ycombinator.com/newsguidelines.html

wgjordan··on Marmot – A distributed SQLite server with MySQL wire compatible interface
Very helpful hearing about your own similar experiments with CRDTs. As a followup I'd be interested in more direct comparison between Marmot and Corrosion in terms of features/performance, since they both serve a similar use case and Corrosion seems to have worked through some of the CRDT issues you mentioned.
wgjordan··on Marmot – A distributed SQLite server with MySQL wire compatible interface
Related, Corrosion has experimental support for the pgsql wire protocol (limited to sqlite-flavored SQL queries): https://superfly.github.io/corrosion/api/pg.html
wgjordan··on Show HN: Encore – Type-safe back end framework that generates infra from code
SST has not been AWS-specific since Aug 2024 [1], it is now based on Pulumi/Terraform instead of CDK/CloudFormation.

[1] https://sst.dev/blog/sst-v3

wgjordan··on Why should I care what color the bikeshed is? (1999)
See also a rebuttal of sorts [1] from Brett Glass, the sole programmer singled out by name in phk's essay:

> Poul-Henning's assertion that all such ideas should be dismissed as "bikeshedding" reflects this dismissive attitude, which can be just as damaging to a software project as taking too many suggestions (or accepting bad ones). At the time of the discussion I mention above, internal squabbles drove several talented programmers from the project, and I was discouraged from becoming more deeply involved in it. FreeBSD was falling behind Linux in features and in popularity. While it has now caught up in terms of technology, it remains an underdog. This is, in part, due to the developers' dismissal as "bikeshedding" of good ideas that Linux adopted much earlier.

[1] http://bikeshed.info/

wgjordan··on The RubyGems "Security Incident"
I think the biggest missing piece in the opposing accounts of this incident is how exactly the production-access removal was communicated. There's a huge gap between how the two posts are framing the clarity of the communications that happened on Sept 18:

> September 18 2025 18:40 UTC: Ruby Central notifies Mr. Arko, via email, of the board’s decision to remove his RubyGems.org production access, and the termination of his on-call services.

> Marty Haught sent an email to the team within minutes, at 12:47pm PDT [19:47 UTC?], saying he was (direct quote) “terribly sorry” and “I messed up”. [...] the complete silence from Shan and the board, made it impossible to tell exactly who had been authorized to take what actions. As this situation occurred, I was the primary on-call.

André also mentioned that he disclosed further remaining production access a few days ago, on Oct 5. Looking forward to Ruby Central's followup post-incident review for this subsequent incident, which they failed to address or mention at all in their initial publication.

wgjordan··on Why I'm not rushing to take sides in the RubyGems fiasco
It's a legal requirement for most US non-profits to file public and accurate accounting of their funds and expenses, Ruby Together is no exception and all the info is publicly available [1].

Having previously worked as a software engineer at an ed-tech non-profit, I found nothing nefarious or unusual in Andre receiving compensation for his work or in the anecdotes around expensing business-related technology purchases or meals to his employer, this is all standard industry practice.

[1] https://projects.propublica.org/nonprofits/organizations/473...

wgjordan··on Why I'm not rushing to take sides in the RubyGems fiasco
As a non-profit, the exact amount that Ruby Together paid Andre was publicly disclosed in its annual tax filings [1]:

2015: $29,250

2016: $43,988

2017: $48,143

2018: $51,058

2019: $60,000

2020: $32,693

2021: $21,420

The filings also note that "The entire board of directors reviews and approves (by vote) compensation for the CEO."

[1] https://projects.propublica.org/nonprofits/organizations/473...

wgjordan··on Why I'm not rushing to take sides in the RubyGems fiasco
The problem is not that Searls has opinions, it's that this petty hit piece against Andre was heavily wrapped in neutral, 'all I can do is offer a little bit of context', 'I'm not rushing to take sides' framing language, resulting in a disingenuous, passive-aggressive tone.

Why is Justin dredging up that one time eight years ago when Andre mistakenly called out a repo for infringing upon his employer's work (for which he publicly apologized five hours later)? Why is he harping on anecdotes from nine years ago in order to suggest Andre may have allegedly (gasp) expensed technology purchases and business meals to his employer? What does this all have to do with the current situation, other than unnecessarily stir the pot with a laundry list of old petty grievances fed to him by a bunch of anonymous contacts ('a lot of different people told me a lot of concerning stories')?

I think the author's close ties to Rails Core / Shopify employees is extremely important context for this post, especially since it's context that's been intentionally hidden by a neutral, unbiased framing.

wgjordan··on I built Foyer: a Rust hybrid cache that slashes S3 latency
Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something.

https://news.ycombinator.com/newsguidelines.html

wgjordan··on The Beauty of Programming (2001)
It's a section titled 'The Joys of the Craft', from Chapter 1 of The Mythical Man-Month:

https://home.adelphi.edu/sbloch/class/adages/joy.html

wgjordan··on Bundler Belongs to the Ruby Community
My (not-a-lawyer) understanding is that a trademark is 'genericized' only when it's become so ubiquitous that its public use no longer refers to a single, unique source or origin of product, but to an entire generic class of products: escalator, granola, trampoline are some older examples of 'genericized' trademarks.

In this case, 'Bundler' still refers pretty clearly to a single brand-name utility within the Ruby ecosystem. However, the goods/services in the trademark registration application [1] covers "Downloadable computer software for managing, processing, optimizing, and organizing source code and dependencies", which is a broader class of services. The descriptive word "bundler" is quite widely used in the JavaScript ecosystem, for example, to describe this general type of dependency-management software (esbuild calls itself "An extremely fast bundler for the web", for example). I could certainly see the "Bundler" trademark being contested as a descriptive mark that hasn't acquired significant secondary meaning in that broader context, so it will be interesting to see whether this trademark application is upheld upon review (or potential opposition).

[1] https://tsdr.uspto.gov/#caseNumber=99407082&caseSearchType=U...

wgjordan··on GPT-5
Note it's not available to everyone yet:

> GPT-5 Rollout

> We are gradually rolling out GPT-5 to ensure stability during launch. Some users may not yet see GPT-5 in their account as we increase availability in stages.

wgjordan··on How Anthropic teams use Claude Code
Completely agree- this is a very well-done, A1 argument I can certainly sink my teeth into.
wgjordan··on In-Memory C++ Leap in Blockchain Analysis
> The memory issue will mostly be addressed as needed

I have no allegiance to either lang ecosystem, but I think it's an overly optimistic take to consider memory safety a solved problem from a tweet about fil-c, especially considering "the performance cost is not negligible" (about 2x according to a quick search?)

wgjordan··on Have a damaged painting? Restore it in just hours with an AI-generated “mask”
I thought the man's hand was either missing a pinky finger or had an abnormally short one.

Here's another one, this tweeted image shows either six fingers or an abnormally large middle finger: https://x.com/OpenAI/status/1904602845221187829

wgjordan··on Have a damaged painting? Restore it in just hours with an AI-generated “mask”
Look at the hands in "selfie view of the photographer, as she turns around to high five him".
wgjordan··on How we decreased GitLab repo backup times from 48 hours to 41 minutes
"How we decreased reading 'How we decreased GitLab repo backup times from 48 hours to 41 minutes' times from 4.8 minutes to 41 seconds"
wgjordan··on Dystopian tales of that time when I sold out to Google
Be kind. Don't be snarky.

https://news.ycombinator.com/newsguidelines.html#comments

wgjordan··on Show HN: Lazy Tetris
I agree, the judgment read like a post hoc rationalization from someone unfamiliar with game development, uncritically parroting arguments of the side with a deeper bench.

What surprised me most from the ruling was how it took the legal doctrine of idea-expression dichotomy and twisted it into absurdity, hinging on an implicit argument that a game design essentially serves no utilitarian 'function' or 'purpose'. Core mechanics or essential gameplay rules like the tetrominoes or the 10-block width of the playfield are thus marked 'expression' or 'arbitrary flourishes', leaving a vague, unidentifiable abstraction of a falling-blocks puzzle game as the only unprotectible set of game rules that form its 'idea'.

Xio was free to design a puzzle game without tetrominoes, or downward+lateral+rotating movements, or a 10x20 playfield, and it would still 'function' just as well (that is: not at all, it's just a game). A chess game developer is equally free to design a strategy game without an 8x8 board or the knight's distinctive L-shaped movement, but it would no longer be chess, it would be rules for a completely different game.

wgjordan··on Show HN: Lazy Tetris
Not just 'Tetris' (and *-'tris') trademark and Lanham Act trade dress, but they have also successfully argued in court [1] that the 'look and feel' of Tetris constitutes its copyrighted expression. In that case, Tetris Holding argued (and the judge agreed) that even the use of the seven one-sided tetromino playing pieces was part of their copyright.

Here's the description of the only Tetris gameplay mechanics the judge in this case conceded cannot be protected:

> Tetris is a puzzle game where a user manipulates pieces composed of square blocks, each made into a different geometric shape, that fall from the top of the game board to the bottom where the pieces accumulate. The user is given a new piece after the current one reaches the bottom of the available game space. While a piece is falling, the user rotates it in order to fit it in with the accumulated pieces. The object of the puzzle is to fill all spaces along a horizontal line. If that is accomplished, the line is erased, points are earned, and more of the game board is available for play. But if the pieces accumulate and reach the top of the screen, then the game is over. These then are the general, abstract ideas underlying Tetris and cannot be protected by copyright nor can expressive elements that are inseparable from them.

[1] Tetris Holding, LLC v. Xio Interactive, Inc. (2012) https://scholar.google.com/scholar_case?case=180648822600252...

wgjordan··on OpenAI says it has evidence DeepSeek used its model to train competitor
Even assuming the model was somehow publicly available in a form that could be directly copied, that would be a more blatant form of copyright infringement. Distillation launders copyrighted material in a way that OpenAI specifically has argued falls under fair use.
wgjordan··on C: Simple Defer, Ready to Use
Free sites on WordPress.com are:

https://wordpress.com/support/no-ads/

wgjordan··on After 30 years, FDA overhauls guideline for the claim "healthy" on food packages
From the FDA page [1]:

> To meet the updated criteria for the claim, a food product needs to:

> 1. contain a certain amount of food from at least one of the food groups or subgroups (such as fruit, vegetables, grains, fat-free and low-fat dairy and protein foods) recommended by the Dietary Guidelines for Americans, and

> 2. meet specific limits for added sugars, saturated fat and sodium.

[1] https://www.fda.gov/food/nutrition-food-labeling-and-critica...

wgjordan··on Limbo: A complete rewrite of SQLite in Rust
> For maximum performance, users have to choose WAL mode over journal mode, disable POSIX advisory locks, etc.

Speaking of "wal" mode, is "wal2" mode [1] on your radar for this project to prevent wal files from growing indefinitely in a busy system?

[1] https://sqlite.org/cgi/src/doc/wal2/doc/wal2.md

wgjordan··on Don't use booleans (2019)
thing_to_use = enums; // fixed
wgjordan··on The Vietnamese Computer Scientist Who Made Toy Story Possible
Paper on arXiv (ACM format), same authors as this article (and mostly same content):

https://arxiv.org/pdf/2404.14376

wgjordan··on Organ playing 639-year-long piece changes chord
I think 'idea-expression dichotomy' is the legal concept you're looking for.
wgjordan··on Why Aren't We Sieve-Ing?
I don't think it's an acronym, it just seems to be a convention in the literature to capitalize eviction-algorithm names (cf. "CLOCK").

According to the footnote in the paper where the name is first mentioned, "SIEVE sifts out unpopular objects from cache over time".

← PreviousPage 2 of 11Next →