HNHacker News
TopNewBestAskShowJobs

primitivesuave

4,642 karma · joined September 11, 2013

submissionscomments
primitivesuave··on Ask HN: What are you working on? (May 2025)
TypeScript Coach (https://ts.coach)

While I love the official TypeScript handbook, it's not easy to play around with the code examples or approach it as a beginner. I started working on a complete TypeScript tutorial that also showcases some advanced use cases. All the code examples run in the browser, and there are some neat visualizations that clearly show what the type system has picked up.

I've been trying to fix some of the performance issues, finish writing all the content, and adding documentation before making the GitHub repository public - right now the page can hang when loading a long tutorial.

primitivesuave··on Launch HN: SIM Studio (YC X25) – Figma-Like Canvas for Agent Workflows
Congratulations on the public launch!

I had the honor of meeting these founders in person, and was pretty inspired by how fast these guys ship features and iterate on the product with their customers. Definitely the best React Flow work I've ever seen!

primitivesuave··on Postman is logging all your secrets and environment variables
I'm officially a Hurl user - really awesome work! Captures + asserts is exactly how I want to be thinking about API testing. Also, the VSCode extensions for syntax highlighting a .hurl file, and the "Hurl runner" so I can click a button to run a test, are pretty much all the GUI I need.

Thanks again for sharing this!

primitivesuave··on Launch HN: Better Auth (YC X25) – Authentication Framework for TypeScript
Awesome! I used Better Auth for consulting work helping clients build MVPs, and if I could hand them a beautiful admin dashboard rather than linking it up to Retool or their BI tool of choice, they would instantly go for it - especially with all the bot protection and analytics features that I don't have time to build.

One of the reasons I prefer BA is because I retain a lot of flexibility with designing the rest of the system around the authentication. So for example, if I want to have an additional column per user, it's a lot easier to wrap my head around adding a new Postgres column than using some API for appending data to a user in Cognito/Auth0/Okta/etc in some rigid format.

primitivesuave··on Launch HN: Better Auth (YC X25) – Authentication Framework for TypeScript
Better Auth is awesome and I didn't even realize they hadn't publicly launched yet - I'm using it in production apps, and have seen it being used in all kinds of real-world use cases. IMO it's the best open-source option for a TypeScript developer who wants to implement authentication.

About the dashboard - would this just be an interface to my existing Better Auth setup (e.g. if I had customized the underlying data storage) or are you hosting credentials yourself?

You have my sincerest gratitude for building this incredibly useful library and documenting it so well.

primitivesuave··on Postman is logging all your secrets and environment variables
Thank you so much for sharing this. We're actively looking for alternatives to Postman right now, and would be heavily inclined toward an OSS solution.
primitivesuave··on Postman is logging all your secrets and environment variables
I wrote up my findings on this late last night, so I would greatly appreciate anyone who might be able to give me an independent sanity check that this is actually what's happening.
primitivesuave··on Type-constrained code generation with language models
Completely agree. Even with the basic LLMs in the $20/month Cursor plan, I can work 10x faster on TypeScript codebases than I could otherwise, while for Python that multiple feels more like 2-3x. The autocompletions are especially impressive when there is a well-organized type system.

Also in response to adjacent commenters - many mission-critical TS codebases will disable the use of an explicit "any" with eslint - https://typescript-eslint.io/rules/no-explicit-any/.

primitivesuave··on Automatically add missing "async/await" keywords to your TypeScript code
I took a peek at the implementation - I think this only works for a case where the typing explicitly contains the string "Promise". For example, I don't think it would work if I use `SomeInterface["some_promise_key"]` or might incorrectly add an async if I use `Awaited<Promise<...>>`.

I think what you're trying to build might be best served by Typescript's VFS - https://www.npmjs.com/package/@typescript/vfs. You can load the local files into an in-memory type system, and quickly extract async/await hints that might be more useful for a typical TS developer. I think there's a lot of really interesting static analysis you could do to improve async/await safety, as it certainly leads to issues from time to time.

primitivesuave··on The Cannae Problem
I thoroughly enjoyed reading this, and the overarching point is certainly valid (that complacency has led to some notable corporate collapses). However, for purely pedagogical reasons, I have some critique of the Punic War analogy:

- Hamilcar Barca raised his three sons Hannibal, Hazdrubal and Mago, to hate Rome from their early childhood, going so far as to make them swear an oath of eternal enmity (according to Livy). While competition in a free marketplace is much more rational and impersonal, the conflict between Hannibal and Rome was very much rooted in deep ideological hatred.

- Hannibal's strategy was to separate Rome from its allies in the Italian peninsula, which is why he did not march on Rome after Cannae. Perhaps there are realistic business strategy where the aim is to systematically dismantle any means of support that a competitor has, but they aren't well represented in the examples given.

- Quintus Fabius was originally known as Cunctator ("the delayer") as an epithet, and only much later as an agnomen, partly due to his policy that they would not negotiate with Hannibal to exchange prisoners of war. Not only that, it was illegal for the family of a captured soldier to independently negotiate for their family member's release. It's hard to understand what public opinion was like at that time, and the most reliable source (Polybius) was a Roman prisoner-of-war himself!

- The Fabian strategy as it might be applied to management wisdom would not realistically be a "delaying strategy" (i.e. wait for your competitors to run out of resources while trying to limit them as much as possible) but rather a strategy of optimizing your workforce to be more nimble and self-sufficient. Rather than have one large army that represented a single point of failure, the Fabian strategy was to have many small armies that continuously harassed Hannibal's forces for many years.

If the author of this post is reading - I love your writing style and don't intend for this to be interpreted as criticism, I just thought it was an interesting analogy that warranted further exploration.

primitivesuave··on The Cannae Problem
Just to add something to your last sentence - I believe I read somewhere in Polybius that the Romans had never built a warship until the whole skirmish in Sicily kicked off the first Punic War, and they managed to do so by copying a Carthaginian vessel that had washed up ashore. They made one important improvement with an articulating walkway (I seem to remember it being called "the eagle" but I'm not sure) - they could swing it around and lock it to another ship to create a bridge for foot soldiers to attack.

Edit: It was called a raven or corvus: https://en.wikipedia.org/wiki/Corvus_(boarding_device)

primitivesuave··on How to live an intellectually rich life
Based on your interest in Tacitus and Thucydides, I might recommend the The Histories of Polybius. [1] It is absolutely mind-blowing to me that he actually witnessed the events he writes about, and how analogous it is to modern-day geopolitics.

By the way, thank you for providing your list of books - I picked up a few future reads from it.

1. https://www.gutenberg.org/files/44125/44125-h/44125-h.htm

primitivesuave··on Redis is open source again
I also appreciate this perspective because you never know what's going on in the board room. I have seen some morally upstanding leaders make questionable decisions that were totally out of character for them, all for the sake of appeasing a narrow-minded investor.
primitivesuave··on LibreLingo – FOSS Alternative to Duolingo
I learned Sanskrit by translating the Bhagavad Gita (https://gita.pub), and I experienced a similar jump in comprehension to what you described. At first I needed to look up every word, even the ones I'd seen many times, but eventually (after many many repetitions) I finally started having an intuitive idea of what the words and sounds meant.

It certainly makes you appreciate the unbroken oral tradition by which these enormous works of literature were passed down.

primitivesuave··on Show HN: JuryNow – Get an anonymous instant verdict from 12 real people
I actually saw this in your previous HN post and tried it out - it's a great improvement to replace the email/password with a captcha, since I anyways filled out a fake email and I'm sure most people would do the same. Super cool concept, congratulations on launching it!
primitivesuave··on Show HN: val – An arbitrary precision calculator language
That is awesome, I look forward to following the project and hopefully contributing! I became a better Rust programmer from reading your code :)
primitivesuave··on Show HN: val – An arbitrary precision calculator language
Ah you're right, thank you for pointing it out!

In the previous version of this comment (where I was still reading it incorrectly) I added a fun fact, that the significand of an IEEE 754 double-precision float is only allocated 52 bits, but the "hidden bit trick" provides an extra bit of precision when the normalized form starts with 1.

primitivesuave··on Show HN: val – An arbitrary precision calculator language
The UI is awesome, amazing work! However, arbitrary precision implies that there is no fixed upper limit to the number of digits - simple tests like `0.1 + 0.2 == 0.3` and `2^53 == 2^53 + 1` (both produce "false") indicates you're still using IEEE 754 double precision floats.

If "arbitrary precision" is not as important to you as "high precision", a 128 bit decimal has enough precision for 99% of real-world applications.

primitivesuave··on Man who built ISP instead of paying Comcast expands to hundreds of homes (2022)
This ISP was actually part of a detailed study in my college class on networking. The founder created a singular example of an "open-source ISP" [1], and I am pretty sure you can find his guidance online somewhere if you were inclined to build your own.

1. https://www.youtube.com/watch?v=ASXJgvy3mEg

primitivesuave··on OpenAI Codex CLI: Lightweight coding agent that runs in your terminal
You could create a shell function - e.g. `codex() { OPENAI="xyz" codex "$@" }'. To call the original command use `command codex ...`.

People downvoting legitimate questions on HN should be ashamed of themselves.

primitivesuave··on Kermit: A typeface for kids
This is unfortunately the threshold of scrutiny that most online education apps operate along - "it looks good so kids must love it".
primitivesuave··on A love letter to the CSV format
Datasette is a wonderful tool that I've used before, and I have the highest admiration for its creator, but the underlying Sqlite3 database doesn't handle large datasets (i.e. hundreds of millions of rows) nearly as well as ClickHouse does.

It's worth noting that I only ran into this limitation when working with huge federal campaign finance datasets [1] and trying to do some compute-intensive querying. For 99% of use cases, datasette is a similarly magical piece of software for quickly exploring some CSV files.

1. https://www.fec.gov/data/browse-data/?tab=bulk-data

primitivesuave··on A love letter to the CSV format
One thing that has changed the game with how I work with CSVs is ClickHouse. It is trivially easy to run a local database, import CSV files into a table, and run blazing-fast queries on it. If you leave the data there, ClickHouse will gradually optimize the compression. It's pretty magical stuff if you work in data science.
primitivesuave··on AI or Nah? Let’s Settle This.
Thanks for making this, I had a good laugh.

> "I want to take arbitrary user input as a message and generate a thoughtful AI-generated response."

> "NO, you don't need AI for that. It's called a "conversation" and humans have been doing it for thousands of years without any artificial intelligence! Just use a few simple if/else statements and you'll be generating thoughtful responses in no time. "User: 'Hello, how are you today?' Response: 'I'm doing well, thanks for asking! How about you?'" See? Easy peasy. Save your AI budget for something more exciting, like training a neural network to translate your dog's barks or developing a machine learning model to predict the next Kardashian scandal."

primitivesuave··on Teaching a new way to prevent outages at Google
This would have been a lot more compelling had they provided a single real-world example of STPA actually solving a reliability issue at Google.
primitivesuave··on Show HN: Cascii – A portable ASCII diagram builder written in vanilla JavaScript
This is amazing, thank you for sharing it. Aside from being a very useful documentation tool, I hope it inspires more people to distribute simple standalone software utilities in this way.
primitivesuave··on Blunder Free Chess – visualize which squares are attacked
I'm curious as to why you wrote your own chess implementation - seems like this would have been much easier to implement with chessboard.js [1] and chess.js [2].

1. https://chessboardjs.com/

2. https://github.com/jhlywa/chess.js/blob/master/README.md

primitivesuave··on Ask HN: Former employees' RSUs at risk after startup's IPO
I am fairly confident that you have strong legal protections against forfeiture of your RSUs under these circumstances, especially if you worked in California. Unless there is an explicit clause in your employment contract where you agree to this (fairly unusual) tax prepayment scheme, your RSUs are earned income.

IANAL, but I have been around the startup scene long enough to immediately spot the red flags here. It seems like there is an explicit strategy at play here to discourage former employees from exercising RSUs, and you will likely find a strong legal argument against these terms (i.e. prepayment and forfeiture) unless you explicitly agreed to them. To echo what will probably be stated at least a hundred times on this thread - talk to an attorney.

primitivesuave··on Show HN: A no-build fullstack SSR TypeScript web framework
The slang term "soaking" is primarily used in the Mormon community for a particular method of theologically-acceptable premarital intercourse.
primitivesuave··on [dead]
This is for testing a ballot verification system.

> The generation script (generate.py) enables the generation of semi-randomized ballots that fit certain satisfiability criteria. We use these sample ballots as tests for model functionality.

← PreviousPage 4 of 32Next →