<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: tytho</title><link>https://news.ycombinator.com/user?id=tytho</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 10 Apr 2026 08:51:34 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tytho" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tytho in "Native Instant Space Switching on macOS"]]></title><description><![CDATA[
<p>I was a heavy macOS Spaces user. Upon a recommendation to use Aerospace from somewhere else here a few months ago, I switched and love it. I considered Yabai, but some features required disabling SIP (System Integrity Protection).</p>
]]></description><pubDate>Thu, 09 Apr 2026 21:51:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47710659</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=47710659</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47710659</guid></item><item><title><![CDATA[New comment by tytho in "Axios compromised on NPM – Malicious versions drop remote access trojan"]]></title><description><![CDATA[
<p>At least with pnpm, you can specify minimumReleaseAgeExclude, temporarily until the time passes. I imagine the other package managers have similar options.<p>[1]: <a href="https://pnpm.io/settings#minimumreleaseageexclude" rel="nofollow">https://pnpm.io/settings#minimumreleaseageexclude</a></p>
]]></description><pubDate>Tue, 31 Mar 2026 12:26:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47586323</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=47586323</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47586323</guid></item><item><title><![CDATA[New comment by tytho in "Why craft-lovers are losing their craft"]]></title><description><![CDATA[
<p>Game development is often a completely different set of skills and maintenance profile compared to enterprise SaaS development. Many single-player games especially indie ones don’t need to worry about multi-year contracts or having to work through many cycles of different developers coming in and out of a project. Having a 1000+ line switch statement seems totally reasonable on a project with a handful of developers that will continue to work on the project.<p>My understanding is that the switch statement was for npc character conversation text. That seems pretty reasonable, even in enterprise SaaS for something like translations. It might not be as easy to maintain in other circumstances.</p>
]]></description><pubDate>Sun, 22 Mar 2026 03:20:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47474136</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=47474136</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47474136</guid></item><item><title><![CDATA[New comment by tytho in "VS Code deactivates IntelliCode in favor of the paid Copilot"]]></title><description><![CDATA[
<p>I’ve been using Zed [1] for some time now. They are also pretty AI focused so it may only be a matter of time, but so far I’ve been able to disable all of the AI interactions.<p>[1] <a href="https://zed.dev/" rel="nofollow">https://zed.dev/</a></p>
]]></description><pubDate>Tue, 16 Dec 2025 13:12:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46288084</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=46288084</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46288084</guid></item><item><title><![CDATA[New comment by tytho in "Email verification protocol"]]></title><description><![CDATA[
<p>Many applications need a way to contact a user (security breach, password reset). If one only has a username and forgets the password, there’s no way to reverify the user.</p>
]]></description><pubDate>Sun, 09 Nov 2025 14:52:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=45865966</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=45865966</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45865966</guid></item><item><title><![CDATA[New comment by tytho in "Subway Stories"]]></title><description><![CDATA[
<p>Fly has a form of auto-scaling. You have to provision the max amount of machines then you configure them to auto-sleep. It's possible that the creator didn't anticipate this much traffic or didn't want to pre-pay for all those sleeping machines.</p>
]]></description><pubDate>Mon, 13 Jan 2025 15:55:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=42684811</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=42684811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42684811</guid></item><item><title><![CDATA[New comment by tytho in "Just use Postgres"]]></title><description><![CDATA[
<p>I can’t speak to the official decisions made by these camps/courses, but from my own experience as an undergrad, I was first introduce to MySQL, and the professors at my university did not teach using migration management tools for bringing a schema in a database up. You were either using a GUI to set up the tables, or running your own cobbled together sql files. For class assignments this was fine. Then I had a professor introduce mongo to me. I was floored by the idea of having my schema live along-side the application code! No more messing around in SQL GUIs! Then of course over time I realized you still need to maintain a schema over time and provide someway to “upgrade” data when your schema evolves, and keep your data consistent. Then I discovered the tools around migrating mongo data are not nearly as mature as the ones you’ll find for SQL databases.<p>I find mongo alright at producing a short-lived prototype of an application (e.g. school assignments), but the risk of it shipping to production for a long period is too risky for the “benefit”.</p>
]]></description><pubDate>Sat, 17 Aug 2024 10:45:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=41273430</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=41273430</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41273430</guid></item><item><title><![CDATA[New comment by tytho in "Neon Postgres vs. Supabase"]]></title><description><![CDATA[
<p>They can be, but they both offer PostgreSQL services. The article touches on Supabase’s other offerings, but the comparison is mostly on the database offerings.</p>
]]></description><pubDate>Tue, 13 Aug 2024 23:24:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=41240885</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=41240885</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41240885</guid></item><item><title><![CDATA[New comment by tytho in "WebSockets vs. Server-Sent-Events vs. Long-Polling vs. WebRTC vs. WebTransport"]]></title><description><![CDATA[
<p>The browser EventSource constructor does not have options to pass in your own headers. You can pass an option to have it use the cookies for the domain you’re using. There are libraries that allow you to pass in additional HTTP options, but they essentially reimplement the built-in EventSource object in order to do so. Not terribly difficult, fairly simple spec.</p>
]]></description><pubDate>Mon, 18 Mar 2024 18:31:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=39748101</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=39748101</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39748101</guid></item><item><title><![CDATA[New comment by tytho in "Ask HN: Resources for learning niche aspects of authentication services?"]]></title><description><![CDATA[
<p>Ah, I titled that wrong. Fixed! Mostly authentication, but authorization is also a topic I’m studying a lot recently. I feel like there’s more resources on that than the questions I have about authentication. I’m currently diving into the Google Zanzibar papers.</p>
]]></description><pubDate>Sun, 19 Mar 2023 03:34:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=35215772</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=35215772</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35215772</guid></item><item><title><![CDATA[Ask HN: Resources for learning niche aspects of authentication services?]]></title><description><![CDATA[
<p>Over the course of my career, I've learned a lot about authentication, but I find that there's not a lot of resources for things you might need to know if you need to write your own auth service or even learn how one is written.<p>Some aspects that I feel aren't talked about as much are things like:<p>- How to store records of personal auth tokens (like GitHub personal tokens)<p>Using JWTs for these kinds of tokens is widely deemed a bad idea because it's not revokable (without changing the JWT key and essentially revoking all tokens signed with the same key). What I hear is that just generating a token with cryptographically random bytes is good enough for most applications, but does one just store those bytes raw in the database? Or is a hash stored? Or does the database record have an id and hash (similar to a username/password) and the token given to the user is an encoded string that contains the id and raw token? Most things I find when I search "How to store record of token in database" are questions about how to store an auth token given from an OAuth2 handshake or how to store a GitHub token securely. Nothing about how the identity service itself stores a token.<p>- How to store (or not store) records of one-time auth tokens like email auth/verification tokens<p>Similar to the above token question, though the threat model seems a little different because they're not long-lived tokens.<p>- Best practice for uphashing password hashes<p>I've played around with this idea of needing to rehash password hashes. For example, say you have password hashes a bcrypt hashes with 10 rounds. Then it's decided that bcrypt with that many rounds isn't great anymore with today's hardware and you should bump it up to 14 hashes, or switch to a different algorithm. Next time people login, you could use the old algorithm to validate then hash the password while you have it in plaintext, but what about the users who don't sign in? Couldn't you instead store the layers of hash rules (like the algorithm, salt, number of rounds without the hash) and the last "layer" be a hash with the latest algorithm? I vaguely remember someone suggesting that somewhere here, but when I tried to implement it, there wasn't really a standard format for storing those hashing rules beyond the PHC format that argon2 uses.<p>The goal of learning these sorts of things is not to go off and write my own auth service. At this point, I feel like rolling your own auth is treated a lot like rolling your own crypto: Leave it to the experts. But without expert writings, how are we to learn and maintain existing systems? Or attempt to improve them? Perhaps I'm just impatient and haven't spent the requisite time searching, but I'm hoping to get some ideas from this community.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=35215500">https://news.ycombinator.com/item?id=35215500</a></p>
<p>Points: 2</p>
<p># Comments: 4</p>
]]></description><pubDate>Sun, 19 Mar 2023 02:49:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=35215500</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=35215500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35215500</guid></item><item><title><![CDATA[New comment by tytho in "A 'CSS reset' for TypeScript, improving types for common JavaScript API's"]]></title><description><![CDATA[
<p>You can still use `tsc` to validate the jsdoc types. It will spit out errors when types don’t match.<p>You can use `tsc` to export the types defined in jsdoc and other projects that import your module will get all the intellisense and type checking as if it had been written in TypeScript.</p>
]]></description><pubDate>Fri, 03 Mar 2023 15:22:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=35010776</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=35010776</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35010776</guid></item><item><title><![CDATA[New comment by tytho in "A 'CSS reset' for TypeScript, improving types for common JavaScript API's"]]></title><description><![CDATA[
<p>I won’t speak for others, but I for one can’t stand the amount of extra packages needed to get a TypeScript project working. I need to install adapters for my linter, formatter, test runner, editor, bundler to name a few. Hopefully it all works together with all the other plugins and adapters. With the jsdoc version, I just install the `typescript` package, and I can use that to do the typechecking as well export types to be used by a TypeScript project. Sure it’s a bit more verbose, but I’d take that over tinkering with dependencies and configurations.</p>
]]></description><pubDate>Fri, 03 Mar 2023 15:17:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=35010692</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=35010692</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35010692</guid></item><item><title><![CDATA[New comment by tytho in "Pipe Operator (|>) For JavaScript"]]></title><description><![CDATA[
<p>There is another way that isn't _as_ kludgy, but still not as nice as the JavaScript proposal:<p><pre><code>    computation() |> then(&Map.put(my_map, key, &1))
</code></pre>
It's the big reason the `then/2` function was created from my understanding.</p>
]]></description><pubDate>Fri, 20 Jan 2023 16:09:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=34455057</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=34455057</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34455057</guid></item><item><title><![CDATA[New comment by tytho in "Complete Rewrite of ESLint"]]></title><description><![CDATA[
<p>From personal experience, you don’t ever “just use TypeScript”. You have to install plugins, adapters, parsers for every other tool (linters, formatters, bundlers) to also make them work with TypeScript. Adding TypeScript into the mix increases the number of dependencies (dev or not) dramatically. If you use the jsdoc flavor of TypeScript, you only need to install the one dependency.<p>Not saying it’s the best reason, but a reason nonetheless.</p>
]]></description><pubDate>Mon, 28 Nov 2022 13:36:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=33773457</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=33773457</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33773457</guid></item><item><title><![CDATA[New comment by tytho in "Hurl: Run and test HTTP requests with plain text"]]></title><description><![CDATA[
<p>That's definitely more convenient. I think it could be nice to have an additional test suite not written in the same language as the thing you're testing. It would force you to interact with your program the way the rest of the world would. Rather than relying on mocking, setting up test data, and reaching into the internals of your code, you have to set up your test data through the API. This wouldn't be feasible in most of work I've done in my professional career, but in an ideal world I think it could be beneficial not to rely on internals for testing, at least for some set of tests.</p>
]]></description><pubDate>Sat, 26 Nov 2022 02:40:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=33749336</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=33749336</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33749336</guid></item><item><title><![CDATA[New comment by tytho in "Is the AWS us-west-2 region experiencing an outage?"]]></title><description><![CDATA[
<p>We're seeing some issues possibly related to s3. Uploads working, but downloads seem to fail occasionally.</p>
]]></description><pubDate>Thu, 06 Oct 2022 17:02:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=33110897</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=33110897</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33110897</guid></item><item><title><![CDATA[New comment by tytho in "Ask HN: Anyone working 4 day week here, as an employee?"]]></title><description><![CDATA[
<p>My input probably isn’t as valuable except as a data point, but the company I work for (around 100 employees) moved all employees over to a 32 hour/4 day work week without a change in salary. No negotiation involved technically, though there were a few employees who have been talking about 4-day work weeks for a long time.<p>They made this change with a 6-month trial period where we would determine if we would keep it at a later time based on some sort of productivity measurements. Everyone, including the CEO, seemed to agree that trying to measure productivity would yield few meaningful metrics. The consensus at the end was that productivity was either the same or a little less, but we ended up keeping it anyway.</p>
]]></description><pubDate>Mon, 22 Aug 2022 11:11:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=32549846</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=32549846</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32549846</guid></item><item><title><![CDATA[New comment by tytho in "Server-Sent Events: an alternative to WebSockets"]]></title><description><![CDATA[
<p>You can pass a ‘withCredentials’ option.</p>
]]></description><pubDate>Sat, 12 Feb 2022 15:56:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=30313704</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=30313704</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30313704</guid></item><item><title><![CDATA[New comment by tytho in "Server-Sent Events: an alternative to WebSockets"]]></title><description><![CDATA[
<p>I think that works great! The complaint I’ve heard is that you may need to support multiple ways to authenticate opening up more attack surface.</p>
]]></description><pubDate>Sat, 12 Feb 2022 15:52:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=30313679</link><dc:creator>tytho</dc:creator><comments>https://news.ycombinator.com/item?id=30313679</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30313679</guid></item></channel></rss>