HN user

marceldegraaf

565 karma

Co-founder & CTO at https://walterliving.com

[ my public key: https://keybase.io/marceldegraaf; my proof: https://keybase.io/marceldegraaf/sigs/_o2CStKXOpGbk-mZOHYiPxq2ktNONm9yLPQPFq9v5uA ]

marceldegraaf.at.hn

Posts2
Comments116
View on HN

It's perfect for gaming: silent, reliable network and Bluetooth, and supports basically any TV or projector. Works great with Xbox Elite controllers.

Only downside is that keyboard/mouse can't connect to Apple TV, so it's controller-only.

I have my Windows gaming rig in a rack at home, and run Apollo [1] on it. Using that, I can game on any Apple TV (with an Xbox controller) or the MacBook (connected to a display/keyboard/mouse) anywhere in my home. With wired networking 60fps at 4K is no problem at all.

This would be easy to set up the other way around, too: having a gaming rig on your desk with Moonlight, and running Linux on another machine somewhere in the network with Apollo to host the development setup.

No KVM (or KVM-equipped monitor) or other special hardware needed.

1: https://github.com/ClassicOldSong/Apollo

A BEAM process is not an OS thread. The way I understand it, a BEAM process is just a very small memory space with its own heap/stack, and a message system for communication between BEAM processes.

The BEAM itself runs multiple OS threads (it can use all cores of the CPU if so desired), and the BEAM scheduler gives chunks of processing time to each BEAM process.

This gives you parallel processing out of the box, and because of the networking capabilities of the BEAM, also allows you to scale out over multiple machines in a way that's transparent to BEAM processes.

Counterpoint on the "going all-in": we have a 7 year old Elixir/Phoenix project that currently sits at ~100K LOC and I couldn't be happier.

It has been absolutely wonderful building this with Elixir/Phoenix. Obviously any codebase in any language can become a tangled mess, but in 7 years we have never felt the language or framework were in our way.

On the contrary: I think Elixir (and Phoenix) have enabled us to build things in a simple and elegant way that would have taken more code, more infrastructure, and more maintenance in other languages/frameworks.

Not OP, but I made the move from Ruby/Rails to Elixir years ago, so I'll try to answer from my perspective.

Elixir is a functional programming language based on the "BEAM", the Erlang VM. We'll get back to the BEAM in a moment, but first: the functional programming aspect. That definitely took getting used to. I remember being _very_ confused in the first few weeks. Not because of the syntax (Elixir is quite Ruby-esque) but because of the "flow" of code.

However, when it clicked, it was immediately clear how easy it becomes to write elegant and maintainable code. There is no global state in Elixir, and using macros for meta-programming are generally not encouraged. That means it becomes very easy to reason about a module/function: some data comes in, a function does something with that data, and some data comes out. If you need to do more things to the data, then you chain multiple functions in a "pipe", just like how you chain multiple bash tools on the command line.

The Phoenix framework applies this concept to the web, and it works very well, because if you think about it: a browser opening a web page is just some data coming in (an HTTP GET request), you do something with that data (render a HTML page, fetch something from your database, ...) and you return the result (in this case as an HTTP response). So the flow of a web request, and your controllers in general, becomes very easy to reason about and understand.

Coming back to the BEAM, the Erlang VM was originally written for large scale (as in, country size) telephony systems by Ericsson. The general idea is that everything in the BEAM is a "process", and the BEAM manages processes and their dependencies/relationships for you. So your database connection pool is actually a bunch of BEAM processes. Multi-threading is built-in and doesn't need any setup or configuration. You don't need Redis for caching, you just have a BEAM process that holds some cache in-memory. A websocket connection between a user and your application gets a separate process. Clustering multiple web servers together is built into the BEAM, so you don't need a complex clustering layer.

The nice thing is that Elixir and Phoenix abstract most of this away from you (although it's very easy to work with that lower layer if you want to), but you still get all the benefits of the BEAM.

I recently replaced the shock dampers on our Miele washing machine (~10 years old) and I was amazed how well designed and ergonomic the inside of the machine is.

Parts are very easy to get at, all screws are Torx of identical size, and there's one very obvious way to take the machine apart and put it back together again. Made the replacement a breeze.

It's funny that you mention this, and it made me take some time to appreciate I've been working with Elixir full-time for almost 10 years now, and the entire experience has been so... stable.

There's been little drama, the language is relatively stable, the community has always been there when you need them but aren't too pushy and flashy. It all feels mature and – in the best possible way – boring, and that is awesome.

Monodraw 11 months ago

Sidenote: thanks so much for taking the time to write the Oban docs. I'm a big user (and fan) of Oban, and the docs are fantastic.

DMA has not been used against EU tech companies because US tech companies are clearly the market leaders in the area the DMA is concerned with. The DMA exists to make sure that companies (from the EU, US, or elsewhere) comply with EU regulations regarding privacy, tracking, and consumer rights.

It's not a "tax" on US companies, it's just that US companies don't bother to comply with the regulations that apply in the EU, and thus get fined.

VAT is not a "sneaky backdoor tax", it's imposed on all goods, regardless of where they're produced or imported from.

DMA (and similarly, GDPR) are enforced in EU countries just as much. It's just that the US tends to have more gigantic tech companies that do shady things with user data. Apparently the US doesn't care, but the EU actually does, and so it enforces its laws.

Best decision of last year for my homelab: run everything in Proxmox VMs/containers and back up to a separate Proxmox Backup Server instance.

Fully automated, incremental, verified backups, and restoring is one click of a button.

It's due to the narcotic effects of nitrogen that GUE (Global Underwater Explorers, a diving association rooted in tech/cave diving) uses EAN32 (32% oxygen) as their standard breathing gas.

They're also more conservative in their recreational diving depths: 30m (100ft) is the recreational limit, beyond that technical certification and a helium-based breathing gas (e.g. Trimix) are required.

That was an amazing set. The first one I bought from my own hard-saved cash as a kid. Really fun to build and amazing (and informative) to see the working steering, differential, suspension, and gear train assemblies.

I have this set laying around, mostly complete. Should really rebuild it someday!