2011-07-14 22:28:37 +02:00
|
|
|
<!--@exec
|
2011-07-15 15:15:12 +02:00
|
|
|
page.title = run_macros(page.title)
|
|
|
|
page.summary = run_macros(page.summary)
|
2011-07-14 22:28:37 +02:00
|
|
|
@--><?xml version='1.0' encoding='utf-8'?>
|
2011-07-05 21:20:55 +02:00
|
|
|
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN'
|
|
|
|
'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
|
|
|
|
<html version='-//W3C//DTD XHTML 1.1//EN'
|
|
|
|
xmlns='http://www.w3.org/1999/xhtml'
|
|
|
|
xml:lang='en'
|
|
|
|
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
|
|
|
|
xsi:schemaLocation='http://www.w3.org/1999/xhtml
|
|
|
|
http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd'>
|
|
|
|
<head>
|
2011-07-08 15:32:28 +02:00
|
|
|
<title>metanohi: <!--@eval page.title@--></title>
|
2011-07-05 21:20:55 +02:00
|
|
|
<meta name='author' content='Niels Serup' />
|
|
|
|
<meta name='description'
|
|
|
|
content='This is the personal website of Niels Serup. It hosts
|
|
|
|
projects of varying importance.' />
|
|
|
|
<meta name='keywords'
|
|
|
|
content='programming, hacking, nqpz, portfolio' />
|
2011-07-14 22:28:37 +02:00
|
|
|
<meta name='generator' content='http://metanohi.org/projects/mege/' />
|
2011-07-07 00:13:47 +02:00
|
|
|
<link rel='stylesheet' type='text/css' media='screen, tv'
|
|
|
|
href='/static/screen.css' />
|
|
|
|
<link rel='stylesheet' type='text/css' media='print'
|
|
|
|
href='/static/print.css' />
|
|
|
|
<link rel='stylesheet' type='text/css' media='tty'
|
|
|
|
href='/static/tty.css' />
|
|
|
|
<link rel='stylesheet' type='text/css' media='handheld'
|
|
|
|
href='/static/handheld.css' />
|
2011-07-14 22:28:37 +02:00
|
|
|
<link href='/atom.xml' type='application/atom+xml' rel='alternate'
|
|
|
|
title='metanohi atom feed' />
|
2011-07-05 21:20:55 +02:00
|
|
|
<link rel='schema.DCTERMS' href='http://purl.org/dc/terms/' />
|
2011-07-14 22:28:37 +02:00
|
|
|
<meta name='DCTERMS.title' content='<!--@eval page.title@-->' />
|
|
|
|
<meta name='DCTERMS.description' content='<!--@eval page.summary@-->' />
|
2011-07-05 21:20:55 +02:00
|
|
|
<meta name='DCTERMS.creator' content='Niels Serup' />
|
|
|
|
<meta name='DCTERMS.format' content='application/xhtml+xml' />
|
2011-07-15 23:27:56 +02:00
|
|
|
<!--@exec
|
|
|
|
if page.created_rfc3339:
|
|
|
|
print(" <meta name='DCTERMS.created' content='{}' />".format(page.created_rfc3339))
|
|
|
|
if page.modified_rfc3339:
|
|
|
|
print(" <meta name='DCTERMS.modified' content='{}' />".format(page.modified_rfc3339))
|
|
|
|
@-->
|
2011-07-05 21:20:55 +02:00
|
|
|
<meta name='DCTERMS.language' content='en' />
|
|
|
|
<meta name='DCTERMS.isPartOf' content='http://metanohi.org/' />
|
2011-07-08 15:32:28 +02:00
|
|
|
<meta name='DCTERMS.isVersionOf' content='<!--@eval page.core_url@-->' />
|
2011-07-05 21:20:55 +02:00
|
|
|
<meta name='DCTERMS.audience' content='software developers' />
|
|
|
|
<meta name='DCTERMS.audience' content='hackers' />
|
|
|
|
<meta name='DCTERMS.audience' content='individuals' />
|
2011-07-08 15:32:28 +02:00
|
|
|
<!--@exec
|
2011-07-05 21:20:55 +02:00
|
|
|
if page.licenses:
|
2011-07-15 15:15:12 +02:00
|
|
|
for x in filter(lambda x: x.url, page.licenses):
|
2011-07-15 23:27:56 +02:00
|
|
|
print("""\
|
|
|
|
<link rel='copyright' href='{x.url}' />
|
|
|
|
<meta name='DCTERMS.license' content='{x.url}' />\
|
|
|
|
""".format(x=x))@-->
|
2011-07-05 21:20:55 +02:00
|
|
|
<meta name='robots' content='ALL' />
|
|
|
|
<link rel='icon' type='image/png' href='/favicon.png' />
|
2011-07-07 00:13:47 +02:00
|
|
|
<!--
|
|
|
|
The following JavaScript file contains trivial code. This website requires
|
|
|
|
it for aesthetic reasons only. Not loading it will not make this website
|
|
|
|
less functional.
|
|
|
|
-->
|
2011-07-08 15:32:28 +02:00
|
|
|
<script type='text/javascript' src='/static/aesthetics.js'></script>
|
2011-07-13 21:23:41 +02:00
|
|
|
<!--
|
|
|
|
The following JavaScript file contains misc. code snippets designed to add
|
|
|
|
extra features to a website. Not loading it will not make this website stop
|
|
|
|
working.
|
|
|
|
-->
|
2011-07-09 00:47:30 +02:00
|
|
|
<script type='text/javascript' src='/static/extra.js'></script>
|
2011-07-14 22:28:37 +02:00
|
|
|
<!--@eval run_macros(page.head)@-->
|
2011-07-05 21:20:55 +02:00
|
|
|
</head>
|
|
|
|
<body>
|
2011-07-07 00:13:47 +02:00
|
|
|
<a id='minilogo' href='/'></a>
|
2011-07-06 00:49:04 +02:00
|
|
|
<div id='menu'>
|
|
|
|
<ul id='menulinks'>
|
2011-07-08 15:32:28 +02:00
|
|
|
<!--@prexec
|
2011-07-26 03:04:17 +02:00
|
|
|
for x in('projects', 'writings', 'about', 'sitemap'):
|
2011-07-08 15:32:28 +02:00
|
|
|
print(' ' * 14 + "<li><a href='/{x}/'>{x}</a></li>".format(x=x))@-->
|
2011-07-06 00:49:04 +02:00
|
|
|
</ul>
|
|
|
|
</div>
|
2011-07-10 16:03:48 +02:00
|
|
|
<div id='body'<!--@exec if page.is_fullpage: print(" class='full'", end='')@-->>
|
2011-07-26 03:04:17 +02:00
|
|
|
<div id='content'>
|
2011-07-15 23:27:56 +02:00
|
|
|
<!--@eval "<div id='toc'><h3>Contents</h3>" + page.toc_html + '</div>' if page.has_toc else ''@-->
|
2011-07-09 00:47:30 +02:00
|
|
|
<!--@eval run_macros(page.body)@-->
|
2011-07-15 23:27:56 +02:00
|
|
|
<!--@eval "<hr /><div id='footnotes'><h3>Footnotes</h3>" + page.footnotes_html + '</div>' if page.footnotes else ''@-->
|
2011-07-26 03:04:17 +02:00
|
|
|
<div id='bodyend'></div>
|
|
|
|
<div id='metadata'>
|
2011-07-14 22:28:37 +02:00
|
|
|
<!--@eval run_macros(page.metadata_html)@-->
|
2011-07-17 00:34:50 +02:00
|
|
|
<!--@exec
|
|
|
|
if page.is_dynamic:
|
|
|
|
print("<p><a href='{}'>View source</a></p>".format(page.sourcepath), end='')@-->
|
2011-07-26 03:04:17 +02:00
|
|
|
</div>
|
2011-07-05 21:20:55 +02:00
|
|
|
</div>
|
|
|
|
<div id='logo'>
|
|
|
|
<a href='/'></a>
|
|
|
|
</div>
|
2011-07-26 03:04:17 +02:00
|
|
|
</div>
|
2011-07-05 21:20:55 +02:00
|
|
|
</body>
|
|
|
|
</html>
|