<?xml version="1.0" encoding="iso-8859-1"?>
        <?xml-stylesheet type="text/css" href="http://www.miek.nl/blog/"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title>Miek</title>
<atom:link href="http://www.miek.nl/blog/rss.xml" rel="self" type="application/rss+xml" />
<link>http://www.miek.nl/blog</link>
<description>Thoughts on (technical) stuff</description>
<dc:language>en-us</dc:language>
<dc:creator>Miek Gieben</dc:creator>
<dc:date>2012-02-04T04:15:11+01:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />

<item>
<link>http://www.miek.nl/blog/archives/2012/01/28/dns_fingerprinting/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2012/01/28/dns_fingerprinting/index.html</guid>
<title>DNS Fingerprinting</title>
<dc:date>2012-01-28T16:03:46+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> go, dns(sec)</dc:subject>
<description><![CDATA[<h2>Announcing FP</h2>

<p><em>The</em> tool for DNS fingerprinting is <a href="https://github.com/kirei/fpdns">fpdns</a>, which is Perl based.
In recent times development seems to have picked up, but a little competition never hurt
anyone, so I wrote <code>fp</code> in Go. Fp is also a fingerprint program for DNS servers. Its aim is to
be more readable then <code>fpdns</code> is (was?). And make it more easy to add new server types.</p>

<h2>Help needed!</h2>

<p>Do you have some old(er) nameserver laying around that can be queried? Does your (sick) mind
know of a few extra evil queries that can be sent to nameservers? If so, please contact
me: <code>query@evilquery.nl</code>. I want to get to a point where <code>fp</code> sends about 10 queries that
can be used to identify a server. </p>

<h2>Fingerprint</h2>

<p>A fingerprint in <code>fp</code> looks like this:</p>

<pre><code>.,CH,TXT,QUERY,NOERROR,qr,aa,tc,RD,ra,ad,cd,z,1,0,0,0,DO,4097,NSID
</code></pre>

<p>It has 20 fields, which are:</p>

<ol>
<li>Domain name, <code>.</code> in this example;</li>
<li>Class, <code>CH</code> here;</li>
<li>Type, <code>TXT</code> here;</li>
<li>Opcode, <code>QUERY</code>;</li>
<li>Rcode, <code>NOERROR</code>;</li>
<li>Query response, <code>qr</code>, lowercase means false (not set), uppercase means true;</li>
<li>Authoritative, <code>aa</code>, lowercase. Thus not set here;</li>
<li>Truncated, <code>tc</code>, not set;</li>
<li>Recursion Desired, <code>RD</code>, uppercase, thus set;</li>
<li>Recursion Available, <code>ra</code>;</li>
<li>Authenticated Data, <code>ad</code>;</li>
<li>Checking Disabled, <code>cd</code>;</li>
<li>Zero, <code>z</code>;</li>
<li>Question section length, 1 here;</li>
<li>Answer section length, 0;</li>
<li>Authoritative section length, 0;</li>
<li>Additional section length, 0;</li>
<li>DNSSEC OK, <code>DO</code> (uppercase, thus set);</li>
<li>UDP bufsize, set to 4097;</li>
<li>NSID, uppercase: request NSID (or NSID was set).</li>
</ol>

<p>These fingerprints are also used in <em>creating</em> the DNS queries that are send to nameserver(s)
being tested.</p>

<p>A full nameserver fingerprint consists out of multiple of these fingerprints. Right now
<code>fp</code> fires off 3 queries to test a server, so each nameserver fingerprint <em>must</em> also
consist out of 3 fingerprints. The nameserver <a href="https://github.com/miekg/godns/tree/master/examples/fp/data/Bind9">fingerprint of BIND9</a>
looks like:</p>

<pre><code># BIND9 fingerprints
.,CH,TXT,QUERY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,1,DO,4096,NSID
auThoRs.bInD.,CH,TXT,QUERY,NOERROR,QR,AA,tc,rd,ra,ad,cd,z,1,15,1,0,do,0,nsid
bind.,NONE,SOA,NOTIFY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,0,do,0,nsid
</code></pre>

<p>When <code>fp</code> is extended with an extra fingerprint, this BIND9 fingerprint also
needs to get an extra fingerprint.</p>

<h2>Trying it yourself</h2>

<p>As said, Currently <code>fp</code> only uses three queries, but this is expected to be increased in the
near future. In the <a href="https://github.com/miekg/godns/tree/master/examples/fp/data">data directory</a>, 
the file <code>q</code> holds the fingerprints of the queries to ask. Currently
<a href="https://github.com/miekg/godns/tree/master/examples/fp/data/q">it</a> looks like this:</p>

<pre><code># These are the queries that we ask the nameserver being identified
#
# The order is important, as the data files of the known nameservers are compared
# in this order.
.,CH,TXT,QUERY,NOERROR,qr,aa,tc,RD,ra,ad,cd,z,1,0,0,0,DO,4097,NSID
auThoRs.bInD.,CH,TXT,QUERY,NOERROR,qr,aa,tc,rd,ra,ad,cd,z,1,0,0,0,do,0,nsid
bind.,NONE,SOA,NOTIFY,NOERROR,qr,AA,tc,RD,ra,ad,cd,Z,1,0,0,0,do,0,nsid
</code></pre>

<p>A local run looks like this (this is abbreviated):</p>

<pre><code>% ./fp @localhost
Server type     Diffs       Fingerprint         Recevied
Bind9   0 .,CH,TXT,QUERY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,1,DO,4096,NSID .,CH,TXT,QUERY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,1,DO,4096,NSID
Bind9   0 auThoRs.bInD.,CH,TXT,QUERY,NOERROR,QR,AA,tc,rd,ra,ad,cd,z,1,15,1,0,do,0,nsid auThoRs.bInD.,CH,TXT,QUERY,NOERROR,QR,AA,tc,rd,ra,ad,cd,z,1,15,1,0,do,0,nsid
Bind9   0 bind.,NONE,SOA,NOTIFY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,0,do,0,nsid bind.,NONE,SOA,NOTIFY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,0,do,0,nsid
        =
Differences:    0

Nsd3    2 .,CH,TXT,QUERY,NOERROR,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,1,DO,4096,nsid .,CH,TXT,QUERY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,1,DO,4096,NSID
Nsd3    3 auThoRs.bInD.,CH,TXT,QUERY,NOERROR,QR,aa,tc,rd,ra,ad,cd,z,1,0,0,0,do,0,nsid auThoRs.bInD.,CH,TXT,QUERY,NOERROR,QR,AA,tc,rd,ra,ad,cd,z,1,15,1,0,do,0,nsid
Nsd3    6 .,CLASS0,TYPE0,NOTIFY,NXDOMAIN,QR,AA,tc,RD,ra,ad,cd,z,0,0,0,0,do,0,nsid bind.,NONE,SOA,NOTIFY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,0,do,0,nsid
            =
Differences:    11
</code></pre>

<p>What do you see here? On the left the nameserver type we're testing, then a number. This number represent the number of <em>differences</em> with the
stored fingerprint for this server. When this number is zero, it means the reply from the unknown server is an <em>exact</em> match with
one of the stored fingerprints. In general, the lower the number, the more exact the hit was.
For <code>bind9</code> in the example above, the accumulated number of differences is zero. This indicates the server is probably a BIND9 server.</p>

<p>For <code>nsd3</code> the story is completely different. The accumulated number of differences is 11, so this server probably isn't a NSD3 server.</p>

<h3>Report</h3>

<p>With, <code>-report</code> fp will just show the fingerprint of a nameserver. If the server is positively identified, the finger
print can be added to <code>fp</code>:</p>

<pre><code>% ./fp -report @localhost
# Fingerprint of &lt;Nameserver&gt; &lt;version&gt;
# Supplied by &lt;Name&gt; on &lt;Date&gt;
#
.,CH,TXT,QUERY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,1,DO,4096,NSID
auThoRs.bInD.,CH,TXT,QUERY,NOERROR,QR,AA,tc,rd,ra,ad,cd,z,1,15,1,0,do,0,nsid
bind.,NONE,SOA,NOTIFY,REFUSED,QR,aa,tc,RD,ra,ad,cd,z,1,0,0,0,do,0,nsid
</code></pre>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2012/01/23/super-short_guide_to_getting_q/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2012/01/23/super-short_guide_to_getting_q/index.html</guid>
<title>Super-short guide to getting q</title>
<dc:date>2012-01-23T18:07:43+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> go, dns(sec)</dc:subject>
<description><![CDATA[<p>Get the latest version (called <code>weekly</code>) of Go:</p>

<ol>
<li><p>Get Go: <code>hg clone -u release https://go.googlecode.com/hg/ go</code>
Note the directory you have downloaded it to and set 
$GOROOT to it: <code>export GOROOT=$PWD/go</code>.
Add the GOROOT bin directory to your path: <code>PATH=$PATH:$GOROOT/bin</code></p></li>
<li><p>Update Go to the latest weekly: <code>cd $GOROOT; hg pull; hg update weekly</code></p></li>
<li><p>Compile Go: <code>cd $GOROOT/src ; ./all.bash</code></p>

<p>Install missing commands (gcc, sed, bison, etc.) if needed.</p></li>
</ol>

<p>The latest Go is now installed.</p>

<h2>Install GoDNS</h2>

<ol>
<li>Get GoDNS: <code>cd ~; git clone git://github.com/miekg/godns.git</code></li>
<li>Compile it: <code>cd godns; make ; make install</code></li>
<li>Compile the examples; <code>cd examples; make ; make install</code></li>
<li>Query with q: <code>q mx miek.nl</code></li>
<li>Report bugs</li>
</ol>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2012/01/21/dnssec_message_checking/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2012/01/21/dnssec_message_checking/index.html</guid>
<title>DNSSEC message checking</title>
<dc:date>2012-01-21T12:33:08+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dns(sec)</dc:subject>
<description><![CDATA[<p>When using <code>dig</code> to debug DNS/DNSSEC errors, you (I have the need, I'm assuming you
have it too) often want to know:</p>

<ul>
<li>Are the signatures in the message correct?</li>
<li>Does the NSEC3 authenticated denial of existence proof look OK? (this is a work-in-progress)</li>
</ul>

<p>With <code>dig</code> this is next to impossible, because we humans can not validate RSA signatures,
nor hash names for NSEC3 validation.</p>

<p>This is why I added a little feature to <code>q</code>, the query-tool found in <a href="https://github.com/miekg/godns/tree/master/examples/q">godns</a>.
The tool looks very much like <code>dig</code> or <code>drill</code> (from <a href="http://www.nlnetlabs.nl/projects/ldns/">ldns</a>).</p>

<h2>Normal query</h2>

<p>Querying for the MX records of <code>miek.nl</code>, works (and looks) just like using <code>dig</code>:</p>

<pre><code>% q @open.nlnetlabs.nl mx miek.nl
;; opcode: QUERY, status: NOERROR, id: 41714
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;miek.nl.       IN       MX

;; ANSWER SECTION:
miek.nl.        345600  IN      MX      20 mail.atoom.net.
miek.nl.        345600  IN      MX      40 mx-ext.tjeb.nl.

;; AUTHORITY SECTION:
miek.nl.        345600  IN      NS      ext.ns.whyscream.net.
miek.nl.        345600  IN      NS      open.nlnetlabs.nl.
miek.nl.        345600  IN      NS      omval.tednet.nl.
miek.nl.        345600  IN      NS      elektron.atoom.net.
</code></pre>

<h2>DNSSEC query</h2>

<p>With the <code>-dnssec</code> option you request DNSSEC records and the 
<code>-short</code> option shortens long signatures and other records deemed too long.</p>

<pre><code>% q -dnssec -short @open.nlnetlabs.nl mx miek.nl
;; opcode: QUERY, status: NOERROR, id: 54058
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 1

;; QUESTION SECTION:
;miek.nl.       IN       MX

;; ANSWER SECTION:
miek.nl.        345600  IN      MX      20 mail.atoom.net.
miek.nl.        345600  IN      MX      40 mx-ext.tjeb.nl.
miek.nl.        345600  IN      RRSIG   MX 8 2 345600 19700101000000 19700101000000 12051 miek.nl. ...

;; AUTHORITY SECTION:
miek.nl.        345600  IN      NS      ext.ns.whyscream.net.
miek.nl.        345600  IN      NS      open.nlnetlabs.nl.
miek.nl.        345600  IN      NS      omval.tednet.nl.
miek.nl.        345600  IN      NS      elektron.atoom.net.
miek.nl.        345600  IN      RRSIG   NS 8 2 345600 19700101000000 19700101000000 12051 miek.nl. ...

;; ADDITIONAL SECTION:

;; OPT PSEUDOSECTION:
; EDNS: version 0; flags: do; udp: 4096
</code></pre>

<p>But now the question remains, are those signatures valid? With the <code>-check</code> option you instruct <code>q</code> to go fetch the
DNSKEYs (from the same server + port) and validate the signatures and RRSet with that key. The output you then get,
looks like this:</p>

<pre><code>% q -check -dnssec -short @open.nlnetlabs.nl mx miek.nl
;+ Secure signature, miek.nl. RRSIG(MX) validates RRSet with DNSKEY miek.nl./12051
;+ Secure signature, miek.nl. RRSIG(NS) validates RRSet with DNSKEY miek.nl./12051

;; opcode: QUERY, status: NOERROR, id: 53642
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 1

;; QUESTION SECTION:
;miek.nl.       IN       MX

;; ANSWER SECTION:
miek.nl.        345600  IN      MX      20 mail.atoom.net.
miek.nl.        345600  IN      MX      40 mx-ext.tjeb.nl.
miek.nl.        345600  IN      RRSIG   MX 8 2 345600 19700101000000 19700101000000 12051 miek.nl. ...

;; AUTHORITY SECTION:
miek.nl.        345600  IN      NS      ext.ns.whyscream.net.
miek.nl.        345600  IN      NS      open.nlnetlabs.nl.
miek.nl.        345600  IN      NS      omval.tednet.nl.
miek.nl.        345600  IN      NS      elektron.atoom.net.
miek.nl.        345600  IN      RRSIG   NS 8 2 345600 19700101000000 19700101000000 12051 miek.nl. ...

;; ADDITIONAL SECTION:

;; OPT PSEUDOSECTION:
; EDNS: version 0; flags: do; udp: 4096
</code></pre>

<p>I think this is considered a #win.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2012/01/16/nsec3_white_paper_v2/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2012/01/16/nsec3_white_paper_v2/index.html</guid>
<title>NSEC3 white paper v2</title>
<dc:date>2012-01-16T13:02:20+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dns(sec)</dc:subject>
<description><![CDATA[<p>(This is an English translation of <a href="http://www.sidnlabs.nl/laatste-berichten/nieuwsdetail/article/nieuwe-versie-sidn-nsec3-white-paper-beschikbaar/">this blog article over at
sidnlabs.nl</a>)</p>

<p>After the publication of the <a href="http://www.sidnlabs.nl/laatste-berichten/nieuwsdetail/article/nsec3-whitepaper/">SIDN NSEC3 white paper</a> 
we received feedback of a number of people.
The most constructive feedback was from Karst Koymans of the <a href="http://www.uva.nl/">University of Amsterdam</a>.
This, together with the other feedback has led to a version 2 of the white paper.</p>

<p>This version has the following differences with respect to version 1:</p>

<ul>
<li>A number of corrections;</li>
<li>The NSEC3 example now returns three NSEC3 records in stead of two;</li>
<li>Two figures are added;</li>
<li>Empty non-terminals are explained (a little).</li>
</ul>

<p>Version 2 of the white paper <a href="https://www.sidn.nl/fileadmin/docs/PDF-files_UK/wp-2011-0x01-v2.pdf">can be found here</a>. 
Or <a href="http://www.miek.nl/downloads/2012/wp-2011-0x01-v2.pdf">here locally</a>.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2012/01/09/nsec4/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2012/01/09/nsec4/index.html</guid>
<title>NSEC4</title>
<dc:date>2012-01-09T09:35:12+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> dns(sec)</dc:subject>
<description><![CDATA[<p>(This is a English translation of <a href="http://www.sidnlabs.nl/laatste-berichten/nieuwsdetail/article/nsec4/">this Dutch blog article</a>)</p>

<p>By writing the <a href="http://www.miek.nl/blog/archives/2011/11/09/nsec3_whitepaper/index.html">NSEC3 whitepaper</a>, we gained a lot
of insight in how "authenticated denial of existence" works. But some new questions popped up:</p>

<ul>
<li>Is NSEC3 the most efficient way to do (hashed) authenticated denial of existence?</li>
<li>Are there ways to optimize the NSEC3 record that asserts or denies the wildcard?</li>
<li>Can't we use Opt-Out for unhashed names too?</li>
</ul>

<p>Answering these question led to the birth of NSEC4, which is documented in this <a href="http://www.ietf.org/id/draft-gieben-nsec4-00.txt">internet draft</a>.</p>

<p>This is only the first version (a <code>-00</code> as its called by the IETF). Surely a <code>-01</code> will follow and maybe an <code>-02</code>.</p>

<p>With NSEC4:</p>

<ul>
<li>We optimize the wildcard NSEC3 away by introducing a Wildcard bit flag. This shrinks negative answers with one NSEC4 (and signatures);</li>
<li>We introduce "Zero Hashing", or no hashing at all. This creates an NSEC like record with Opt-Out; something the current NSEC lacks;</li>
<li>We unify NSEC and NSEC3 into one new record: NSEC4.</li>
</ul>

<p>We're aiming for the "experimental" track within the IETF, this removes the need for implementers to implement NSEC4, but 
saves the document for future generations. It's all about adding extra documentation to help people understand DNSSEC.</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2012/01/08/xslt_and_sectnsection/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2012/01/08/xslt_and_sectnsection/index.html</guid>
<title>XSLT and sectN/section</title>
<dc:date>2012-01-08T12:31:43+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> pandoc</dc:subject>
<description><![CDATA[<p>This <a href="http://groups.google.com/group/pandoc-discuss/browse_thread/thread/90cc2ea23e3c93f3/880bb6e69274ec1d?show_docid=880bb6e69274ec1d&amp;fwc=2&amp;pli=1">came up during a recent Pandoc
discussion</a>.
The discussion was about outputting <code>&lt;sectN&gt;</code> section styling when creating DocBook XML. Currently
Pandoc outputs nested <code>&lt;section&gt;</code>s.</p>

<p>I argued you could easily change between the two formats and <code>&lt;section&gt;</code> is more flexible, so
just leave Pandoc as it is. But it allowed me to play with XSLT once more. With the following
results.</p>

<h2>Translate to sectN</h2>

<p>This XSLT translates <code>&lt;section&gt;</code> to <code>&lt;sectN&gt;</code> where N is 5. If the sections are nested deeper
it switches to <code>&lt;section&gt;</code>.</p>

<pre><code>&lt;?xml version="1.0"?&gt;
&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
&lt;xsl:template match="section"&gt;
&lt;xsl:variable name="i" select="count(ancestor::node())"/&gt;
    &lt;xsl:choose&gt;
        &lt;xsl:when test="$i &gt; 5"&gt;
            &lt;section&gt;&lt;xsl:apply-templates/&gt;&lt;/section&gt;
        &lt;/xsl:when&gt;
        &lt;xsl:otherwise&gt;
            &lt;xsl:element name="sect{$i}"&gt;&lt;xsl:apply-templates/&gt;&lt;/xsl:element&gt;
        &lt;/xsl:otherwise&gt;
    &lt;/xsl:choose&gt;
&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
</code></pre>

<h2>Translate to section</h2>

<p>And this translate <code>&lt;sectN&gt;</code> to <code>&lt;section&gt;</code>, this was slightly easier, as you 
don't have to count anything.</p>

<pre><code>&lt;?xml version="1.0"?&gt;
&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
&lt;xsl:template match="sect1 | sect2 | sect3 | sect4 | sect5"&gt;
    &lt;section&gt;&lt;xsl:apply-templates/&gt;&lt;/section&gt;
&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
</code></pre>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2011/12/24/convert_vim_colors_to_gvim_colors/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2011/12/24/convert_vim_colors_to_gvim_colors/index.html</guid>
<title>Convert vim colors to gvim colors</title>
<dc:date>2011-12-24T00:08:12+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> linux, programming</dc:subject>
<description><![CDATA[<p>I've tweaked my vim color scheme
<a href="http://www.miek.nl/blog/archives/2011/09/11/xoria256m_color_scheme/index.html">quite a bit</a>
and tried
to keep the colors of gvim (which I use less often) in sync.</p>

<p>This keeping in sync hasn't worked out, so I wrote this little
script to convert the vim colors to the gvim ones:</p>

<p>Download the <a href="http://www.miek.nl/downloads/2011/makegvim">makegvim script</a>, and
use it like:</p>

<pre><code>$ ./makegvim &lt; ~/.vim/colors/&lt;yourfile&gt; &gt; /tmp/x
$ mv /tmp/x ~/.vim/colors/&lt;yourfile&gt;
</code></pre>

<p>And now the colors of <code>gvim</code> should be identical to those of <code>vim</code>.</p>

<p>Note: colors like <code>000</code> must be used like <code>cterm=0</code> otherwise
the conversion fails (the script isn't that smart).</p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2011/12/16/tantalizing_glimpse_of_higgs_particle/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2011/12/16/tantalizing_glimpse_of_higgs_particle/index.html</guid>
<title>Tantalizing glimpse of Higgs particle</title>
<dc:date>2011-12-16T14:43:57+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> stuff</dc:subject>
<description><![CDATA[<p><img src="http://miek.nl/gfx/2011/H.jpg"/></p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2011/12/13/cherry-picking_remote_branches/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2011/12/13/cherry-picking_remote_branches/index.html</guid>
<title>Cherry-picking remote branches</title>
<dc:date>2011-12-13T08:51:14+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> linux, programming</dc:subject>
<description><![CDATA[<p>I've create a little tool (actually an XSLT file) that
helps to write RFCs. Browsing my <a href="https://github.com/miekg/pandoc2rfc">github repo</a>
I found two different forks. And browsing those
forks, I saw some commits I wanted to have.</p>

<p>But how do you merge a commit from a forked git repository?
Turns out it is not that difficult.</p>

<p>The commit I want has 
the hash <a href="https://github.com/hamnis/pandoc2rfc/commit/5a11e88ddbef4ce7513aae93bdcd377449f45efb">5a11e88ddbef4ce7513aae93bdcd377449f45efb</a>.</p>

<p>The steps:</p>

<ul>
<li><p>Create a remote branch:</p>

<pre><code>git remote add hamnis https://github.com/hamnis/pandoc2rfc
</code></pre></li>
<li><p>Fetch the contents of it:</p>

<pre><code>git fetch hamnis
</code></pre></li>
<li><p>Cherry-pick the commit you need:</p>

<pre><code>git cherry-pick -c 5a11e88ddbef4ce7513aae93bdcd377449f45efb
[master 7501f13] transform.xsl: Supporting the output from pandoc 1.8.2.1:  
* table/title 
instead of table/caption  
* table/tgroup/thead/row/entry instead of table/thead/tr/th  
* table/tgroup/tbody/row/entry instead of table/tbody/tr/td
 Author: Trygve Laugstøl &lt;trygvis@inamo.no&gt;
 1 files changed, 3 insertions(+), 3 deletions(-)
</code></pre></li>
</ul>

<p>Voila. </p>]]></description>

</item>
<item>
<link>http://www.miek.nl/blog/archives/2011/12/08/new_euro_symbol/index.html</link>
<guid isPermaLink="true">http://www.miek.nl/blog/archives/2011/12/08/new_euro_symbol/index.html</guid>
<title>New Euro symbol</title>
<dc:date>2011-12-08T17:41:53+01:00</dc:date>
<dc:creator>Miek Gieben</dc:creator>
<dc:subject> stuff</dc:subject>
<description><![CDATA[<p><img src="http://miek.nl/gfx/2011/Euro_symbol.jpg"/></p>]]></description>

</item>
</channel>
</rss>

