<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>Alaa Reuschenbach</title>
		<link>https://alaa.racing</link>
		<description>Blog and projects by Alaa Reuschenbach</description>

		
		<item>
			<title>Why I built my portfolio at alaa.racing</title>
			<link>https://alaa.racing/blog/2026-07-23_alaa_racing/</link>
			<description>&lt;p&gt;When I registered &lt;code&gt;alaa.racing&lt;/code&gt;, people asked me if I was starting a motorsport blog.&lt;/p&gt;
&lt;p&gt;I wasn&#39;t. But the domain says everything about how I work.&lt;/p&gt;
&lt;h2&gt;Speed as a philosophy&lt;/h2&gt;
&lt;p&gt;In Formula 1, a tenth of a second separates the podium from the pack. Every decision - tyre choice, pit timing, aero setup - is made quickly, with the data available, and committed to fully. There&#39;s no room for endless deliberation.&lt;/p&gt;
&lt;p&gt;I try to bring that same mindset to software.&lt;/p&gt;
&lt;h2&gt;The web should be fast too&lt;/h2&gt;
&lt;p&gt;I care deeply about web performance, not as a metric to game, but because slow websites cost people time and sometimes even money. Every unnecessary kilobyte, every render-blocking resource, every layout shift is friction between a user and what they came to do.&lt;/p&gt;
&lt;p&gt;This site is built with plain HTML, CSS, and &lt;a href=&quot;https://www.11ty.dev/&quot;&gt;Eleventy&lt;/a&gt;. No JavaScript framework, no build pipeline heavier than it needs to be. It loads fast because it was built to load fast, not as an afterthought.&lt;/p&gt;
&lt;h2&gt;A domain that means something&lt;/h2&gt;
&lt;p&gt;Most developer portfolios live at &lt;code&gt;firstname.dev&lt;/code&gt; or &lt;code&gt;firstname.io&lt;/code&gt;. Nothing wrong with that. But I wanted something that felt like &lt;em&gt;me&lt;/em&gt;: Someone who thinks about milliseconds in the browser the same way a racing engineer thinks about milliseconds on track.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;alaa.racing&lt;/code&gt; is a small reminder to myself: Keep moving, keep iterating, and never stop chasing the next improvement.&lt;/p&gt;
&lt;p&gt;Whether that&#39;s a faster lap time or a faster Time to First Byte.&lt;/p&gt;
</description>
			<pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
		</item>
		
		<item>
			<title>How I deployed treff.tech</title>
			<link>https://alaa.racing/blog/2026-07-10_treffpunkttech_deployment/</link>
			<description>&lt;p&gt;I&#39;ve already written about &lt;a href=&quot;/blog/2026-07-22_treffpunkttech&quot;&gt;why treff.tech exists&lt;/a&gt;. This time, I want to go a level deeper and walk through how it&#39;s actually deployed. The infrastructure, not the idea.&lt;/p&gt;
&lt;p&gt;The setup: &lt;strong&gt;Terraform&lt;/strong&gt; provisions the server, &lt;strong&gt;Ansible&lt;/strong&gt; configures it, and &lt;strong&gt;Mobilizon&lt;/strong&gt; (the software behind treff.tech) runs in &lt;strong&gt;Docker&lt;/strong&gt;. Nothing exotic, but I think there&#39;s value in showing how the pieces fit together, especially for anyone considering self-hosting a Fediverse project of their own.&lt;/p&gt;
&lt;h2&gt;The stack at a glance&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;├── ansible/
│   ├── group_vars/
│   ├── inventory/
│   ├── playbook.yml
│   └── roles/
│       ├── docker/
│       └── security/
├── Makefile
└── terraform/
    ├── main.tf
    ├── outputs.tf
    ├── terraform.tfvars.dev
    └── variables.tf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Terraform handles the &amp;quot;what exists&amp;quot; the server itself and its networking. Ansible handles &amp;quot;what&#39;s on it&amp;quot; Docker, hardening, and the running services. A &lt;code&gt;Makefile&lt;/code&gt; ties the two together so a full deploy is a single command, not a sequence of steps I have to remember.&lt;/p&gt;
&lt;h2&gt;Provisioning with Terraform&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;terraform/main.tf&lt;/code&gt; defines the actual infrastructure: the [cloud provider / VPS] instance treff.tech runs on, along with networking and DNS. &lt;code&gt;variables.tf&lt;/code&gt; and &lt;code&gt;terraform.tfvars.dev&lt;/code&gt; keep environment-specific values (like instance size and region) separate from the logic, so promoting the same setup to a production environment later is mostly a matter of swapping the &lt;code&gt;.tfvars&lt;/code&gt; file. &lt;code&gt;outputs.tf&lt;/code&gt; exposes things like the server&#39;s IP address, which Ansible&#39;s inventory then picks up.&lt;/p&gt;
&lt;p&gt;Keeping this layer thin was a deliberate choice: Terraform&#39;s only job is to make the server exist. Everything about what runs &lt;em&gt;on&lt;/em&gt; that server is Ansible&#39;s responsibility.&lt;/p&gt;
&lt;h2&gt;Configuration with Ansible&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;ansible/&lt;/code&gt; directory has two roles doing the real work:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;docker&lt;/code&gt;&lt;/strong&gt; — installs and configures Docker itself, so the host is ready to run containers. This is where Mobilizon (and its dependencies, like PostgreSQL) actually run.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;security&lt;/code&gt;&lt;/strong&gt; — hardens the server: [firewall rules / SSH configuration / fail2ban / automatic security updates — whichever you actually use]. This is a role I&#39;d rather run once and mostly forget about, which is exactly the point of automating it — it runs identically every time, instead of relying on me remembering every step manually.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;group_vars/all.yml.dev&lt;/code&gt; and &lt;code&gt;inventory/hosts.yml.dev&lt;/code&gt; follow the same environment-separation pattern as the Terraform side — dev values are kept apart from what would eventually be production values.&lt;/p&gt;
&lt;h2&gt;Tying it together with Make&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;Makefile&lt;/code&gt; wraps the Terraform and Ansible steps into simple commands — plan and apply infrastructure, then run the Ansible playbook against whatever Terraform just created. In practice, a full deploy or update usually comes down to one or two &lt;code&gt;make&lt;/code&gt; commands rather than remembering the right &lt;code&gt;terraform&lt;/code&gt; and &lt;code&gt;ansible-playbook&lt;/code&gt; invocations each time.&lt;/p&gt;
&lt;h2&gt;Why this stack, and not something else&lt;/h2&gt;
&lt;p&gt;Mobilizon itself is straightforward to run — it&#39;s a Dockerized app, so the actual &amp;quot;install Mobilizon&amp;quot; step is small. The more interesting engineering problem was making the &lt;em&gt;infrastructure&lt;/em&gt; reproducible: if the server disappeared tomorrow, I want to be able to stand it back up from these two directories, not from memory.&lt;/p&gt;
&lt;p&gt;Terraform and Ansible are also just tools I&#39;m comfortable with — nothing about treff.tech needed something more elaborate like Kubernetes. For a single-instance Fediverse platform, that would have been over-engineering for its own sake.&lt;/p&gt;
&lt;h2&gt;Takeaways&lt;/h2&gt;
&lt;p&gt;A few things I&#39;d tell someone setting up something similar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keep Terraform thin.&lt;/strong&gt; Let it provision infrastructure, and let configuration management (Ansible, in this case) own everything about the software layer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Separate environments early&lt;/strong&gt;, even if you only have one for now. The &lt;code&gt;.dev&lt;/code&gt; suffix convention here made it trivial to add a second environment later without restructuring anything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automate the boring stuff first.&lt;/strong&gt; The security-hardening role was the least exciting part to write and the most valuable to have automated — it&#39;s exactly the kind of task that&#39;s easy to skip a step on when done manually.
If you&#39;re thinking about self-hosting Mobilizon or a similar Fediverse project and have questions about the setup, feel free to reach out.&lt;/li&gt;
&lt;/ul&gt;
</description>
			<pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
		</item>
		
		<item>
			<title>treff.tech</title>
			<link>https://alaa.racing/blog/2026-07-01_treffpunkttech/</link>
			<description>&lt;p&gt;You&#39;ve probably run into this problem before: you&#39;re looking for tech events or conferences nearby, and the information is scattered across various platforms, groups, and newsletters. At the same time, many established providers rely on tracking, ads, or paywalls.&lt;/p&gt;
&lt;p&gt;That&#39;s exactly why we built treff.tech with support from &lt;a href=&quot;https://swaglab.rocks/&quot;&gt;SWAGLab&lt;/a&gt;, and I&#39;ve been maintaining the project ever since: an open, non-commercial platform that brings together tech events in the DACH region in one place.&lt;/p&gt;
&lt;h2&gt;What is treff.tech?&lt;/h2&gt;
&lt;p&gt;treff.tech collects community events such as user groups, conferences, and workshops from the German-speaking tech scene. Whether you&#39;re looking for an event or organizing one, treff.tech is meant to be the central place for it.&lt;/p&gt;
&lt;h2&gt;What makes treff.tech different&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No tracking, no ads, no selling of data&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built on Mobilizon&lt;/strong&gt; and part of the Fediverse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Free and open to everyone&lt;/strong&gt; – anyone can list events&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long-term goal:&lt;/strong&gt; develop the project together with the community and become independent
treff.tech is currently sponsored and operated by SWAGLab GmbH. But the goal is clear: a platform that belongs to the community, not to commercial interests.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Why treff.tech exists&lt;/h2&gt;
&lt;p&gt;Tech events are often scattered across many different platforms, and commercial providers usually rely on ads, tracking, and paywalls. I wanted to create a privacy-friendly, non-commercial alternative — one that nobody has to monetize for growth&#39;s sake.&lt;/p&gt;
&lt;h2&gt;Get involved&lt;/h2&gt;
&lt;p&gt;Do you organize meetups, conferences, or workshops yourself? Feel free to list them on &lt;a href=&quot;https://treff.tech&quot;&gt;treff.tech&lt;/a&gt; for free, or just send me the details and I&#39;ll take care of it.&lt;/p&gt;
&lt;p&gt;The platform is open to everyone — you can also &lt;a href=&quot;https://treff.tech/register/user&quot;&gt;create an account&lt;/a&gt; yourself and get started right away.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://treff.tech/about/instance&quot;&gt;Learn more about treff.tech here.&lt;/a&gt;&lt;/p&gt;
</description>
			<pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
		</item>
		

	</channel>
</rss>
