Jekyll is dead, long live Cobalt!
This commit is contained in:
parent
35ad8a8b11
commit
5361cfb470
11
.cobalt.yml
Normal file
11
.cobalt.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
name: fnordig
|
||||
source: ./
|
||||
dest: _site
|
||||
posts: _posts
|
||||
drafts: _drafts
|
||||
link: https://fnordig.de
|
||||
description: fnordig
|
||||
rss: feed.xml
|
||||
ignore:
|
||||
- ext/
|
||||
- README.md
|
6
Gemfile
6
Gemfile
|
@ -1,6 +0,0 @@
|
|||
source 'https://rubygems.org'
|
||||
|
||||
gem "rake"
|
||||
gem "jekyll", "~>2.5.3"
|
||||
gem "coderay", "~>1.0.0"
|
||||
gem "kramdown" , "1.5.0"
|
78
Gemfile.lock
78
Gemfile.lock
|
@ -1,78 +0,0 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
blankslate (2.1.2.4)
|
||||
celluloid (0.16.0)
|
||||
timers (~> 4.0.0)
|
||||
classifier-reborn (2.0.3)
|
||||
fast-stemmer (~> 1.0)
|
||||
coderay (1.0.8)
|
||||
coffee-script (2.3.0)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.8.0)
|
||||
colorator (0.1)
|
||||
execjs (2.2.2)
|
||||
fast-stemmer (1.0.2)
|
||||
ffi (1.9.6)
|
||||
hitimes (1.2.2)
|
||||
jekyll (2.5.3)
|
||||
classifier-reborn (~> 2.0)
|
||||
colorator (~> 0.1)
|
||||
jekyll-coffeescript (~> 1.0)
|
||||
jekyll-gist (~> 1.0)
|
||||
jekyll-paginate (~> 1.0)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 1.1)
|
||||
kramdown (~> 1.3)
|
||||
liquid (~> 2.6.1)
|
||||
mercenary (~> 0.3.3)
|
||||
pygments.rb (~> 0.6.0)
|
||||
redcarpet (~> 3.1)
|
||||
safe_yaml (~> 1.0)
|
||||
toml (~> 0.1.0)
|
||||
jekyll-coffeescript (1.0.1)
|
||||
coffee-script (~> 2.2)
|
||||
jekyll-gist (1.1.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-sass-converter (1.3.0)
|
||||
sass (~> 3.2)
|
||||
jekyll-watch (1.2.0)
|
||||
listen (~> 2.7)
|
||||
kramdown (1.5.0)
|
||||
liquid (2.6.1)
|
||||
listen (2.8.4)
|
||||
celluloid (>= 0.15.2)
|
||||
rb-fsevent (>= 0.9.3)
|
||||
rb-inotify (>= 0.9)
|
||||
mercenary (0.3.5)
|
||||
parslet (1.5.0)
|
||||
blankslate (~> 2.0)
|
||||
posix-spawn (0.3.9)
|
||||
pygments.rb (0.6.0)
|
||||
posix-spawn (~> 0.3.6)
|
||||
yajl-ruby (~> 1.1.0)
|
||||
rake (10.4.2)
|
||||
rb-fsevent (0.9.4)
|
||||
rb-inotify (0.9.5)
|
||||
ffi (>= 0.5.0)
|
||||
redcarpet (3.2.2)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.4.9)
|
||||
timers (4.0.1)
|
||||
hitimes
|
||||
toml (0.1.2)
|
||||
parslet (~> 1.5.0)
|
||||
yajl-ruby (1.1.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
coderay (~> 1.0.0)
|
||||
jekyll (~> 2.5.3)
|
||||
kramdown (= 1.5.0)
|
||||
rake
|
||||
|
||||
BUNDLED WITH
|
||||
1.11.2
|
11
Makefile
Normal file
11
Makefile
Normal file
|
@ -0,0 +1,11 @@
|
|||
SOURCE = /home/badboy/git/fnordig.de/_site/
|
||||
DEST = /var/www/sites/fnordig.de/
|
||||
|
||||
build:
|
||||
cobalt build
|
||||
|
||||
serve:
|
||||
cobalt watch
|
||||
|
||||
deploy: build
|
||||
rsync -va $(SOURCE) $(DEST)
|
42
Rakefile
42
Rakefile
|
@ -1,42 +0,0 @@
|
|||
#!/usr/bin/env ruby
|
||||
# encoding: utf-8
|
||||
|
||||
PRODUCTION = {
|
||||
:url => "http://fnordig.de",
|
||||
:log => "/home/badboy/git/fnordig.de/deploy.log",
|
||||
:dest => "/var/www/sites/fnordig.de/",
|
||||
:source => "/home/badboy/git/fnordig.de/_site/",
|
||||
}
|
||||
|
||||
desc 'Generate page using jekyll'
|
||||
task :generate do
|
||||
sh "jekyll build"
|
||||
end
|
||||
|
||||
desc 'Serve the page on http://localhost:4000'
|
||||
task :serve do
|
||||
sh "jekyll serve --watch --drafts"
|
||||
end
|
||||
|
||||
task :default => :serve
|
||||
|
||||
namespace :deploy do
|
||||
desc 'Deploy the page on the production machine (executed on production)'
|
||||
task :production do
|
||||
verbose(true) {
|
||||
sh <<-EOF
|
||||
(
|
||||
echo -n "Production deployment: "; date;
|
||||
echo "Resetting git & fetching from origin..."
|
||||
git reset --hard HEAD &&
|
||||
git pull origin master &&
|
||||
echo "generating page..." &&
|
||||
rake generate &&
|
||||
echo "copy to webserver directory..." &&
|
||||
rsync -va #{PRODUCTION[:source]} #{PRODUCTION[:dest]} &&
|
||||
echo "deployment done"
|
||||
) | tee #{PRODUCTION[:log]}
|
||||
EOF
|
||||
}
|
||||
end
|
||||
end
|
12
_config.yml
12
_config.yml
|
@ -1,12 +0,0 @@
|
|||
baseurl: /
|
||||
paginate: 5
|
||||
permalink: pretty
|
||||
exclude:
|
||||
- Rakefile
|
||||
- README.md
|
||||
- ext
|
||||
- Gemfile
|
||||
- Gemfile.lock
|
||||
- deploy.log
|
||||
highlighter: pygments
|
||||
markdown: KramdownPygments
|
|
@ -1,15 +0,0 @@
|
|||
<div class="post">
|
||||
<h2 class="heading">
|
||||
<a href="{{site.baseurl}}{{post.url | replace_first: '/'}}">{{post.title}}</a>
|
||||
</h2>
|
||||
{% if post.date %}
|
||||
<p class="date">
|
||||
<time pubdate class=published datetime="{{post.date}}">
|
||||
{{post.date | date: "%-d %B %Y %H:%M"}}
|
||||
</time>
|
||||
(by <span rel=author>Jan-Erik</span>)
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{{post.content}}
|
||||
</div>
|
10
_layouts/_footer.liquid
Normal file
10
_layouts/_footer.liquid
Normal file
|
@ -0,0 +1,10 @@
|
|||
<footer>
|
||||
<hr>
|
||||
<p>
|
||||
jan-erik /
|
||||
<a href="http://twitter.com/badboy_">@badboy_</a> /
|
||||
<a href="/imprint/">imprint</a> /
|
||||
<a href="/feed.xml">feed</a>
|
||||
</p>
|
||||
<br />
|
||||
</footer>
|
7
_layouts/_head.liquid
Normal file
7
_layouts/_head.liquid
Normal file
|
@ -0,0 +1,7 @@
|
|||
<meta charset="utf-8" />
|
||||
<title>{{title}}</title>
|
||||
<link rel="stylesheet" href="/writ.min.css">
|
||||
<link rel="stylesheet" href="/style.css" type="text/css" media="all" />
|
||||
<link rel="alternate" href="/rss.xml" type="application/rss+xml" title="RSS" />
|
||||
<meta name="author" content="Jan-Erik Rediger">
|
||||
<meta name="description" content="Personal website of Jan-Erik Rediger"/>
|
10
_layouts/_menu.liquid
Normal file
10
_layouts/_menu.liquid
Normal file
|
@ -0,0 +1,10 @@
|
|||
<nav class="menu">
|
||||
<a class="menu-item {%if route == "blog"%}current{%endif%}" href="/">fnordig</a>
|
||||
<a class="menu-item {%if route == "posts"%}current{%endif%}" href="/posts/">posts</a>
|
||||
<a class="menu-item {%if route == "about"%}current{%endif%}" href="/about/">about</a>
|
||||
<a class="menu-item {%if route == "talks"%}current{%endif%}" href="/talks/">talks</a>
|
||||
<a class="menu-item" href="/feed.xml">feed</a>
|
||||
<a class="menu-item" href="https://twitter.com/badboy_/">@badboy_</a>
|
||||
<a class="menu-item" href="https://github.com/badboy/">github</a>
|
||||
<hr>
|
||||
</nav>
|
|
@ -1,43 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>fnordig.de</title>
|
||||
<link rel="stylesheet" href="{{site.baseurl}}fnord.css" type="text/css" />
|
||||
<link rel="stylesheet" href="{{site.baseurl}}syntax.css" type="text/css" />
|
||||
<!--[if !IE]>-->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
|
||||
<script type="text/javascript">
|
||||
window.scrollTo && window.scrollTo(0, 1);
|
||||
</script>
|
||||
<!--<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="content">
|
||||
<div class="nav">
|
||||
<h1>
|
||||
<a href="{{site.baseurl}}">fnordig</a>
|
||||
</h1>
|
||||
<ul>
|
||||
<li>// <a href="{{site.baseurl}}posts/">posts</a> /</li>
|
||||
<li><a href="{{site.baseurl}}about/">about</a> /</li>
|
||||
<li><a href="{{site.baseurl}}talks/">talks</a> /</li>
|
||||
<li><a href="{{site.baseurl}}feed.xml">feed</a> /</li>
|
||||
<li><a href="https://twitter.com/badboy_">@badboy_</a> /</li>
|
||||
<li><a href="https://github.com/badboy">github</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{content}}
|
||||
|
||||
<div class="footer">
|
||||
<p>//
|
||||
jan-erik /
|
||||
<a href="http://twitter.com/badboy_">@badboy_</a> /
|
||||
<a href="{{site.baseurl}}imprint/">imprint</a> /
|
||||
<a href="{{site.baseurl}}feed.xml">feed</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
16
_layouts/default.liquid
Normal file
16
_layouts/default.liquid
Normal file
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{ include "_layouts/_head.liquid" }}
|
||||
</head>
|
||||
<body>
|
||||
{{ include "_layouts/_menu.liquid" }}
|
||||
|
||||
|
||||
<main>
|
||||
{{content}}
|
||||
</main>
|
||||
|
||||
{{ include "_layouts/_footer.liquid" }}
|
||||
</body>
|
||||
</html>
|
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
---
|
||||
<div class="post">
|
||||
<h2 class="heading">
|
||||
<a href="{{site.baseurl}}{{page.url | replace_first: '/'}}">{{page.title}}</a>
|
||||
</h2>
|
||||
{% if page.date %}
|
||||
<p class="date">
|
||||
<time pubdate class=published datetime="{{page.date}}">
|
||||
{{page.date | date: "%-d %B %Y %H:%M"}}
|
||||
</time>
|
||||
(by <span rel=author>Jan-Erik</span>)
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{{content}}
|
||||
</div>
|
33
_layouts/post.liquid
Normal file
33
_layouts/post.liquid
Normal file
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{ include "_layouts/_head.liquid" }}
|
||||
</head>
|
||||
<body>
|
||||
{{ include "_layouts/_menu.liquid" }}
|
||||
|
||||
|
||||
<main>
|
||||
<article>
|
||||
<h1>{{ title }}</h1>
|
||||
{% assign reading_wpm = 200 %}
|
||||
{% assign word_count = content | split: " " | size %}
|
||||
{% assign reading_time = word_count | divided_by: 200 %}
|
||||
{% case reading_time %}
|
||||
{% when 0 %}
|
||||
{% assign phrase = "less than a minute." %}
|
||||
{% when 1 %}
|
||||
{% assign phrase = "about a minute." %}
|
||||
{% else %}
|
||||
{% assign phrase = " minutes." | prepend: reading_time %}
|
||||
{% endcase %}
|
||||
|
||||
<time pubdate="pubdate">{{ date | date: "%b %d, %Y" }} - Reading time: {{ phrase }}</time><br />
|
||||
|
||||
{{ content }}
|
||||
</article>
|
||||
</main>
|
||||
|
||||
{{ include "_layouts/_footer.liquid" }}
|
||||
</body>
|
||||
</html>
|
21
_layouts/simple.liquid
Normal file
21
_layouts/simple.liquid
Normal file
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{ include "_layouts/_head.liquid" }}
|
||||
</head>
|
||||
<body>
|
||||
{{ include "_layouts/_menu.liquid" }}
|
||||
|
||||
|
||||
<main>
|
||||
<article>
|
||||
<h1>{{ title }}</h1>
|
||||
<time pubdate="pubdate">{{ date | date: "%b %d, %Y" }}</time><br />
|
||||
|
||||
{{ content }}
|
||||
</article>
|
||||
</main>
|
||||
|
||||
{{ include "_layouts/_footer.liquid" }}
|
||||
</body>
|
||||
</html>
|
2
_plugins/.gitignore
vendored
2
_plugins/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
|||
./
|
||||
kramdown-with-pygments
|
|
@ -1,89 +0,0 @@
|
|||
# We define the an additional option for the kramdown parser to look for
|
||||
module Kramdown
|
||||
module Options
|
||||
define(:kramdown_default_lang, Symbol, nil, <<EOF)
|
||||
Sets the default language for highlighting code blocks
|
||||
|
||||
If no language is set for a code block, the default language is used
|
||||
instead. The value has to be one of the languages supported by pygments
|
||||
or nil if no default language should be used.
|
||||
|
||||
Default: nil
|
||||
Used by: PygmentsHtml converter
|
||||
EOF
|
||||
end
|
||||
end
|
||||
|
||||
# This class is a plugin for kramdown, to make it use pygments instead of coderay
|
||||
# It has nothing to do with Jekyll, it is simply used by the custom converter below
|
||||
module Kramdown
|
||||
module Converter
|
||||
class PygmentsHtml < Html
|
||||
|
||||
begin
|
||||
require 'pygments'
|
||||
rescue LoadError
|
||||
STDERR.puts 'You are missing a library required for syntax highlighting. Please run:'
|
||||
STDERR.puts ' $ [sudo] gem install pygments'
|
||||
raise FatalException.new("Missing dependency: Pygments")
|
||||
end
|
||||
|
||||
def extract_code_language_with_fix!(attr)
|
||||
lang = extract_code_language!(attr) || @options[:kramdown_default_lang]
|
||||
lang = "bash" if lang == "shell"
|
||||
lang
|
||||
end
|
||||
|
||||
def convert_codeblock(el, indent)
|
||||
attr = el.attr.dup
|
||||
lang = extract_code_language_with_fix!(attr)
|
||||
code = pygmentize(el.value, lang)
|
||||
code_attr = {}
|
||||
code_attr['class'] = "language-#{lang}" if lang
|
||||
"#{' '*indent}<div class=\"highlight\"><pre#{html_attributes(attr)}><code#{html_attributes(code_attr)}>#{code}</code></pre></div>\n"
|
||||
end
|
||||
|
||||
def convert_codespan(el, indent)
|
||||
attr = el.attr.dup
|
||||
lang = extract_code_language_with_fix!(attr)
|
||||
code = pygmentize(el.value, lang)
|
||||
if lang
|
||||
attr['class'] = "highlight"
|
||||
if attr.has_key?('class')
|
||||
attr['class'] += " language-#{lang}"
|
||||
else
|
||||
attr['class'] = "language-#{lang}"
|
||||
end
|
||||
end
|
||||
"<code#{html_attributes(attr)}>#{code}</code>"
|
||||
end
|
||||
|
||||
def pygmentize(code, lang)
|
||||
if lang
|
||||
Pygments.highlight(code,
|
||||
:lexer => lang,
|
||||
:options => { :startinline => true, :encoding => 'utf-8', :nowrap => true })
|
||||
else
|
||||
escape_html(code)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# This class is the actual custom Jekyll converter.
|
||||
class Jekyll::Converters::Markdown::KramdownPygments
|
||||
|
||||
def initialize(config)
|
||||
require 'kramdown'
|
||||
@config = config
|
||||
rescue LoadError
|
||||
STDERR.puts 'You are missing a library required for Markdown. Please run:'
|
||||
STDERR.puts ' $ [sudo] gem install kramdown'
|
||||
raise FatalException.new("Missing dependency: kramdown")
|
||||
end
|
||||
|
||||
def convert(content)
|
||||
Kramdown::Document.new(content, @config['kramdown']).to_pygments_html
|
||||
end
|
||||
end
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
layout: post
|
||||
title: blog? static!
|
||||
date: 15.01.2011 15:54
|
||||
date: 15 Jan 2011 15:54:00 +0100
|
||||
path: /:year/:month/:day/blog-static
|
||||
---
|
||||
|
||||
static blog with just one file ;)
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: fnord?
|
||||
date: 15.01.2011 01:34
|
||||
date: 15 Jan 2011 01:34:00 +0100
|
||||
path: /:year/:month/:day/fnord
|
||||
---
|
||||
|
||||
fnordig? WTF ist fnord? [Fnord](http://de.wikipedia.org/wiki/Fnord)
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: post
|
||||
title: fnordig is up and running
|
||||
date: 15.01.2011 00:04
|
||||
---
|
||||
|
||||
fnordig is up and running!
|
7
_posts/2011-01-15-fnordig-is-up-and-running.md
Normal file
7
_posts/2011-01-15-fnordig-is-up-and-running.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
extends: post.liquid
|
||||
title: fnordig is up and running
|
||||
date: 15 Jan 2011 00:04:00 +0100
|
||||
path: /:year/:month/:day/fnordig-is-up-and-running
|
||||
---
|
||||
|
||||
fnordig is up and running!
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: error pages
|
||||
date: 20 Jan 2011 00:00:00 +0100
|
||||
path: /:year/:month/:day/error-pages
|
||||
---
|
||||
|
||||
I just added more "fnordig-like" error pages
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: sshuttle - poor man's vpn
|
||||
date: 22 Jan 2011 00:00:00 +0100
|
||||
path: /:year/:month/:day/poor-mans-vpn
|
||||
---
|
||||
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: static blog system runs!
|
||||
date: 22 Jan 2011 00:00:00 +0100
|
||||
path: /:year/:month/:day/static-blog-system-runs
|
||||
---
|
||||
|
||||
my small and simple blog system works!
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: static blog system improved
|
||||
date: 23 Jan 2011 00:00:00 +0100
|
||||
path: /:year/:month/:day/static-blog-system-improved
|
||||
---
|
||||
|
||||
My static blog system script now launches a small web server and auto-updates on a file change. This way you've got a live preview directly in your browser.
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
title: ipv6 with nodejs
|
||||
extends: post.liquid
|
||||
title: IPv6 with NodeJS
|
||||
date: 26 Jan 2011 00:00:00 +0100
|
||||
path: /:year/:month/:day/ipv6-with-nodejs
|
||||
---
|
||||
|
||||
As there are just a few new ipv4 address left in the pool and even those will be [exhausted in under a week](http://inetcore.com/project/ipv4ec/index_en.html) (6 days left, checked right now) the switch to [IPv6](http://en.wikipedia.org/wiki/Ipv6) will be necessary soon.
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Blog running on jekyll again
|
||||
date: 25 Aug 2011 00:00:00 +0100
|
||||
path: /:year/:month/:day/blog-running-with-jekyll
|
||||
---
|
||||
|
||||
I decided to setup a blog again. And again I'll use [jekyll][], a `blog-aware, static site generator in Ruby`.
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
title: compile nginx
|
||||
extends: post.liquid
|
||||
title: Compile nginx
|
||||
date: 02 Sep 2011 00:00:00 +0100
|
||||
path: /:year/:month/:day/compile-nginx
|
||||
---
|
||||
|
||||
I'm using [nginx][] as my main webserver and proxy for all my other projects (let it be node.js or ruby things).
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: now with code higlighting
|
||||
date: 02 Sep 2011 00:00:00 +0100
|
||||
path: /:year/:month/:day/kramdown-test
|
||||
---
|
||||
|
||||
I am a programmer and I like to write code and I like to talk about code. That's why this blog really needs some syntax highlighting for my favorite languages.
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: running on ssl
|
||||
date: 08.09.2011 00:31
|
||||
date: 08 Sep 2011 00:31:00 +0200
|
||||
path: /:year/:month/:day/running-on-ssl
|
||||
---
|
||||
|
||||
Even though the [SSL][] and [CA][] system is totally broken right now, I finally got my blog as well as my [etherpad][] served over SSL:
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: running etherpad-lite on nginx
|
||||
date: 27.09.2011 21:24
|
||||
date: 27 Sep 2011 21:24:00 +0200
|
||||
path: /:year/:month/:day/running-etherpad-lite-on-nginx
|
||||
---
|
||||
|
||||
As you should already know if you read this blog, I am using [nginx][] as my main http server as well as a reverse proxy for my apps running on node.js or simple ruby.
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: fast and simple proxy server
|
||||
date: 02.10.2011 01:27
|
||||
date: 02 Oct 2011 01:27:00 +0200
|
||||
path: /:year/:month/:day/fast-and-simple-proxy-server
|
||||
---
|
||||
|
||||
So you have this friend sitting somewhere else in the world and want to give him a simple proxy to access a geoip-protected site or something similar. But what tool to use?
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: using ipv6 with inetd
|
||||
date: 18.10.2011 10:58
|
||||
date: 18 Oct 2011 10:58:00 +0200
|
||||
path: /:year/:month/:day/using-ipvwith-inetd
|
||||
---
|
||||
I am the administrator of the [ctdo][] own jabber server over at `jabber.ctdo.de`.
|
||||
It is currently running on the old but working [jabberd][] and also hosts a [bitlbee] server on several ports including ssl-protected ones.
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: network config without ifconfig
|
||||
date: 25.12.2011 14:52
|
||||
date: 25 Dec 2011 14:52:00 +0100
|
||||
path: /:year/:month/:day/network-config-without-ifconfig
|
||||
---
|
||||
|
||||
[ifconfig](http://linux.die.net/man/8/ifconfig) is more or less deprecated and replaced by [ip](http://linux.die.net/man/8/ip), which has a different syntax.
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: send your docs to your kindle
|
||||
date: 25.12.2011 15:01
|
||||
date: 25 Dec 2011 15:01:00 +0100
|
||||
path: /:year/:month/:day/send-your-docs-to-your-kindle
|
||||
---
|
||||
I got a new [Kindle 4](http://www.amazon.de/Kindle-eReader-Wi-Fi-Display-deutsches/dp/B0051QVF7A/ref=amb_link_162551127_2?pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=center-1&pf_rd_r=17K3DH24R9MPM5BFJJQ2&pf_rd_t=101&pf_rd_p=270263907&pf_rd_i=301128) for Christmas.
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: swap in double-linked lists
|
||||
date: 07.05.2012 22:22
|
||||
date: 07 May 2012 22:22:00 +0200
|
||||
path: /:year/:month/:day/swap-in-double-linked-lists
|
||||
---
|
||||
|
||||
Yesterday I had to implement [Selection Sort](http://en.wikipedia.org/wiki/Selection_sort)
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: my instapaper stats
|
||||
date: 08.05.2012 11:33
|
||||
date: 08 May 2012 11:33:00 +0200
|
||||
path: /:year/:month/:day/my-instapaper-stats
|
||||
---
|
||||
|
||||
I am an actively user of the great [Instapaper](http://www.instapaper.com/)
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: instapaper-stats is online
|
||||
date: 12.05.2012 17:13
|
||||
date: 12 May 2012 17:13:00 +0200
|
||||
path: /:year/:month/:day/instapaper-stats-is-online
|
||||
---
|
||||
|
||||
I mentioned the script I'm using for my instapaper stats [here](http://fnordig.de/2012/05/08/my-instapaper-stats/).
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Raspberry Pi - A guick guide to a successful start
|
||||
date: 05.07.2012 00:27
|
||||
date: 05 Jul 2012 00:27:00 +0200
|
||||
path: /:year/:month/:day/raspberry-pia-guick-guide-to-a-successfull-start
|
||||
---
|
||||
|
||||
Today my [Raspberry Pi][pi] arrived and I quickly got it up and running.
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Raspberry Pi - Day 2
|
||||
date: 06.07.2012 13:20
|
||||
date: 06 Jul 2012 13:20:00 +0200
|
||||
path: /:year/:month/:day/raspberry-pi-day-two
|
||||
---
|
||||
|
||||
[Yesterday night](http://fnordig.de/2012/07/05/raspberry-pia-guick-guide-to-a-successfull-start/)
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Getting IPv6 working with SmartOS and KVM
|
||||
date: 16.09.2012 01:13
|
||||
date: 16 Sep 2012 01:13:00 +0200
|
||||
path: /:year/:month/:day/getting-ipvworking-with-smartos-and-kvm
|
||||
---
|
||||
|
||||
Just about 2 weeks ago I started to play around with [SmartOS][].
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: BadBill - a Billomat API client
|
||||
date: 21.09.2012 12:58
|
||||
date: 21 Sep 2012 12:58:00 +0200
|
||||
path: /:year/:month/:day/badbilla-billomat-api-client
|
||||
---
|
||||
I'm happy to announce the release of my Billomat API client:
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Getting try.redis-db.com back online!
|
||||
date: 13.12.2012 22:43
|
||||
date: 13 Dec 2012 22:43:00 +0100
|
||||
path: /:year/:month/:day/getting-try-redis-db-com-back-online
|
||||
---
|
||||
|
||||
Hi there,
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: fnord news show 2012
|
||||
date: 30.12.2012 14:20
|
||||
date: 30 Dec 2012 14:20:00 +0100
|
||||
path: /:year/:month/:day/fnord-news-show
|
||||
---
|
||||
|
||||
I'm at the [29c3][] right now and guess what happened here? Right, the [fnord news show][] happened.
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: 2.9-C/3 - N.O-T/MY-D/E.PA/R.T-ME-N/T.
|
||||
date: 04.01.2013 23:09
|
||||
date: 04 Jan 2013 23:09:00 +0100
|
||||
path: /:year/:month/:day/29c3-or-my-first-congress
|
||||
---
|
||||
|
||||
I was at the [29c3][wiki] <del>this</del> last year and it was great.
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: try.redis.io is online
|
||||
date: 10.01.2013 21:02
|
||||
date: 10 Jan 2013 21:02:00 +0100
|
||||
path: /:year/:month/:day/try-redis-io-is-online
|
||||
---
|
||||
Finally:
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Problems after disconnecting LUKS device
|
||||
date: 14.01.2013 23:28
|
||||
date: 14 Jan 2013 23:28:00 +0100
|
||||
path: /:year/:month/:day/problems-after-disconnecting-luks-device
|
||||
---
|
||||
|
||||
Yesterday I got my 2TB backup disk. I formatted it and then used [LUKS][] to encrypt it and [LVM][] for the Volume Management.
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: irregular backups with rsnapshot (and rsnapshot_ii)
|
||||
date: 22.01.2013 19:08
|
||||
date: 22 Jan 2013 19:08:00 +0100
|
||||
path: /:year/:month/:day/irregular-backups-with-rsnapshotand-rsnapshot-ii
|
||||
---
|
||||
|
||||
As stated in the last post I bought a big 2TB HDD for backups. My only
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: git merge 2013
|
||||
date: 11.05.2013 18:20
|
||||
date: 11 May 2013 18:20:00 +0200
|
||||
path: /:year/:month/:day/git-merge
|
||||
---
|
||||
|
||||
Friday and Saturday I attended [gitmerge][homepage], a free Git user conference
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Iterate the keyspace in redis: SCAN"
|
||||
date: 01.11.2013 18:40
|
||||
date: 01 Nov 2013 18:40:00 +0100
|
||||
path: /:year/:month/:day/iterate-the-keyspace-in-redis-scan
|
||||
---
|
||||
|
||||
A few days ago antirez finally [merged][pr] the SCAN algorithm written by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Run server-side git hook when there are no updates
|
||||
date: 02.11.2013 10:14
|
||||
date: 02 Nov 2013 10:14:00 +0100
|
||||
path: /:year/:month/:day/run-server-side-git-hook-when-there-are-no-updates
|
||||
---
|
||||
|
||||
I make heavy use of of [hooks in git][git-hooks], especially post-receive, to
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Unicode codepoints in ruby
|
||||
date: 06.11.2013 12:04
|
||||
date: 06 Nov 2013 12:04:00 +0100
|
||||
path: /:year/:month/:day/unicode-codepoints-in-ruby
|
||||
---
|
||||
Another post of the category "better write it down before you forget it".
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Redis FAQ or: what you learn when idling in #redis"
|
||||
date: 10.11.2013 21:10
|
||||
date: 10 Nov 2013 21:10:00 +0100
|
||||
path: /:year/:month/:day/redis-faq-or-what-you-learn-when-idling-in-redis
|
||||
---
|
||||
|
||||
Sometime ago I created the [redis-faq][], a small list of common or not so
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: 30C3
|
||||
date: 01.01.2014 23:42
|
||||
date: 01 Jan 2014 23:42:00 +0100
|
||||
path: /:year/:month/:day/30c3
|
||||
---
|
||||
|
||||
At the end of last year I was once again in Hamburg, this year for the [30th Chaos Communication Congress](https://events.ccc.de/congress/2013/wiki/Main_Page).
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Fixing a Vagrant "hostonlyif" error
|
||||
date: 20.01.2014 13:24
|
||||
date: 20 Jan 2014 13:24:00 +0100
|
||||
path: /:year/:month/:day/fixing-a-vagrant-hostonlyif-error
|
||||
---
|
||||
|
||||
------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Multiple slides on one side in one pdf
|
||||
date: 19.02.2014 18:33
|
||||
date: 19 Feb 2014 18:33:00 +0100
|
||||
path: /:year/:month/:day/multiple-slides-on-one-side-in-one-pdf
|
||||
---
|
||||
|
||||
Ever had multiple slide sets, e.g. from a lecture, and you needed an overview to print out?
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Samsung Chromebook - a short review
|
||||
date: 03.03.2014 15:18
|
||||
date: 03 Mar 2014 15:18:00 +0100
|
||||
path: /:year/:month/:day/samsung-chromebook-a-short-review
|
||||
---
|
||||
|
||||
One week ago I purchased a Chromebook. To be exact I purchased the Samsung
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Don't set an empty root password on Chrome OS
|
||||
date: 04.03.2014 16:41
|
||||
date: 04 Mar 2014 16:41:00 +0100
|
||||
path: /:year/:month/:day/don-t-set-an-empty-root-password-on-chrome-os
|
||||
---
|
||||
|
||||
So I got this [Chromebook][chromebook-post] in Developer Mode and wanted to set
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Redis Cluster with pre-existing data
|
||||
date: 11.03.2014 17:05
|
||||
date: 11 Mar 2014 17:05:00 +0100
|
||||
path: /:year/:month/:day/redis-cluster-with-pre-existing-data
|
||||
---
|
||||
|
||||
With Beta 2 of Redis Cluster <del>arriving soon</del> [released just now][cluster-beta2], I finally found some time to play around with it.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Fixing zfs pool error in zones/dump
|
||||
date: 17.03.2014 14:08
|
||||
date: 17 Mar 2014 14:08:00 +0100
|
||||
path: /:year/:month/:day/fixing-zfs-pool-error-in-zones-dump
|
||||
---
|
||||
|
||||
At work we're using [SmartOS][], an Open Solaris clone featuring all kinds of cool stuff. One of the best things is the underlying file system: ZFS.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: OpenTechSchool - Learn new things
|
||||
date: 01.04.2014 23:05
|
||||
date: 01 Apr 2014 23:05:00 +0200
|
||||
path: /:year/:month/:day/opentechschool-learn-new-things
|
||||
---
|
||||
|
||||
Last weekend (29./30.03.) I coached beginners some HTML & CSS. This is about my experience.
|
||||
|
@ -9,11 +9,9 @@ Last weekend (29./30.03.) I coached beginners some HTML & CSS. This is about my
|
|||
A while back a [friend of mine][snnd] asked me if I wanted to help at [OpenTechSchool Dortmund][ots-do], coaching programming or to hold a talk.
|
||||
At that time I was a little busy with University stuff like writing exams, but I said I would be very happy to help.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:right;margin-left:10px;">
|
||||
[![Workshop schedule](//tmp.fnordig.de/ots/2014-03/th-html_css_workshop_schedule.jpg)](//tmp.fnordig.de/ots/2014-03/html_css_workshop_schedule.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
Then about a week ago he reached out to me. One of their coaches had canceled and they needed a new one. I immediately said yes.
|
||||
Last friday then we had a short and fun coach meeting where I met the organizers. They worked hard to translate the complete material into German to make it easily understandable. [The full material can be found online][workshop]. It's not quite perfect but it is a good starting point.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Changing the root password in recent SmartOS
|
||||
date: 12.05.2014 22:02
|
||||
date: 12 May 2014 22:02:00 +0200
|
||||
path: /:year/:month/:day/changing-the-root-password-in-recent-smartos
|
||||
---
|
||||
|
||||
Back in 2012 Jonathan Perkin wrote a little bit about [SmartOS and the global zone][perkin],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: key=value logs with nginx
|
||||
date: 15.04.2014 18:24
|
||||
date: 15 Apr 2014 18:24:00 +0200
|
||||
path: /:year/:month/:day/key-value-logs-with-nginx
|
||||
---
|
||||
|
||||
In [Six Ways to Make Your Production Logs More Useful][fun-with-logs] [@roidrage][] talked about how to make your logs much more useful.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: OpenTechSchool - Javascript for Beginners
|
||||
date: 26.05.2014 15:15
|
||||
date: 26 May 2014 15:15:00 +0200
|
||||
path: /:year/:month/:day/opentechschooljavascript-for-beginners
|
||||
---
|
||||
|
||||
2 month ago I coached at OpenTechSchool's [HTML & CSS for Absolute Beginners][htmlfab] workshop.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Extending Redis with Lua packages
|
||||
date: 27.07.2014 13:57
|
||||
date: 27 Jul 2014 13:57:00 +0200
|
||||
path: /:year/:month/:day/extending-redis-with-lua-packages
|
||||
---
|
||||
|
||||
**Warning**: If you patch your Redis as stated below, you won't get much support from the Community.
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: eurucamp 2014
|
||||
date: 04.08.2014 14:15
|
||||
date: 04 Aug 2014 14:15:00 +0200
|
||||
path: /:year/:month/:day/eurucamp-2014
|
||||
---
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:right;margin-left:10px;width:250px;">
|
||||
[![eurucamp chalk](//tmp.fnordig.de/eurucamp2014/th-2014-08-01_09.58.46.jpg)](//tmp.fnordig.de/eurucamp2014/2014-08-01_09.58.46.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
I'm just heading back to Aachen from [eurucamp 2014][eurucamp].
|
||||
And all I can say is: What an awesome conference!
|
||||
|
@ -51,11 +49,9 @@ If you already have a project it's not that easy to get it into a new market in
|
|||
The audience for your product has completely different expectations, the country may have different laws. All these things need to be considered to be successfull.
|
||||
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:right;margin-left:10px;width:250px;">
|
||||
[![rin live-coding a game](//tmp.fnordig.de/eurucamp2014/th-2014-08-02_10.21.40.jpg)](//tmp.fnordig.de/eurucamp2014/2014-08-02_10.21.40.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
### Let's build a game with Ruby
|
||||
|
||||
|
@ -77,24 +73,20 @@ purchased the necessary hardware and built a remote-controlled air purifier usin
|
|||
|
||||
### RubyMotion and Accessibility
|
||||
|
||||
<span style="float:left;margin-right:10px;width:250px">
|
||||
[![taking a brake in the shadow](//tmp.fnordig.de/eurucamp2014/th-2014-08-01_16.56.27.jpg)](//tmp.fnordig.de/eurucamp2014/2014-08-01_16.56.27.jpg)
|
||||
</span>
|
||||
|
||||
One of the best talks for me was the one about Accessibility held by [Austin](https://github.com/austinseraphin), a blind developer.
|
||||
He's using both an iPhone and a Mac, because all of these Apple systems have built-in accessibility features, like Voice Over, the screen reader in iOS and OS X.
|
||||
He also wrote software for [RubyMotion](http://www.rubymotion.com/) to make accessibility-testing even easier and
|
||||
showed how easy it is to make iPhone apps more accessible. It's build in by default anyway,
|
||||
adding information and labels is already a great improvement for every app. Test these things!
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:left;margin-right:10px;width:250px">
|
||||
[![taking a brake in the shadow](//tmp.fnordig.de/eurucamp2014/th-2014-08-01_16.56.27.jpg)](//tmp.fnordig.de/eurucamp2014/2014-08-01_16.56.27.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:right;margin-left:10px;width:250px">
|
||||
[![Griebnitzsee](//tmp.fnordig.de/eurucamp2014/th-2014-08-02_15.23.05.jpg)](//tmp.fnordig.de/eurucamp2014/2014-08-02_15.23.05.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
### Refactoring Ruby with Monads (or, Monads: The Good Parts)
|
||||
|
||||
|
@ -111,11 +103,7 @@ The code is available as a [gem and on GitHub](https://github.com/tomstuart/mona
|
|||
|
||||
_(That's all it needs as a comment)_
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:left;margin-right:10px;width:250px;">
|
||||
[![Beautfiul sunset over the venue's lawn](//tmp.fnordig.de/eurucamp2014/th-2014-08-02_20.28.48.jpg)](//tmp.fnordig.de/eurucamp2014/2014-08-02_20.28.48.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
[![Beautfiul sunset over the venue's lawn](//tmp.fnordig.de/eurucamp2014/2014-08-02_20.28.48.jpg)](//tmp.fnordig.de/eurucamp2014/2014-08-02_20.28.48.jpg)
|
||||
|
||||
### Utils is a Junk Drawer!
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: eurucamp 2014 - Video & Photos
|
||||
date: 09.08.2014 13:06
|
||||
date: 09 Aug 2014 13:06:00 +0200
|
||||
path: /:year/:month/:day/eurucamp-2014-video-and-photos
|
||||
---
|
||||
|
||||
Great short video documentation of eurucamp 2014 (by [@polarblau](https://twitter.com/polarblau)):
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: first experience with Rust
|
||||
date: 12.08.2014 13:25
|
||||
date: 12 Aug 2014 13:25:00 +0200
|
||||
path: /:year/:month/:day/first-experience-with-rust
|
||||
---
|
||||
|
||||
------
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: jsfest week 2014
|
||||
date: 18.09.2014 01:39
|
||||
date: 18 Sep 2014 01:39:00 +0200
|
||||
path: /:year/:month/:day/jsfest-week-2014
|
||||
---
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:right;margin-left:10px;width:350px;">
|
||||
[![rejectjs banner](//tmp.fnordig.de/jsfest2014/th-2014-09-11_08.52.55.jpg)](//tmp.fnordig.de/jsfest2014/2014-09-11_08.52.55.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
Last week I had the opportunity to spend a long weekend in the beautiful capital of Germany for [jsfest.berlin][jsfest].
|
||||
What should I say? It was amazing.
|
||||
|
@ -19,11 +17,9 @@ After [eurucamp](https://fnordig.de/2014/08/04/eurucamp-2014/) set quite a basis
|
|||
The 3 conference days were packed with interesting talks, quite a few parties and great food. JavaScript seems to be quite a nice language (sometimes) and people do awesome stuff with it.
|
||||
From sleep-hacking over making music and animations to making gifs even more awesome. Oh, and some stuff others would consider more useful in work life too.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:left;margin-right:10px;width:188px;">
|
||||
[![rejectjs badge](//tmp.fnordig.de/jsfest2014/th-2014-09-11_09.00.53.jpg)](//tmp.fnordig.de/jsfest2014/2014-09-11_09.00.53.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
The only downside was that I in fact didn't really have time for a whole 4 days off, so I wasn't too focused on the reject.js talks and I might have missed good things from it :(
|
||||
|
||||
|
@ -44,11 +40,9 @@ After a nice intro (wait for the videos),
|
|||
|
||||
The talk was followed by **We Will All Be Game Programmers** from [Hunter Loftis](https://twitter.com/hunterloftis). Today's apps use a lot of the ideas that were used in games years ago, maybe we should have a look at game developing techniques and tooling a bit more to see what's relevant for modern web app programming.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:right;margin-left:10px;width:350px;">
|
||||
[![beanbag.js](//tmp.fnordig.de/jsfest2014/th-2014-09-13_13.42.50.jpg)](//tmp.fnordig.de/jsfest2014/2014-09-13_13.42.50.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
**JavaScript Level 9000** by [Christoph Martens](https://twitter.com/martensms) explained a lot of low-level stuff in JavaScript. I'm not that into JavaScript yet, so I didn't take too much from it with me.
|
||||
|
||||
|
@ -64,12 +58,10 @@ After skipping two talks, [James Coglan](https://twitter.com/jcoglan) entered th
|
|||
|
||||
[Michael Donohoe](https://twitter.com/donohoe) talked about how to **Deep-link to Anything on the Web**. Working as a developer for journalistic sites he implemented multiple solutions to help linking to sections of an article, annotating it as needed and how to combine that with the backend.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:left;margin-right:10px;width:250px;">
|
||||
[![party with nerds](//tmp.fnordig.de/jsfest2014/th-2014-09-13_22.36.28.jpg)](//tmp.fnordig.de/jsfest2014/2014-09-13_22.36.28.jpg)
|
||||
</span>
|
||||
|
||||
{::options parse_block_html="false" /}
|
||||
After another coffee break (there were a lot coffee breaks that weekend)
|
||||
[Mathieu Henri](https://twitter.com/p01) showed **Monster Audio-Visual demos in a TCP packet**, a short introduction into the demo scene and the techniques he uses to build demos in as few bytes as possible. I wish I was more creative with visuals and audio.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: A Rust library for LibLZF
|
||||
date: 15.10.2014 11:10
|
||||
date: 15 Oct 2014 11:10:00 +0200
|
||||
path: /:year/:month/:day/a-rust-library-for-liblzf
|
||||
---
|
||||
|
||||
In the last four months I did not produce much open-source code. I was busy writing my Bachelor Thesis.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Review: Redis Applied Design Patterns"
|
||||
date: 11.11.2014 00:41
|
||||
date: 11 Nov 2014 00:41:00 +0100
|
||||
path: /:year/:month/:day/review-redis-applied-design-patterns
|
||||
---
|
||||
|
||||
In the mid of October I was approached by Packt Publishing asking if
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: How to not write a Bachelor Thesis
|
||||
date: 15.11.2014 03:18
|
||||
date: 15 Nov 2014 03:18:00 +0100
|
||||
path: /:year/:month/:day/how-to-not-write-a-bachelor-thesis
|
||||
---
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:right;margin-left:10px;width:350px;">
|
||||
[![Iteration 1](//tmp.fnordig.de/ba/th-2014-10-11_15.58.09.jpg)](//tmp.fnordig.de/ba/2014-10-11_15.58.09.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
|
||||
… and how I got it finished anyway.
|
||||
|
@ -25,11 +23,9 @@ Writing technical texts is different from a novel or a short blog post. Work on
|
|||
|
||||
The next thing: buy a paper notebook dedicated for your notes on the thesis topic. I kept mine with me and actually used it. Keeping meeting minutes, tasks to do for the week, simulation results or general ideas (though most of the stuff was added in the last 4 weeks).
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:left;margin-right:10px;width:350px;">
|
||||
[![Everything done](//tmp.fnordig.de/ba/th-2014-10-12_20.05.28.jpg)](//tmp.fnordig.de/ba/2014-10-12_20.05.28.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
Once you know your topic, start the research. That includes finding documentation, papers and whatever seems necessary for your topic.
|
||||
Make sure to note down your sources immediately. Read papers and summarize them for yourself and discuss them with your supervisor or other students.
|
||||
|
@ -51,11 +47,9 @@ My advice: keep track of your time. Note down how long you worked each day and w
|
|||
I guess no matter what you do, the last weeks will still be busy. What got me most focussed on the task at hand is the Pomodoro technique. 25 minutes of concentrated work, no distractions, no drinking, no eating, no running around. 5 minutes break. Check Twitter, Facebook, Mails, whatever. Then repeat.
|
||||
I use this technique for 3 years of studying now, and it also works for coding and writing.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<span style="float:right;margin-left:10px;width:220px;">
|
||||
[![The printed thesis](//tmp.fnordig.de/ba/th-2014-10-13_09.59.16.jpg)](//tmp.fnordig.de/ba/2014-10-13_09.59.16.jpg)
|
||||
</span>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
I had to write my thesis in English, but I'm far from a perfect English speaker or writer.
|
||||
I now know that I should practice much more often (and I try to do that by getting more blog posts out).
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "The story of my childhood or: Rust on the PSP"
|
||||
date: 03.12.2014 20:03
|
||||
date: 03 Dec 2014 20:03:00 +0100
|
||||
path: /:year/:month/:day/a-story-of-hacking-or-rust-on-the-psp
|
||||
---
|
||||
|
||||
------
|
||||
|
@ -102,11 +102,9 @@ As soon as I was back home, I grabbed my PSP, booted up a new virtual machine an
|
|||
|
||||
First step: Re-compile and run p-twit. Yip, it works (ok, it starts. Of course the Twitter API is so closed these days, it wouldn't be able to do anything).
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div style="text-align:center">
|
||||
<center>
|
||||
[![p-twit runs again](//tmp.fnordig.de/rust-on-psp/th-2014-11-24_11.54.27.jpg)](//tmp.fnordig.de/rust-on-psp/2014-11-24_11.54.27.jpg)
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
</center>
|
||||
|
||||
Second step: Follow the instructions from the [Gist][helloworld-instructions].
|
||||
|
||||
|
@ -129,20 +127,16 @@ He simply used the pre-compiled [minpspw][] package
|
|||
(*Update 04.12.2014*: Luqman informed me he does in fact built it himself from the minpspw svn, which in turn uses the psptoolchain I tried with first, so absolutely no idea why directly using it failed).
|
||||
Once I grabbed that, the "Hello World" application compiled and ran! Success!
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div style="text-align:center">
|
||||
<center>
|
||||
[![From Rust with love](//tmp.fnordig.de/rust-on-psp/th-2014-11-27_01.13.59.jpg)](//tmp.fnordig.de/rust-on-psp/2014-11-27_01.13.59.jpg)
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
</center>
|
||||
|
||||
The journey doesn't end here.
|
||||
Only partly satisfied with what I had, I took some free time on a train ride to write a wrapper for the input handling.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div style="text-align:center">
|
||||
<center>
|
||||
[![Press X, press O](//tmp.fnordig.de/rust-on-psp/th-2014-11-28_12.25.50.jpg)](//tmp.fnordig.de/rust-on-psp/2014-11-28_12.25.50.jpg)
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
</center>
|
||||
|
||||
Now it's possible to react to user input with this simple piece of code:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: 2014 in many words
|
||||
date: 29.12.2014 15:00
|
||||
date: 29 Dec 2014 15:00:00 +0100
|
||||
path: /:year/:month/:day/2014-in-many-words
|
||||
---
|
||||
### My year in numbers
|
||||
|
||||
|
@ -69,52 +69,9 @@ And thanks to all the people I forgot to mention explicitely, thanks to my frien
|
|||
|
||||
There are already a lot of things planned for 2015, so it will be just as busy as this year.
|
||||
|
||||
{::options parse_block_html="false" /}
|
||||
<div style="text-align:center">
|
||||
<strong><3</strong>
|
||||
</div>
|
||||
{::options parse_block_html="true" /}
|
||||
|
||||
|
||||
<!--dank an hoodie (lena, gregor, jan, ola)-->
|
||||
<!--dank an dominik-->
|
||||
<!--dank an lotte-->
|
||||
<!--dank an ots (ola, carsten, leif, hendrik)-->
|
||||
<!--dank an ruby leute-->
|
||||
<!--dannke an salzburg barcamp (hannes, stephan)-->
|
||||
|
||||
<!--2 ots workshops,-->
|
||||
<!--fosdem, eurucamp, froscon/redfrog, reject.js, jsconf, railscamp, barcamp salzburg, 31c3-->
|
||||
<!--usa-urlaub / ietf meeting-->
|
||||
<!--bachelor arbeit-->
|
||||
|
||||
<!--2 Spontan-Vorträge (salzburg, froscon/redfrog)-->
|
||||
<!--1 Redis Vortrag-->
|
||||
|
||||
<!--~12-18 neue T-Shirts-->
|
||||
|
||||
<!--X redis releases-->
|
||||
<!--879 github contributions-->
|
||||
<!--380 github opensource contributions-->
|
||||
|
||||
<!--
|
||||
3 Sportturniere mit der Uni-Handball-Mannschaft, eins aus versehen gewonnen
|
||||
|
||||
20 blog posts
|
||||
|
||||
36 Instagram Fotos
|
||||
|
||||
ca 3000 fotos
|
||||
|
||||
|
||||
tweets
|
||||
[~]% grep '^ "id"' ~/projects/twitter-backup/data/js/tweets/2014_* | wc -l
|
||||
8243
|
||||
|
||||
non-reply tweet
|
||||
% grep '^ "in_reply_to_status_id"' 2014_* | grep null | wc -l
|
||||
2464
|
||||
-->
|
||||
|
||||
[hoodie]: http://hood.ie/
|
||||
[ola]: https://twitter.com/misprintedtype
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: rdb-rs - fast and efficient RDB parsing utility
|
||||
date: 15.01.2015 23:50
|
||||
date: 15 Jan 2015 23:50:00 +0100
|
||||
path: /:year/:month/:day/rdb-rs-fast-and-efficient-rdb-parsing-utility
|
||||
---
|
||||
|
||||
Ever since I started looking into [Rust][] I knew I needed a bigger project for which I could use it.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: hiredis is up to date
|
||||
date: 09.02.2015 20:20
|
||||
date: 09 Feb 2015 20:20:00 +0100
|
||||
path: /:year/:month/:day/hiredis-is-up-to-date
|
||||
---
|
||||
|
||||
Back in December 2014 antirez reached out to the community, to [find a new maintainer of hiredis](https://github.com/redis/hiredis/issues/283).
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "The difference of Rust's thread::spawn and thread::scoped"
|
||||
date: 05.03.2015 14:41
|
||||
date: 05 Mar 2015 14:41:00 +0100
|
||||
path: /:year/:month/:day/the-difference-of-rust-s-spawn-and-scoped
|
||||
---
|
||||
|
||||
So yesterday I gave a Rust introduction talk at the local hackerspace, [CCCAC](http://ccc.ac).
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: U2F demo application
|
||||
date: 06.03.2015 16:07
|
||||
date: 06 Mar 2015 16:07:00 +0100
|
||||
path: /:year/:month/:day/u2f-demo-application
|
||||
---
|
||||
|
||||
Two weeks ago I got my first Universal Second Factor Device.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "New releases of hiredis-py and hiredis-node"
|
||||
date: 03.04.2015 23:05
|
||||
date: 03 Apr 2015 23:05:00 +0200
|
||||
path: /:year/:month/:day/new-releases-of-hiredis-py-and-node
|
||||
---
|
||||
|
||||
I just published [hiredis-py][] v0.2.0 to [PyPi][] and [hiredis-node][] v0.3.0 to [npm][].
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Using a Kindle for status information
|
||||
date: 14.05.2015 20:50
|
||||
date: 14 May 2015 20:50:00 +0200
|
||||
path: /:year/:month/:day/using-a-kindle-for-status-information
|
||||
---
|
||||
|
||||
Back in 2011 I got a Kindle 4 (the non-touch version) and for some time it was
|
||||
|
@ -16,11 +16,9 @@ For some time now I have this link saved: [Kindle Weather Display][weather-displ
|
|||
|
||||
Well, what better to do with a lazy holiday then doing some hacking with the Kindle? And so I did and this is the current result: It displays the weather forecast.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div style="text-align:center">
|
||||
[![For now it shows the weather forecast](//tmp.fnordig.de/kindle/th-Photo-2015-05-14-19-27.jpg)](http://tmp.fnordig.de/kindle/Photo-2015-05-14-19-27.jpg)
|
||||
<a href="http://tmp.fnordig.de/kindle/Photo-2015-05-14-19-27.jpg"><img src="//tmp.fnordig.de/kindle/th-Photo-2015-05-14-19-27.jpg" alt="For now it shows the weather forecast"></a>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
|
||||
As the original article is quite short on the precise steps to get this finished, I wanted to write them up here.
|
||||
|
@ -129,11 +127,11 @@ As this post is already getting quite long, I leave the server-side up to you.
|
|||
All files (for both the Kindle and the server part) are in the GitHub repository: [kindle-weather-display][repo].
|
||||
This is the final result: My Kindle hanging on the wall right under the calendar. :)
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div style="text-align:center">
|
||||
[![It's hanging at the wall](//tmp.fnordig.de/kindle/th-Photo-2015-05-14-16-44.jpg)](http://tmp.fnordig.de/kindle/Photo-2015-05-14-16-44.jpg)
|
||||
<a href="//tmp.fnordig.de/kindle/th-Photo-2015-05-14-16-44.jpg">
|
||||
<img src="//tmp.fnordig.de/kindle/Photo-2015-05-14-16-44.jpg" alt="It's hanging at the wall">
|
||||
</a>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
[weather-display]: http://mpetroff.net/2012/09/kindle-weather-display/
|
||||
[kite]: http://www.mobileread.com/forums/showthread.php?t=168270
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Redis Sentinel & Redis Cluster - what?"
|
||||
date: 01.06.2015 23:20
|
||||
date: 01 Jun 2015 23:20:00 +0200
|
||||
path: /:year/:month/:day/redis-sentinel-and-redis-cluster
|
||||
---
|
||||
|
||||
In the last week there were several questions regarding Redis Sentinel and Redis Cluster, if one or the other will go away or if they need to be used in combination.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "omnomnom - Parsing ISO8601 dates using nom"
|
||||
date: 16.07.2015 11:00
|
||||
date: 16 Jul 2015 11:00:00 +0200
|
||||
path: /:year/:month/:day/omnomnom-parsing-iso8601-dates-using-nom
|
||||
---
|
||||
|
||||
There are thousands of ways to note down a date and time.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Redis Dev Day London 2015"
|
||||
date: 22.10.2015 15:05
|
||||
date: 22 Oct 2015 15:05:00 +0200
|
||||
path: /:year/:month/:day/redis-dev-day-london-2015
|
||||
---
|
||||
|
||||
Last Monday the Redis Dev Day took place in London, followed by a small Unconference on Tuesday.
|
||||
|
@ -30,12 +30,10 @@ None of this is final yet, there are a lot of things to get right before this ca
|
|||
For example it's not done with providing the commands for selection based on indexes, but needing to add, update and remove the index is necessary as well.
|
||||
More in-depth discussions happened the next day, prior to the Unconf.
|
||||
|
||||
{::options parse_block_html="false" /}
|
||||
<center>
|
||||
<blockquote class="twitter-tweet" lang="en"><p lang="en" dir="ltr">Pre-Unconf Dev Meetup in progress! <a href="https://twitter.com/hashtag/RedisLondon?src=hash">#RedisLondon</a> <a href="https://t.co/7HhFocK9J0">pic.twitter.com/7HhFocK9J0</a></p>— c-&gt;flags (@badboy_) <a href="https://twitter.com/badboy_/status/656499542750269441">October 20, 2015</a></blockquote>
|
||||
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
</center>
|
||||
{::options parse_block_html="true" /}
|
||||
|
||||
Even though this kinda goes against the current idea of Redis
|
||||
-- provide the basic tools with a simple API and not much more --
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: 2015 in many words and some photos
|
||||
date: 31.12.2015 20:50
|
||||
date: 31 Dec 2015 20:50:00 +0100
|
||||
path: /:year/:month/:day/2015-in-many-words
|
||||
---
|
||||
|
||||
Last year I summarized my year in a [long blog post](https://fnordig.de/2014/12/29/2014-in-many-words/),
|
||||
|
@ -43,54 +43,42 @@ but 12 blog posts still come down to about one per month.
|
|||
After the busy ending of 2014, 2015 started just as busy.
|
||||
Away from university, I spend more time working, but I found enough time for conferences and a quick one-week visit in San Francisco in April.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<p style="text-align:center">
|
||||
![Golden Gate Bridge](//tmp.fnordig.de/end-of-2015/2015-04-22_10.45.13_1500_cropped.jpg){:width="450px"}
|
||||
![Bay Bridge](//tmp.fnordig.de/end-of-2015/2015-04-22_15.32.13_1500.jpg){:width="450px"}
|
||||
</p>
|
||||
{::options parse_block_html="false" /}
|
||||
<center>
|
||||
![Golden Gate Bridge](//tmp.fnordig.de/end-of-2015/2015-04-22_10.45.13_1500_cropped.jpg)
|
||||
![Bay Bridge](//tmp.fnordig.de/end-of-2015/2015-04-22_15.32.13_1500.jpg)
|
||||
</center>
|
||||
|
||||
University and work kept me busy the whole summer, but I still catched a bit of the Sun.
|
||||
|
||||
After finishing up the Summer semester, I left for Norway in August.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<p style="text-align:center">
|
||||
![Norway Flag](//tmp.fnordig.de/end-of-2015/2015-09-12_13.27.01_1500.jpg){:width="900px"}
|
||||
</p>
|
||||
{::options parse_block_html="false" /}
|
||||
<center>
|
||||
![Norway Flag](//tmp.fnordig.de/end-of-2015/2015-09-12_13.27.01_1500.jpg)
|
||||
</center>
|
||||
|
||||
I came back for a weekend to run otsconf. It was a success, but see for yourself:
|
||||
|
||||
<p style="text-align:center">
|
||||
<iframe width="900" height="506" src="https://www.youtube.com/embed/3Uktz9J0uPs" frameborder="0" allowfullscreen></iframe>
|
||||
</p>
|
||||
|
||||
Back in Norway I had the absolute best time.
|
||||
For example hiking up a hill, sitting on the Kjeragbolten thousand meter over the Fjord.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<p style="text-align:center">
|
||||
![Kjerag](//tmp.fnordig.de/end-of-2015/2015-09-29_13.32.51_1500.jpg){:width="900px"}
|
||||
</p>
|
||||
{::options parse_block_html="false" /}
|
||||
<center>
|
||||
![Kjerag](//tmp.fnordig.de/end-of-2015/2015-09-29_13.32.51_1500.jpg)
|
||||
</center>
|
||||
|
||||
My semester ended early on the first of December, so I had another chance to travel around Norway.
|
||||
Even without a lot of light, the Lofoten are a beautiful place to stay.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<p style="text-align:center">
|
||||
![Lofoten](//tmp.fnordig.de/end-of-2015/_DSC0859_1500.jpg){:width="900px"}
|
||||
</p>
|
||||
{::options parse_block_html="false" /}
|
||||
<center>
|
||||
![Lofoten](//tmp.fnordig.de/end-of-2015/_DSC0859_1500.jpg)
|
||||
</center>
|
||||
|
||||
With 2015 coming to an end, so are other things. I had to replace my old Laptop, which stayed with me for the last four years.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<p style="text-align:center">
|
||||
![Laptop](//tmp.fnordig.de/end-of-2015/old-laptop_1500.jpg){:width="600px"}
|
||||
</p>
|
||||
{::options parse_block_html="false" /}
|
||||
<center>
|
||||
![Laptop](//tmp.fnordig.de/end-of-2015/old-laptop_1500.jpg)
|
||||
</center>
|
||||
|
||||
I really enjoyed living & traveling in Norway and I already put it on my todo list to come back in the summer.
|
||||
I was lucky to be part of so many different but welcoming communities. It's a joy every time I meet these people again.
|
||||
|
@ -108,11 +96,9 @@ And thanks to all those I didn't name explicitely, but who made this year so muc
|
|||
2016 won't start any less busy.
|
||||
With my next university semester only starting in April, I will make the best of that time. The next trip starts in less than five days.
|
||||
|
||||
{::options parse_block_html="false" /}
|
||||
<div style="text-align:center">
|
||||
<strong><3</strong>
|
||||
</div>
|
||||
{::options parse_block_html="true" /}
|
||||
|
||||
[ola]: https://twitter.com/misprintedtype
|
||||
[carsten]: https://twitter.com/dergraf86
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Create GitHub releases with Rust using Hubcaps
|
||||
date: 23.02.2016 20:32
|
||||
date: 23 Feb 2016 20:32:00 +0100
|
||||
path: /:year/:month/:day/create-releases-using-hubcaps-a-rust-library
|
||||
---
|
||||
|
||||
For one of my projects I need to access the GitHub API to create releases.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: Load your config into your environment
|
||||
date: 04.03.2016 12:30
|
||||
date: 04 Mar 2016 12:30:00 +0100
|
||||
path: /:year/:month/:day/load-your-config-into-your-environment
|
||||
---
|
||||
|
||||
It became quite popular to store certain configuration variables in your environment, to be later loaded by your aplication.
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
layout: post
|
||||
title: Releasing Rust projects, the automatic way
|
||||
date: 29.03.2016 20:47
|
||||
date: 29 Mar 2016 20:47:00 +0200
|
||||
path: /:year/:month/:day/releasing-rust-projects-the-automatic-way
|
||||
---
|
||||
|
||||
One of the strength of the Rust ecosystem is its package manager [Cargo][] and the package system [crates.io][].
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Quick check: does your code work?"
|
||||
date: 12.05.2016 23:00
|
||||
date: 12 May 2016 23:00:00 +0200
|
||||
path: /:year/:month/:day/quickcheck-does-your-code-work
|
||||
---
|
||||
|
||||
… because mine didn't. At least not correctly in all cases.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Longboarding: Vennbahn"
|
||||
date: 09.06.2016 16:20
|
||||
date: 09 Jun 2016 16:20:00 +0200
|
||||
path: /:year/:month/:day/longboarding-vennbahn
|
||||
---
|
||||
|
||||
Today, right after finishing my only lecture of the day, I rented a longboard at a local skate shop
|
||||
|
@ -9,37 +9,21 @@ and then took the bus out of the city.
|
|||
I went out to Kornelimünster, a small district of Aachen, about 10 km outside of the city.
|
||||
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<p style="text-align:center">
|
||||
![](//tmp.fnordig.de/longboarding/0609/th-2016-06-09_12.44.21.jpg)
|
||||
</p>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
In the last days it rained half of the day, but today it's sunny and really warm.
|
||||
The route goes mostly downhill from Kornelimünster, so I did not need much pushing and could just let it roll.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<p style="text-align:center">
|
||||
![](//tmp.fnordig.de/longboarding/0609/th-2016-06-09_12.53.25-1.jpg)
|
||||
</p>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
I collected the route with an app.
|
||||
The results: 10,9 km in 53 minutes. Top speed: 31,5 km/h. 12,4 km/h on average.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<p style="text-align:center">
|
||||
![](//tmp.fnordig.de/longboarding/0609/th-2016-06-09_13.18.03.jpg)
|
||||
</p>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
I was much quicker than I thought, so I got some ice cream in the city of Aachen before heading home.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<p style="text-align:center">
|
||||
![](//tmp.fnordig.de/longboarding/0609/th-2016-06-09_14.34.02.jpg)
|
||||
</p>
|
||||
{::options parse_block_html="false" /}
|
||||
|
||||
The route on a map ([available in a Gist](https://gist.github.com/badboy/9c27ca438570a800507f2a76fdd19544)):
|
||||
|
||||
|
|
|
@ -1,23 +1,19 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Rust from the Back to the Front (Rust Sthlm)"
|
||||
date: 31.08.2016 16:30
|
||||
date: 31 Aug 2016 16:30:00 +0200
|
||||
path: /:year/:month/:day/rust-from-the-back-to-the-front
|
||||
---
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div style="text-align:center">
|
||||
<center>
|
||||
[![Rust on the Web](//tmp.fnordig.de/rust-sthlm/th-2016-08-29_18.23.59.jpg)](//tmp.fnordig.de/rust-sthlm/2016-08-29_18.23.59.jpg)
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
</center>
|
||||
|
||||
Last monday I attended the [Rust Sthlm][meetup] Meetup and gave a talk about using Rust for web development.
|
||||
About 60 people attended, had pizza and listened to the two talks of the evening.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div style="text-align:center">
|
||||
<center>
|
||||
[![Meetup](//tmp.fnordig.de/rust-sthlm/th-2016-08-29_18.59.00.jpg)](//tmp.fnordig.de/rust-sthlm/th-2016-08-29_18.59.00.jpg)
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
</center>
|
||||
|
||||
I started off with my talk *Rust from the Back to the Front*, giving an overview of the ecosystem around all things related to web programming in Rust.
|
||||
This was an updated talk of the one I gave in Budapest last year ([video online](https://www.youtube.com/watch?v=L9sTIi7wFPo)).
|
||||
|
@ -28,11 +24,9 @@ I definitely need to look deeper into this topic, as I think it can bring huge i
|
|||
This has to wait a bit though, as I will first dive deeper into Emscripten (and present that [next week in Cologne](http://rustaceans.cologne/2016/09/05/compile-to-js.html) and in [Pittsburgh in October](http://www.rust-belt-rust.com/)).
|
||||
My slides are [online][slides] and I will try to collect more [resources in a Gist][resources].
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div style="text-align:center">
|
||||
<center>
|
||||
[![Rust and openSUSE](//tmp.fnordig.de/rust-sthlm/th-2016-08-29_20.03.47.jpg)](//tmp.fnordig.de/rust-sthlm/2016-08-29_20.03.47.jpg)
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
</center>
|
||||
|
||||
The second talk that evening was by [Kristoffer Grönlund][krig], giving us a quick introduction to some of Rust's features,
|
||||
followed by an overview of his work trying to get Rust into the openSUSE package repositories.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Signify - Ed25519 signatures for your files (in Rust)"
|
||||
date: 28.09.2016 13:16
|
||||
date: 28 Sep 2016 13:16:00 +0200
|
||||
path: /:year/:month/:day/signify-ed25519-signatures-for-your-files
|
||||
---
|
||||
|
||||
From time to time I try to write a piece of code or port some existing library or application just for fun.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "novemb.rs Code Sprint Weekend 2016 - Retrospective"
|
||||
date: 29.11.2016 11:55
|
||||
date: 29 Nov 2016 11:55:00 +0100
|
||||
path: /:year/:month/:day/novemb-rs-code-sprint-weekend-2016-retrospective
|
||||
---
|
||||
|
||||
*This post is a tiny bit late, but better late than never.*
|
||||
|
@ -10,12 +10,10 @@ So on 19th and 20th of November, just over a week ago, we had the very first [no
|
|||
In 10 locations in Europe and the US as well as online, people gathered to hack on projects, start new ones or just to learn Rust.
|
||||
Bringing people together is one goal of the Rust community and coding, learning and having fun together is a lot of fun as well.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div class="image" style="text-align:center">
|
||||
<center>
|
||||
![novemb.rs @ C4](//tmp.fnordig.de/novemb.rs/th-novembrs-sign.jpg)
|
||||
<p>We opened doors at Chaos Computer Club Cologne</p>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
</center>
|
||||
|
||||
I was part of the [novemb.rs Event in Cologne](http://rust.cologne/2016/11/19/novemb-rs.html).
|
||||
On both days about a dozen people showed up, from noon to late in the evening.
|
||||
|
@ -49,12 +47,10 @@ And another big thanks to Mozilla for sponsoring the pizza and the C4 for offeri
|
|||
We should try harder to get people from everywhere involved.
|
||||
* Online Communication between locations wasn't used that much. The whole idea was to have a distributed code sprint, so working together on projects across locations would have been nice. Maybe we should offer to have ad-hoc video calls as well?
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div class="image" style="text-align:center">
|
||||
<center>
|
||||
[![Rust @ Whiteboard](//tmp.fnordig.de/novemb.rs/th-2016-11-20_14.36.28.jpg)](//tmp.fnordig.de/novemb.rs/2016-11-20_14.36.28.jpg)
|
||||
<p>Coding on the whiteboard (only half of the attendees in the picture)</p>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
</center>
|
||||
|
||||
### Try again?
|
||||
|
||||
|
@ -67,9 +63,7 @@ Feel free to join us on the Weihnachtsmarkt or in January at another more regula
|
|||
If you are not from the Rhein area, take a look if there's a [Rust User Group](https://www.rust-lang.org/en-US/user-groups.html) near you.
|
||||
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div class="image" style="text-align:center">
|
||||
<center>
|
||||
[![Rust](//tmp.fnordig.de/novemb.rs/th-2016-11-20_12.11.20.jpg)](//tmp.fnordig.de/novemb.rs/2016-11-20_12.11.20.jpg)
|
||||
<p>Signs showed the way</p>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
</center>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Xen - a backend/frontend driver example"
|
||||
date: 02.12.2016 10:10
|
||||
date: 02 Dec 2016 10:10:00 +0100
|
||||
path: /:year/:month/:day/xen-a-backend-frontend-driver-example
|
||||
---
|
||||
|
||||
Recently I began working on my master thesis. For this I have to get familiar with the [Xen hypervisor][xen] and its implementation of drivers.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Xen - split driver, initial communication"
|
||||
date: 20.12.2016 16:00
|
||||
date: 20 Dec 2016 16:00:00 +0100
|
||||
path: /:year/:month/:day/xen-split-driver-initial-communication
|
||||
---
|
||||
|
||||
In the [previous post](/2016/12/02/xen-a-backend-frontend-driver-example/) I explained how to initially setup a split driver
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: 2016 in many words and some photos
|
||||
date: 31.12.2016 11:30
|
||||
date: 31 Dec 2016 11:30:00 +0100
|
||||
path: /:year/:month/:day/2016-in-many-words
|
||||
---
|
||||
|
||||
Last year I summarized my year in a [long blog post](/2015/12/31/2015-in-many-words/),
|
||||
|
@ -47,59 +47,29 @@ The year started off with a trip to Canada.
|
|||
With temperatures as low as -25°C, lots of snow, pancakes and beer I had a wonderful time.
|
||||
I definitely need to go back once more in the summer.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div class="image" style="text-align:center">
|
||||
![Canada Forest](//tmp.fnordig.de/end-of-2016/2016-01-08_12.27.25.jpg){:width="900px"}
|
||||
<p>Canada Forest</p>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
![Canada Forest](//tmp.fnordig.de/end-of-2016/2016-01-08_12.27.25.jpg)
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div class="image" style="text-align:center">
|
||||
![Freezing cold](//tmp.fnordig.de/end-of-2016/2016-01-13_16.49.41.jpg){:width="900px"}
|
||||
<p>Freezing cold</p>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
![Freezing cold](//tmp.fnordig.de/end-of-2016/2016-01-13_16.49.41.jpg)
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div class="image" style="text-align:center">
|
||||
![Sun over frozen Canada](//tmp.fnordig.de/end-of-2016/2016-01-24_12.59.35.jpg){:width="900px"}
|
||||
<p>Sun over frozen Canada</p>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
![Sun over frozen Canada](//tmp.fnordig.de/end-of-2016/2016-01-24_12.59.35.jpg)
|
||||
|
||||
In May I made a short trip to Stockholm.
|
||||
Equipped with the absolute best weather I enjoyed a few more days away from university and work and could relax.
|
||||
In addition a canceled flight gave me another night in this city.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div class="image" style="text-align:center">
|
||||
![Beautiful Stockholm](//tmp.fnordig.de/end-of-2016/2016-05-17_10.44.11-2.jpg){:width="900px"}
|
||||
<p>Beautiful Stockholm</p>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
![Beautiful Stockholm](//tmp.fnordig.de/end-of-2016/2016-05-17_10.44.11-2.jpg)
|
||||
|
||||
After I got back to Aachen I bought my first Longboard.
|
||||
I enjoyed multiple long trips over the Vennbahn. See more impression in [Longboarding: Vennbahn](//fnordig.de/2016/06/09/longboarding-vennbahn/).
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div class="image" style="text-align:center">
|
||||
![Longboarding on Vennbahn](//tmp.fnordig.de/end-of-2016/2016-06-09_12.53.25-1.jpg){:width="900px"}
|
||||
<p>Longboarding on Vennbahn</p>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
![Longboarding on Vennbahn](//tmp.fnordig.de/end-of-2016/2016-06-09_12.53.25-1.jpg)
|
||||
|
||||
In August I got back to Stockholm a second time.
|
||||
This time with friends for a 4 day long kajaking trip through the Stockholm Archipelago.
|
||||
And again we had the best weather for such a trip.
|
||||
I could even visit the Stockholm Rust meetup and give a talk a few days later before heading back home.
|
||||
|
||||
{::options parse_block_html="true" /}
|
||||
<div class="image" style="text-align:center">
|
||||
![Sunset in the archipelago of Stockholm](//tmp.fnordig.de/end-of-2016/2016-08-24_19.08.49-1.jpg){:width="900px"}
|
||||
<p>Sunset in the archipelago of Stockholm</p>
|
||||
</div>
|
||||
{::options parse_block_html="false" /}
|
||||
![Sunset in the archipelago of Stockholm](//tmp.fnordig.de/end-of-2016/2016-08-24_19.08.49-1.jpg)
|
||||
|
||||
In August I took part in the [Mozilla Tech Speakers program](https://wiki.mozilla.org/TechSpeakers)
|
||||
and thus became an official Tech Speaker.
|
||||
|
@ -133,8 +103,7 @@ I already have some plans for the time after that, including bigger travel plans
|
|||
but I don't know where I will end up after that.
|
||||
2017 will probably be the year I leave Aachen after more than 5 years living there.
|
||||
|
||||
{::options parse_block_html="false" /}
|
||||
<br>
|
||||
<div style="text-align:center">
|
||||
<strong><3</strong>
|
||||
</div>
|
||||
{::options parse_block_html="true" /}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "Send ICMP Echo Replies using eBPF"
|
||||
date: 04.03.2017 17:25
|
||||
date: 04 Mar 2017 17:25:00 +0100
|
||||
path: /:year/:month/:day/send-icmp-echo-replies-using-ebpf
|
||||
---
|
||||
|
||||
For my master thesis I am working with eBPF, the [Extended Berkeley Packet Filter](https://www.kernel.org/doc/Documentation/networking/filter.txt).
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: post
|
||||
title: about
|
||||
extends: simple.liquid
|
||||
title: About
|
||||
route: about
|
||||
path: /about
|
||||
---
|
||||
|
||||
25 years old,
|
||||
|
@ -15,13 +16,13 @@ contributor to [Redis](http://redis.io) and maintainer of [hiredis](https://gith
|
|||
|
||||
|
||||
|
||||
## // links
|
||||
## Links
|
||||
|
||||
* Twitter: [@badboy\_](https://twitter.com/badboy_)
|
||||
* GitHub: [@badboy](https://github.com/badboy)
|
||||
* Pinboard: [badboy](http://pinboard.in/u:badboy)
|
||||
|
||||
## // projects
|
||||
## Projects
|
||||
|
||||
* [Compiling Rust to your Browser](http://www.hellorust.com/emscripten/) - Resources, demos & more for compiling Rust to asm.js & WebAssembly
|
||||
* [semantic-rs](https://github.com/semantic-rs/semantic-rs) - Automatic crate publishing
|
||||
|
@ -31,12 +32,12 @@ contributor to [Redis](http://redis.io) and maintainer of [hiredis](https://gith
|
|||
* [badbill](https://github.com/badboy/badbill) - A client for the [Billomat](http://www.billomat.com/en/api/) API
|
||||
* [Redis FAQ](/redis-faq/) - an unofficial Redis FAQ with user questions
|
||||
|
||||
## // services
|
||||
## Services
|
||||
|
||||
* [etherpad](https://pad.fnordig.de/) - real-time collaborative document editing
|
||||
* [rezepte](http://rezepte.fnordig.de/) - a small database of recipes (german)
|
||||
|
||||
## // other
|
||||
## Other
|
||||
|
||||
* [Events I've been at](http://badboy.hasbeen.at/)
|
||||
* [Places I've been in](http://badboy.hasbeen.in/)
|
122
coderay.css
122
coderay.css
|
@ -1,122 +0,0 @@
|
|||
.CodeRay {
|
||||
background-color: hsl(0,0%,95%);
|
||||
border: 1px solid silver;
|
||||
color: black;
|
||||
margin: 5px;
|
||||
}
|
||||
.CodeRay pre {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
span.CodeRay { white-space: pre; border: 0px; padding: 2px; }
|
||||
|
||||
table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px; }
|
||||
table.CodeRay td { padding: 2px 4px; vertical-align: top; }
|
||||
|
||||
.CodeRay .line-numbers {
|
||||
background-color: hsl(180,65%,90%);
|
||||
color: gray;
|
||||
text-align: right;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.CodeRay .line-numbers a {
|
||||
background-color: hsl(180,65%,90%) !important;
|
||||
color: gray !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
.CodeRay .line-numbers a:target { color: blue !important; }
|
||||
.CodeRay .line-numbers .highlighted { color: red !important; }
|
||||
.CodeRay .line-numbers .highlighted a { color: red !important; }
|
||||
.CodeRay span.line-numbers { padding: 0px 4px; }
|
||||
.CodeRay .line { display: block; float: left; width: 100%; }
|
||||
.CodeRay .code { width: 100%; }
|
||||
.CodeRay .code pre { overflow: auto; }
|
||||
|
||||
.CodeRay .debug { color: white !important; background: blue !important; }
|
||||
|
||||
.CodeRay .annotation { color:#007 }
|
||||
.CodeRay .attribute-name { color:#f08 }
|
||||
.CodeRay .attribute-value { color:#700 }
|
||||
.CodeRay .binary { color:#509 }
|
||||
.CodeRay .char .content { color:#D20 }
|
||||
.CodeRay .char .delimiter { color:#710 }
|
||||
.CodeRay .char { color:#D20 }
|
||||
.CodeRay .class { color:#B06; font-weight:bold }
|
||||
.CodeRay .class-variable { color:#369 }
|
||||
.CodeRay .color { color:#0A0 }
|
||||
.CodeRay .comment { color:#888 }
|
||||
.CodeRay .comment .char { color:#444 }
|
||||
.CodeRay .comment .delimiter { color:#444 }
|
||||
.CodeRay .complex { color:#A08 }
|
||||
.CodeRay .constant { color:#036; font-weight:bold }
|
||||
.CodeRay .decorator { color:#B0B }
|
||||
.CodeRay .definition { color:#099; font-weight:bold }
|
||||
.CodeRay .delimiter { color:black }
|
||||
.CodeRay .directive { color:#088; font-weight:bold }
|
||||
.CodeRay .doc { color:#970 }
|
||||
.CodeRay .doc-string { color:#D42; font-weight:bold }
|
||||
.CodeRay .doctype { color:#34b }
|
||||
.CodeRay .entity { color:#800; font-weight:bold }
|
||||
.CodeRay .error { color:#F00; background-color:#FAA }
|
||||
.CodeRay .escape { color:#666 }
|
||||
.CodeRay .exception { color:#C00; font-weight:bold }
|
||||
.CodeRay .float { color:#60E }
|
||||
.CodeRay .function { color:#06B; font-weight:bold }
|
||||
.CodeRay .global-variable { color:#d70 }
|
||||
.CodeRay .hex { color:#02b }
|
||||
.CodeRay .imaginary { color:#f00 }
|
||||
.CodeRay .include { color:#B44; font-weight:bold }
|
||||
.CodeRay .inline { background-color: hsla(0,0%,0%,0.1); color: black }
|
||||
.CodeRay .inline-delimiter { font-weight: bold; color: #666 }
|
||||
.CodeRay .instance-variable { color:#33B }
|
||||
.CodeRay .integer { color:#00D }
|
||||
.CodeRay .key .char { color: #60f }
|
||||
.CodeRay .key .delimiter { color: #404 }
|
||||
.CodeRay .key { color: #606 }
|
||||
.CodeRay .keyword { color:#080; font-weight:bold }
|
||||
.CodeRay .label { color:#970; font-weight:bold }
|
||||
.CodeRay .local-variable { color:#963 }
|
||||
.CodeRay .namespace { color:#707; font-weight:bold }
|
||||
.CodeRay .octal { color:#40E }
|
||||
.CodeRay .operator { }
|
||||
.CodeRay .predefined { color:#369; font-weight:bold }
|
||||
.CodeRay .predefined-class { color:#069 }
|
||||
.CodeRay .predefined-type { color:#0a5; font-weight:bold }
|
||||
.CodeRay .preprocessor { color:#579 }
|
||||
.CodeRay .pseudo-class { color:#00C; font-weight:bold }
|
||||
.CodeRay .regexp .content { color:#808 }
|
||||
.CodeRay .regexp .delimiter { color:#404 }
|
||||
.CodeRay .regexp .modifier { color:#C2C }
|
||||
.CodeRay .regexp { background-color:hsla(300,100%,50%,0.09); }
|
||||
.CodeRay .reserved { color:#080; font-weight:bold }
|
||||
.CodeRay .shell .content { color:#2B2 }
|
||||
.CodeRay .shell .delimiter { color:#161 }
|
||||
.CodeRay .shell { background-color:hsla(120,100%,50%,0.09); }
|
||||
.CodeRay .string .char { color: #b0b }
|
||||
.CodeRay .string .content { color: #D20 }
|
||||
.CodeRay .string .delimiter { color: #710 }
|
||||
.CodeRay .string .modifier { color: #E40 }
|
||||
.CodeRay .string { background-color:hsla(0,100%,50%,0.08); }
|
||||
.CodeRay .symbol .content { color:#A60 }
|
||||
.CodeRay .symbol .delimiter { color:#630 }
|
||||
.CodeRay .symbol { color:#A60 }
|
||||
.CodeRay .tag { color:#070 }
|
||||
.CodeRay .type { color:#339; font-weight:bold }
|
||||
.CodeRay .value { color: #088; }
|
||||
.CodeRay .variable { color:#037 }
|
||||
|
||||
.CodeRay .insert { background: hsla(120,100%,50%,0.1) }
|
||||
.CodeRay .delete { background: hsla(0,100%,50%,0.1) }
|
||||
.CodeRay .change { color: #bbf; background: #007; }
|
||||
.CodeRay .head { color: #f8f; background: #505 }
|
||||
.CodeRay .head .filename { color: white; }
|
||||
|
||||
.CodeRay .delete .eyecatcher { background-color: hsla(0,100%,50%,0.2); border: 1px solid hsla(0,100%,45%,0.5); margin: -1px; border-bottom: none; border-top-left-radius: 5px; border-top-right-radius: 5px; }
|
||||
.CodeRay .insert .eyecatcher { background-color: hsla(120,100%,50%,0.2); border: 1px solid hsla(120,100%,25%,0.5); margin: -1px; border-top: none; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }
|
||||
|
||||
.CodeRay .insert .insert { color: #0c0; background:transparent; font-weight:bold }
|
||||
.CodeRay .delete .delete { color: #c00; background:transparent; font-weight:bold }
|
||||
.CodeRay .change .change { color: #88f }
|
||||
.CodeRay .head .head { color: #f4f }
|
16
ext/post
16
ext/post
|
@ -5,10 +5,10 @@ OUTPUT_DIR = File.expand_path("~/projects/fnordig.de/_posts")
|
|||
EDITOR = ENV['EDITOR'] || 'vim'
|
||||
EXTENSION=".md"
|
||||
HEADER = <<EOF
|
||||
---
|
||||
layout: post
|
||||
extends: post.liquid
|
||||
title: "%s"
|
||||
date: %s
|
||||
path: /:year/:month/:day/%s
|
||||
---
|
||||
|
||||
EOF
|
||||
|
@ -18,14 +18,20 @@ if ARGV.size == 0
|
|||
exit 1
|
||||
end
|
||||
|
||||
filename = Time.now.strftime("%Y-%m-%d-") + ARGV.map { |arg|
|
||||
def slugify(args)
|
||||
args.map { |arg|
|
||||
arg.downcase.gsub(/[^a-z0-9]/, '-')
|
||||
}.join('-').gsub(/--+/, '-').gsub(/-$/, '')
|
||||
end
|
||||
|
||||
now = Time.now
|
||||
slug = slugify(ARGV)
|
||||
filename = now.strftime("%Y-%m-%d-") + slug
|
||||
title = ARGV.join(' ')
|
||||
file = File.join(OUTPUT_DIR, "#{filename}#{EXTENSION}")
|
||||
date = Time.now.strftime("%d.%m.%Y %H:%M")
|
||||
date = now.strftime("%d %b %Y %H:%M:%S %z")
|
||||
|
||||
puts "new post: #{title}"
|
||||
puts "file: #{filename}"
|
||||
File.open(file, "w"){|f| f.write(HEADER % [title, date]) }
|
||||
File.open(file, "w"){|f| f.write(HEADER % [title, date, slug]) }
|
||||
exec EDITOR, '+', file
|
||||
|
|
26
feed.xml
26
feed.xml
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
layout: null
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
|
||||
<title>fnordig.de</title>
|
||||
<link href="http://fnordig.de/feed.xml" rel="self"/>
|
||||
<link href="http://fnordig.de/"/>
|
||||
<updated>{{ site.time | date_to_xmlschema }}</updated>
|
||||
<id>http://fnordig.de/</id>
|
||||
<author>
|
||||
<name>Jan-Erik Rediger</name>
|
||||
<email>janerik@fnordig.de</email>
|
||||
</author>
|
||||
|
||||
{% for post in site.posts %}
|
||||
<entry>
|
||||
<title>{{ post.title | xml_escape }}</title>
|
||||
<link href="http://fnordig.de{{ post.url }}"/>
|
||||
<updated>{{ post.date | date_to_xmlschema }}</updated>
|
||||
<id>http://fnordig.de{{site.baseurl}}{{ post.url | replace_first: '/'}}</id>
|
||||
<content type="html">{{ post.content | xml_escape }}</content>
|
||||
</entry>
|
||||
{% endfor %}
|
||||
</feed>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue