Aussie living in the San Francisco Bay Area.
Coding since 1998.
.NET Foundation member. C# fan
https://d.sb/
Mastodon: @dan@d.sb

  • 7 Posts
  • 988 Comments
Joined 1 year ago
cake
Cake day: June 14th, 2023

help-circle

  • I’ve seen many a terrible containerized monolithic app.

    I’ve seen plenty of self-hosters complain when an app needs multiple containers, to the point where people make unofficial containers containing everything. I used to get downvoted a LOT on Reddit when I commented saying that separating individual systems/daemons into separate containers is the best practice with Docker.



  • Are there better alternatives for newbs who just wanna self host stuff?

    Docker is great for a beginner, and even for an expert too. I’ve been self-hosting for 20 years and love Docker.

    Back in “the old days”, we’d use Linux-VServer to containerize stuff. It was a bit like LXC is today. You get a container that shares the same kernel, and have to install an OS inside it. The Docker approach of having an immutable container and all data stored in separate volumes was a game changer. It makes upgrades so much simpler since it can just throw away the container and build a new one.

    The main alternative to Docker is Podman. Podman uses the same images/containers as Docker - technically they’re “OCI containers” and both Docker and Podman implement the OCI spec.

    Podman’s architecture is different. The main difference with Podman is that it never runs as root, so it’s better for security. With Docker, you can either run it as root or in rootless mode, but the default is running it as root.


  • You can use WebAssembly today, but you still need some JS interop for a bunch of browser features (like DOM manipulation). Your core logic can be in WebAssembly though. C# has Blazor, and I wouldn’t be surprised if there’s some Rust WebAssembly projects. I seem to recall that there’s a reimplementation of Flash player that’s built in Rust and compiles to WebAssembly.






  • I’m starting to like the htmx model a lot. Server-rendered app that uses HTML attributes to configure the dynamic bits (e.g. which URL to hit and which DOM element to insert the response into). Don’t have to write much JS (or any in some cases).

    you literally can’t hyperlink to any of the data

    I thought most React-powered frameworks use a URL router out-of-the-box these days? The developer does need to have a rough idea what they’re doing, though.





  • That was one nice thing about Java. You could bundle the entire app in one .jar or .war file (a .war is essentially the same as a .jar but it’s designed to run within a Servlet container like Tomcat).

    PHP also became popular in the PHP 4.x era because it had a large standard library (you could easily create a PHP site with no third-party libraries), and deployment was simply copying the files to the server. Classic ASP was popular before it, but it had a very small standard library and relied heavily on COM components which had to be manually installed on the server.






  • your external IPs might change, such as when moving between ISPs

    This is true

    You would NAT a hosts external address to its internal address.

    This is usually not true.

    If you’re worried about your external IP changing (like if you’re hosting a server on it), you’d solve it the same way you solve it with IPv4: Using dynamic DNS. The main difference is that you run the DDNS client on the computer rather than the router. If there’s multiple systems you want to be able to access externally, you’d habe multiple DDNS hostnames.


  • Having a large range has a number of benefits though. Companies that have dozens of IPv4 ranges may be fine with a single IPv6 range, which simplifies routing rules.

    A lot of features in IPv6 take advantage of the fact that networks have at least a /64 range (at least if they’re built correctly according to RFC4291 and newer specs). SLAAC is a major one: Devices can auto-configure IP addresses without having to use something like a stateful DHCP server.