1
Fork 0

Compare commits

..

No commits in common. "90eb4c8e856c5863614379e41f55019871d56927" and "2f131165b3efd65b676b948fb569639fa7382549" have entirely different histories.

71 changed files with 248 additions and 258 deletions

View file

@ -2,7 +2,6 @@
permalink: "/{{ year }}/{{ month }}/{{ day }}/blog-static" permalink: "/{{ year }}/{{ month }}/{{ day }}/blog-static"
title: "blog? static!" title: "blog? static!"
published_date: "2011-01-15 15:54:00 +0100" published_date: "2011-01-15 15:54:00 +0100"
layout: post.liquid
data: data:
route: blog route: blog
--- ---

View file

@ -22,14 +22,13 @@ You can find the script here: [watch.js](http://tmp.fnordig.de/watch.js). It's m
The small app.js is just this: The small app.js is just this:
```javascript socket = new io.Socket('localhost');
socket = new io.Socket('localhost'); socket.connect();
socket.connect(); socket.on('message', function(data){
socket.on('message', function(data){
data = JSON.parse(data); data = JSON.parse(data);
if(data.reload) if(data.reload)
window.location.reload(); window.location.reload();
}); });
``` {:lang="javascript"}
So next thing: individual pages for posts, maybe templates. So next thing: individual pages for posts, maybe templates.

View file

@ -19,23 +19,21 @@ As I really like [node.js](http://nodejs.org/) I wanted to know how it handles v
It's as easy as this: It's as easy as this:
```javascript var http = require('http');
var http = require('http'); var server = http.createServer(function (request, response) {
var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type":"text/plain"}); response.writeHead(200, {"Content-Type":"text/plain"});
response.end ("Hello World!\n"); response.end ("Hello World!\n");
console.log("Got a connection"); console.log("Got a connection");
}); });
server.listen(80, "2a01:xxxx:xxxx:xxxx::2"); server.listen(80, "2a01:xxxx:xxxx:xxxx::2");
console.log("Server running on localhost at port 80"); console.log("Server running on localhost at port 80");
``` {:lang="javascript"}
Just pass the IPv6 address as the host parameter to `server.listen`. Just pass the IPv6 address as the host parameter to `server.listen`.
This listens on just one IP; it's possible to listen on all, similar to the `0.0.0.0` for IPv4: This listens on just one IP; it's possible to listen on all, similar to the `0.0.0.0` for IPv4:
```javascript server.listen(80, "::0");
server.listen(80, "::0"); {:lang="javascript"}
```
Other things worth to mention: Other things worth to mention:

View file

@ -34,6 +34,7 @@ Adding syntax-highlighted code in your post now works like this:
even multi-line even multi-line
and define language after code block and define language after code block
{:lang="ruby"} {:lang="ruby"}
{:lang="text"}
And now some real highlighting to show it in action: And now some real highlighting to show it in action:

View file

@ -15,11 +15,10 @@ My SSL certificate is signed by [cacert][] (they approved me at last year's FrOS
If you're using nginx, all you need to do is adding the following lines to your config: If you're using nginx, all you need to do is adding the following lines to your config:
``` listen 443 ssl;
listen 443 ssl; ssl_certificate /path/to/your/cert.pem;
ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem;
ssl_certificate_key /path/to/your/key.pem; {:lang="text"}
```
If you followed some of the latest news around the scene, you probably heard of the [diginotar debacle][diginotar]. This should make clear how broken the system is and how unsecure these SSL certificates can be with all those CAs around. If you followed some of the latest news around the scene, you probably heard of the [diginotar debacle][diginotar]. This should make clear how broken the system is and how unsecure these SSL certificates can be with all those CAs around.

View file

@ -33,18 +33,16 @@ etherpad runs as an own user named `etherpad` and is monitored by monit.
The monitoring is as simple as that, `/etc/monit/apps/etherpad.monit`: The monitoring is as simple as that, `/etc/monit/apps/etherpad.monit`:
``` check process etherpad
check process etherpad
with pidfile /var/run/etherpad-lite.pid with pidfile /var/run/etherpad-lite.pid
start program = "/home/etherpad/etherpad-lite/daemon.sh start" start program = "/home/etherpad/etherpad-lite/daemon.sh start"
stop program = "/home/etherpad/etherpad-lite/daemon.sh stop" stop program = "/home/etherpad/etherpad-lite/daemon.sh stop"
if totalmem is greater than 300 MB for 10 cycles then restart # eating up memory? if totalmem is greater than 300 MB for 10 cycles then restart # eating up memory?
``` {:lang="text"}
And the nginx is nothing fancy at all, `/usr/local/nginx/conf/vhosts/pad.fnordig.de.conf`: And the nginx is nothing fancy at all, `/usr/local/nginx/conf/vhosts/pad.fnordig.de.conf`:
``` server {
server {
listen 80; listen 80;
listen [::]:80; listen [::]:80;
listen 443 ssl; listen 443 ssl;
@ -61,8 +59,8 @@ server {
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_buffering off; proxy_buffering off;
} }
} }
``` {:lang="text"}
My etherpad is currently running for about 22 days without any problems. I don't really use it myself and have no current statistics on outside usage of [pad.fnordig.de](https://pad.fnordig.de/). My etherpad is currently running for about 22 days without any problems. I don't really use it myself and have no current statistics on outside usage of [pad.fnordig.de](https://pad.fnordig.de/).

View file

@ -37,51 +37,46 @@ end
and start it with and start it with
``` proxymachine -h 0.0.0.0 -p 1234 -c your_socks_config.rb
proxymachine -h 0.0.0.0 -p 1234 -c your_socks_config.rb {:lang="text"}
```
Tada! You got your own [SOCKS4](http://en.wikipedia.org/wiki/SOCKS#SOCKS4) Proxy up and running. Tada! You got your own [SOCKS4](http://en.wikipedia.org/wiki/SOCKS#SOCKS4) Proxy up and running.
[@nerdsein](https://twitter.com/#!/nerdsein/status/120258441041297409) got another solution: [Mocks](http://sourceforge.net/projects/mocks/), "**M**y **O**wn so**CK**s **S**erver." [@nerdsein](https://twitter.com/#!/nerdsein/status/120258441041297409) got another solution: [Mocks](http://sourceforge.net/projects/mocks/), "**M**y **O**wn so**CK**s **S**erver."
Download it over at Sourceforge, unpack it and compile the code with: Download it over at Sourceforge, unpack it and compile the code with:
``` gcc -lnsl -o mocks child.c error.c misc.c socksd.c up_proxy.c
gcc -lnsl -o mocks child.c error.c misc.c socksd.c up_proxy.c {:lang="text"}
```
You can configure a little bit more than with proxymachine, but you can stick with the default config for now: You can configure a little bit more than with proxymachine, but you can stick with the default config for now:
```
PORT = 10080
MOCKS_ADDR = 0.0.0.0
LOG_FILE = mocks.log
PID_FILE = mocks.pid
BUFFER_SIZE = 65536
BACKLOG = 5
NEGOTIATION_TIMEOUT = 5
CONNECTION_IDLE_TIMEOUT = 300
BIND_TIMEOUT = 30
SHUTDOWN_TIMEOUT = 3
MAX_CONNECTIONS = 50
FILTER_POLICY = ALLOW PORT = 10080
``` MOCKS_ADDR = 0.0.0.0
LOG_FILE = mocks.log
PID_FILE = mocks.pid
BUFFER_SIZE = 65536
BACKLOG = 5
NEGOTIATION_TIMEOUT = 5
CONNECTION_IDLE_TIMEOUT = 300
BIND_TIMEOUT = 30
SHUTDOWN_TIMEOUT = 3
MAX_CONNECTIONS = 50
FILTER_POLICY = ALLOW
{:lang="text"}
See the README and the config file in the archive for comments on it. Then start it with: See the README and the config file in the archive for comments on it. Then start it with:
``` src/mocks -c mocks.config start
src/mocks -c mocks.config start {:lang="text"}
```
and kill it with: and kill it with:
``` src/mocks -c mocks.config shutdown
src/mocks -c mocks.config shutdown {:lang="text"}
```
Oh, and in case you have the possibility to just ssh to the server, you can start up a SOCKS proxy on this connection, too: Oh, and in case you have the possibility to just ssh to the server, you can start up a SOCKS proxy on this connection, too:
``` ssh -D1234 example.com
ssh -D1234 example.com {:lang="text"}
```

View file

@ -16,9 +16,8 @@ Complete taking down the machine and reinstalling everything was not an option,
By default the jabber server listens on all IPv6 addresses of the host machine, so all I needed to do here was enabling ssl-serving over IPv6 for it: By default the jabber server listens on all IPv6 addresses of the host machine, so all I needed to do here was enabling ssl-serving over IPv6 for it:
``` <tls port="5223">2001:0db8:85a3:08d3:1319:8a2e:0370:7344</tls>
<tls port="5223">2001:0db8:85a3:08d3:1319:8a2e:0370:7344</tls> {:lang="text"}
```
(this is a completeley random ipv6 addresses ;) (this is a completeley random ipv6 addresses ;)
Now to the "hard" part: the bitlbee thing. Now to the "hard" part: the bitlbee thing.
@ -29,28 +28,24 @@ But, as I told before, the server is a rather old installation and uses `netkit-
So I had to replace this one: So I had to replace this one:
``` apt-get install netbsd-inetd
apt-get install netbsd-inetd {:lang="text"}
```
One line in `/etc/inetd.conf` reads as the following: One line in `/etc/inetd.conf` reads as the following:
``` 9999 stream tcp nowait bitlbee /usr/bin/stunnel stunnel -v 0 -l /usr/sbin/bitlbee
9999 stream tcp nowait bitlbee /usr/bin/stunnel stunnel -v 0 -l /usr/sbin/bitlbee {:lang="text"}
```
This needs to be duplicated and changed to listen on v6, too. This needs to be duplicated and changed to listen on v6, too.
``` 9999 stream tcp6 nowait bitlbee /usr/bin/stunnel stunnel -v 0 -l /usr/sbin/bitlbee
9999 stream tcp6 nowait bitlbee /usr/bin/stunnel stunnel -v 0 -l /usr/sbin/bitlbee {:lang="text"}
```
And that's it. And that's it.
```
/etc/init.d/netbsd-inetd start /etc/init.d/netbsd-inetd start
/etc/init.d/jabberd14 restart /etc/init.d/jabberd14 restart
``` {:lang="text"}
and you should be ready to go. and you should be ready to go.

View file

@ -14,37 +14,35 @@ But is just to much overhead if I just need one command. So I took half an hour
Or read here: Or read here:
``` # original: http://tridex.net/2011-06-19/linux-netzwerke-ohne-ifconfig/
# original: http://tridex.net/2011-06-19/linux-netzwerke-ohne-ifconfig/ # text version by @badboy_ (fnordig.de)
# text version by @badboy_ (fnordig.de)
| Alte Syntax | Neue Syntax | Erklärung | | Alte Syntax | Neue Syntax | Erklärung |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| ifconfig eth0 up | ip link set eth0 up | Aktivieren der Netzwerkschnittstelle eth0 | | ifconfig eth0 up | ip link set eth0 up | Aktivieren der Netzwerkschnittstelle eth0 |
| ifconfig eth0 down | ip link set eth0 down | Deaktivieren der Netzwerkschnittstelle eth0 | | ifconfig eth0 down | ip link set eth0 down | Deaktivieren der Netzwerkschnittstelle eth0 |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| ifconfig eth0 | ip addr show eth0 | Zeigen der IP-Adresse von eth0 | | ifconfig eth0 | ip addr show eth0 | Zeigen der IP-Adresse von eth0 |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| ifconfig -a | ip link | Zeigen aller Netzerkschnittstellen | | ifconfig -a | ip link | Zeigen aller Netzerkschnittstellen |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| ifconfig eth0 promisc | ip link set eth0 promisc on | Einschalten des Promisc-Modus | | ifconfig eth0 promisc | ip link set eth0 promisc on | Einschalten des Promisc-Modus |
| ifconfig eth0 -promisc | ip link set eth0 promisc off | Ausschalten des Promisc-Modus | | ifconfig eth0 -promisc | ip link set eth0 promisc off | Ausschalten des Promisc-Modus |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| ifconfig eth0 192.168.1.1 | ip addr add 192.168.1.1/24 | IP-Adresse zuweisen | | ifconfig eth0 192.168.1.1 | ip addr add 192.168.1.1/24 | IP-Adresse zuweisen |
| netmask 255.255.255.0 | dev eth0 | | | netmask 255.255.255.0 | dev eth0 | |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| route | ip route show | Routen anzeigen | | route | ip route show | Routen anzeigen |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| route add default gw | ip route add default | Default-Route hinzufügen | | route add default gw | ip route add default | Default-Route hinzufügen |
| 192.168.1.10 | via 192.168.1.10 | | | 192.168.1.10 | via 192.168.1.10 | |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| route del default | ip route del default | Default-Route löschen | | route del default | ip route del default | Default-Route löschen |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| route add -net 192.168.2.0 | ip route add 192.168.2.0/24 | Netzwerk-Route anlegen | | route add -net 192.168.2.0 | ip route add 192.168.2.0/24 | Netzwerk-Route anlegen |
| netmask 255.255.255.0 | via 192.168.1.100 dev eth0 | | | netmask 255.255.255.0 | via 192.168.1.100 dev eth0 | |
| gw 192.168.1.100 dev eth0 | | | | gw 192.168.1.100 dev eth0 | | |
+-----------------------------+------------------------------+---------------------------------------------+ +-----------------------------+------------------------------+---------------------------------------------+
| route del -net 192.168.2.0 | ip route del 192.168.2.0/24 | Netzwerk-Route löschen | | route del -net 192.168.2.0 | ip route del 192.168.2.0/24 | Netzwerk-Route löschen |
| netmask 255.255.255.0 | via 192.168.1.100 dev eth0 | | | netmask 255.255.255.0 | via 192.168.1.100 dev eth0 | |
| gw 192.168.1.100 dev eth0 | | | | gw 192.168.1.100 dev eth0 | | |
```

View file

@ -5,7 +5,7 @@ published_date: "2014-08-12 13:25:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
------ ------

View file

@ -5,7 +5,7 @@ published_date: "2014-10-15 11:10:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
In the last four months I did not produce much open-source code. I was busy writing my Bachelor Thesis. In the last four months I did not produce much open-source code. I was busy writing my Bachelor Thesis.

View file

@ -5,7 +5,7 @@ published_date: "2014-12-03 20:03:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
------ ------

View file

@ -5,7 +5,7 @@ published_date: "2015-01-15 23:50:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
Ever since I started looking into [Rust][] I knew I needed a bigger project for which I could use it. Ever since I started looking into [Rust][] I knew I needed a bigger project for which I could use it.

View file

@ -5,7 +5,7 @@ published_date: "2015-03-05 14:41:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
So yesterday I gave a Rust introduction talk at the local hackerspace, [CCCAC](http://ccc.ac). So yesterday I gave a Rust introduction talk at the local hackerspace, [CCCAC](http://ccc.ac).

View file

@ -5,7 +5,7 @@ published_date: "2015-07-16 11:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2016-02-23 20:32:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
For one of my projects I need to access the GitHub API to create releases. For one of my projects I need to access the GitHub API to create releases.

View file

@ -5,7 +5,7 @@ published_date: "2016-03-04 12:30:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
It became quite popular to store certain configuration variables in your environment, to be later loaded by your aplication. It became quite popular to store certain configuration variables in your environment, to be later loaded by your aplication.

View file

@ -4,7 +4,7 @@ title: "Releasing Rust projects, the automatic way"
published_date: "2016-03-29 20:47:00 +0200" published_date: "2016-03-29 20:47:00 +0200"
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
One of the strength of the Rust ecosystem is its package manager [Cargo][] and the package system [crates.io][]. One of the strength of the Rust ecosystem is its package manager [Cargo][] and the package system [crates.io][].

View file

@ -5,7 +5,7 @@ published_date: "2016-05-12 23:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
… because mine didn't. At least not correctly in all cases. … because mine didn't. At least not correctly in all cases.

View file

@ -5,7 +5,7 @@ published_date: "2016-08-31 16:30:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2016-09-28 13:16:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
From time to time I try to write a piece of code or port some existing library or application just for fun. From time to time I try to write a piece of code or port some existing library or application just for fun.

View file

@ -5,7 +5,7 @@ published_date: "2016-11-29 11:55:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
*This post is a tiny bit late, but better late than never.* *This post is a tiny bit late, but better late than never.*

View file

@ -21,7 +21,10 @@ Except I would just repeat what I have said back then for my Bachelor Thesis.
So instead let me collect some statistics. So instead let me collect some statistics.
<center>
![Contributions to master](https://tmp.fnordig.de/ma/commits.png) ![Contributions to master](https://tmp.fnordig.de/ma/commits.png)
Contributions to master
</center>
I created the repository for all thesis work just 2 days after my birthday in 2016. I created the repository for all thesis work just 2 days after my birthday in 2016.
Back then it should have been a completely different thesis topic, but due to some unexpected difficulties I had to drop the first topic before even beginning and went on to search for another. Back then it should have been a completely different thesis topic, but due to some unexpected difficulties I had to drop the first topic before even beginning and went on to search for another.
@ -31,7 +34,10 @@ None of that code ended up in the final application of course.
My commit frequency was quite different from back in my Bachelor thesis days. My commit frequency was quite different from back in my Bachelor thesis days.
A lot less night shifts, but still nothing early in the morning. A lot less night shifts, but still nothing early in the morning.
<center>
![Frequency of commits by time of day](https://tmp.fnordig.de/ma/punchcard.png) ![Frequency of commits by time of day](https://tmp.fnordig.de/ma/punchcard.png)
Frequency of commits by time of day
</center>
My application ended with about 4000 lines of C code, plus another 2000 lines of code in examples, tests and experiments. My application ended with about 4000 lines of C code, plus another 2000 lines of code in examples, tests and experiments.
I also wrote some small helper tools in Rust, e.g. [ebpf-disasm](https://github.com/badboy/ebpf-disasm/) and a library and another tool, which I will make public in the next days. I also wrote some small helper tools in Rust, e.g. [ebpf-disasm](https://github.com/badboy/ebpf-disasm/) and a library and another tool, which I will make public in the next days.

View file

@ -12,6 +12,8 @@ A couple of weeks ago I received my final grade and thus reached the academic de
This also means I can now make the thesis public: This also means I can now make the thesis public:
<center>
[Network Function Offloading in Virtualized Environments](https://tmp.fnordig.de/uni/master-thesis/nf-offloading-in-virtualized-environments_jan-erik_rediger.pdf) (PDF) [Network Function Offloading in Virtualized Environments](https://tmp.fnordig.de/uni/master-thesis/nf-offloading-in-virtualized-environments_jan-erik_rediger.pdf) (PDF)
</center>
If you have questions regarding anything in that thesis, contact me [on Twitter](https://twitter.com/badboy_) or [via email](mailto:janerik@fnordig.de). If you have questions regarding anything in that thesis, contact me [on Twitter](https://twitter.com/badboy_) or [via email](mailto:janerik\ at\ fnordig\ dot\ de).

View file

@ -5,7 +5,7 @@ published_date: "2017-11-18 16:26:57 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
[hellorust.com](https://www.hellorust.com/) is live! [hellorust.com](https://www.hellorust.com/) is live!

View file

@ -5,7 +5,7 @@ published_date: "2018-01-10 12:25:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2018-02-07 09:05:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---
@ -20,12 +20,12 @@ Given how simple that sounds, I decided to implement a minimal DOH client in Rus
I present to you: I present to you:
<center> <center>
<h3><a href="https://github.com/badboy/dnsoverhttps">dnsoverhttps</a></h3> ### [dnsoverhttps][]
</center> </center>
It exports one function to resolve a hostname to its IPv6 and IPv4 addresses: It exports one function to resolve a hostname to its IPv6 and IPv4 addresses:
```rust ```
extern crate dnsoverhttps; extern crate dnsoverhttps;
fn main() { fn main() {

View file

@ -5,7 +5,7 @@ published_date: "2018-02-09 14:52:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2018-02-18 16:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2018-08-08 12:45:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2018-09-30 23:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2018-11-07 14:34:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2018-11-28 20:09:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2019-01-22 10:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2019-03-01 12:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2019-05-15 14:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---

View file

@ -35,7 +35,7 @@ This makes for a very pleasant development experience.
Add the dependency to your `Cargo.toml`: Add the dependency to your `Cargo.toml`:
```toml ```ini
[dependencies] [dependencies]
redis = "0.11.0" redis = "0.11.0"
``` ```

View file

@ -5,7 +5,7 @@ published_date: "2019-10-24 17:30:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2019-11-29 11:37:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-02-03 15:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-02-06 16:38:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-03-02 15:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-03-18 12:30:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-05-02 14:43:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-05-04 15:30:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-06-19 13:46:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-09-01 15:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-10-06 16:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2020-12-18 15:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2021-02-24 15:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2021-03-01 11:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2021-04-16 15:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2021-07-26 12:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
--- ---

View file

@ -5,7 +5,7 @@ published_date: "2021-09-17 13:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
excerpt: | excerpt: |

View file

@ -5,7 +5,7 @@ published_date: "2021-10-14 17:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
excerpt: | excerpt: |
The Firefox for Android (Fenix) project runs extensive tests on every pull request The Firefox for Android (Fenix) project runs extensive tests on every pull request

View file

@ -5,7 +5,7 @@ published_date: "2021-11-01 15:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
excerpt: | excerpt: |

View file

@ -5,7 +5,7 @@ published_date: "2021-12-17 14:00:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
excerpt: | excerpt: |
A year ago I posted Glean in 2021 as a way to look into the future A year ago I posted Glean in 2021 as a way to look into the future

View file

@ -5,7 +5,7 @@ published_date: "2022-01-31 12:40:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
- rust - rust
excerpt: | excerpt: |

View file

@ -5,7 +5,7 @@ published_date: "2022-02-25 15:00:00 +0100"
layout: post-yt.liquid layout: post-yt.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
excerpt: | excerpt: |
On February 11th, 2022 I gave a lightning talk titled On February 11th, 2022 I gave a lightning talk titled

View file

@ -5,7 +5,7 @@ published_date: "2022-03-04 15:20:00 +0100"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
excerpt: | excerpt: |
Celebrating four years in my job as a Telemetry Engineer at Mozilla. Celebrating four years in my job as a Telemetry Engineer at Mozilla.

View file

@ -27,7 +27,7 @@ Let's deploy it on [fly.io].
We start by creating a new Fly app. We start by creating a new Fly app.
We stick to a generated name and put it into Frankfurt. We stick to a generated name and put it into Frankfurt.
```shell ```bash
$ mkdir -p Documents/gotosocial-fly $ mkdir -p Documents/gotosocial-fly
$ cd Documents/gotosocial-fly $ cd Documents/gotosocial-fly
$ fly launch $ fly launch

View file

@ -5,7 +5,7 @@ published_date: "2023-03-01 08:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- mozilla - mozilla
excerpt: | excerpt: |
Celebrating five years in my job as a Telemetry Engineer at Mozilla. Celebrating five years in my job as a Telemetry Engineer at Mozilla.

View file

@ -5,7 +5,7 @@ published_date: "2023-07-24 14:40:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- nix - nix
--- ---
@ -81,7 +81,7 @@ I trimmed that down just slightly and swapped in Ruby 2.7 (here's the [list of a
The important line is this: The important line is this:
```nix ```
ruby = pkgs."ruby-2.7.8"; ruby = pkgs."ruby-2.7.8";
``` ```
@ -89,7 +89,7 @@ ruby = pkgs."ruby-2.7.8";
Now on to installing it into a shell: Now on to installing it into a shell:
```bash ```
nix develop nix develop
``` ```

View file

@ -5,7 +5,7 @@ published_date: "2024-01-02 13:00:00 +0200"
layout: post.liquid layout: post.liquid
data: data:
route: blog route: blog
tags: tags:
- rust - rust
excerpt: | excerpt: |
sqlelf lets you explore ELF objects through the power of SQL. sqlelf lets you explore ELF objects through the power of SQL.

View file

@ -19,8 +19,8 @@ data:
{% assign phrase = " minute read" | prepend: reading_time %} {% assign phrase = " minute read" | prepend: reading_time %}
<time pubdate="pubdate">{{ post.published_date | date: "%b %d, %Y" }} · {{ phrase }}</time> <time pubdate="pubdate">{{ post.published_date | date: "%b %d, %Y" }} · {{ phrase }}</time>
{% if post.data and post.tags -%} {% if post.data and post.data.tags -%}
{%- for tag in post.tags %} {%- for tag in post.data.tags %}
· <a href="/tagged/{{ tag }}.html">{{ tag }}</a> · <a href="/tagged/{{ tag }}.html">{{ tag }}</a>
{%- endfor %} {%- endfor %}
{%- endif -%} {%- endif -%}

View file

@ -11,7 +11,7 @@ data:
<table> <table>
{%- for post in collections.posts.pages %} {%- for post in collections.posts.pages %}
{%- assign postyear = post.published_date | date: "%Y" %} {%- assign postyear = post.published_date | date: "%Y" %}
{%- if post.tags and post.tags contains "mozilla" -%} {%- if post.data.tags and post.data.tags contains "mozilla" -%}
<tr> <tr>
<td>{{ post.published_date | date: "%d. %b %Y"}}</td> <td>{{ post.published_date | date: "%d. %b %Y"}}</td>
<td><a href="/{{post.permalink }}">{{post.title}}</a></td> <td><a href="/{{post.permalink }}">{{post.title}}</a></td>

View file

@ -8,7 +8,7 @@ permalink: /tagged/mozilla.xml
<link>https://fnordig.de</link> <link>https://fnordig.de</link>
<description>fnordig - posts tagged with 'mozilla'</description> <description>fnordig - posts tagged with 'mozilla'</description>
{% for post in collections.posts.pages %} {% for post in collections.posts.pages %}
{%- if post.tags and post.tags contains "mozilla" -%} {%- if post.data.tags and post.data.tags contains "mozilla" -%}
<item> <item>
<title>{{ post.title | escape }}</title> <title>{{ post.title | escape }}</title>
<link>https://fnordig.de/{{ post.permalink }}</link> <link>https://fnordig.de/{{ post.permalink }}</link>

View file

@ -11,7 +11,7 @@ data:
<table> <table>
{%- for post in collections.posts.pages %} {%- for post in collections.posts.pages %}
{%- assign postyear = post.published_date | date: "%Y" %} {%- assign postyear = post.published_date | date: "%Y" %}
{%- if post.tags and post.tags contains "nix" -%} {%- if post.data.tags and post.data.tags contains "nix" -%}
<tr> <tr>
<td>{{ post.published_date | date: "%d. %b %Y"}}</td> <td>{{ post.published_date | date: "%d. %b %Y"}}</td>
<td><a href="/{{post.permalink }}">{{post.title}}</a></td> <td><a href="/{{post.permalink }}">{{post.title}}</a></td>

View file

@ -8,7 +8,7 @@ permalink: /tagged/nix.xml
<link>https://fnordig.de</link> <link>https://fnordig.de</link>
<description>fnordig - post tagged with 'nix'</description> <description>fnordig - post tagged with 'nix'</description>
{% for post in collections.posts.pages %} {% for post in collections.posts.pages %}
{%- if post.tags and post.tags contains "nix" -%} {%- if post.data.tags and post.data.tags contains "nix" -%}
<item> <item>
<title>{{ post.title | escape }}</title> <title>{{ post.title | escape }}</title>
<link>https://fnordig.de/{{ post.permalink }}</link> <link>https://fnordig.de/{{ post.permalink }}</link>

View file

@ -11,7 +11,7 @@ data:
<table> <table>
{%- for post in collections.posts.pages %} {%- for post in collections.posts.pages %}
{%- assign postyear = post.published_date | date: "%Y" %} {%- assign postyear = post.published_date | date: "%Y" %}
{%- if post.tags and post.tags contains "rust" -%} {%- if post.data.tags and post.data.tags contains "rust" -%}
<tr> <tr>
<td>{{ post.published_date | date: "%d. %b %Y"}}</td> <td>{{ post.published_date | date: "%d. %b %Y"}}</td>
<td><a href="/{{post.permalink }}">{{post.title}}</a></td> <td><a href="/{{post.permalink }}">{{post.title}}</a></td>

View file

@ -8,7 +8,7 @@ permalink: /tagged/rust.xml
<link>https://fnordig.de</link> <link>https://fnordig.de</link>
<description>fnordig - post tagged with 'rust'</description> <description>fnordig - post tagged with 'rust'</description>
{% for post in collections.posts.pages %} {% for post in collections.posts.pages %}
{%- if post.tags and post.tags contains "rust" -%} {%- if post.data.tags and post.data.tags contains "rust" -%}
<item> <item>
<title>{{ post.title | escape }}</title> <title>{{ post.title | escape }}</title>
<link>https://fnordig.de/{{ post.permalink }}</link> <link>https://fnordig.de/{{ post.permalink }}</link>