HNHacker News
TopNewBestAskShowJobs

swsieber

5,413 karma · joined February 4, 2014

[ my public key: https://keybase.io/ssieber; my proof: https://keybase.io/ssieber/sigs/sRmqw8z_cUpNdiltIxyUQM70_Z0inBaIsYxZhMcYQjc ]
submissionscomments
swsieber··on Shai Hulud launches second supply-chain attack
This article has quite a bit more information though.
swsieber··on In a U.S. First, New Mexico Opens Doors to Free Child Care for All
I would not say that free childcare is an investment in children.
swsieber··on The Death of Arduino?
I got a couple of RP2040 boards recently and I'm amazed at how easy it is to just get stuff done. Between the native usb support and the circuit python support it's been a breeze. I just got a couple of boards up and running uart in a daisy chain. It was intimidating, but the circuitpython docs made it relatively simple.
swsieber··on Linear algebra explains why some words are effectively untranslatable
What sticks out to me is that the first word in these ends with a vowel so they don't sound like compound words.
swsieber··on AI is making us work more
I didn't read that as AI making energy, water, food and shelter cheaper. I read it as "technology (generally) making energy, water, food and shelter will determine how the AI driven job changes are received"
swsieber··on The best worst hack that saved our bacon
With $MY_JOB in java, that was my assumption
swsieber··on Restrictions on house sharing by unrelated roommates
Wow. I went to college in Utah and had 5 roommates. A total of two rooms. It was a blast.
swsieber··on Why do browsers throttle JavaScript timers?
I think it's still the case. The 4ms happens if you call setTimeout nested several times. I don't know the exact limit. But it's 5-ish times where that kicks in IIRC.

Edit: Here's the MDN bit on that, I was correct:

https://developer.mozilla.org/en-US/docs/Web/API/Window/setT...

> browsers will enforce a minimum timeout of 4 milliseconds once a nested call to setTimeout has been scheduled 5 times.

And the link from there to the spec about that:

https://html.spec.whatwg.org/multipage/timers-and-user-promp...

> If nesting level is greater than 5, and timeout is less than 4, then set timeout to 4.

swsieber··on Launch HN: April (YC S25) – Voice AI to manage your email and calendar
Given that they dented their call while doing the demo, it doesn't seem weird to fixate on. I think the criticism is valid, given the framing presented and the pitch used to investors.

Also, audio interfaces incur different amounts of mental load / distraction. I wouldn't be surprised if this was more distracting than just talking to a person.

swsieber··on Linear sent me down a local-first rabbit hole
Yeah... true p2p is pretty hard though, to the point that even stuff like WebRTC requires external servers to setup the data sync portion. It would be nice to develop something that worked at that layer though.

IIUC, InstantDB is open source with a docker container you can run yourself, but at this point it's designed to run in a more cloud-like environment than I'd like. Last time I checked there was at least one open PR to make it easier to run in a different environment, but I haven't check in recently.

swsieber··on Linear sent me down a local-first rabbit hole
I think the current crop of sync engines greatly benefit from being web-first because they are still young and getting lots of updates. And mobile updates are a huge pain compared to webapp updates.

The PWA capabilities of webapps are pretty OK at this point. You can even drive notifications from the iOS pinned PWA apps, so personally, I get all I need from web apps pretending to be mobile apps.

swsieber··on Linear sent me down a local-first rabbit hole
Honestly, having used InstantDB (one of the providers listed in their post), I think it'd be a pretty nice fit.

I've been writing a budget app for my wife and I and I've made it 100% free with 3rd party hosting:

* InstantDB free tier allows 1 dev. That's the remote sync.

* Netlify for the static hosting

* Free private gitlab ci/cd for running some email notification polling, basically a poor mans hosted cron.

swsieber··on Local-first software (2019)
Files come with certain restrictions, which don't matter for certain types of applications. But for others they do.

I think it boils down to provenance and concurrency. If we edit the same line a file, that's ba merge conflict when it really should be simple and something I shouldn't have to bother with. And when we do do the same line edit, I'd love to have provenance on that data.

Granted, those aren't local first thing exactly, but I think there will be apps that want all of that.

swsieber··on Local-first software (2019)
I've been using instantdb in anger for the past month or so for a side project of mine. I'm building a personal budget app.

I should probably write a blog post, but I will say that I investigated power sync, electricSQL, livestore and powersync before. I briefly looked at jazz tools but wanted something a bit more structured.

I'm pretty impressed this far. I've actually been writing it with Vue and a community library. Permissions were a bit tricky, but once I figured it out it was simple. And I like their magic email login. And I like their dashboard/reply, but there are a few big changes I would make there to make it less fiddly.

I love that it's open source, and that if I want to, I could self host it.

As for the other options:

- jazz wasn't structured enough

- livestore came off as too fiddly with the event store, but it was appealing. That the dev tools are payealled was disappointing, but understandable

- electriSQL really only provided half a solution (read, not the write model

- couchDB / pouchDB wasn't structured enough for me, and I wanted better cross document support than was obvious / baked in.

- did not investigate zero really

swsieber··on Local-first software (2019)
I agree that not every app needs it's own sync engine, but I disagree with your framing that the file system is the universal way to embrace local first. I have two reasons.

First is that yeah, local first, but I also want concurrency. If it's just local first, you're right, any old sync will do. But I want more than that. I want to not have to think (a la dropbox, being slick). I want my wife and I to be able to make separate edits on our phones when we're in a dead zone.

Second is that sync works a lot better when it has deep knowledge of the data structure and semantics. Git and box both have significant shortcomings, but both exacerbated by the concurrency desire.

swsieber··on Ask HN: What Are You Working On? (June 2025)
I'm building a budget app for my wife and myself.

Basic goals:

- Web based for zero update latency

- Have it work offline

- Automatically import transactions from my banks

- No running/hosting cost

- Secure

Tools used so far:

- InstantDB for the datastore, providing the offline capability too

- A gmail account that automatically gets forwarded bank alerts for purchases

- Gitlab.com w/scehduled pipelines for cron based email-syncing

- Netlify for the free hosting

- InstantDB magic codes / email links for securing the data

I'm at the point where I can track and categorize purchases, including split transactions.

Next steps:

- Add in date ranges for reporting / data views; e.g. show expenses incurred in a one month period instead of for all time.

- Add in planned / project transactions for month forecasting

- Statement import & import reconciliation and statement reconciliation

- Scrape company specific digital reciept emails (like Amazon) to autopopulate more transaction data

And that'll be the end of the stuff I can do for free. I think I will add features that require money and/or dedicated hardware though:

- OCRing receipts -> autopopulated transaction data / description

- Using chatgpt to suggest categorizations

- Scrape extra data from my bank sites, like physical addresses of entities involved in charges.

swsieber··on I will do anything to end homelessness except build more homes (2018)
I think the key thing is to frame the new city as a city, and not just an extension. As part of that you'd need to keep enough space to let business pop up, etc. I think part of the problem extensions run into is that they don't want to be a city.
swsieber··on Bento: A Steam Deck in a Keyboard
It might be that your pupillary distance is bigger than what the viture can handle. I have a pair of crap glasses I'm playing around with, and supposedly you can get custom lenses that account for your pupillary distance.
swsieber··on Luxe Game Engine
Given that the prices are going up in with each tier, and you can get into that tier just by having a lot of money (x users OR x money), I'm not optimistic it'll be cheaper per user.
swsieber··on Apple announces Foundation Models and Containerization frameworks, etc
Oh, it's not. I'm an IC totally unwilling to become a manager. Some people just enjoy coding.
swsieber··on Rust compiler performance
What about crates as the unit of compilation? I am genuinely curious because it's not clear to me what trade-offs there are around that decision.
swsieber··on Microsoft Office migration from Source Depot to Git
Thanks!
swsieber··on NPM: Issues with package install, package publish, and login
And as a general timeline (IF status times are accurate. I trust the AWS the most due to the down detector stuff, which means it really could be all at the same time anyway due to lag in self-reporting incidents)

~1:00 CT: AWS outage start, GCP outage start

~1:15 CT: NPM registry

~1:19 CT: Github & Cloudflar

swsieber··on Microsoft Office migration from Source Depot to Git
I'm a bit surprised git doesn't offer a way to checkout only specific parts of the git tree to be honest. It seems like it'd be pretty easy to graft on with an intermediate service that understands object files, etc.
swsieber··on Ask HN: What cool skill or project interests you, but feels out of reach?
Hobby electronics & robotics. I can make an LED blink on a ESP8266 (it's been a while), but that's it. I'd like to get more familiar with a multimeter, figuring out broken kids toys, etc. but it's a bit daunting. Maybe there's too many options and not enough constraints. I'm not sure.
swsieber··on Apple announces Foundation Models and Containerization frameworks, etc
No, this sounds like an IC resisting becoming a manager.
swsieber··on Java Virtual Threads Ate My Memory: A Web Crawler's Tale of Speed vs. Memory
Good timing. I was actually reading the official docs the other day on virtual threads, and it has a big section decidicated to rate limiting virtual threads:

"The hardest thing to internalize about virtual threads is that, while they have the same behavior as platform threads they should not represent the same program concept."

...

"Sometimes there is a need to limit the concurrency of a certain operation. For example, some external service may not be able to handle more than ten concurrent requests. Because platform threads are a precious resource that is usually managed in a pool, thread pools have become so ubiquitious that they're used for this purpose of restricting concurrency, "

...

"But restricting concurrency is only a side-effect of thread pools' operation. Pools are designed to share scarce resources, and virtual threads aren’t scarce and therefore should never be pooled!

"When using virtual threads, if you want to limit the concurrency of accessing some service, you should use a construct designed specifically for that purpose: the Semaphore class."

...

"Simply blocking some virtual threads with a semaphore may appear to be substantially different from submitting tasks to a fixed thread pool, but it isn't. Submitting tasks to a thread pool queues them up for later execution, but the semaphore internally (or any other blocking synchronization construct for that matter) creates a queue of threads that are blocked on it that mirrors the queue of tasks waiting for a pooled thread to execute them. Because virtual threads are tasks, the resulting structure is equivalent"

"Even though you can think of a pool of platform threads as workers processing tasks that they pull from a queue and of virtual threads as the tasks themselves, blocked until they may continue, the underlying representation in the computer is virtually identical. _Recognizing the equivalence between queued tasks and blocked threads will help you make the most of virtual threads._" (emphasis mine)

So it was cool seeing him arrive at the same conclusion (or he read the docss). Either way it was a nice timely article.

Link to the docs: https://docs.oracle.com/en/java/javase/21/core/virtual-threa...

swsieber··on Coding without a laptop: Two weeks with AR glasses and Linux on Android
I think custom prescriptions for the xreal air 1 are around $80: https://vroptician.com/prescription-lens-inserts/nreal-air

Which I could see that being a deal breaker, but maybe it's lower than you thought

swsieber··on Coding without a laptop: Two weeks with AR glasses and Linux on Android
Some ar glasses support adjustable focus, and others support custom prescription lenses.
swsieber··on Evolution of Rust Compiler Errors
The wrong field error message change in 1.87 really is brilliant. Instead of just pointing out the correct field, it actually points out the spelling change needed to get to that field.
← PreviousPage 2 of 34Next →