Compare commits
8 commits
2f131165b3
...
90eb4c8e85
Author | SHA1 | Date | |
---|---|---|---|
Jan-Erik Rediger | 90eb4c8e85 | ||
Jan-Erik Rediger | 7cfb57b9b8 | ||
Jan-Erik Rediger | ddcdd7a0cb | ||
Jan-Erik Rediger | 2f30ad0967 | ||
Jan-Erik Rediger | 51bf1e479c | ||
Jan-Erik Rediger | 0976ac25f2 | ||
Jan-Erik Rediger | 7f925b58dd | ||
Jan-Erik Rediger | 97fa04f2d9 |
|
@ -2,6 +2,7 @@
|
||||||
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
|
||||||
---
|
---
|
||||||
|
|
|
@ -22,13 +22,14 @@ 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:
|
||||||
|
|
||||||
socket = new io.Socket('localhost');
|
```javascript
|
||||||
socket.connect();
|
socket = new io.Socket('localhost');
|
||||||
socket.on('message', function(data){
|
socket.connect();
|
||||||
data = JSON.parse(data);
|
socket.on('message', function(data){
|
||||||
if(data.reload)
|
data = JSON.parse(data);
|
||||||
window.location.reload();
|
if(data.reload)
|
||||||
});
|
window.location.reload();
|
||||||
{:lang="javascript"}
|
});
|
||||||
|
```
|
||||||
|
|
||||||
So next thing: individual pages for posts, maybe templates.
|
So next thing: individual pages for posts, maybe templates.
|
||||||
|
|
|
@ -19,21 +19,23 @@ 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:
|
||||||
|
|
||||||
var http = require('http');
|
```javascript
|
||||||
var server = http.createServer(function (request, response) {
|
var http = require('http');
|
||||||
response.writeHead(200, {"Content-Type":"text/plain"});
|
var server = http.createServer(function (request, response) {
|
||||||
response.end ("Hello World!\n");
|
response.writeHead(200, {"Content-Type":"text/plain"});
|
||||||
console.log("Got a connection");
|
response.end ("Hello World!\n");
|
||||||
});
|
console.log("Got a connection");
|
||||||
server.listen(80, "2a01:xxxx:xxxx:xxxx::2");
|
});
|
||||||
console.log("Server running on localhost at port 80");
|
server.listen(80, "2a01:xxxx:xxxx:xxxx::2");
|
||||||
{:lang="javascript"}
|
console.log("Server running on localhost at port 80");
|
||||||
|
```
|
||||||
|
|
||||||
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:
|
||||||
|
|
||||||
server.listen(80, "::0");
|
```javascript
|
||||||
{:lang="javascript"}
|
server.listen(80, "::0");
|
||||||
|
```
|
||||||
|
|
||||||
Other things worth to mention:
|
Other things worth to mention:
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,6 @@ 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:
|
||||||
|
|
||||||
|
|
|
@ -15,10 +15,11 @@ 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;
|
```
|
||||||
ssl_certificate /path/to/your/cert.pem;
|
listen 443 ssl;
|
||||||
ssl_certificate_key /path/to/your/key.pem;
|
ssl_certificate /path/to/your/cert.pem;
|
||||||
{:lang="text"}
|
ssl_certificate_key /path/to/your/key.pem;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
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.
|
||||||
|
|
|
@ -33,34 +33,36 @@ 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
|
```
|
||||||
with pidfile /var/run/etherpad-lite.pid
|
check process etherpad
|
||||||
start program = "/home/etherpad/etherpad-lite/daemon.sh start"
|
with pidfile /var/run/etherpad-lite.pid
|
||||||
stop program = "/home/etherpad/etherpad-lite/daemon.sh stop"
|
start program = "/home/etherpad/etherpad-lite/daemon.sh start"
|
||||||
if totalmem is greater than 300 MB for 10 cycles then restart # eating up memory?
|
stop program = "/home/etherpad/etherpad-lite/daemon.sh stop"
|
||||||
{:lang="text"}
|
if totalmem is greater than 300 MB for 10 cycles then restart # eating up memory?
|
||||||
|
```
|
||||||
|
|
||||||
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 {
|
```
|
||||||
listen 80;
|
server {
|
||||||
listen [::]:80;
|
listen 80;
|
||||||
listen 443 ssl;
|
listen [::]:80;
|
||||||
ssl_certificate /var/certs/star_fnordig_signed.pem;
|
listen 443 ssl;
|
||||||
ssl_certificate_key /var/certs/star_fnordig_signed.pem;
|
ssl_certificate /var/certs/star_fnordig_signed.pem;
|
||||||
|
ssl_certificate_key /var/certs/star_fnordig_signed.pem;
|
||||||
|
|
||||||
server_name pad.fnordig.de;
|
server_name pad.fnordig.de;
|
||||||
|
|
||||||
access_log /home/etherpad/etherpad-lite-log/eplite.access.log;
|
access_log /home/etherpad/etherpad-lite-log/eplite.access.log;
|
||||||
error_log /home/etherpad/etherpad-lite-log/eplite.error.log;
|
error_log /home/etherpad/etherpad-lite-log/eplite.error.log;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
proxy_pass http://localhost:9001/;
|
proxy_pass http://localhost:9001/;
|
||||||
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/).
|
||||||
|
|
||||||
|
|
|
@ -37,46 +37,51 @@ end
|
||||||
|
|
||||||
and start it with
|
and start it with
|
||||||
|
|
||||||
proxymachine -h 0.0.0.0 -p 1234 -c your_socks_config.rb
|
```
|
||||||
{:lang="text"}
|
proxymachine -h 0.0.0.0 -p 1234 -c your_socks_config.rb
|
||||||
|
```
|
||||||
|
|
||||||
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
|
```
|
||||||
{:lang="text"}
|
gcc -lnsl -o mocks child.c error.c misc.c socksd.c up_proxy.c
|
||||||
|
```
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
PORT = 10080
|
FILTER_POLICY = ALLOW
|
||||||
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
|
```
|
||||||
{:lang="text"}
|
src/mocks -c mocks.config start
|
||||||
|
```
|
||||||
|
|
||||||
and kill it with:
|
and kill it with:
|
||||||
|
|
||||||
src/mocks -c mocks.config shutdown
|
```
|
||||||
{:lang="text"}
|
src/mocks -c mocks.config shutdown
|
||||||
|
```
|
||||||
|
|
||||||
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
|
```
|
||||||
{:lang="text"}
|
ssh -D1234 example.com
|
||||||
|
```
|
||||||
|
|
|
@ -16,8 +16,9 @@ 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>
|
```
|
||||||
{:lang="text"}
|
<tls port="5223">2001:0db8:85a3:08d3:1319:8a2e:0370:7344</tls>
|
||||||
|
```
|
||||||
(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.
|
||||||
|
@ -28,24 +29,28 @@ 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
|
```
|
||||||
{:lang="text"}
|
apt-get install netbsd-inetd
|
||||||
|
```
|
||||||
|
|
||||||
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
|
```
|
||||||
{:lang="text"}
|
9999 stream tcp nowait bitlbee /usr/bin/stunnel stunnel -v 0 -l /usr/sbin/bitlbee
|
||||||
|
```
|
||||||
|
|
||||||
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
|
```
|
||||||
{:lang="text"}
|
9999 stream tcp6 nowait bitlbee /usr/bin/stunnel stunnel -v 0 -l /usr/sbin/bitlbee
|
||||||
|
```
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
|
|
|
@ -14,35 +14,37 @@ 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/
|
```
|
||||||
# text version by @badboy_ (fnordig.de)
|
# original: http://tridex.net/2011-06-19/linux-netzwerke-ohne-ifconfig/
|
||||||
|
# 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 | | |
|
||||||
|
```
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
------
|
------
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.
|
||||||
But I was active in the community, I attended several conferences, I read a lot of stuff and I wrote down a lot more things to do.
|
But I was active in the community, I attended several conferences, I read a lot of stuff and I wrote down a lot more things to do.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
------
|
------
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.
|
||||||
I released a [few][lzf] [small][crc] [libraries][redlock], all based on Redis code/tools, so I figured:
|
I released a [few][lzf] [small][crc] [libraries][redlock], all based on Redis code/tools, so I figured:
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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).
|
||||||
The slides are already [online](https://fnordig.de/talks/2015/cccac/rust-intro/).
|
The slides are already [online](https://fnordig.de/talks/2015/cccac/rust-intro/).
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
**Update 2018-07-01:** This article was updated in 2018 and is [now available as documentation in the iso8601 repository](https://github.com/badboy/iso8601/blob/338b3d1a9ca220372292f631a3bc2e5176cca331/docs/parsing-iso8601-dates-using-nom.md).
|
**Update 2018-07-01:** This article was updated in 2018 and is [now available as documentation in the iso8601 repository](https://github.com/badboy/iso8601/blob/338b3d1a9ca220372292f631a3bc2e5176cca331/docs/parsing-iso8601-dates-using-nom.md).
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.
|
||||||
Luckily, through reading [This Week in Rust #119][twir], I discovered [Hubcaps][], a library for interfacing with GitHub.
|
Luckily, through reading [This Week in Rust #119][twir], I discovered [Hubcaps][], a library for interfacing with GitHub.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.
|
||||||
This way of [having all configuration][config] available is part of the [twelve-factor app definition][12factor].
|
This way of [having all configuration][config] available is part of the [twelve-factor app definition][12factor].
|
||||||
|
|
|
@ -4,8 +4,8 @@ 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][].
|
||||||
Pulling in some dependencies is as easy as adding it to your projects' `Cargo.toml` and running `cargo build`.
|
Pulling in some dependencies is as easy as adding it to your projects' `Cargo.toml` and running `cargo build`.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.
|
||||||
I'm talking about my Rust library [lzf-rs](https://crates.io/crates/lzf),
|
I'm talking about my Rust library [lzf-rs](https://crates.io/crates/lzf),
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
<center>
|
<center>
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.
|
||||||
So a while back in June I had some free time again and I came across [signify][].
|
So a while back in June I had some free time again and I came across [signify][].
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.*
|
||||||
|
|
||||||
|
|
|
@ -21,10 +21,7 @@ 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.
|
||||||
|
@ -34,10 +31,7 @@ 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.
|
||||||
|
|
|
@ -12,8 +12,6 @@ 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\ at\ fnordig\ dot\ de).
|
If you have questions regarding anything in that thesis, contact me [on Twitter](https://twitter.com/badboy_) or [via email](mailto:janerik@fnordig.de).
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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!
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Last monday, 8th of January, we had the first [Rust Cologne](http://rust.cologne) meetup this year.
|
Last monday, 8th of January, we had the first [Rust Cologne](http://rust.cologne) meetup this year.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Last weekend I met [Daniel Stenberg][bagder], author of curl, at FOSDEM and we talked a bit about curl, Firefox and also Rust.
|
Last weekend I met [Daniel Stenberg][bagder], author of curl, at FOSDEM and we talked a bit about curl, Firefox and also 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>
|
||||||
### [dnsoverhttps][]
|
<h3><a href="https://github.com/badboy/dnsoverhttps">dnsoverhttps</a></h3>
|
||||||
</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() {
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Two days ago [I wrote about a new small utility crate](/2018/02/07/d-oh-dns-over-https-in-rust/) for doing DNS over HTTPS.
|
Two days ago [I wrote about a new small utility crate](/2018/02/07/d-oh-dns-over-https-in-rust/) for doing DNS over HTTPS.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
In September 2012 I was hired by [rrbone](https://www.rrbone.net/) to work as a software developer alongside my studies.
|
In September 2012 I was hired by [rrbone](https://www.rrbone.net/) to work as a software developer alongside my studies.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Not every meetup follows the same structure. Not every meetup needs to have 75+ attendees.
|
Not every meetup follows the same structure. Not every meetup needs to have 75+ attendees.
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Last night I had an idea, which made me stay up two hours longer than I wanted.
|
Last night I had an idea, which made me stay up two hours longer than I wanted.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
It was the first time for me to attend MozFest, after I heard only good things about it from last year.
|
It was the first time for me to attend MozFest, after I heard only good things about it from last year.
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
A while ago (sometime in August) I built a small service called [What Rust is it?](http://www.whatrustisit.com/).
|
A while ago (sometime in August) I built a small service called [What Rust is it?](http://www.whatrustisit.com/).
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Last year I implemented a new feature for Firefox Telemetry that changes how we can collect and analyze data with different requirements in regard to user privacy & frequency.
|
Last year I implemented a new feature for Firefox Telemetry that changes how we can collect and analyze data with different requirements in regard to user privacy & frequency.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
At this day last year I walked into the [Mozilla Berlin](https://blog.mozilla.org/berlin/) office to start my first day of work.
|
At this day last year I walked into the [Mozilla Berlin](https://blog.mozilla.org/berlin/) office to start my first day of work.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Exactly 4 years ago, on May 15th 2015, the Rust Core Team [announced the first stable version, Version 1.0](https://blog.rust-lang.org/2015/05/15/Rust-1.0.html), of the Rust Programming language.
|
Exactly 4 years ago, on May 15th 2015, the Rust Core Team [announced the first stable version, Version 1.0](https://blog.rust-lang.org/2015/05/15/Rust-1.0.html), of the Rust Programming language.
|
||||||
|
|
|
@ -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`:
|
||||||
|
|
||||||
```ini
|
```toml
|
||||||
[dependencies]
|
[dependencies]
|
||||||
redis = "0.11.0"
|
redis = "0.11.0"
|
||||||
```
|
```
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean. You can find an [index of all TWiG posts online](https://mozilla.github.io/glean/book/appendix/twig.html).)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean. You can find an [index of all TWiG posts online](https://mozilla.github.io/glean/book/appendix/twig.html).)
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean. You can find an [index of all TWiG posts online](https://mozilla.github.io/glean/book/appendix/twig.html).)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean. You can find an [index of all TWiG posts online](https://mozilla.github.io/glean/book/appendix/twig.html).)
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
At work I help with maintaining two large documentation books:
|
At work I help with maintaining two large documentation books:
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Woops, looks like I missed my Two Year Moziversary!
|
Woops, looks like I missed my Two Year Moziversary!
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Last week I read [Feedback Ladders: How We Encode Code Reviews at Netlify](https://www.netlify.com/blog/2020/03/05/feedback-ladders-how-we-encode-code-reviews-at-netlify/) and also shared that with my team at Mozilla.
|
Last week I read [Feedback Ladders: How We Encode Code Reviews at Netlify](https://www.netlify.com/blog/2020/03/05/feedback-ladders-how-we-encode-code-reviews-at-netlify/) and also shared that with my team at Mozilla.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
So I [tweeted](https://twitter.com/badboy_/status/1255802731241050112):
|
So I [tweeted](https://twitter.com/badboy_/status/1255802731241050112):
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
What if you could build a Rust project without Cargo?
|
What if you could build a Rust project without Cargo?
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
Has it really been 3 years?
|
Has it really been 3 years?
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean.)
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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: |
|
||||||
It took us several more weeks to put everything into place,
|
It took us several more weeks to put everything into place,
|
||||||
but we're finally shipping the Rust parts of the Glean Android SDK with GeckoView
|
but we're finally shipping the Rust parts of the Glean Android SDK with GeckoView
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
and when merging code back into the `main` branch.
|
and when merging code back into the `main` branch.
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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: |
|
||||||
Shortly after we shipped Glean through GeckoView in a Fenix Nightly release
|
Shortly after we shipped Glean through GeckoView in a Fenix Nightly release
|
||||||
we received a crash report pointing to code that we haven't touched in a long time.
|
we received a crash report pointing to code that we haven't touched in a long time.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
and set out a vision and plan for the project.
|
and set out a vision and plan for the project.
|
||||||
|
|
|
@ -5,9 +5,9 @@ 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: |
|
||||||
We ship the Glean SDK for multiple platforms, one of them being iOS applications.
|
We ship the Glean SDK for multiple platforms, one of them being iOS applications.
|
||||||
Previously I talked about how we got it to build on the Apple ARM machines.
|
Previously I talked about how we got it to build on the Apple ARM machines.
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
"Your personal Glean data pipeline", presenting a little side project for
|
"Your personal Glean data pipeline", presenting a little side project for
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.
|
||||||
---
|
---
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
```bash
|
```shell
|
||||||
$ mkdir -p Documents/gotosocial-fly
|
$ mkdir -p Documents/gotosocial-fly
|
||||||
$ cd Documents/gotosocial-fly
|
$ cd Documents/gotosocial-fly
|
||||||
$ fly launch
|
$ fly launch
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.
|
||||||
---
|
---
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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
|
||||||
---
|
---
|
||||||
|
|
||||||
The other day I had to deploy an old Ruby 2.7 application.
|
The other day I had to deploy an old Ruby 2.7 application.
|
||||||
|
@ -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
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ 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.
|
||||||
It turns any executable into a queryable database.
|
It turns any executable into a queryable database.
|
||||||
|
|
|
@ -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.data.tags -%}
|
{% if post.data and post.tags -%}
|
||||||
{%- for tag in post.data.tags %}
|
{%- for tag in post.tags %}
|
||||||
· <a href="/tagged/{{ tag }}.html">{{ tag }}</a>
|
· <a href="/tagged/{{ tag }}.html">{{ tag }}</a>
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
|
|
|
@ -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.data.tags and post.data.tags contains "mozilla" -%}
|
{%- if post.tags and post.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>
|
||||||
|
|
|
@ -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.data.tags and post.data.tags contains "mozilla" -%}
|
{%- if post.tags and post.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>
|
||||||
|
|
|
@ -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.data.tags and post.data.tags contains "nix" -%}
|
{%- if post.tags and post.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>
|
||||||
|
|
|
@ -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.data.tags and post.data.tags contains "nix" -%}
|
{%- if post.tags and post.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>
|
||||||
|
|
|
@ -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.data.tags and post.data.tags contains "rust" -%}
|
{%- if post.tags and post.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>
|
||||||
|
|
|
@ -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.data.tags and post.data.tags contains "rust" -%}
|
{%- if post.tags and post.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>
|
||||||
|
|
Loading…
Reference in a new issue