summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-04-08 12:31:22 +0300
committerLars Wirzenius <liw@liw.fi>2021-04-08 12:31:22 +0300
commitb8cd5ae5a61b20e9e2143284f79f6b7fe204d4b5 (patch)
tree543eda712dd661ecc86e04c9579db0cb372ed1b1
parent5d9724ae0a5a25e5f49199542437aadb243e9447 (diff)
downloadnoir.liw.fi-b8cd5ae5a61b20e9e2143284f79f6b7fe204d4b5.tar.gz
new chapter
-rw-r--r--devcont.mdwn361
-rw-r--r--templates/archivepage.tmpl19
-rw-r--r--templates/atomitem.tmpl49
-rw-r--r--templates/atompage.tmpl39
-rw-r--r--templates/feedlink.tmpl8
-rw-r--r--templates/inlinepage.tmpl78
-rw-r--r--templates/page.tmpl52
-rw-r--r--templates/rssitem.tmpl28
-rw-r--r--templates/rsspage.tmpl18
-rw-r--r--templates/titlepage.tmpl7
10 files changed, 659 insertions, 0 deletions
diff --git a/devcont.mdwn b/devcont.mdwn
new file mode 100644
index 0000000..d010c7b
--- /dev/null
+++ b/devcont.mdwn
@@ -0,0 +1,361 @@
+# Development continues
+
+Andy types into IRC. "Anna, SH devs r ask 4 PHP on our platform; we
+shld talk b4 resp".
+
+Anna is in her office, reading a sheaf of printed papers. A quiet ping
+alerts her that her attention is needed. By policy, she's the only on
+in the Team to have audible notifications. Everyone else's ability to
+concentrate on the task at hand is paramount, but Anna is the manager,
+outside interface, and general fire fighter, and sometimes needs to
+react quickly.
+
+She turns to her keyboard, types in a password and taps her security
+to unlock her screen. She reads, then types. "Andy, sure thing. Come
+to my office when suitable. We'll escalate to others if need be."
+
+In a minute, Andy walks into Anna's office, with a mug in his hand.
+He sits in Anna's visitor chair, and takes a sip, then a deep breath.
+
+"So, here's the sit. SmartHome opened a ticket in our issue tracker to
+ask for PHP on our platform. I've not responded yet, I figured we
+should discuss it first."
+
+Anna nods. "We've rejected PHP before, for other customers. It's hard
+to write secure, reliable software in the language."
+
+"Indeed. That continues to be my opinion, and I'm happy to respond
+that way now, except how is our relationship with SmartHome? It's been
+dicey several times in this project. Managing that relationship falls
+on you, so it's your call."
+
+Anna leans back, and crosses her hands behind her neck. "Hmmm. Yes,
+you're right. I'll need to think about this. I'm about to go out for
+lunch anyway. I might take a walk and think about this. Don't do
+anything until I come back, please."
+
+"Agreed. If SmartHome presses the issue, I'll just say that we're
+considering the request, and will respond later today. OK?"
+
+"Perfect. In fact, add that to the ticket, it'll buy us some peace and
+keep them calm."
+
+-----------------------------------------------------------------------------
+
+Anna walks on the pavement, hands behind her back and eyes on the
+ground. Lunch was lovely, and she's thinking deeply. She comes to the
+building where the Team office is, and enters though the front door,
+using her key. She walks the stairs to the right floor, and enters
+through the locked door. The entire Team is standing in the entrance
+hall.
+
+"What's up?"
+
+Andy speaks. "We didn't want to disturb you at lunch, but when the
+downstairs door informed us that you're coming in, we gathered to wait
+you. We have a situation."
+
+Nina steps forward. "SmartHome are upset that we're not adding PHP at
+once, and are saying they won't let us audit their software if we
+won't add PHP."
+
+Anna takes off her coat and hangs it on a hook on the wall. "I see."
+
+Bert shakes his head. "That's not all. They're also claiming our
+system is insecure, with known holes."
+
+Nina's head turns towards Berg. "What?"
+
+Berg nods. "Yeah. They added that to the ticket just now. I'd already
+heard you start moving to meet Anna."
+
+Robin puts her face in her hands. "This is getting to be too much."
+
+Anna hugs Robin. "Let me go read the communications myself, and see
+what I can do." She looks at the others. "It's not a healthy
+relationship we have with them. It's antagonistic. It's quite far from
+a collaboration."
+
+She takes a step towards her office. "I'll handle this. We'll survive.
+You should all take a break in the kitchen. Vent as much as you feel
+like."
+
+The others look at each other and go to the kitchen. Andy puts the
+kettle on. Bert puts a row of mugs on the counter, and small tea
+strainers in each. He then starts taking jars from a cupboard, and
+measuring tea into each strainer. The water boils, and Andy pours tea
+into each mug. Bert puts milk and honey on the table, and starts
+putting the mugs in front of everyone. The Team members each start
+their own timer in their watches or phones.
+
+Robin lifts the strainer and examines the tea, then puts it back into
+the water. "I'm tired of working with SmartHome."
+
+Nina makes a grimace. "Me too. Incompetent doesn't cover it. I can
+work with the incompetent. But this company, they're also nasty."
+
+Andy lifts his strainer into a bowl in the center of the table. "I
+don't like the situation either, but to be fair, we started the
+collaboration in an aggressive way."
+
+Nina looks at him, with her eyebrows high. "Are you saying this is my
+fault?"
+
+Robin also puts her strainer into the bowl. "No, it's not. It wasn't
+your decision to use that approach. It was mine."
+
+Andy nods. "I don't think it was wrong of us. They needed to be
+convinced. But maybe we could've built a more collaborative
+relationship since."
+
+Bert gets rid of his the strainer. "I'm not sure we could have. We
+knew, going in, that they have a toxic culture. Brogrammers, we said."
+
+Robin sips some tea. "Yeah, and all that entails. They were always
+going to dislike bringing in outsiders to fix their mess. Us bending
+over backwards would only have made it harder to collaborate."
+
+"I know there's some real poopheads there. But they're not all like
+that. I like Nick, for example. We get along well." Nina puts away her
+strainer, and adds honey and milk. "Professionally and as friends."
+
+Robin and Andy look at each other, and shrug. Nina stares into her
+mug. "I don't understand why he works there, given the poopheads."
+
+Robin takes a gulp. "Remember, he's quite young. I think it's his
+first job. He's only just graduated and doesn't know that it can be
+better."
+
+"He's not much younger than me. I know better." Nina looks up at
+Robin. "I don't want him to become a poophead."
+
+"Let's try to make sure it doesn't happen. But here's the thing, you
+started working, on your own, as a teenager. Your had to have your
+mother run the business on paper, you were so young you couldn't found
+a company in your own name, but you did all the real work. Found
+customers, built software, and so on. Then you got hired at a couple
+of consulting agencies, before we formed the Team and you joined. This
+is literally Nick's first job. He's never even had a summer job, or
+been an intern."
+
+"I guess." Nina pushes her mug away, stands up, and shudders. "It's
+just, I mean, he's nice, but I can see him drifting towards the dark
+side. He's starting to show macho tendencies." Nina walks to the sink,
+turns on the faucet, gets her hands wet, and rubs her face.
+
+"Not good." Robin drinks some tea slowly. "He should get out and move
+to another job. But we can't tell him that. It'd be against the
+contract we have with SmartHome."
+
+Nina dries her face with a paper towel. "Yeah. But as soon as we're
+done with SmartHome, I'm having a talk with him."
+
+"Mmm. That might technically still be against the contract. Unless you
+just tell him, friend to friend, that you're worried about his macho
+tendencies."
+
+Andy clears his throat. "Nick aside, what are we thinking about
+SmartHome? Is there anything good about them?"
+
+Everyone looks around. Nobody says anything.
+
+Anna walks in. "How are we doing?"
+
+"I just asked if there's anything good about SmartHome, apart from
+Nick. Nobody had anything to offer."
+
+Anna nods. "I'm starting to feel that way. I have an update. I called
+Sam. I told him we're going to respond by email soon. We need to sort
+this out now, anyway, so let's talk. Here's what I suggest..."
+
+-----------------------------------------------------------------------------
+
+"Hi, Nick." Nina is sitting on a bench in the park near the Team's
+office. Nick sits next to her. He has two ice cream cones and hands
+one to Nina.
+
+"I've some bad news, I'm afraid. The guys at work are upset at you.
+The Team in general, and you in particular, Nina."
+
+"Oh?" Nina licks her ice cream, catching melted rivulets before they
+drop.
+
+"Apparently you're a bitch. And that's the nicest term they you."
+
+"I don't mind being a bitch, but I enjoy knowing why poopheads think
+I'm a bitch." Nina takes a bit of the cone. "Mmm, this is good ice
+cream."
+
+"That email you sent explaining in detail why the claims that your
+platform is insecure were wrong, it made a couple of the guys look
+stupid. That's what started the tirades." Nick doesn't lick, just
+takes bites of ice cream.
+
+"I just held a mirror to them. They were looking stupid already, but
+they didn't see it without a mirror. Looking at version numbers to
+determine if there's known security holes is such a beginner mistake."
+
+"I agree, of course. We were taught at school to try if the hole is
+there, never mind what the version number says."
+
+"What else are they saying about me? Don't try spare my feelings. I'm
+unlikely to feel insulted by your co-workers. They have been have been
+weighed, they have been measured, and they have been found wanting. In
+what world could they possibly best me?"
+
+"Hah. Adhemar. Well, since you ask, they think you're variously
+lesbian, frigid, or a transvestite. Apparently a girl can't be as good
+as you are at what you do, unless they have boy genes, or aren't
+having sex with boys."
+
+"Oh, that. Not new." Nina finishes off the ice cream cone, the pointy
+end of the cornet. "Still, shows they're not just poopheads, but
+stupid. Macho poops often are."
+
+"Yeah. I told Sam as much."
+
+"Well done. I knew I liked you for a reason."
+
+"And then I resigned."
+
+"What? Seriously?"
+
+"Yeah, I've not enjoyed working there for a long time. They pay well,
+and it's nice to work on products that a lot of people use, but the
+culture isn't a good fit for me. I think toxic is the word."
+
+"Good boy."
+
+"Uh, and that reminds me of something I've been meaning to bring up. I
+like you too. I like you much more than I would've ever expected. I
+really enjoy all our chats."
+
+"I'm glad to hear that, but..."
+
+Nick raises his hand, showing his palm. "Wait. Before you say
+anything, I need to finish. I like you, I enjoy spending time with
+you, but... but I don't like you like you. I'm not attracted to you.
+Sorry."
+
+"Oh, good. I was just going to say the same thing."
+
+The two look at each other.
+
+"Well, that's not how I expected this to go." Nick tilts his head.
+"I'm not offended, but I'm curious. Why aren't you attracted? Am I
+unattractive? Repulsive?"
+
+"You first. I'll answer after you tell me why you aren't attracted to
+me. Wait! I'll text my reason, and you'll say your reason before
+reading the text."
+
+Nina takes out her phone, and types quickly with two thumbs for
+several seconds. Nick's phone plays a few bars of the Imperial March.
+
+"The reason I'm not attracted to you, and I've not told this to many
+people ever, is that I'm gay."
+
+Nina nod. "Read the text."
+
+Nick raises his phone and pokes at it. "Oh. You knew. How did you
+know?"
+
+"Small things. You never look down my blouse or at my ass when I bend
+over in the lab. You might just be very well brought up, but even well
+brought up boys do that when they think they aren't being observed.
+The lab has hidden security cameras, and I checked."
+
+"Oh. Well, I am gay, but nobody else has ever guessed. I only came out
+to my parents a couple of years ago."
+
+"How did that go?"
+
+"Very well. They accepted it and me right away, and have been quite
+supportive."
+
+"Glad to hear that."
+
+"It's one more reason to leave SmartHome. The guys there keep making
+crass jokes about gay people."
+
+"When is your last day? I mean, I'm glad you're getting our, I don't
+think it's a good place for you, or anyone, but I'm sorry to lose an
+inside contact."
+
+Nick smiles broadly. "Today, in fact. I'm not going back. Sam was very
+understanding, and I've not used any of my accrued vacation, so I made
+a deal that I'm garden leave for a month, and they won't need to pay
+me for unused vacation. Also, I won't raise a ruckus with the union
+about the way gay people are treated there."
+
+"What will you do next?"
+
+"Well, I'm in a good place financially. I've some savings, and my
+parents are quite well off, so I don't have to find a new job at once.
+I'm going to be looking carefully. I like how the Team looks, but
+since I can't join you, due to my employment contract and your
+contract with SmartHome, I'll look for somewhere else that's nice."
+
+"Yeah, I was going to say that we can't hire you, unfortunately."
+
+"Aye. I took a semester of contract law and one of employment law in
+school. I figured it would be useful to know that stuff."
+
+-----------------------------------------------------------------------------
+
+Anna types leisurely. "Good new, team. I had a lunch meeting with Sam.
+We still have a customer, and they've agreed in writing that there
+will be third-party security audits of both their devices, and
+separately of our platform, and they're paying for that. We can
+continue work, and also, I think we are seeing the end of the project
+looming. We'll pull through this one yet."
+
+She clicks the send button, then turns to face Robin, who's sitting in
+the visitor chair. "How are you doing, Robin? I'm a little worried,
+you've seemed a bit on the edge, lately."
+
+Robin doesn't move a muscle. A moment goes past. "I'm coping, but
+it's been hard. Not just work, but some other stuff as well."
+
+"I'm sorry to hear that. Do you want to tell me about it?"
+
+"You know I'm involved with some free software projects in my free
+time? It turns out that one of them has some unpleasant people that I
+don't want to be associated with." She sighs. "See, there's a
+diversity statement, formally ratified by voting. It says we no matter
+how you identify yourself or how others perceive you. Now a RUDE WORD
+poophead claims that means we must accept Nazis. Actual, literal,
+card-carrying Nazis."
+
+"Oh. That doesn't make any sense."
+
+"No, it really doesn't. But there's a few members who agree, the usual
+suspects when it comes to stirring up trouble. It seems every big
+project has them. There's also a bunch of outsiders, baiting and
+trolling us."
+
+"Are you coping?"
+
+"I am, for now, but I'm getting tired of having these arguments. They
+keep getting repeated. The project has an arsehole problem: it doesn't
+know what to do with extra ones. I'd like to just kick them out, but
+it's hard to build consensus on that."
+
+Anna stands up. "Hug?"
+
+-----------------------------------------------------------------------------'
+
+Bert stops typing. "Well, that's new."
+
+Andy looks up from his screen. "What?"
+
+"On the SmartHome IRC, someone just said they've started liking the CI
+we set up for them."
+
+"Oh? They've not been positive about it before. They've complained
+it's picky and slow."
+
+"Yeah, and someone else said they also liked it. It seems to reduce
+bugs that get merged."
+
+"Maybe there's hope for them yet."
diff --git a/templates/archivepage.tmpl b/templates/archivepage.tmpl
new file mode 100644
index 0000000..3e0bd9b
--- /dev/null
+++ b/templates/archivepage.tmpl
@@ -0,0 +1,19 @@
+<div class="archivepage">
+<TMPL_IF PERMALINK>
+<a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a><br />
+<TMPL_ELSE>
+<a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a><br />
+</TMPL_IF>
+<span class="archivepagedate">
+Posted <TMPL_VAR CTIME>
+<TMPL_IF AUTHOR>
+by <span class="author">
+<TMPL_IF AUTHORURL>
+<a href="<TMPL_VAR AUTHORURL>"><TMPL_VAR AUTHOR></a>
+<TMPL_ELSE>
+<TMPL_VAR AUTHOR>
+</TMPL_IF>
+</span>
+</TMPL_IF>
+</span>
+</div>
diff --git a/templates/atomitem.tmpl b/templates/atomitem.tmpl
new file mode 100644
index 0000000..9b056e0
--- /dev/null
+++ b/templates/atomitem.tmpl
@@ -0,0 +1,49 @@
+<entry>
+ <title><TMPL_VAR TITLE></title>
+<TMPL_IF GUID>
+ <id><TMPL_VAR GUID></id>
+<TMPL_ELSE>
+ <id><TMPL_VAR URL></id>
+</TMPL_IF>
+ <link href="<TMPL_VAR PERMALINK>"/>
+<TMPL_IF AUTHOR>
+ <author><name><TMPL_VAR AUTHOR ESCAPE=HTML></name></author>
+</TMPL_IF>
+<TMPL_IF COPYRIGHT>
+ <rights type="html" xml:lang="en">
+<TMPL_IF LICENSE>
+ <TMPL_VAR LICENSE ESCAPE=HTML>
+ <TMPL_VAR COPYRIGHT ESCAPE=HTML>
+<TMPL_ELSE>
+ <TMPL_VAR COPYRIGHT ESCAPE=HTML>
+</TMPL_IF>
+ </rights>
+<TMPL_ELSE>
+<TMPL_IF LICENSE>
+ <rights type="html" xml:lang="en">
+ <TMPL_VAR LICENSE ESCAPE=HTML>
+ </rights>
+</TMPL_IF>
+</TMPL_IF>
+<TMPL_IF CATEGORIES>
+<TMPL_LOOP CATEGORIES>
+ <category term="<TMPL_VAR CATEGORY>" />
+</TMPL_LOOP>
+</TMPL_IF>
+ <updated><TMPL_VAR MDATE_3339></updated>
+ <published><TMPL_VAR CDATE_3339></published>
+<TMPL_IF ENCLOSURE>
+ <link rel="enclosure" type="<TMPL_VAR TYPE>" href="<TMPL_VAR ENCLOSURE>" length="<TMPL_VAR LENGTH>" />
+</TMPL_IF>
+<TMPL_UNLESS SIMPLEPODCAST>
+ <content type="html" xml:lang="en">
+ <TMPL_VAR CONTENT ESCAPE=HTML>
+ </content>
+</TMPL_UNLESS>
+<TMPL_IF COMMENTSURL>
+ <link rel="comments" href="<TMPL_VAR COMMENTSURL>" type="text/html" />
+</TMPL_IF>
+<TMPL_IF ATOMCOMMENTSURL>
+ <link rel="comments" href="<TMPL_VAR ATOMCOMMENTSURL>" type="application/atom+xml" />
+</TMPL_IF>
+</entry>
diff --git a/templates/atompage.tmpl b/templates/atompage.tmpl
new file mode 100644
index 0000000..3cdd71d
--- /dev/null
+++ b/templates/atompage.tmpl
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<feed xmlns="http://www.w3.org/2005/Atom">
+<title><TMPL_VAR TITLE></title>
+<link href="<TMPL_VAR PAGEURL>"/>
+<link href="<TMPL_VAR FEEDURL>" rel="self" type="application/atom+xml"/>
+<author>
+<TMPL_IF AUTHOR>
+<name><TMPL_VAR AUTHOR></name>
+<TMPL_ELSE>
+<name><TMPL_VAR WIKINAME></name>
+</TMPL_IF>
+</author>
+<TMPL_IF COPYRIGHT>
+<rights type="html" xml:lang="en">
+<TMPL_IF LICENSE>
+ <TMPL_VAR LICENSE>
+ <TMPL_VAR COPYRIGHT ESCAPE=HTML>
+<TMPL_ELSE>
+ <TMPL_VAR COPYRIGHT ESCAPE=HTML>
+</TMPL_IF>
+</rights>
+<TMPL_ELSE>
+<TMPL_IF LICENSE>
+<rights type="html">
+ <TMPL_VAR LICENSE ESCAPE=HTML>
+</rights>
+</TMPL_IF>
+</TMPL_IF>
+<TMPL_IF GUID>
+<id><TMPL_VAR GUID></id>
+<TMPL_ELSE>
+<id><TMPL_VAR PAGEURL></id>
+</TMPL_IF>
+<subtitle type="html"><TMPL_VAR FEEDDESC ESCAPE=HTML></subtitle>
+<generator uri="http://ikiwiki.info/">ikiwiki</generator>
+<updated><TMPL_VAR FEEDDATE></updated>
+<TMPL_VAR CONTENT>
+</feed>
diff --git a/templates/feedlink.tmpl b/templates/feedlink.tmpl
new file mode 100644
index 0000000..c67ad9c
--- /dev/null
+++ b/templates/feedlink.tmpl
@@ -0,0 +1,8 @@
+<div <TMPL_IF ID>id="<TMPL_VAR ID ESCAPE=HTML>"</TMPL_IF> class="feedlink">
+<TMPL_IF RSSURL>
+<a class="feedbutton" type="application/rss+xml" rel="alternate" title="<TMPL_VAR RSSDESC>" href="<TMPL_VAR RSSURL>">RSS</a>
+</TMPL_IF>
+<TMPL_IF ATOMURL>
+<a class="feedbutton" type="application/atom+xml" rel="alternate" title="<TMPL_VAR ATOMDESC>" href="<TMPL_VAR ATOMURL>">Atom</a>
+</TMPL_IF>
+</div>
diff --git a/templates/inlinepage.tmpl b/templates/inlinepage.tmpl
new file mode 100644
index 0000000..37d7e48
--- /dev/null
+++ b/templates/inlinepage.tmpl
@@ -0,0 +1,78 @@
+<TMPL_IF HTML5><article class="inlinepage"><TMPL_ELSE><div class="inlinepage"></TMPL_IF>
+
+<TMPL_IF HTML5><section class="inlineheader"><TMPL_ELSE><div class="inlineheader"></TMPL_IF>
+<TMPL_IF AUTHOR>
+<span class="author">
+<TMPL_IF AUTHORURL>
+<a href="<TMPL_VAR AUTHORURL>"><TMPL_VAR AUTHOR></a>
+<TMPL_ELSE>
+<TMPL_VAR AUTHOR>
+</TMPL_IF>
+</span>
+</TMPL_IF>
+<TMPL_IF HTML5><header class="header"><TMPL_ELSE><span class="header"></TMPL_IF>
+<TMPL_IF PERMALINK>
+<a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a>
+<TMPL_ELSE>
+<a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a>
+</TMPL_IF>
+<TMPL_IF HTML5></header><TMPL_ELSE></span></TMPL_IF>
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5><section class="inlinecontent"><TMPL_ELSE><div class="inlinecontent"></TMPL_IF>
+<TMPL_VAR CONTENT>
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF ENCLOSURE>
+<TMPL_IF HTML5><section id="inlineenclosure"><TMPL_ELSE><div id="inlineenclosure"></TMPL_IF>
+<a href="<TMPL_VAR ENCLOSURE>">Download</a>
+<TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF HTML5><footer class="inlinefooter"><TMPL_ELSE><div class="inlinefooter"></TMPL_IF>
+
+<span class="pagedate">
+Posted <TMPL_VAR CTIME>
+</span>
+
+<TMPL_IF TAGS>
+<TMPL_IF HTML5><nav class="tags"><TMPL_ELSE><span class="tags"></TMPL_IF>
+Tags:
+<TMPL_LOOP TAGS>
+<TMPL_VAR LINK>
+</TMPL_LOOP>
+<TMPL_IF HTML5></nav><TMPL_ELSE></span></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF COPYRIGHT>
+<div class="pagecopyright">
+<TMPL_VAR COPYRIGHT>
+</div>
+</TMPL_IF>
+
+<TMPL_IF LICENSE>
+<div class="pagelicense">
+License: <TMPL_VAR LICENSE>
+</div>
+</TMPL_IF>
+
+<TMPL_IF HAVE_ACTIONS>
+<TMPL_IF HTML5><nav class="actions"><TMPL_ELSE><div class="actions"></TMPL_IF>
+<ul>
+<TMPL_IF EDITURL>
+<li><a href="<TMPL_VAR EDITURL>" rel="nofollow">Edit</a></li>
+</TMPL_IF>
+<TMPL_IF COMMENTSLINK>
+<li><TMPL_VAR COMMENTSLINK></li>
+<TMPL_ELSE>
+<TMPL_IF DISCUSSIONLINK>
+<li><TMPL_VAR DISCUSSIONLINK></li>
+</TMPL_IF>
+</TMPL_IF>
+</ul>
+<TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+</TMPL_IF>
+
+<TMPL_IF HTML5></footer><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>
diff --git a/templates/page.tmpl b/templates/page.tmpl
new file mode 100644
index 0000000..849dd7d
--- /dev/null
+++ b/templates/page.tmpl
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<TMPL_IF HTML_LANG_CODE><html lang="<TMPL_VAR HTML_LANG_CODE>" dir="<TMPL_VAR HTML_LANG_DIR>" xmlns="http://www.w3.org/1999/xhtml"><TMPL_ELSE><html xmlns="http://www.w3.org/1999/xhtml"></TMPL_IF>
+<head>
+ <meta charset="utf-8" />
+ <title><TMPL_VAR TITLE></title>
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <link rel="stylesheet" href="<TMPL_VAR BASEURL>style.css" type="text/css" />
+</head>
+<body lang=en>
+ <article class="page">
+ <section class="pageheader">
+ <header class="header">
+ <span>
+ <span class="parentlinks">
+ <TMPL_LOOP PARENTLINKS>
+ <a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a> &rarr;
+ </TMPL_LOOP>
+ </span>
+ <span class="title">
+ <TMPL_VAR TITLE>
+ </span>
+
+<TMPL_IF TAGS>
+<nav class="tags">
+<TMPL_LOOP TAGS>
+<TMPL_VAR LINK>
+</TMPL_LOOP>
+</nav>
+</TMPL_IF>
+
+ </span>
+ </header>
+ </section>
+
+ <TMPL_IF SIDEBAR>
+ <aside class="sidebar"><TMPL_VAR SIDEBAR></aside>
+ </TMPL_IF>
+
+ <div id="pagebody">
+ <section>
+ <TMPL_VAR CONTENT>
+ </section>
+ </div>
+
+ <footer id="footer" class="pagefooter" role="contentinfo">
+ <nav id="pageinfo">
+ <div class="pagedate">Last edited <TMPL_VAR MTIME></div>
+ </nav>
+ </footer>
+ </article>
+</body>
+</html>
diff --git a/templates/rssitem.tmpl b/templates/rssitem.tmpl
new file mode 100644
index 0000000..bb03ca5
--- /dev/null
+++ b/templates/rssitem.tmpl
@@ -0,0 +1,28 @@
+<item>
+ <title><TMPL_VAR TITLE></title>
+<TMPL_IF GUID>
+ <guid isPermaLink="false"><TMPL_VAR GUID></guid>
+<TMPL_ELSE>
+ <guid isPermaLink="false"><TMPL_VAR URL></guid>
+</TMPL_IF>
+ <link><TMPL_VAR PERMALINK></link>
+<TMPL_IF AUTHOR>
+ <dc:creator><TMPL_VAR AUTHOR ESCAPE=HTML></dc:creator>
+</TMPL_IF>
+<TMPL_IF CATEGORIES>
+<TMPL_LOOP CATEGORIES>
+ <category><TMPL_VAR CATEGORY></category>
+</TMPL_LOOP>
+</TMPL_IF>
+ <pubDate><TMPL_VAR CDATE_822></pubDate>
+ <dcterms:modified><TMPL_VAR MDATE_3339></dcterms:modified>
+<TMPL_IF ENCLOSURE>
+ <enclosure url="<TMPL_VAR ENCLOSURE>" type="<TMPL_VAR TYPE>" length="<TMPL_VAR LENGTH>" />
+</TMPL_IF>
+<TMPL_UNLESS SIMPLEPODCAST>
+ <description><TMPL_VAR CONTENT ESCAPE=HTML></description>
+</TMPL_UNLESS>
+<TMPL_IF COMMENTSURL>
+ <comments><TMPL_VAR COMMENTSURL></comments>
+</TMPL_IF>
+</item>
diff --git a/templates/rsspage.tmpl b/templates/rsspage.tmpl
new file mode 100644
index 0000000..d07ecef
--- /dev/null
+++ b/templates/rsspage.tmpl
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<rss version="2.0"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:dcterms="http://purl.org/dc/terms/"
+ xmlns:atom="http://www.w3.org/2005/Atom">
+<channel>
+<title><TMPL_VAR TITLE></title>
+<link><TMPL_VAR PAGEURL></link>
+<atom:link href="<TMPL_VAR FEEDURL>" rel="self" type="application/rss+xml"/>
+<TMPL_IF COPYRIGHT>
+<copyright><TMPL_VAR COPYRIGHT ESCAPE=HTML></copyright>
+</TMPL_IF>
+<description><TMPL_VAR FEEDDESC ESCAPE=HTML></description>
+<generator>ikiwiki</generator>
+<pubDate><TMPL_VAR FEEDDATE_822></pubDate>
+<TMPL_VAR CONTENT>
+</channel>
+</rss>
diff --git a/templates/titlepage.tmpl b/templates/titlepage.tmpl
new file mode 100644
index 0000000..6326bab
--- /dev/null
+++ b/templates/titlepage.tmpl
@@ -0,0 +1,7 @@
+<p>
+<TMPL_IF PERMALINK>
+<a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a>
+<TMPL_ELSE>
+<a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a>
+</TMPL_IF>
+</p>