1,868 karma · joined December 2, 2015
Building CAD at Zoo.dev. Previously Cloudflare (Tunnel, Zero Trust, Data Loss Prevention).
https://blog.adamchalmers.com
https://twitter.com/adam_chal @adamchalmers.com on Bluesky
The game suffered imo because the puzzles had nothing to do with the story. They felt arbitrary and disconnected from the world, unlike the puzzles in Myst. Solving them never felt very intriguing, I was motivated to solve them just because that's what you have to do to finish the game, rather than motivated to solve them because they were interesting.
I'm glad the Rust project is willing to ship useful but limited features quickly, see how people use them, and then iterate and slowly remove the restrictions in the future. I think it'll be more productive than taking another 3 years to solve all the remaining rough edges and problems.
This is only partly true -- if you want to `spawn` a task on another thread then yes it has to be Send and 'static. But if you use `spawn_local`, it spawns on the same thread, and it doesn't have to be Send (still has to be 'static).
Never wrote a Java web server sorry cannot compare.
Being able to write a lot of functional Rust and drop down to imperative/mutation when necessary also eases the curve compared to Haskell.
But, people _have_ actually read it, which is nice. I've hired at least one person through my blog (he emailed me after reading it), and he was awesome to work with. A lot of coworkers have messaged me saying "hey, I was googling for this problem I'm having, and I found your blog, and I realized you work at the company, so thank you!" I've benefited so much from reading developer blogs throughout my career, so it's nice to be able to give back and help others too.
I think it's helped me get better at technical writing and show employers that I can do more than just write code too.
So it was _really_ interesting to listen to this podcast live and think about truly high performance networking. When your requests and responses are all within one rack on your data center, the bandwidth, latency and throughput bottlenecks are MUCH more likely to be your code and hardware. So Oxide has to think about all these high-performance use-cases that I've never once had to stop and think about.
This episode felt like peeking behind the curtain into forbidden knowledge. Great episode.
On the other hand, once you know k8s, it means you don't have to learn the specifics of any cloud platform. For most of my career I've worked in places that can't use cloud providers. I honestly dread having to learn all the different GCP or AWS tools/apis at a future job. But now that I have spent a lot of time learning k8s, it's nice to know that I can build on any cloud platform in the future, or self-hosted servers, and reuse the standard k8s APIs that I use at this job.
If I was building a startup, I'd use whatever the majority of engineers were already familiar with -- k8s, aws, gcp, whatever.
One of the upsides of k8s is that it gives you a general, platform-agnostic way to describe this, on AWS or GCP or self-hosted or whatever. The downside is that it's more flexible and therefore more abstract than any particular provider. The upside is that you only have to learn one set of concepts (in theory).
It's still convenient, but in really limited circumstances, AFAICT. This week I'll be going through the various Rust projects I maintain at work, seeing if there's useful places for let-else.
Now the problem is just how to manage all the cables that come from having a gaming PC and work laptop that use the same keyboard and monitor. I have a KVM switch but I can't hide it under the desk if I want to press it.
I helped develop Tunnel over the last ~3 years, and I love it, but it's definitely overkill if you just want to serve some static files on the edge.
(Please delete if this goes against HN policy, I'm trying not to be a shill here, just help tristor avoid spending an hour configuring page rules and cache policies)