Archive : 01 Jan 2024
-
Mitosis in the Gray-Scott model : writing shader-based chemical simulations
The Gray Scott Model of Reaction Diffusion is an interesting instance of emergence. By simulating a small chemical system that involves only a few components and reactions, complex and mesmerizing patterns appear.
You can interact with the simulation above by clicking on it to drop some green and you can reset it by pressing the previous (⏮️) button.
Although the local rules and the underlying math are quite simple, there is some heavy computations involved. For each time step in the simulation, we must apply these rules to compute the concentrations of every involved component at every possible location. Running such a simulation on a CPU would be extremely slow. GPUs, however, are specifically built to handle large volumes of a single small computation in parallel.
This post is an introduction to writing such simulations using GLSL ES, with a basic implementation of the Gray Scott model that runs in the browser on Shadertoy that is less than 100 lines of code.
Read more... -
Increase privacy by using nginx as a caching proxy in front of a map tile server
If you are self-hosting any service, chances are that you care about increasing your privacy by minimizing your reliance on third-party services. If this is the case, you may be bothered when an application you are hosting relies on such third-parties. This can be the case when some features are too resource intensive for personal servers.
One example of this is map tile servers, which are relied upon for map features in a variety of software, such as Immich (awesome Google Photos replacement !). Such tile servers host a whole world map at several zoom levels, and provide clients with map fragments (tiles) for the requested coordinates and zoom level. Unfortunately, it is not easy to host such a tile server : the easiest solution I could find still requires more than 100GB of disk space to serve a full world map. On the other hand, using a third party for this makes clients send a bunch of requests to them. These requests will give the third-party details about any location viewed on the map. It will also generally include other informations, such as the URL you’re viewing the map from and clients IP addresses.
This article will show how to build a caching reverse proxy in order to mitigate these privacy concerns while avoiding the need to host more than 100GB of map data. As a concrete application, the caching proxy will then be used as a tile provider for an Immich instance.
Read more...