HNHacker News
TopNewBestAskShowJobs

maxmcd

1,938 karma · joined September 7, 2011

maxmcd.com

gmail: max.t.mcdonnell

github.com/maxmcd

submissionscomments
maxmcd··on AI Guesses Your Accent
It might be a kindness to redact those emails before you can no longer edit your post.
maxmcd··on Bandcamp Wrapped
Yes, you might want to paste it into your browser, for reasons...
maxmcd··on Bandcamp Wrapped
More info here: https://macwright.com/2024/12/06/bandcamp-wrapped
maxmcd··on 7 Databases in 7 Weeks for 2025
I think "source available" at this point: https://news.itsfoss.com/cockcroachdb-no-open-source/
maxmcd··on 1B nested loop iterations
Another fave of mine by this person: https://benjdd.com/az/
maxmcd··on Transactional Object Storage?
Yeah I think it's very interesting to compare the two. SlateDB expects a single writer and fences writes. This means you can make some serious savings on S3 costs because you're using S3 for consistency but you're batching writes.

GlassDB is much more accessible for smaller volume workloads, but gets very costly for high volume because of requests to S3 per-transaction. In-turn the consistency model is easier to reason about because the system is entirely stateless.

maxmcd··on Contentlesshtml – An HTML page served entire in HTTP headers
I think if you go above 32kb for the size of all headers you'll start to see things breaking in various libraries and services.
maxmcd··on The $5000 Compression Challenge (2001)
Is there any more information about this solution?
maxmcd··on Web Locks API
ah! nice
maxmcd··on Web Locks API

  class Lock {
    #release: () => void | undefined;
    constructor(public name: string) {}
    acquire() {
      if (this.#release !== undefined) throw new Error("Already locked");
      navigator.locks.request(this.name, async (lock) => {
        await new Promise<void>(resolve => {
          this.#release = resolve;
        });
      });
    }
    release() {
      if (this.#release === undefined) throw new Error("Not locked");
      this.#release();
    }
  }
maxmcd··on Intentrace: Strace for Everyone
Huh, I did not realize I was settling for something so incomprehensible compared to this. Really nice to see. Maybe there are other nice tools like this?
maxmcd··on Show HN: BemiDB – Postgres read replica optimized for analytics
Whoops, I forgot that tables maintained in the db are not the same as remote archives. :|
maxmcd··on Show HN: BemiDB – Postgres read replica optimized for analytics
Using duckdb and apache iceberg means that you can run read replicas without any operational burden. Clickhouse is amazing, but they do not allow you to mount dumb read replicas to object storage (yet).

I can imagine this product is a very elegant solution for many types of companies/teams/workloads.

maxmcd··on WebSockets cost us $1M on our AWS bill
Yes, maybe they're talking about this: https://en.wikipedia.org/wiki/TCP_window_scale_option
maxmcd··on WebSockets cost us $1M on our AWS bill
Please explain?
maxmcd··on Every boring problem found in eBPF (2022)
There is an explanation here: https://lwn.net/ml/all/20241105035101.GD41004@maniforge/
maxmcd··on Build a serverless ACID database with this one neat trick (atomic PutIfAbsent)
I have also been thinking about this:

https://slatedb.io/ is new and KV on object storage. Maybe helpful.

There is lots of similar work over ipfs, I have not had the chance to experiment yet, but I'd like to see what a workflow is like with (eg): summa: https://github.com/izihawa/summa

I tried to implement trigram search on object storage using Zoekt: https://github.com/sourcegraph/zoekt, but I found that common queries load 30-40% of the entire index, so setting it up without some kind of caching strategy felt a little ridiculous.

maxmcd··on Show HN: OpenFreeMap – Open-Source Map Hosting
Hey, just curious. If you have no Cloud/LB/CDN how are you routing requests to datacenters? Anycast? DNS? Something else?
maxmcd··on Fair: A Go library for serving resources fairly
In preemptive multitasking you are trying to get all the work done as quickly as possible, but with FAIR and similar systems you want to make sure that a single client/user/resource cannot steal an inordinate amount of capacity.

I do not think languages/runtimes typically implement that kind of prioritization/limiting mechanism.

maxmcd··on gRPC: 5 Years Later, Is It Still Worth It?
Twirp is lovely, we kind of hit a wall when using it internally because it doesn't have a streaming story: https://github.com/twitchtv/twirp/issues/3

If you don't need to stream data it is excellent.

maxmcd··on How we built Townie – an app that generates fullstack apps
There hasn’t been a ton of work in this area, but most things will work in Deno if you import them directly. You’d need to figure out blob storage and sqlite but I don’t think it would be the biggest lift to do so.
maxmcd··on Breaking down a record-setting day on the Texas grid
afaik there are no residential loads in emergency response programs in Texas

ECRS is a program run by ERCOT, they trigger the battery discharge directly, or in some situations the resources might respond to an under-frequency relay.

maxmcd··on Breaking down a record-setting day on the Texas grid
The 2 GW of ECRS capacity does include Demand Response resources that are reducing their load to provide the capacity.

I imagine the other ERCOT demand response programs were also dispatched.

maxmcd··on Russ Cox is stepping down as the Go tech lead
Agreed, see the index of those posts: https://research.swtch.com/vgo

Other contenders I find myself sharing and re-reading:

- https://swtch.com/~rsc/regexp/regexp1.html

- https://swtch.com/~rsc/regexp/regexp4.html

- https://research.swtch.com/bisect

- https://research.swtch.com/zip

maxmcd··on Why is spawning a new process in Node so slow?
Do you have a sense for why things were so much faster in Go and Rust if they are both using a single process? I have also been experimenting with napi-rs which uses https://nodejs.org/api/n-api.html and allows you to run Rust in threads alongside the Node process. Performance with that approach has been very good, so I have wondered about the within-process limitations.
maxmcd··on Why is spawning a new process in Node so slow?
Both Go and Rust had CPU near 100% on all cores. Most of the Deno and Bun workloads were at around 80%, some of the slower Node benchmarks were around 40-60% and that increased over time, I think most of the fastest benchmarks were seeing very good CPU utilization across all runs.

Sorry, this is all from memory of just having `btop` open for some of the benchmarks. Maybe in a future post I will dig into CPU utlization more.

maxmcd··on Why is spawning a new process in Node so slow?
Ah, I will add it to the post, an accidental omission. This was all on `Linux 6.8.0-35-generic`.
maxmcd··on Why is spawning a new process in Node so slow?
Yes, apologies for the less than satisfying conclusion. I am planning a part 2 of this post where I hope to actually answer the question.

In the meantime the discussion on lobste.rs includes some lower-level speculation: https://lobste.rs/s/tr8ozm/why_is_spawning_new_process_node_...

maxmcd··on Why is spawning a new process in Node so slow?
Thanks for noting it. It do indeed mix those two up all the time. Pushed a fix!
maxmcd··on File.haus – Anonymously upload up to 300GB
Hmm, couldn't it be possible to encrypt the file contents in the browser and provide a download link with a secret key in it?

I wonder if this kind of service could be implemented without needing to trust the host at all?

← PreviousPage 3 of 18Next →