summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore15
-rw-r--r--.htaccess2
-rw-r--r--Makefile58
-rwxr-xr-xcontact.html57
-rw-r--r--contact.mdwn57
-rwxr-xr-xessays/commercial-free-software.html351
-rw-r--r--essays/commercial-free-software.mdwn267
-rwxr-xr-xessays/index.html15
-rw-r--r--essays/index.mdwn18
-rwxr-xr-xessays/social-networking.html350
-rw-r--r--essays/social-networking.mdwn280
-rwxr-xr-xguides/index.html11
-rw-r--r--guides/index.mdwn9
-rwxr-xr-xguides/shell-workshop/index.html81
-rw-r--r--guides/shell-workshop/index.mdwn82
-rwxr-xr-xincludes/footer.html12
-rwxr-xr-xincludes/header.html81
-rwxr-xr-xindex.html52
-rw-r--r--index.mdwn53
-rw-r--r--main.css54
-rwxr-xr-xprojects/cgol/index.html25
-rw-r--r--projects/cgol/index.mdwn22
-rwxr-xr-xprojects/changelog-gen/index.html43
-rw-r--r--projects/changelog-gen/index.mdwn43
-rwxr-xr-xprojects/index.html64
-rw-r--r--projects/index.mdwn82
-rwxr-xr-xprojects/opkhelper/index.html27
-rwxr-xr-xprojects/screen-batt/index.html19
-rw-r--r--projects/screen-batt/index.mdwn17
-rw-r--r--projects/ssic/index.mdwn36
-rwxr-xr-xresume.html11
-rw-r--r--resume.mdwn9
-rwxr-xr-xserver.html27
-rw-r--r--server.mdwn27
-rwxr-xr-xtalks/index.html11
-rw-r--r--talks/index.mdwn9
-rwxr-xr-xtalks/software-contracts/index.html49
-rw-r--r--talks/software-contracts/index.mdwn46
-rwxr-xr-xterms.html17
-rw-r--r--terms.mdwn14
40 files changed, 1240 insertions, 1263 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..471106b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+# Swap and backup files
+.*.sw*
+.sw*
+*~
+Session.vim
+
+# Generated files
+*.html
+
+#*
+#!*/
+#!Makefile
+#!*.mdwn
+#!*.css
+#!.gitignore
diff --git a/.htaccess b/.htaccess
deleted file mode 100644
index 82f062b..0000000
--- a/.htaccess
+++ /dev/null
@@ -1,2 +0,0 @@
-Options +Includes
-XBitHack on
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..4095ecd
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,58 @@
+# Makefile
+#
+# Copyright (C) 2013 Patrick "P. J." McDermott
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+INDEX =
+INDEX_SCRIPT = s|href="\([^:]*\)/"|href="\1/$(INDEX)"|g
+DOCUMENT_BASE =
+MEDIA_BASE =
+SSIFLAGS = -D DOCUMENT_BASE=$(DOCUMENT_BASE) -D MEDIA_BASE=$(MEDIA_BASE)
+
+srcs = \
+ index.mdwn \
+ contact.mdwn \
+ resume.mdwn \
+ guides/index.mdwn \
+ guides/shell-workshop/index.mdwn \
+ essays/index.mdwn \
+ essays/commercial-free-software.mdwn \
+ essays/social-networking.mdwn \
+ talks/index.mdwn \
+ talks/software-contracts/index.mdwn \
+ projects/index.mdwn \
+ projects/ssic/index.mdwn \
+ projects/cgol/index.mdwn \
+ projects/screen-batt/index.mdwn \
+ projects/changelog-gen/index.mdwn \
+ terms.mdwn \
+ server.mdwn
+objs = $(srcs:.mdwn=.html)
+
+.SUFFIXES:
+.SUFFIXES: .mdwn .html
+
+all: $(objs)
+
+local:
+ $(MAKE) INDEX=index.html DOCUMENT_BASE=$(PWD) MEDIA_BASE=$(PWD) all
+
+$(objs): Makefile includes/header.html includes/footer.html
+
+.mdwn.html:
+ markdown $< | ssic -o - $(SSIFLAGS) - | sed '$(INDEX_SCRIPT)' >$@
+
+clean:
+ rm -f $(objs)
diff --git a/contact.html b/contact.html
deleted file mode 100755
index f5c9a7b..0000000
--- a/contact.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!--#set var="title" value="Contact" -->
-<!--#include file="includes/header.html" -->
-<h2>Contact Information</h2>
-<p>
- The following are ways to contact me, listed in order of my preference.
-</p>
-<h4>In Person</h4>
-<p>
- I always prefer face-to-face communication over any other medium. If we
- don't normally cross paths and you would like to meet with me, please
- coordinate a meeting over some other medium (e.g. e-mail).
-</p>
-<h4>IRC</h4>
-<p>
- I use the <a href="http://freenode.net/">Freenode</a> and
- <a href="http://www.oftc.net/oftc/">OFTC</a> IRC networks. My nick on both
- is "pehjota". You can find me in a channel or query me if you'd like. I
- generally reply within minutes or hours of contact. However, my IRC client
- runs 24 hours a day on this server. So even though I'm online, I may be
- asleep, travelling, or otherwise disconnected from my IRC client. I
- eventually receive all personal messages, so I should respond sometime
- within 24 hours.
-</p>
-<h4>E-mail</h4>
-<p>
- The Simple Mail Transfer Protocol (SMTP) works very well for verbose
- asynchronous communication. You can reach me at
- <a href="mailto:pjm@nac.net">&lt;mailto:pjm@nac.net&gt;</a>. Depending on
- the complexity of queries and my schedule, I usually reply to e-mail
- messages within a couple of hours or days.
-</p>
-<h4>Microblogging</h4>
-<p>
- You can also find me using the free and federated StatusNet microblogging
- software. My profile is at
- <a href="http://identi.ca/pehjota">&lt;http://identi.ca/pehjota&gt;</a>.
-</p>
-<h4>SMS/MMS and Voice</h4>
-<p>
- I have a mobile phone and use it to send and receive SMS ("text") messages,
- MMS ("picture") messages, and voice calls. I don't publish my phone number,
- but I may provide it on request.
-</p>
-<p>
- I often find phone calls rather distracting, especially while working. I do
- submit, however, that they are useful and often time-saving for
- collaborative work, personal arrangements, and business communications.
-</p>
-<h4>XMPP/Jabber</h4>
-<p>
- My JID is
- <a href="xmpp:PehJota@jabber.org">&lt;xmpp:PehJota@jabber.org&gt;</a>,
- but I rarely have my XMPP client running as few people contact me this way.
- If you'd like to talk to me over XMPP, you should first let me know via some
- other communication medium.
-</p>
-<!--#include file="includes/footer.html" -->
diff --git a/contact.mdwn b/contact.mdwn
new file mode 100644
index 0000000..0724489
--- /dev/null
+++ b/contact.mdwn
@@ -0,0 +1,57 @@
+<!--#set var="title" value="Contact" -->
+<!--#include virtual="/includes/header.html" -->
+
+The following are ways to contact me, listed in order of my preference.
+
+In Person
+=========
+
+I always prefer face-to-face communication over any other medium. If we don't
+normally cross paths and you would like to meet with me, please coordinate a
+meeting over some other medium (e.g. e-mail).
+
+IRC
+===
+
+I use the [Freenode](http://freenode.net/) and [OFTC](http://www.oftc.net/oftc/)
+IRC networks. My nick on both is "pehjota". You can find me in a channel or
+query me if you'd like. I generally reply within minutes or hours of contact.
+However, my IRC client runs 24 hours a day on this server. So even though I'm
+online, I may be asleep, travelling, or otherwise disconnected from my IRC
+client. I eventually receive all personal messages, so I should respond
+sometime within 24 hours.
+
+E-mail
+======
+
+The Simple Mail Transfer Protocol (SMTP) works very well for verbose
+asynchronous communication. You can reach me at &lt;<mailto:pjm@nac.net>&gt;.
+Depending on the complexity of queries and my schedule, I usually reply to
+e-mail messages within a couple of hours or days.
+
+Microblogging
+=============
+
+You can also find me using the free and federated StatusNet microblogging
+software. My profile is at &lt;<http://identi.ca/pehjota>&gt;.
+
+SMS/MMS and Voice
+=================
+
+I have a mobile phone and use it to send and receive SMS ("text") messages, MMS
+("picture") messages, and voice calls. I don't publish my phone number, but I
+may provide it on request.
+
+I often find phone calls rather distracting, especially while working. I do
+submit, however, that they are useful and often time-saving for collaborative
+work, personal arrangements, and business communications.
+
+XMPP/Jabber
+===========
+
+My JID is &lt;[xmpp:PehJota@jabber.org](xmpp:PehJota@jabber.org)&gt;, but I
+rarely have my XMPP client running as few people contact me this way. If you'd
+like to talk to me over XMPP, you should first let me know via some other
+communication medium.
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/essays/commercial-free-software.html b/essays/commercial-free-software.html
deleted file mode 100755
index 2a9c724..0000000
--- a/essays/commercial-free-software.html
+++ /dev/null
@@ -1,351 +0,0 @@
-<!--#set var="title" value="Commercial Free Software: Not an Oxymoron" -->
-<!--#include virtual="../includes/header.html" -->
-<h2>Commercial Free Software: Not an Oxymoron</h2>
-<p>
- TODO: Clean up some wording, consider removing reference to Sencha Inc.,
- maybe mention Qt "open governance", mention transferable skills under
- "Development", discuss application stores under "Distribution", and note
- that most money in proprietary software comes from support rather than from
- licenses.
-</p>
-<p>
- Many people believe that money can't be made in free (as in freedom)
- software. They believe that "free" means "noncommercial", and they might
- compare "open-source" software and "commercial" software as if the terms
- were opposite and mutually exclusive. This is in fact a logical fallacy;
- specifically it is a
- <a href="http://en.wikipedia.org/wiki/Affirming_a_disjunct">false
- exclusionary disjunct</a>. Software can be both free and commercial. If a
- software copyright license allowed only noncommercial dealing, it would be
- considered neither free nor open source.
-</p>
-<p>
- Free software is in fact used commercially, and successful business models
- around free software exist (and have existed longer than those around
- proprietary software have). I've generalized the ways in which people make
- money with free software into three broad categories: development, support,
- and distribution.
-</p>
-<h3>
- Development
-</h3>
-<p>
- Modern economic models around free software closely resemble early economic
- models around software. Keep in mind that software freedom is as old as
- software itself. The "proprietarization", as I call it, of software began
- around the 1970s, apparently pioneered by International Business Machines
- (IBM). [1] It was furthered by companies like "Micro-Soft" and people like
- Bill Gates, who in 1976 published an "Open Letter to Hobbyists" that
- criticized people for sharing software without paying for it. [2] Before
- that time, software was usually distributed with source code (some
- universities even had policies of rejecting software that wasn't). Software
- was often distributed either at no cost or at the cost of making and
- shipping copies (at the time, on tapes). [3] Programmers were paid for the
- time they spent writing software, not for copies of the software itself (or
- really, licenses to use the software). [4] We see the same thing happening
- today. Programmers are being paid to work on software, and the software is
- distributed freely (that is, without unfair restrictions) and often even at
- no charge.
-</p>
-<p>
- I cite four major examples of this phenomenon of paid development of free
- software. The first is Linux, a powerful and reliable high-performance
- kernel found in everything from televisions and ATMs to large servers and
- supercomputers (in fact, in over 90% of the world's 500 fastest
- supercomputers [5]). As of 2010, over 70% of work done on Linux is done by
- paid programmers. [6] At least 659 companies have supported the development
- of Linux. [7] Compare that to the Windows NT kernel of Microsoft Windows,
- the development of which is supported by only one company (the only one
- legally allowed to do so). Additionally, AMD's recent hiring of two more
- graphics driver developers shows that if you can improve a company's
- freely-licensed software, they might hire you to do so officially. [8]
-</p>
-<p>
- The next example is Qt, a flexible cross-platform application framework
- popular in desktop, server, and embedded applications. [9] Qt is free
- software, licensed under the GNU Lesser General Public License (LGPL)
- version 2.1. [10] Most of Qt's developers are employed by Qt Development
- Frameworks, a subsidiary of Nokia Corporation since 2008. [11]
-</p>
-<p>
- My third example is GNAT, a compiler for the Ada programming language that
- is now a part of the GNU Compiler Collection (GCC). It was originally
- developed by the New York University under a $3-million contract awarded by
- the United States Air Force in 1992. Under the requirements of the
- contract, copyright on the software was assigned to the Free Software
- Foundation and the software was released under the GNU General Public
- License (GPL). [12]
-</p>
-<p>
- Finally, I cite the GNU Project, a project announced in 1983 with the
- now-successful goal of creating a complete free operating system. The Free
- Software Foundation, Inc., a non-profit organization founded by Dr. Richard
- Stallman in 1985 to support the development of free software, hired
- programmers to work on parts of the GNU system. GNU Bash (a popular and
- user-friendly command shell now used in systems like GNU/Linux and Apple
- Mac OS X), GLIBC (a C library), and GNU tar (an archiving program) were all
- initially developed by paid programmers. [13] Yet all are free software,
- and all are distributed often at no charge.
-</p>
-<p>
- But you may think this doesn't make any sense. Why do companies pay for the
- development of software for which few people pay? They must be losing lots
- of money. Actually, they have a financial interest in having high-quality
- software available, even if few or no people actually pay for it (but
- remember that free software is a matter of freedom, not price). Many
- companies sell support for free software; we'll see more about this later.
- Many companies sell hardware with which free software is run (servers,
- wireless network adapters, digital cameras, mobile phones, televisions,
- cars, <em>commercial airplanes</em>, etc.). Many companies see free software as a
- way to save time and money and not have to reinvent the wheel. If you want
- something that serves a similar but not identical function as a proprietary
- program does, you have to write a new program from scratch; a free program,
- on the other hand, can simply be adapted to a new purpose. I suspect this
- is part of AMD's motivation in supporting Coreboot, a free bootloader that
- is faster and more flexible than proprietary BIOSes, in their server and
- embedded products. [14][15][16]
-</p>
-<p>
- Finally, most software is custom software, software that is written for a
- single person or company and not meant to be released. This software is
- technically commercial and often free in a trivial sense. If there's one
- user, and that user has the rights to the software, then the software is
- free for all its users. [13][17]
-</p>
-<h3>
- Support
-</h3>
-<p>
- With proprietary software, only the copyright holder is allowed to
- understand it, and only they are allowed to support it. Support of
- proprietary software is a <em>monopoly</em>. (And as it turns out, this allows
- something like extortion. A phone call to Microsoft about Windows XP costs
- $59; an e-mail costs $49. And soon they'll discontinue support for Windows
- XP completely. [18] You have to pay to report a bug, then pay for an
- "upgrade" to see if they've fixed it. [13]) With free software, everyone is
- allowed to understand it and support it. Support of free software is a
- <em>free market</em>. [13] There is competition in free software support.
- Companies and individuals must please their clients, because their clients
- are free to go elsewhere for support.
-</p>
-<p>
- Individuals make money from making changes to free programs. They can
- support their own programs (in fact, Richard Stallman made a lot of money
- doing this, more than he ever did before [13]) or anyone else's free
- programs. Again, like the earliest programmers, these individuals are paid
- for doing work, not for the results of their work. The results of their
- work are usually free software that does what their clients want it to do.
-</p>
-<p>
- Individuals and companies sell consulting services and support contracts
- for free software. The first company to officially do so was Cygnus
- Solutions, founded in 1989. Cygnus maintained many parts of the GNU
- development toolchain and offered commercial support for GNU software.
- Between 1999 and 2000, Cygnus merged with Red Hat, Inc. [19][20] Red Hat
- sells support for GNU/Linux, and its revenue is expected to reach $1
- billion this year, an impressive record. [21][22] Canonical Ltd., founded
- in 2004, maintains and supports a number of free software projects,
- including the Ubuntu GNU/Linux operating system. [23] Nokia Corporation
- used to provide official support for the Qt framework, but earlier this
- year it sold this support business to Digia Plc. [24] Digia is one of 27
- "Qt Partners", companies that work with Nokia to provide commercial support
- for Qt. [25] AdaCore is a company run by the original developers of GNAT,
- the aforementioned Ada compiler commissioned by the U.S. Air Force. AdaCore
- has been officially supporting GNAT since 1994. [12][26]
- Sencha Inc. also offers support for its own free software.
- [27] The Debian project has a list of 824 consultants in 63 countries who
- support the use of Debian GNU operating systems. [28] The Free Software
- Foundation lists 86 individuals and companies offering support services in
- free software. [29] Clearly, there is a successful business model here --
- one based in a free market.
-</p>
-<h3>
- Distribution
-</h3>
-<p>
- Additionally, some people sell free software. That is, they charge a fee
- for distribution, even of other people's work. How is this morally
- acceptable? A person can profit from someone else's hard work? Well, it may
- go against the traditional free software economic model of paying for time
- spent on work instead of for copies of the results of that work. But it's
- not inherently unethical or even illegal. In fact, software licenses must
- allow this practice in order to be considered free licenses. [30] In some
- cases, there is a cost in making and distributing copies of software (e.g.
- the cost of burning and shipping CDs). Or people may just want to earn some
- money for performing a moral act (sharing freedom) and maybe even
- contribute some of the profit back to the developers. [31] In the 1980s,
- Richard Stallman himself charged a fee for copies of GNU Emacs (a text
- editor he wrote) that he shipped on tape. In doing so, he made about $1300
- per month, a respectable income from something that's "free"! [13]
-</p>
-<h3>
- Conclusion
-</h3>
-<p>
- In short, programmers have always had ways to earn money with free
- software, even before proprietary software existed. Most programmers who
- write free software are in fact paid for their work, in a variety of ways.
- The difference in free and proprietary software economic models is that
- copyright holders (not necessarily even the developers) of proprietary
- software profit from restricting users, while free software developers make
- money in more ethical ways. Free software programmers are usually paid for
- the time spent writing software, not for copies of the software (or more
- accurately, the right to use the software).
-</p>
-<h3>
- References:
-</h3>
-<ol>
- <li>
- "Proprietary Software". <span class="cite-title">Wikipedia</span>. July 10, 2011.
- <a href="http://en.wikipedia.org/wiki/Proprietary_software">&lt;http://en.wikipedia.org/wiki/Proprietary_software&gt;</a>.
- </li>
- <li>
- "Open Letter to Hobbyists". <span class="cite-title">Wikipedia</span>. July 6, 2011.
- <a href="http://en.wikipedia.org/wiki/Open_Letter_to_Hobbyists">&lt;http://en.wikipedia.org/wiki/Open_Letter_to_Hobbyists&gt;</a>.
- </li>
- <li>
- Williams, Sam. "For Want of a Printer". <span class="cite-title">Free as in Freedom</span>. 2002:
- O'Reilly.
- <a href="http://oreilly.com/openbook/freedom/ch01.html">&lt;http://oreilly.com/openbook/freedom/ch01.html&gt;</a>.
- </li>
- <li>
- <span class="cite-title">The Codebreakers</span>. 2006: Asia Pacific Development Information
- Programme. Aired on BBC World.
- <a href="http://www.apdip.net/news/fossdoc">&lt;http://www.apdip.net/news/fossdoc&gt;</a>,
- <a href="http://www.archive.org/details/The-Codebreakers">&lt;http://www.archive.org/details/The-Codebreakers&gt;</a>.
- </li>
- <li>
- "Operating system Family share for 11/2010". <span class="cite-title">Top500 Supercomputing
- Sites</span>. Top500.Org.
- <a href="http://www.top500.org/stats/list/36/osfam">&lt;http://www.top500.org/stats/list/36/osfam&gt;</a>.
- </li>
- <li>
- Kroah-Hartman, Greg; Corbet, Jonathan; and McPherson, Amanda. "Who is
- Sponsoring the Work". <span class="cite-title">Linux Kernel Development: How Fast it is Going, Who
- is Doing It, What They are Doing, and Who is Sponsoring It</span>. 2010: The
- Linux Foundation.
- <a href="http://www.linuxfoundation.org/docs/lf_linux_kernel_development_2010.pdf">&lt;http://www.linuxfoundation.org/docs/lf_linux_kernel_development_2010.pdf&gt;</a>.
- 12-13.
- </li>
- <li>
- Kroah-Hartman, Greg; Corbet, Jonathan; and McPherson, Amanda. "Who is
- Doing the Work". <span class="cite-title">Linux Kernel Development: How Fast it is Going, Who is
- Doing It, What They are Doing, and Who is Sponsoring It</span>. 2010: The Linux
- Foundation.
- <a href="http://www.linuxfoundation.org/docs/lf_linux_kernel_development_2010.pdf">&lt;http://www.linuxfoundation.org/docs/lf_linux_kernel_development_2010.pdf&gt;</a>.
- 10.
- </li>
- <li>
- Larabel, Michael. "AMD's New Open-Source Employees". <span class="cite-title">Phoronix</span>. July 5,
- 2011.
- <a href="http://www.phoronix.com/scan.php?page=news_item&amp;px=OTYzOA">&lt;http://www.phoronix.com/scan.php?page=news_item&amp;px=OTYzOA&gt;</a>.
- </li>
- <li>
- "Qt (framework)". <span class="cite-title">Wikipedia</span>. July 13, 2011.
- <a href="http://en.wikipedia.org/wiki/Qt_%28framework%29">&lt;http://en.wikipedia.org/wiki/Qt_%28framework%29&gt;</a>.
- </li>
- <li>
- "Qt Licensing". Nokia Corporation.
- <a href="http://qt.nokia.com/products/licensing">&lt;http://qt.nokia.com/products/licensing&gt;</a>.
- </li>
- <li>
- "Qt Development Frameworks". <span class="cite-title">Wikipedia</span>. July 8, 2011.
- <a href="http://en.wikipedia.org/wiki/Qt_Development_Frameworks">&lt;http://en.wikipedia.org/wiki/Qt_Development_Frameworks&gt;</a>.
- </li>
- <li>
- "GNAT". <span class="cite-title">Wikipedia</span>. May 9, 2011.
- <a href="http://en.wikipedia.org/wiki/GNAT">&lt;http://en.wikipedia.org/wiki/GNAT&gt;</a>.
- </li>
- <li>
- Stallman, Richard. "Free Software: Freedom and Cooperation". <span class="cite-title">GNU
- Project</span>. Free Software Foundation, Inc. July 13, 2011.
- <a href="http://www.gnu.org/events/rms-nyu-2001-transcript.html">&lt;http://www.gnu.org/events/rms-nyu-2001-transcript.html&gt;</a>.
- </li>
- <li>
- "Coreboot and Open Source Development". <span class="cite-title">Business Blog</span>. Advanced Micro
- Devices, Inc. February 28, 2011.
- <a href="http://blogs.amd.com/work/2011/02/28/amd-coreboot/">&lt;http://blogs.amd.com/work/2011/02/28/amd-coreboot/&gt;</a>.
- </li>
- <li>
- "AMD to use Coreboot in Llano, other upcoming parts". Fudzilla. May 10,
- 2011.
- <a href="http://www.fudzilla.com/home/item/22677-amd-to-use-coreboot-in-llano-other-upcoming-parts">&lt;http://www.fudzilla.com/home/item/22677-amd-to-use-coreboot-in-llano-other-upcoming-parts&gt;</a>.
- </li>
- <li>
- "Benefits". <span class="cite-title">coreboot</span>. January 15, 2008.
- <a href="http://www.coreboot.org/Benefits">&lt;http://www.coreboot.org/Benefits&gt;</a>.
- </li>
- <li>
- "Categories of Free and Nonfree Software". <span class="cite-title">GNU Project</span>. Free Software
- Foundation, Inc. July 13, 2011.
- <a href="http://www.gnu.org/philosophy/categories.html#PrivateSoftware">&lt;http://www.gnu.org/philosophy/categories.html#PrivateSoftware&gt;</a>.
- </li>
- <li>
- "Support Options". <span class="cite-title">Microsoft Support</span>. Microsoft Corporation. (No
- portable URI. Go to
- <a href="https://support.microsoft.com/oas/default.aspx?gprid=1173&amp;st=1&amp;wfxredirect=1&amp;sd=gn">&lt;https://support.microsoft.com/oas/default.aspx?gprid=1173&amp;st=1&amp;wfxredirect=1&amp;sd=gn&gt;</a>,
- click "Microsoft Windows XP Home Edition", select "Other", and
- click "Continue".)
- </li>
- <li>
- "Cygnus Solutions". <span class="cite-title">Wikipedia</span>. June 8, 2011.
- <a href="http://en.wikipedia.org/wiki/Cygnus_Solutions">&lt;http://en.wikipedia.org/wiki/Cygnus_Solutions&gt;</a>.
- </li>
- <li>
- "Marketing Cygnus Support -- Free Software history". September 27,
- 2006.
- <a href="http://www.toad.com/gnu/cygnus/">&lt;http://www.toad.com/gnu/cygnus/&gt;</a>.
- </li>
- <li>
- Woods, Dan. "Red Hat At $1 Billion". <span class="cite-title">CIO Central</span>. Forbes.com LLC.
- November 30, 2010.
- <a href="http://blogs.forbes.com/ciocentral/2010/11/30/red-hat-at-1-billion/">&lt;http://blogs.forbes.com/ciocentral/2010/11/30/red-hat-at-1-billion/&gt;</a>.
- </li>
- <li>
- Dignan, Larry. "Red Hat: Nearing $1 billion in revenue; Not bad for
- free software". <span class="cite-title">ZDNet</span>. CBS Interactive. March 23, 2011.
- <a href="http://www.zdnet.com/blog/btl/red-hat-nearing-1-billion-in-revenue-not-bad-for-free-software/46445">&lt;http://www.zdnet.com/blog/btl/red-hat-nearing-1-billion-in-revenue-not-bad-for-free-software/46445&gt;</a>.
- </li>
- <li>
- "Canonical Ltd.". <span class="cite-title">Wikipedia</span>. June 12, 2011.
- <a href="http://en.wikipedia.org/wiki/Canonical_Ltd.">&lt;http://en.wikipedia.org/wiki/Canonical_Ltd.&gt;</a>.
- </li>
- <li>
- Nystrom, Sebastian. "Nokia and Digia working together to grow the Qt
- community". <span class="cite-title">The Qt Blog</span>. Nokia Corporation. March 7, 2011.
- <a href="http://blog.qt.nokia.com/2011/03/07/nokia-and-digia-working-together/">&lt;http://blog.qt.nokia.com/2011/03/07/nokia-and-digia-working-together/&gt;</a>.
- </li>
- <li>
- "Partner Locator". Nokia Corporation.
- <a href="http://qt.nokia.com/partners/partner-locator">&lt;http://qt.nokia.com/partners/partner-locator&gt;</a>.
- </li>
- <li>
- "AdaCore". <span class="cite-title">Wikipedia</span>. May 20, 2011.
- <a href="http://en.wikipedia.org/wiki/AdaCore">&lt;http://en.wikipedia.org/wiki/AdaCore&gt;</a>.
- </li>
- <li>
- "Company". <span class="cite-title">Sencha</span>. Sencha Inc.
- <a href="http://www.sencha.com/company/">&lt;http://www.sencha.com/company/&gt;</a>.
- </li>
- <li>
- "Consultants". Debian Project. July 11, 2011.
- <a href="http://www.debian.org/consultants/">&lt;http://www.debian.org/consultants/&gt;</a>.
- </li>
- <li>
- Sullivan, John. "Service Directory". Free Software Foundation, Inc.
- April 14, 2011.
- <a href="http://www.fsf.org/resources/service/">&lt;http://www.fsf.org/resources/service/&gt;</a>.
- </li>
- <li>
- "The Free Software Definition". <span class="cite-title">GNU Project</span>. Free Software
- Foundation, Inc. July 13, 2011.
- <a href="http://www.gnu.org/philosophy/free-sw.html">&lt;http://www.gnu.org/philosophy/free-sw.html&gt;</a>.
- </li>
- <li>
- "Selling Free Software". <span class="cite-title">GNU Project</span>. Free Software Foundation, Inc.
- July 13, 2011.
- <a href="http://www.gnu.org/philosophy/selling.html">&lt;http://www.gnu.org/philosophy/selling.html&gt;</a>.
- </li>
-</ol>
-<!--#include virtual="../includes/footer.html" -->
diff --git a/essays/commercial-free-software.mdwn b/essays/commercial-free-software.mdwn
new file mode 100644
index 0000000..c71e4ab
--- /dev/null
+++ b/essays/commercial-free-software.mdwn
@@ -0,0 +1,267 @@
+<!--#set var="title" value="Commercial Free Software: Not an Oxymoron" -->
+<!--#include virtual="/includes/header.html" -->
+
+TODO: Clean up some wording, consider removing reference to Sencha Inc., maybe
+mention Qt "open governance", mention transferable skills under "Development",
+discuss application stores under "Distribution", and note that most money in
+proprietary software comes from support rather than from licenses.
+
+Many people believe that money can't be made in free (as in freedom) software.
+They believe that "free" means "noncommercial", and they might compare
+"open-source" software and "commercial" software as if the terms were opposite
+and mutually exclusive. This is in fact a logical fallacy; specifically it is a
+[false exclusionary disjunct][fed]. Software can be both free and commercial.
+If a software copyright license allowed only noncommercial dealing, it would be
+considered neither free nor open source.
+
+Free software is in fact used commercially, and successful business models
+around free software exist (and have existed longer than those around
+proprietary software have). I've generalized the ways in which people make money
+with free software into three broad categories: development, support, and
+distribution.
+
+[fed]: http://en.wikipedia.org/wiki/Affirming_a_disjunct
+
+Development
+===========
+
+Modern economic models around free software closely resemble early economic
+models around software. Keep in mind that software freedom is as old as software
+itself. The "proprietarization", as I call it, of software began around the
+1970s, apparently pioneered by International Business Machines (IBM). [1] It
+was furthered by companies like "Micro-Soft" and people like Bill Gates, who in
+1976 published an "Open Letter to Hobbyists" that criticized people for sharing
+software without paying for it. [2] Before that time, software was usually
+distributed with source code (some universities even had policies of rejecting
+software that wasn't). Software was often distributed either at no cost or at
+the cost of making and shipping copies (at the time, on tapes). [3] Programmers
+were paid for the time they spent writing software, not for copies of the
+software itself (or really, licenses to use the software). [4] We see the same
+thing happening today. Programmers are being paid to work on software, and the
+software is distributed freely (that is, without unfair restrictions) and often
+even at no charge.
+
+I cite four major examples of this phenomenon of paid development of free
+software. The first is Linux, a powerful and reliable high-performance kernel
+found in everything from televisions and ATMs to large servers and
+supercomputers (in fact, in over 90% of the world's 500 fastest supercomputers
+[5]). As of 2010, over 70% of work done on Linux is done by paid programmers.
+[6] At least 659 companies have supported the development of Linux. [7]
+Compare that to the Windows NT kernel of Microsoft Windows, the development of
+which is supported by only one company (the only one legally allowed to do so).
+Additionally, AMD's recent hiring of two more graphics driver developers shows
+that if you can improve a company's freely-licensed software, they might hire
+you to do so officially. [8]
+
+The next example is Qt, a flexible cross-platform application framework popular
+in desktop, server, and embedded applications. [9] Qt is free software,
+licensed under the GNU Lesser General Public License (LGPL) version 2.1. [10]
+Most of Qt's developers are employed by Qt Development Frameworks, a subsidiary
+of Nokia Corporation since 2008. [11]
+
+My third example is GNAT, a compiler for the Ada programming language that is
+now a part of the GNU Compiler Collection (GCC). It was originally developed by
+the New York University under a $3-million contract awarded by the United States
+Air Force in 1992. Under the requirements of the contract, copyright on the
+software was assigned to the Free Software Foundation and the software was
+released under the GNU General Public License (GPL). [12]
+
+Finally, I cite the GNU Project, a project announced in 1983 with the
+now-successful goal of creating a complete free operating system. The Free
+Software Foundation, Inc., a non-profit organization founded by Dr. Richard
+Stallman in 1985 to support the development of free software, hired programmers
+to work on parts of the GNU system. GNU Bash (a popular and user-friendly
+command shell now used in systems like GNU/Linux and Apple Mac OS X), GLIBC (a
+C library), and GNU tar (an archiving program) were all initially developed by
+paid programmers. [13] Yet all are free software, and all are distributed often
+at no charge.
+
+But you may think this doesn't make any sense. Why do companies pay for the
+development of software for which few people pay? They must be losing lots of
+money. Actually, they have a financial interest in having high-quality software
+available, even if few or no people actually pay for it (but remember that free
+software is a matter of freedom, not price). Many companies sell support for
+free software; we'll see more about this later. Many companies sell hardware
+with which free software is run (servers, wireless network adapters, digital
+cameras, mobile phones, televisions, cars, *commercial airplanes*, etc.). Many
+companies see free software as a way to save time and money and not have to
+reinvent the wheel. If you want something that serves a similar but not
+identical function as a proprietary program does, you have to write a new
+program from scratch; a free program, on the other hand, can simply be adapted
+to a new purpose. I suspect this is part of AMD's motivation in supporting
+Coreboot, a free bootloader that is faster and more flexible than proprietary
+BIOSes, in their server and embedded products. [14][15][16]
+
+Finally, most software is custom software, software that is written for a single
+person or company and not meant to be released. This software is technically
+commercial and often free in a trivial sense. If there's one user, and that user
+has the rights to the software, then the software is free for all its users.
+[13][17]
+
+Support
+=======
+
+With proprietary software, only the copyright holder is allowed to understand
+it, and only they are allowed to support it. Support of proprietary software is
+a *monopoly*. (And as it turns out, this allows something like extortion. A
+phone call to Microsoft about Windows XP costs $59; an e-mail costs $49. And
+soon they'll discontinue support for Windows XP completely. [18] You have to
+pay to report a bug, then pay for an "upgrade" to see if they've fixed it. [13]) With free software, everyone is allowed to understand it and support it.
+Support of free software is a *free market*. [13] There is competition in free
+software support. Companies and individuals must please their clients, because
+their clients are free to go elsewhere for support.
+
+Individuals make money from making changes to free programs. They can support
+their own programs (in fact, Richard Stallman made a lot of money doing this,
+more than he ever did before [13]) or anyone else's free programs. Again, like
+the earliest programmers, these individuals are paid for doing work, not for the
+results of their work. The results of their work are usually free software that
+does what their clients want it to do.
+
+Individuals and companies sell consulting services and support contracts for
+free software. The first company to officially do so was Cygnus Solutions,
+founded in 1989. Cygnus maintained many parts of the GNU development toolchain
+and offered commercial support for GNU software. Between 1999 and 2000, Cygnus
+merged with Red Hat, Inc. [19][20] Red Hat sells support for GNU/Linux, and its
+revenue is expected to reach $1 billion this year, an impressive record.
+[21][22] Canonical Ltd., founded in 2004, maintains and supports a number of
+free software projects, including the Ubuntu GNU/Linux operating system. [23]
+Nokia Corporation used to provide official support for the Qt framework, but
+earlier this year it sold this support business to Digia Plc. [24] Digia is one
+of 27 "Qt Partners", companies that work with Nokia to provide commercial
+support for Qt. [25] AdaCore is a company run by the original developers of
+GNAT, the aforementioned Ada compiler commissioned by the U.S. Air Force.
+AdaCore has been officially supporting GNAT since 1994. [12][26] Sencha Inc.
+also offers support for its own free software. [27] The Debian project has a
+list of 824 consultants in 63 countries who support the use of Debian GNU
+operating systems. [28] The Free Software Foundation lists 86 individuals and
+companies offering support services in free software. [29] Clearly, there is a
+successful business model here -- one based in a free market.
+
+Distribution
+============
+
+Additionally, some people sell free software. That is, they charge a fee for
+distribution, even of other people's work. How is this morally acceptable? A
+person can profit from someone else's hard work? Well, it may go against the
+traditional free software economic model of paying for time spent on work
+instead of for copies of the results of that work. But it's not inherently
+unethical or even illegal. In fact, software licenses must allow this practice
+in order to be considered free licenses. [30] In some cases, there is a cost
+in making and distributing copies of software (e.g. the cost of burning and
+shipping CDs). Or people may just want to earn some money for performing a
+moral act (sharing freedom) and maybe even contribute some of the profit back to
+the developers. [31] In the 1980s, Richard Stallman himself charged a fee for
+copies of GNU Emacs (a text editor he wrote) that he shipped on tape. In doing
+so, he made about $1300 per month, a respectable income from something that's
+"free"! [13]
+
+Conclusion
+==========
+
+In short, programmers have always had ways to earn money with free software,
+even before proprietary software existed. Most programmers who write free
+software are in fact paid for their work, in a variety of ways. The difference
+in free and proprietary software economic models is that copyright holders (not
+necessarily even the developers) of proprietary software profit from restricting
+users, while free software developers make money in more ethical ways. Free
+software programmers are usually paid for the time spent writing software, not
+for copies of the software (or more accurately, the right to use the software).
+
+References:
+===========
+
+1. "Proprietary Software". <span class="cite-title">Wikipedia</span>. July
+ 10, 2011. &lt;<http://en.wikipedia.org/wiki/Proprietary_software>&gt;.
+2. "Open Letter to Hobbyists". <span class="cite-title">Wikipedia</span>.
+ July 6, 2011.
+ &lt;<http://en.wikipedia.org/wiki/Open_Letter_to_Hobbyists>&gt;.
+3. Williams, Sam. "For Want of a Printer". <span class="cite-title">Free as
+ in Freedom</span>. 2002: O'Reilly.
+ &lt;<http://oreilly.com/openbook/freedom/ch01.html>&gt;.
+4. <span class="cite-title">The Codebreakers</span>. 2006: Asia Pacific
+ Development Information Programme. Aired on BBC World.
+ &lt;<http://www.apdip.net/news/fossdoc>&gt;,
+ &lt;<http://www.archive.org/details/The-Codebreakers>&gt;.
+5. "Operating system Family share for 11/2010".
+ <span class="cite-title">Top500 Supercomputing Sites</span>. Top500.Org.
+ &lt;<http://www.top500.org/stats/list/36/osfam>&gt;.
+6. Kroah-Hartman, Greg; Corbet, Jonathan; and McPherson, Amanda. "Who is
+ Sponsoring the Work". <span class="cite-title">Linux Kernel Development:
+ How Fast it is Going, Who is Doing It, What They are Doing, and Who is
+ Sponsoring It</span>. 2010: The Linux Foundation.
+ &lt;<http://www.linuxfoundation.org/docs/lf_linux_kernel_development_2010.pdf>&gt;.
+ 12-13.
+7. Kroah-Hartman, Greg; Corbet, Jonathan; and McPherson, Amanda. "Who is
+ Doing the Work". <span class="cite-title">Linux Kernel Development: How
+ Fast it is Going, Who is Doing It, What They are Doing, and Who is
+ Sponsoring It</span>. 2010: The Linux Foundation.
+ &lt;<http://www.linuxfoundation.org/docs/lf_linux_kernel_development_2010.pdf>&gt;.
+ 10.
+8. Larabel, Michael. "AMD's New Open-Source Employees".
+ <span class="cite-title">Phoronix</span>. July 5, 2011.
+ &lt;<http://www.phoronix.com/scan.php?page=news_item&amp;px=OTYzOA>&gt;.
+9. "Qt (framework)". <span class="cite-title">Wikipedia</span>. July
+ 13, 2011. &lt;<http://en.wikipedia.org/wiki/Qt_%28framework%29>&gt;.
+10. "Qt Licensing". Nokia Corporation.
+ &lt;<http://qt.nokia.com/products/licensing>&gt;.
+11. "Qt Development Frameworks". <span class="cite-title">Wikipedia</span>.
+ July 8, 2011.
+ &lt;<http://en.wikipedia.org/wiki/Qt_Development_Frameworks>&gt;.
+12. "GNAT". <span class="cite-title">Wikipedia</span>. May 9, 2011.
+ &lt;<http://en.wikipedia.org/wiki/GNAT>&gt;.
+13. Stallman, Richard. "Free Software: Freedom and Cooperation".
+ <span class="cite-title">GNU Project</span>. Free Software Foundation, Inc.
+ July 13, 2011.
+ &lt;<http://www.gnu.org/events/rms-nyu-2001-transcript.html>&gt;.
+14. "Coreboot and Open Source Development". <span class="cite-title">Business
+ Blog</span>. Advanced Micro Devices, Inc. February 28, 2011.
+ &lt;<http://blogs.amd.com/work/2011/02/28/amd-coreboot/>&gt;.
+15. "AMD to use Coreboot in Llano, other upcoming parts". Fudzilla. May 10,
+ 2011.
+ &lt;<http://www.fudzilla.com/home/item/22677-amd-to-use-coreboot-in-llano-other-upcoming-parts>&gt;.
+16. "Benefits". <span class="cite-title">coreboot</span>. January 15, 2008.
+ &lt;<http://www.coreboot.org/Benefits>&gt;.
+17. "Categories of Free and Nonfree Software". <span class="cite-title">GNU
+ Project</span>. Free Software Foundation, Inc. July 13, 2011.
+ &lt;<http://www.gnu.org/philosophy/categories.html#PrivateSoftware>&gt;.
+18. "Support Options". <span class="cite-title">Microsoft Support</span>.
+ Microsoft Corporation. (No portable URI. Go to
+ &lt;<https://support.microsoft.com/oas/default.aspx?gprid=1173&amp;st=1&amp;wfxredirect=1&amp;sd=gn>&gt;,
+ click "Microsoft Windows XP Home Edition", select "Other", and click
+ "Continue".)
+19. "Cygnus Solutions". <span class="cite-title">Wikipedia</span>. June
+ 8, 2011. &lt;<http://en.wikipedia.org/wiki/Cygnus_Solutions>&gt;.
+20. "Marketing Cygnus Support -- Free Software history". September 27, 2006.
+ &lt;<http://www.toad.com/gnu/cygnus/>&gt;.
+21. Woods, Dan. "Red Hat At $1 Billion". <span class="cite-title">CIO
+ Central</span>. Forbes.com LLC. November 30, 2010.
+ &lt;<http://blogs.forbes.com/ciocentral/2010/11/30/red-hat-at-1-billion/>&gt;.
+22. Dignan, Larry. "Red Hat: Nearing $1 billion in revenue; Not bad for free
+ software". <span class="cite-title">ZDNet</span>. CBS Interactive. March
+ 23, 2011.
+ &lt;<http://www.zdnet.com/blog/btl/red-hat-nearing-1-billion-in-revenue-not-bad-for-free-software/46445>&gt;.
+23. "Canonical Ltd.". <span class="cite-title">Wikipedia</span>. June
+ 12, 2011. &lt;<http://en.wikipedia.org/wiki/Canonical_Ltd.>&gt;.
+24. Nystrom, Sebastian. "Nokia and Digia working together to grow the Qt
+ community". <span class="cite-title">The Qt Blog</span>. Nokia
+ Corporation. March 7, 2011.
+ &lt;<http://blog.qt.nokia.com/2011/03/07/nokia-and-digia-working-together/>&gt;.
+25. "Partner Locator". Nokia Corporation.
+ &lt;<http://qt.nokia.com/partners/partner-locator>&gt;.
+26. "AdaCore". <span class="cite-title">Wikipedia</span>. May 20, 2011.
+ &lt;<http://en.wikipedia.org/wiki/AdaCore>&gt;.
+27. "Company". <span class="cite-title">Sencha</span>. Sencha Inc.
+ &lt;<http://www.sencha.com/company/>&gt;.
+28. "Consultants". Debian Project. July 11, 2011.
+ &lt;<http://www.debian.org/consultants/>&gt;.
+29. Sullivan, John. "Service Directory". Free Software Foundation, Inc. April
+ 14, 2011. &lt;<http://www.fsf.org/resources/service/>&gt;.
+30. "The Free Software Definition". <span class="cite-title">GNU
+ Project</span>. Free Software Foundation, Inc. July 13, 2011.
+ &lt;<http://www.gnu.org/philosophy/free-sw.html>&gt;.
+31. "Selling Free Software". <span class="cite-title">GNU Project</span>. Free
+ Software Foundation, Inc. July 13, 2011.
+ &lt;<http://www.gnu.org/philosophy/selling.html>&gt;.
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/essays/index.html b/essays/index.html
deleted file mode 100755
index 81a2ff6..0000000
--- a/essays/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!--#set var="title" value="Essays" -->
-<!--#include virtual="../includes/header.html" -->
-<h2>Essays</h2>
-<p>
- Here you will find essays containing facts and opinions about computing
- freedom and ethics, U.S. and international copyright law, and GNU/Linux.
-</p>
-<h3>Computing Freedom and Ethics</h3>
-<ul>
- <li><a href="commercial-free-software.html">Commercial Free Software: Not an Oxymoron</a></li>
- <li><a href="social-networking.html">On Facebook, Google+, and Ethical Social Networking</a></li>
- <li>Software as a Service: Lost in the Cloud</li>
-</ul>
-<h3>Copyright Law</h3>
-<!--#include virtual="../includes/footer.html" -->
diff --git a/essays/index.mdwn b/essays/index.mdwn
new file mode 100644
index 0000000..2ba7df5
--- /dev/null
+++ b/essays/index.mdwn
@@ -0,0 +1,18 @@
+<!--#set var="title" value="Essays" -->
+<!--#include virtual="/includes/header.html" -->
+
+Here you will find essays containing facts and opinions about computing freedom
+and ethics, U.S. and international copyright law, and GNU/Linux.
+
+Computing Freedom and Ethics
+============================
+
+ * [Commercial Free Software: Not an Oxymoron](commercial-free-software.html)
+ * [On Facebook, Google+, and Ethical Social
+ Networking](social-networking.html)
+ * Software as a Service: Lost in the Cloud
+
+Copyright Law
+=============
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/essays/social-networking.html b/essays/social-networking.html
deleted file mode 100755
index 47acb13..0000000
--- a/essays/social-networking.html
+++ /dev/null
@@ -1,350 +0,0 @@
-<!--#set var="title" value="On Facebook, Google+, and Ethical Social Networking" -->
-<!--#include virtual="../includes/header.html" -->
-<h2>On Facebook, Google+, and Ethical Social Networking</h2>
-<p>
- TO COME: An introduction and a section on Google+.
-</p>
-<h3>The Ethics of Facebook</h3>
-<p>
- Facebook shares their users' personal information with third parties.
- They use mere Web site design changes as an excuse to revert users'
- privacy settings to unsafe defaults. Their social platform has huge
- security holes that allow personal information to be leaked. One such
- hole made some users' private chats accessible to all of their contacts.
- Facebook also exposes users to malware and identity theft. [1] They
- make it easy for application developers to collect personal information.
- [2] The Wall Street Journal found that these application developers
- collect this personal information, link it with other information, and
- sell it to others. [3]
-</p>
-<p>
- In general, Facebook has always operated on an opt-out basis. In some
- cases, you can actually disable third-party access to your information.
- But you must always be on the lookout for new "features" or changes to
- privacy settings. Facebook always changes the way it collects
- information, and it catches many people unaware. But it's impossible to
- opt out of things you don't even know about. Recently, Facebook added a
- feature they call "tag suggestions". If you have photos on your
- profile, Facebook can pick out people's faces and suggest names for
- them. This may sound useful, but it's the tip of an almost nightmarish
- ethics iceberg in information systems. Facebook uses facial recognition
- software to make this work; they scan already-tagged photos and record
- distinguishing facial features and then find photos with similar faces
- and give them names. They maintain a database of people's facial
- features. They never notified anyone about this database. They never
- asked users if they could record this information. Instead, of course,
- they made it an opt-out feature; you have to explicitly disable this
- hidden feature to keep your facial information out of the database.
- This new feature has even sparked an investigation by the European
- Union. [4][5] But just imagine what Facebook could do with this
- information (and consider their track record with personal information).
- I suspect they may soon start selling facial data to other companies,
- law enforcement agencies, and oppressive governments (I've heard that
- the U.K. once used video camera footage to locate and arrest protesters,
- so imagine what they could do with facial data).
-</p>
-<p>
- Basically, Facebook is a business. And you are not their customer. You
- are their product. They are, in fact, selling their products to
- advertisers. That is, they use a person's face (without getting
- permission and without paying anything) to advertise things to that
- person's friends. Claim to like something, and you've given a product
- endorsement at a price advertising agencies would love. [6]
-</p>
-<p>
- And they also seem to like selling out their users to governments and
- limiting what their users can read and say. After their recent
- collaboration with Chinese partners, the Facebook platform was allowed
- into China under political censorship. At the time, Facebook lobbyist
- Adam Conner remarked, "we're allowing too much, maybe, free speech".
- [7][8] The Associated Press reported last month that Facebook sold out
- hundreds of peaceful pro-Palestinian activists who had been organizing
- events through the social platform. Facebook allowed governments to
- track its users' activities. As a result, more than 300 peaceful
- activists were added to airline terrorism watch lists and denied the
- right to leave their countries. International air travel was disrupted
- as planes from Geneva and Italy were diverted for security inspections.
- 310 people were detained after landing in Israel on their way to stand
- with Palestinians in a peaceful mission of solidarity and fact-finding.
- [9][10] Imagine what might have happened if Facebook (and widespread
- publicly-accessible computer networks for that matter) existed during
- the civil rights movement. Would there be racial equality in the United
- States today? Or would peaceful protesters organizing events have been
- sold out and arrested before they could even meet?
-</p>
-<p>
- But it seems you don't even have to use Facebook to get tracked by
- Facebook. Everyone who sees a "Like" button somewhere on the Web (as
- I'm sure you have) can be tracked. Facebook has the ability to map out
- the browsing behavior of a massive number (a number that grows by tens
- of millions each month) of Web users, even those who don't use Facebook.
- [11] Again, imagine what they could do with such vast amounts of
- information.
-</p>
-<p>
- Things like these gaping holes in privacy, devious information
- collection practices, abuse of users, censorship, and tracking inspired
- Matt Lee, campaigns manager, and John Sullivan, executive director, of
- the Free Software Foundation to write about Facebook's poor track record
- with privacy and create rather amusing "Dislike" and "not f'd" buttons. [12]
-</p>
-<h3>Ethical Social Networking</h3>
-<p>
- TODO: Move characteristic four into a note somewhere, as it is rare for a
- service provider to attempt to claim copyright on user-submitted works.
- Also, refer to the Franklin Street Statement.
-</p>
-<p>
- But social networking is not inherently evil. You can connect with old
- friends and discover new ones without sacrificing privacy, security,
- autonomy, and freedom. You just have to be careful about the platforms
- you use. I've identified four basic characteristics that a social
- networking platform must have for it to be an ethical one that doesn't
- abuse its users. The first two characteristics are universal; all
- viable platforms, whether running on your own computer or hosted by a
- service provider, must have these. The last two apply only if you
- choose to use a platform that is run by someone else as a service.
-</p>
-<ol>
- <li>
- Software freedom. You must be free to use the software that powers
- the social networking platform on your own computer without
- restrictions. You must be free to inspect the software and modify
- it. You must be free to share the software with others, with or
- without modifications. With these freedoms, you have full control
- over your social networking and you can decide who has access to
- which personal information. Without these freedoms, only the
- developer can decide what the software does, and you may not even
- be allowed to know what it does to you.
- </li>
- <li>
- Federation. You must be able to run the software on your own
- computer and still be able to communicate with other people using
- other copies of the software. If the software has protocols for
- communication between users across multiple installations, then the
- software is federated. For example, e-mail is federated; you can
- run your own mail server and still send mail to other people who
- use other servers. This is because all standards-compliant mail
- servers speak the same protocol.
- </li>
- <li>
- Privacy. If you choose to use a social networking service run by
- someone else, the service must offer a clear and agreeable privacy
- policy to which the service provider must strictly adhere. The
- service provider must not be allowed to give your personal
- information to third parties without your consent (unless required
- by law) or use your information in ways that threaten your privacy
- and autonomy.
- </li>
- <li>
- No claims of copyright. The service provider must agree that your
- personal information is yours, not theirs. There must not be any
- claims of copyright on the information you provide. The provider
- may, however, require you to license such information to them
- and/or to others for it to be published on the service; in this
- case, you should make sure you agree with the license terms before
- using the service.
- </li>
-</ol>
-<p>
- Let's look at some social networking platforms and see how they adhere
- to these criteria. We'll start with Facebook. Facebook fails criterion
- one; you cannot run, inspect, modify, or share the software that powers
- Facebook. This means it also fails criterion two; it is inherently not
- federated because you cannot run it on your own computer. Since
- Facebook is not federated and you're stuck with the hosted service,
- criteria three and four apply. Facebook has a terrible track record
- with privacy and therefore fails criterion three. According to their
- terms of service, you retain copyright on your information and give
- Facebook "a non-exclusive, transferable, sub-licensable, royalty-free,
- worldwide license to use" your information. [13] This is standard
- licensing language that allows Facebook to publish information you
- submit, and with these terms Facebook seems to pass criterion four.
- (I've heard that Facebook claims or used to claim copyright on your
- information, but seeing these terms of service I'll give Facebook the
- benefit of the doubt here.) Facebook fails three out of the four
- criteria, and we can conclude that Facebook is an unethical social
- networking platform.
-</p>
-<p>
- Next we'll evaluate Twitter. Again, it fails criterion one since you
- cannot run, inspect, modify, or share the software. And again it fails
- criterion two since you cannot run the software on your own computer.
- Twitter has a clear privacy policy that describes what information is
- made public, what information you may optionally provide, what
- information is collected in logs, and what information is to be kept
- private except under certain circumstances. [14] I don't know of any
- occasion on which Twitter has failed to adhere to this policy, so if you
- agree with this policy then Twitter passes criterion three. Twitter's
- terms of service explicitly leave you with the rights to your
- information, but you must agree to grant Twitter "a worldwide,
- non-exclusive, royalty-free license (with the right to sublicense) to
- use, copy, reproduce, process, adapt, modify, publish, transmit, display
- and distribute [your information] in any and all media or distribution
- methods (now known or later developed)". [15] Again this is standard
- licensing language that allows Twitter to publish the information you
- post, and I conclude that with these terms Twitter passes the fourth
- criterion. In summary, Twitter passes two out of the four criteria;
- it's not completely ethical since it leaves you without important
- freedoms and at the mercy of a single centralized provider, but it seems
- it's not as bad as Facebook is in terms of privacy.
-</p>
-<p>
- Next up is Identi.ca. Identi.ca is an instance of StatusNet, a free
- software microblogging platform that is similar in function to Twitter.
- StatusNet is licensed under the GNU Affero General Public License,
- which requires that all users, including those who use the software over
- a network, have all of the necessary freedoms with the software. With
- this license, StatusNet, and therefore Identi.ca, pass criterion one
- beautifully. StatusNet implements the OStatus protocol, which allows
- users of other installations of StatusNet (or even other software such
- as GNU Social) to communicate seamlessly. With this, StatusNet and GNU
- Social (and instances of the software such as Identi.ca) are federated
- and pass criterion two. If you choose to use Identi.ca instead of
- running StatusNet or GNU Social on your own computer, then criteria
- three and four apply. Identi.ca has a very clear privacy policy that
- describes what information is made public, what information remains
- private, and how information may be used by Identi.ca, by users, and by
- other instances of StatusNet and GNU Social. [16] With this, Identi.ca
- passes criterion three. Identi.ca's terms of service make no claims to
- copyright on your information. The terms require that you grant
- Identi.ca "a world-wide, royalty-free, and non-exclusive license to
- reproduce, modify, adapt and publish the Content solely for the purpose
- of displaying, distributing and promoting your notice stream". They
- also require that you "grant all readers the right to use, re-use,
- modify and/or re-distribute the Content under the terms of the Creative
- Commons Attribution 3.0 [Public License]". [17] This license allows
- readers to share your notices, to modify your notices, and to
- incorporate your notices in larger works, as long as they give you
- credit for your words and do not misrepresent you. These are agreeable
- terms that leave you in control of your information and allow the world
- to share and build upon your work, so we can conclude that Identi.ca
- passes criterion four. Identi.ca, which runs the free social networking
- platform StatusNet, passes all four criteria. It is an ethical platform
- and service that protects your privacy, autonomy, and freedom. Because
- of this, I myself use Identi.ca. [18] Since the software is free, before
- registering I checked the source code to make sure that my password
- would be stored securely. And since the software is federated, I
- reserve the right, especially if Identi.ca in the future ever fails
- criteria three and four or ceases to exist, to move to my own
- self-hosted instance of the software without losing contact with other
- users.
-</p>
-<p>
- These three cases are just examples of popular platforms. There are of
- course many others. Google recently opened up their new platform,
- Google+, which so far is neither free nor federated. The Diaspora
- project began in response to outrage over privacy on Facebook; Diaspora
- itself is free and federated, and there are hosted Diaspora services
- with decent privacy policies. Finally, I don't claim that these
- criteria are perfect; they are merely the result of observations I've
- made. A similar set of criteria for "freedom in the 'cloud'" has
- recently been offered by Georg Greve, founder of the Free Software
- Foundation Europe. [19]
-</p>
-<h3>References:</h3>
-<ol>
- <li>
- "Five Hidden Dangers of Facebook". <span class="cite-title">CBS News</span>. CBS Interactive
- Inc. May 11, 2010.
- <a href="http://www.cbsnews.com/stories/2010/0/08/earlyshow/saturday/main6469373.shtml">&lt;http://www.cbsnews.com/stories/2010/0/08/earlyshow/saturday/main6469373.shtml&gt;</a>.
- </li>
- <li>
- Barnett, Emma. "Your data is Facebook's most valuable asset".
- <span class="cite-title">The Telegraph</span>. Telegraph Media Group Limited. January 17,
- 2011.
- <a href="http://www.telegraph.co.uk/technology/facebook/8264210/Your-data-is-Facebooks-most-valuable-asset.html">&lt;http://www.telegraph.co.uk/technology/facebook/8264210/Your-data-is-Facebooks-most-valuable-asset.html&gt;</a>.
- </li>
- <li>
- Steel, Emily and Fowler, Geoffery A. "Facebook in Online Privacy
- Breach; Applications Transmitting Identifying Information". <span class="cite-title">The
- Wall Street Journal</span>. Dow Jones &amp; Company, Inc. October 18,
- 2010.
- <a href="http://online.wsj.com/article/SB10001424052702304772804575558484075236968.html">&lt;http://online.wsj.com/article/SB10001424052702304772804575558484075236968.html&gt;</a>.
- </li>
- <li>
- Gannes, Liz. "Facebook facial recognition prompts EU privacy
- probe". <span class="cite-title">CNET News</span>. CBS Interactive Inc. June 8, 2011.
- <a href="http://news.cnet.com/8301-1023_3-20070148-93/facebook-facial-recognition-prompts-eu-privacy-probe/">&lt;http://news.cnet.com/8301-1023_3-20070148-93/facebook-facial-recognition-prompts-eu-privacy-probe/&gt;</a>.
- </li>
- <li>
- Snyder, Bill. "Facebook Facial Recognition: Why It's a Threat to
- Privacy". <span class="cite-title">PCWorld</span>. PCWorld Communications, Inc. June 21,
- 2011.
- <a href="http://www.pcworld.com/article/230790/facebook_facial_recognition_why_its_a_threat_to_privacy.html">&lt;http://www.pcworld.com/article/230790/facebook_facial_recognition_why_its_a_threat_to_privacy.html&gt;</a>.
- </li>
- <li>
- Tynan, Dan. "Facebook ads use your face for free". <span class="cite-title">ITworld</span>.
- ITworld. January 25, 2011.
- <a href="http://www.itworld.com/internet/134677/facebook-ads-use-your-face-free">&lt;http://www.itworld.com/internet/134677/facebook-ads-use-your-face-free&gt;</a>.
- </li>
- <li>
- Williamson, Elizabeth; Schatz, Amy; and Fowler, Geoffery A.
- "Facebook Seeking Friends in Beltway". <span class="cite-title">The Wall Street Journal</span>.
- Dow Jones &amp; Company, Inc. April 20, 2011.
- <a href="http://online.wsj.com/article/SB10001424052748703789104576273242590724876.html">&lt;http://online.wsj.com/article/SB10001424052748703789104576273242590724876.html&gt;</a>.
- </li>
- <li>
- Crovitz, L. Gordon. "Facebook's Dubious New Friends". <span class="cite-title">The Wall
- Street Journal</span>. Dow Jones &amp; Company, Inc. May 2, 2011.
- <a href="http://online.wsj.com/article/SB10001424052748703567404576293233665299792.html">&lt;http://online.wsj.com/article/SB10001424052748703567404576293233665299792.html&gt;</a>.
- </li>
- <li>
- Higgins, Alexander. "Facebook Now Helping Governments Spy On And
- Arrest Peaceful Activists". <span class="cite-title">The Intel Hub</span>. The Intel Hub. July
- 9, 2011.
- <a href="http://theintelhub.com/2011/07/09/facebook-now-helping-governments-spy-on-and-arrest-peaceful-activists/">&lt;http://theintelhub.com/2011/07/09/facebook-now-helping-governments-spy-on-and-arrest-peaceful-activists/&gt;</a>.
- </li>
- <li>
- Last, Jeremy. "Israel uses Facebook to blacklist, detain or deport
- Tel Aviv-bound travellers". <span class="cite-title">thestar.com</span>. Toronto Star. July 8,
- 2011.
- <a href="http://www.thestar.com/news/world/article/1022008--israel-uses-facebook-to-blacklist-detain-or-deport-tel-aviv-bound-travellers">&lt;http://www.thestar.com/news/world/article/1022008--israel-uses-facebook-to-blacklist-detain-or-deport-tel-aviv-bound-travellers&gt;</a>.
- </li>
- <li>
- Roosendaal, Arnold. "Facebook Tracks and Traces Everyone: Like
- This!". <span class="cite-title">Social Science Research Network</span>. Social Science
- Electronic Publishing, Inc. November 30, 2010.
- <a href="http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1717563">&lt;http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1717563&gt;</a>.
- </li>
- <li>
- Lee, Matt and Sullivan, John. "Mark Zuckerberg is TIME Magazine's
- Person of the Year? Where's the "dislike" button?". <span class="cite-title">Free Software
- Foundation</span>. Free Software Foundation, Inc. February 3, 2011.
- <a href="http://www.fsf.org/facebook">&lt;http://www.fsf.org/facebook&gt;</a>.
- </li>
- <li>
- "Statement of Rights and Responsibilities". <span class="cite-title">Facebook</span>. Facebook,
- Inc. April 26, 2011.
- <a href="http://www.facebook.com/terms.php">&lt;http://www.facebook.com/terms.php&gt;</a>.
- </li>
- <li>
- "Twitter Privacy Policy". <span class="cite-title">Twitter</span>. Twitter Inc. June 23,
- 2011.
- <a href="http://twitter.com/privacy">&lt;http://twitter.com/privacy&gt;</a>.
- </li>
- <li>
- "Twitter Terms of Service". <span class="cite-title">Twitter</span>. Twitter Inc. June 1,
- 2011.
- <a href="http://twitter.com/tos">&lt;http://twitter.com/tos&gt;</a>.
- </li>
- <li>
- "Privacy". <span class="cite-title">Identi.ca</span>. StatusNet Inc.
- <a href="http://identi.ca/doc/privacy">&lt;http://identi.ca/doc/privacy&gt;</a>.
- </li>
- <li>
- "Tos". <span class="cite-title">Identi.ca</span>. StatusNet Inc.
- <a href="http://identi.ca/doc/tos">&lt;http://identi.ca/doc/tos&gt;</a>.
- </li>
- <li>
- McDermott, P. J. "P. J. McDermott (pehjota)". <span class="cite-title">Identi.ca</span>.
- StatusNet Inc.
- <a href="http://identi.ca/pehjota">&lt;http://identi.ca/pehjota&gt;</a>.
- </li>
- <li>
- Greve, Georg C. F. "Freedom in the 'Cloud'?". <span class="cite-title">freedom bits</span>.
- Free Software Foundation Europe e.V. July 30, 2011.
- <a href="http://blogs.fsfe.org/greve/?p=452">&lt;http://blogs.fsfe.org/greve/?p=452&gt;</a>.
- </li>
-</ol>
-<!--#include virtual="../includes/footer.html" -->
diff --git a/essays/social-networking.mdwn b/essays/social-networking.mdwn
new file mode 100644
index 0000000..c446ee7
--- /dev/null
+++ b/essays/social-networking.mdwn
@@ -0,0 +1,280 @@
+<!--#set var="title" value="On Facebook, Google+, and Ethical Social Networking"
+-->
+<!--#include virtual="/includes/header.html" -->
+
+TO COME: An introduction and a section on Google+.
+
+The Ethics of Facebook
+======================
+
+Facebook shares their users' personal information with third parties. They use
+mere Web site design changes as an excuse to revert users' privacy settings to
+unsafe defaults. Their social platform has huge security holes that allow
+personal information to be leaked. One such hole made some users' private chats
+accessible to all of their contacts. Facebook also exposes users to malware and
+identity theft. [1] They make it easy for application developers to collect
+personal information. [2] The Wall Street Journal found that these application
+developers collect this personal information, link it with other information,
+and sell it to others. [3]
+
+In general, Facebook has always operated on an opt-out basis. In some cases,
+you can actually disable third-party access to your information. But you must
+always be on the lookout for new "features" or changes to privacy settings.
+Facebook always changes the way it collects information, and it catches many
+people unaware. But it's impossible to opt out of things you don't even know
+about. Recently, Facebook added a feature they call "tag suggestions". If you
+have photos on your profile, Facebook can pick out people's faces and suggest
+names for them. This may sound useful, but it's the tip of an almost
+nightmarish ethics iceberg in information systems. Facebook uses facial
+recognition software to make this work; they scan already-tagged photos and
+record distinguishing facial features and then find photos with similar faces
+and give them names. They maintain a database of people's facial features.
+They never notified anyone about this database. They never asked users if they
+could record this information. Instead, of course, they made it an opt-out
+feature; you have to explicitly disable this hidden feature to keep your facial
+information out of the database. This new feature has even sparked an
+investigation by the European Union. [4][5] But just imagine what Facebook
+could do with this information (and consider their track record with personal
+information). I suspect they may soon start selling facial data to other
+companies, law enforcement agencies, and oppressive governments (I've heard that
+the U.K. once used video camera footage to locate and arrest protesters, so
+imagine what they could do with facial data).
+
+Basically, Facebook is a business. And you are not their customer. You are
+their product. They are, in fact, selling their products to advertisers. That
+is, they use a person's face (without getting permission and without paying
+anything) to advertise things to that person's friends. Claim to like
+something, and you've given a product endorsement at a price advertising
+agencies would love. [6]
+
+And they also seem to like selling out their users to governments and limiting
+what their users can read and say. After their recent collaboration with
+Chinese partners, the Facebook platform was allowed into China under political
+censorship. At the time, Facebook lobbyist Adam Conner remarked, "we're
+allowing too much, maybe, free speech". [7][8] The Associated Press reported
+last month that Facebook sold out hundreds of peaceful pro-Palestinian activists
+who had been organizing events through the social platform. Facebook allowed
+governments to track its users' activities. As a result, more than 300 peaceful
+activists were added to airline terrorism watch lists and denied the right to
+leave their countries. International air travel was disrupted as planes from
+Geneva and Italy were diverted for security inspections. 310 people were
+detained after landing in Israel on their way to stand with Palestinians in a
+peaceful mission of solidarity and fact-finding. [9][10] Imagine what might
+have happened if Facebook (and widespread publicly-accessible computer networks
+for that matter) existed during the civil rights movement. Would there be
+racial equality in the United States today? Or would peaceful protesters
+organizing events have been sold out and arrested before they could even meet?
+
+But it seems you don't even have to use Facebook to get tracked by Facebook.
+Everyone who sees a "Like" button somewhere on the Web (as I'm sure you have)
+can be tracked. Facebook has the ability to map out the browsing behavior of a
+massive number (a number that grows by tens of millions each month) of Web
+users, even those who don't use Facebook. [11] Again, imagine what they could
+do with such vast amounts of information.
+
+Things like these gaping holes in privacy, devious information collection
+practices, abuse of users, censorship, and tracking inspired Matt Lee, campaigns
+manager, and John Sullivan, executive director, of the Free Software Foundation
+to write about Facebook's poor track record with privacy and create rather
+amusing "Dislike" and "not f'd" buttons. [12]
+
+Ethical Social Networking
+=========================
+
+TODO: Move characteristic four into a note somewhere, as it is rare for a
+service provider to attempt to claim copyright on user-submitted works. Also,
+refer to the Franklin Street Statement.
+
+But social networking is not inherently evil. You can connect with old friends
+and discover new ones without sacrificing privacy, security, autonomy, and
+freedom. You just have to be careful about the platforms you use. I've
+identified four basic characteristics that a social networking platform must
+have for it to be an ethical one that doesn't abuse its users. The first two
+characteristics are universal; all viable platforms, whether running on your own
+computer or hosted by a service provider, must have these. The last two apply
+only if you choose to use a platform that is run by someone else as a service.
+
+1. Software freedom. You must be free to use the software that powers
+ the social networking platform on your own computer without
+ restrictions. You must be free to inspect the software and modify
+ it. You must be free to share the software with others, with or
+ without modifications. With these freedoms, you have full control
+ over your social networking and you can decide who has access to
+ which personal information. Without these freedoms, only the
+ developer can decide what the software does, and you may not even
+ be allowed to know what it does to you.
+2. Federation. You must be able to run the software on your own
+ computer and still be able to communicate with other people using
+ other copies of the software. If the software has protocols for
+ communication between users across multiple installations, then the
+ software is federated. For example, e-mail is federated; you can
+ run your own mail server and still send mail to other people who
+ use other servers. This is because all standards-compliant mail
+ servers speak the same protocol.
+3. Privacy. If you choose to use a social networking service run by
+ someone else, the service must offer a clear and agreeable privacy
+ policy to which the service provider must strictly adhere. The
+ service provider must not be allowed to give your personal
+ information to third parties without your consent (unless required
+ by law) or use your information in ways that threaten your privacy
+ and autonomy.
+4. No claims of copyright. The service provider must agree that your
+ personal information is yours, not theirs. There must not be any
+ claims of copyright on the information you provide. The provider
+ may, however, require you to license such information to them
+ and/or to others for it to be published on the service; in this
+ case, you should make sure you agree with the license terms before
+ using the service.
+
+Let's look at some social networking platforms and see how they adhere to these
+criteria. We'll start with Facebook. Facebook fails criterion one; you cannot
+run, inspect, modify, or share the software that powers Facebook. This means it
+also fails criterion two; it is inherently not federated because you cannot run
+it on your own computer. Since Facebook is not federated and you're stuck with
+the hosted service, criteria three and four apply. Facebook has a terrible
+track record with privacy and therefore fails criterion three. According to
+their terms of service, you retain copyright on your information and give
+Facebook "a non-exclusive, transferable, sub-licensable, royalty-free, worldwide
+license to use" your information. [13] This is standard licensing language that
+allows Facebook to publish information you submit, and with these terms Facebook
+seems to pass criterion four. (I've heard that Facebook claims or used to claim
+copyright on your information, but seeing these terms of service I'll give
+Facebook the benefit of the doubt here.) Facebook fails three out of the four
+criteria, and we can conclude that Facebook is an unethical social networking
+platform.
+
+Next we'll evaluate Twitter. Again, it fails criterion one since you cannot
+run, inspect, modify, or share the software. And again it fails criterion two
+since you cannot run the software on your own computer. Twitter has a clear
+privacy policy that describes what information is made public, what information
+you may optionally provide, what information is collected in logs, and what
+information is to be kept private except under certain circumstances. [14] I
+don't know of any occasion on which Twitter has failed to adhere to this policy,
+so if you agree with this policy then Twitter passes criterion three. Twitter's
+terms of service explicitly leave you with the rights to your information, but
+you must agree to grant Twitter "a worldwide, non-exclusive, royalty-free
+license (with the right to sublicense) to use, copy, reproduce, process, adapt,
+modify, publish, transmit, display and distribute [your information] in any and
+all media or distribution methods (now known or later developed)". [15] Again
+this is standard licensing language that allows Twitter to publish the
+information you post, and I conclude that with these terms Twitter passes the
+fourth criterion. In summary, Twitter passes two out of the four criteria; it's
+not completely ethical since it leaves you without important freedoms and at the
+mercy of a single centralized provider, but it seems it's not as bad as Facebook
+is in terms of privacy.
+
+Next up is Identi.ca. Identi.ca is an instance of StatusNet, a free software
+microblogging platform that is similar in function to Twitter. StatusNet is
+licensed under the GNU Affero General Public License, which requires that all
+users, including those who use the software over a network, have all of the
+necessary freedoms with the software. With this license, StatusNet, and
+therefore Identi.ca, pass criterion one beautifully. StatusNet implements the
+OStatus protocol, which allows users of other installations of StatusNet (or
+even other software such as GNU Social) to communicate seamlessly. With this,
+StatusNet and GNU Social (and instances of the software such as Identi.ca) are
+federated and pass criterion two. If you choose to use Identi.ca instead of
+running StatusNet or GNU Social on your own computer, then criteria three and
+four apply. Identi.ca has a very clear privacy policy that describes what
+information is made public, what information remains private, and how
+information may be used by Identi.ca, by users, and by other instances of
+StatusNet and GNU Social. [16] With this, Identi.ca passes criterion three.
+Identi.ca's terms of service make no claims to copyright on your information.
+The terms require that you grant Identi.ca "a world-wide, royalty-free, and
+non-exclusive license to reproduce, modify, adapt and publish the Content solely
+for the purpose of displaying, distributing and promoting your notice stream".
+They also require that you "grant all readers the right to use, re-use, modify
+and/or re-distribute the Content under the terms of the Creative Commons
+Attribution 3.0 [Public License]". [17] This license allows readers to share
+your notices, to modify your notices, and to incorporate your notices in larger
+works, as long as they give you credit for your words and do not misrepresent
+you. These are agreeable terms that leave you in control of your information
+and allow the world to share and build upon your work, so we can conclude that
+denti.ca passes criterion four. Identi.ca, which runs the free social
+networking platform StatusNet, passes all four criteria. It is an ethical
+platform and service that protects your privacy, autonomy, and freedom.
+Because of this, I myself use Identi.ca. [18] Since the software is free,
+before registering I checked the source code to make sure that my password would
+be stored securely. And since the software is federated, I reserve the right,
+especially if Identi.ca in the future ever fails criteria three and four or
+ceases to exist, to move to my own self-hosted instance of the software without
+losing contact with other users.
+
+These three cases are just examples of popular platforms. There are of course
+many others. Google recently opened up their new platform, Google+, which so
+far is neither free nor federated. The Diaspora project began in response to
+outrage over privacy on Facebook; Diaspora itself is free and federated, and
+there are hosted Diaspora services with decent privacy policies. Finally, I
+don't claim that these criteria are perfect; they are merely the result of
+observations I've made. A similar set of criteria for "freedom in the 'cloud'"
+has recently been offered by Georg Greve, founder of the Free Software
+Foundation Europe. [19]
+
+References:
+===========
+
+1. "Five Hidden Dangers of Facebook". <span class="cite-title">CBS
+ News</span>. CBS Interactive Inc. May 11, 2010.
+ &lt;<http://www.cbsnews.com/stories/2010/0/08/earlyshow/saturday/main6469373.shtml>&gt;.
+2. Barnett, Emma. "Your data is Facebook's most valuable asset".
+ <span class="cite-title">The Telegraph</span>. Telegraph Media Group
+ Limited. January 17, 2011.
+ &lt;<http://www.telegraph.co.uk/technology/facebook/8264210/Your-data-is-Facebooks-most-valuable-asset.html>&gt;.
+3. Steel, Emily and Fowler, Geoffery A. "Facebook in Online Privacy Breach;
+ Applications Transmitting Identifying Information".
+ <span class="cite-title">The Wall Street Journal</span>. Dow Jones &amp;
+ Company, Inc. October 18, 2010.
+ &lt;<http://online.wsj.com/article/SB10001424052702304772804575558484075236968.html>&gt;.
+4. Gannes, Liz. "Facebook facial recognition prompts EU privacy probe".
+ <span class="cite-title">CNET News</span>. CBS Interactive Inc. June 8,
+ 2011.
+ &lt;<http://news.cnet.com/8301-1023_3-20070148-93/facebook-facial-recognition-prompts-eu-privacy-probe/>&gt;.
+5. Snyder, Bill. "Facebook Facial Recognition: Why It's a Threat to Privacy".
+ <span class="cite-title">PCWorld</span>. PCWorld Communications, Inc. June
+ 21, 2011.
+ &lt;<http://www.pcworld.com/article/230790/facebook_facial_recognition_why_its_a_threat_to_privacy.html>&gt;.
+6. Tynan, Dan. "Facebook ads use your face for free".
+ <span class="cite-title">ITworld</span>. ITworld. January 25, 2011.
+ &lt;<http://www.itworld.com/internet/134677/facebook-ads-use-your-face-free>&gt;.
+7. Williamson, Elizabeth; Schatz, Amy; and Fowler, Geoffery A. "Facebook
+ Seeking Friends in Beltway". <span class="cite-title">The Wall Street
+ Journal</span>. Dow Jones &amp; Company, Inc. April 20, 2011.
+ &lt;<http://online.wsj.com/article/SB10001424052748703789104576273242590724876.html>&gt;.
+8. Crovitz, L. Gordon. "Facebook's Dubious New Friends".
+ <span class="cite-title">The Wall Street Journal</span>. Dow Jones &amp;
+ Company, Inc. May 2, 2011.
+ &lt;<http://online.wsj.com/article/SB10001424052748703567404576293233665299792.html>&gt;.
+9. Higgins, Alexander. "Facebook Now Helping Governments Spy On And Arrest
+ Peaceful Activists". <span class="cite-title">The Intel Hub</span>. The
+ Intel Hub. July 9, 2011.
+ &lt;<http://theintelhub.com/2011/07/09/facebook-now-helping-governments-spy-on-and-arrest-peaceful-activists/>&gt;.
+10. Last, Jeremy. "Israel uses Facebook to blacklist, detain or deport Tel
+ Aviv-bound travellers". <span class="cite-title">thestar.com</span>.
+ Toronto Star. July 8, 2011.
+ &lt;<http://www.thestar.com/news/world/article/1022008--israel-uses-facebook-to-blacklist-detain-or-deport-tel-aviv-bound-travellers>&gt;.
+11. Roosendaal, Arnold. "Facebook Tracks and Traces Everyone: Like This!".
+ <span class="cite-title">Social Science Research Network</span>. Social
+ Science Electronic Publishing, Inc. November 30, 2010.
+ &lt;<http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1717563>&gt;.
+12. Lee, Matt and Sullivan, John. "Mark Zuckerberg is TIME Magazine's Person of
+ the Year? Where's the "dislike" button?". <span class="cite-title">Free
+ Software Foundation</span>. Free Software Foundation, Inc. February
+ 3, 2011. &lt;<http://www.fsf.org/facebook>&gt;.
+13. "Statement of Rights and Responsibilities".
+ <span class="cite-title">Facebook</span>. Facebook, Inc. April 26, 2011.
+ &lt;<http://www.facebook.com/terms.php>&gt;.
+14. "Twitter Privacy Policy". <span class="cite-title">Twitter</span>. Twitter
+ Inc. June 23, 2011. &lt;<http://twitter.com/privacy>&gt;.
+15. "Twitter Terms of Service". <span class="cite-title">Twitter</span>.
+ Twitter Inc. June 1, 2011. &lt;<http://twitter.com/tos>&gt;.
+16. "Privacy". <span class="cite-title">Identi.ca</span>. StatusNet Inc.
+ &lt;<http://identi.ca/doc/privacy>&gt;.
+17. "Tos". <span class="cite-title">Identi.ca</span>. StatusNet Inc.
+ &lt;<http://identi.ca/doc/tos>&gt;.
+18. McDermott, P. J. "P. J. McDermott (pehjota)".
+ <span class="cite-title">Identi.ca</span>. StatusNet Inc.
+ &lt;<http://identi.ca/pehjota>&gt;.
+19. Greve, Georg C. F. "Freedom in the 'Cloud'?".
+ <span class="cite-title">freedom bits</span>. Free Software Foundation
+ Europe e.V. July 30, 2011. &lt;<http://blogs.fsfe.org/greve/?p=452>&gt;.
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/guides/index.html b/guides/index.html
deleted file mode 100755
index d603d64..0000000
--- a/guides/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!--#set var="title" value="Technical Guides" -->
-<!--#include virtual="../includes/header.html" -->
-<h2>Technical Guides</h2>
-<p>
- Here you will find technical guides, tutorials, and workshop notes on
- GNU/Linux and UNIX.
-</p>
-<ul>
- <li><a href="shell-workshop/">UNIX&reg; Shell Scripting Workshop</a></li>
-</ul>
-<!--#include virtual="../includes/footer.html" -->
diff --git a/guides/index.mdwn b/guides/index.mdwn
new file mode 100644
index 0000000..5e9c9e2
--- /dev/null
+++ b/guides/index.mdwn
@@ -0,0 +1,9 @@
+<!--#set var="title" value="Technical Guides" -->
+<!--#include virtual="/includes/header.html" -->
+
+Here you will find technical guides, tutorials, and workshop notes on GNU/Linux
+and UNIX.
+
+ * [UNIX&reg; Shell Scripting Workshop](shell-workshop/)
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/guides/shell-workshop/index.html b/guides/shell-workshop/index.html
deleted file mode 100755
index 3b85b6c..0000000
--- a/guides/shell-workshop/index.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!--#set var="title" value="UNIX Shell Scripting Workshop" -->
-<!--#include virtual="../../includes/header.html" -->
-<h2>UNIX&reg; Shell Scripting Workshop</h2>
-<h3>Introduction to the UNIX Shell Language and Environment</h3>
-<p>
- This is a workshop that I gave at the New Jersey Institute of Technology
- (NJIT) in the Spring of 2012 as part of the workshop series of the
- university's chapter of the Association for Computing Machinery (ACM). It
- was based on a similar tutorial I had given during meetings of NJIT ACM's
- SIG GNU/Linux in the Fall of 2011.
-</p>
-<h4>Flyer</h4>
-<p>
- Below you may find the flyer for this event:
-</p>
-<ul>
- <li><a href="flyer.svg">Source SVG document</a></li>
- <li><a href="flyer.pdf">Rendered PDF document</a></li>
-</ul>
-<p>
- This flyer includes copyrighted images used pursuant to the fair use
- limitation of U.S. Copyright Law.
-</p>
-<h4>Standards</h4>
-<p>
- The workshop referred to the Shell and Utilities (XCU) volume of
- <a href="http://pubs.opengroup.org/onlinepubs/9699919799/">POSIX.1-2008</a>,
- <a href="http://www.unix.org/">published</a> by the IEEE and The Open Group.
- Everything covered applies to any sufficiently-compliant shell and operating
- system.
-</p>
-<h4>Notes</h4>
-<p>
- The following are my notes from the tutorial I gave at SIG GNU/Linux
- meetings, reused for the workshop:
-</p>
-<ul>
- <li><a href="shell.txt">shell.txt</a></li>
- <li><a href="shell-tut.txt">shell-tut.txt</a></li>
-</ul>
-<p>
- The following are the notes I wrote as a guide for the workshop:
-</p>
-<ul>
- <li><a href="notes.txt">notes.txt</a></li>
-</ul>
-<h4>Session</h4>
-<p>
- The following is a cleaned-up version of the shell session from the
- workshop, including all of the commands I ran and scripts I wrote.
-</p>
-<ul>
- <li><a href="session.txt">Plain text (Markdown) document</a></li>
- <li><a href="session.html">HTML document</a></li>
-</ul>
-<h4>Examples</h4>
-<p>
- At the end of the workshop, I showed the following example shell scripts:
-</p>
-<ul>
- <li><a
- href="http://anonscm.debian.org/gitweb/?p=users/clint/debianutils.git;a=blob;f=which;hb=1b1dfee67e9ddd9dfe9171ac347e5000f4deab8a"><code>which</code>
- of debianutils</a>
- (an implementation of
- <a href="https://en.wikipedia.org/wiki/Which_%28Unix%29">a program
- available</a>
- on many UNIX-like operating systems), notable for its use of the internal
- field separator (IFS) to parse the <code>PATH</code> variable</li>
- <li><a href="http://odin1.pehjota.net/git/opkhelper/tree/src/opkbuild.sh"><code>opkbuild</code></a>
- of opkhelper (a set of scripts I wrote)</li>
-</ul>
-<h4>Copyright</h4>
-<p>
- Copyright &copy; 2012 Patrick "P. J." M<span class="super">c</span>Dermott
- <br>
- All works related to this workshop, including this document, the flyer, the
- notes, and the session records may be used under the terms of the
- <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons
- Attribution 3.0 Unported license</a>.<br>
-</p>
-<!--#include virtual="../../includes/footer.html" -->
diff --git a/guides/shell-workshop/index.mdwn b/guides/shell-workshop/index.mdwn
new file mode 100644
index 0000000..6e4c575
--- /dev/null
+++ b/guides/shell-workshop/index.mdwn
@@ -0,0 +1,82 @@
+<!--#set var="title" value="UNIX® Shell Scripting Workshop" -->
+<!--#include virtual="/includes/header.html" -->
+
+Introduction to the UNIX Shell Language and Environment
+=======================================================
+
+This is a workshop that I gave at the New Jersey Institute of Technology (NJIT)
+in the Spring of 2012 as part of the workshop series of the university's chapter
+of the Association for Computing Machinery (ACM). It was based on a similar
+tutorial I had given during meetings of NJIT ACM's SIG GNU/Linux in the Fall of
+2011.
+
+Flyer
+=====
+
+Below you may find the flyer for this event:
+
+ * [Source SVG document](flyer.svg)
+ * [Rendered PDF document](flyer.pdf)
+
+This flyer includes copyrighted images used pursuant to the fair use limitation
+of U.S. Copyright Law.
+
+Standards
+=========
+
+The workshop referred to the Shell and Utilities (XCU) volume of
+[POSIX.1-2008][posix], [published][unix] by the IEEE and The Open Group.
+Everything covered applies to any sufficiently-compliant shell and operating
+system.
+
+[posix]: http://pubs.opengroup.org/onlinepubs/9699919799/
+[unix]: http://www.unix.org/
+
+Notes
+=====
+
+The following are my notes from the tutorial I gave at SIG GNU/Linux
+meetings, reused for the workshop:
+
+ * [shell.txt](shell.txt)
+ * [shell-tut.txt](shell-tut.txt)
+
+The following are the notes I wrote as a guide for the workshop:
+
+ * [notes.txt](notes.txt)
+
+Session
+=======
+
+The following is a cleaned-up version of the shell session from the
+workshop, including all of the commands I ran and scripts I wrote.
+
+ * [Plain text (Markdown) document](session.txt)
+ * [HTML document](session.html)
+
+Examples
+========
+
+At the end of the workshop, I showed the following example shell scripts:
+
+ * [`which` of debianutils][debianutils-which] (an implementation of [a program
+ available][which] on many UNIX-like operating systems), notable for its use
+ of the internal field separator (IFS) to parse the `PATH` variable
+ * [`opkbuild`][opkbuild] of opkhelper (a set of scripts I wrote)
+
+[debianutils-which]: http://anonscm.debian.org/gitweb/?p=users/clint/debianutils.git;a=blob;f=which;hb=1b1dfee67e9ddd9dfe9171ac347e5000f4deab8a
+[which]: https://en.wikipedia.org/wiki/Which_%28Unix%29
+[opkbuild]: http://odin1.pehjota.net/git/opkhelper/tree/src/opkbuild.sh
+
+Copyright
+=========
+
+Copyright &copy; 2012 Patrick "P. J." M<span class="super">c</span>Dermott
+
+All works related to this workshop, including this document, the flyer, the
+notes, and the session records may be used under the terms of the [Creative
+Commons Attribution 3.0 Unported license][cc-by-3.0].
+
+[cc-by-3.0]: http://creativecommons.org/licenses/by/3.0/
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/includes/footer.html b/includes/footer.html
index 314100a..4cbebd6 100755
--- a/includes/footer.html
+++ b/includes/footer.html
@@ -1,6 +1,6 @@
<p style="clear: both;"></p>
- </div>
- <div class="footer">
+ </section>
+ <footer>
<p class="copyright">
Copyright &copy; 2011-2012 Patrick "P. J." M<span class="super">c</span>Dermott
</p>
@@ -9,10 +9,10 @@
<img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/3.0/88x31.png">
</a>
Except where otherwise noted, you may use this document and all works herein under the terms of the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported license</a>.<br>
- More permissive terms may be granted upon <a href="/contact.html">request</a>.
+ More permissive terms may be granted upon <a href="<!--#echo var="DOCUMENT_BASE" -->/contact.html">request</a>.
</p>
<p class="tos">
- By using this Web site, you agree to the <a href="/terms.html">Terms of Service</a>.
+ By using this Web site, you agree to the <a href="<!--#echo var="DOCUMENT_BASE" -->/terms.html">Terms of Service</a>.
</p>
<p class="standards">
<a href="http://validator.w3.org/check?uri=referer">Valid HTML5</a> - <a href="http://jigsaw.w3.org/css-validator/check/referer">Valid CSS level 2.1</a>
@@ -21,12 +21,12 @@
<p class="web-site">This Web site is
<a href="http://odin1.pehjota.net/git/pehjota.net/">managed with
Git</a>.<br>
- <a href="/server.html">About this server</a>
+ <a href="<!--#echo var="DOCUMENT_BASE" -->/server.html">About this server</a>
</p>
<p class="dates">
Last modified: <!--#echo var="LAST_MODIFIED" --> EDT<br>
Retrieved: <!--#echo var="DATE_LOCAL" --> EDT
</p>
- </div>
+ </footer>
</body>
</html>
diff --git a/includes/header.html b/includes/header.html
index 5eb7577..e952fe7 100755
--- a/includes/header.html
+++ b/includes/header.html
@@ -1,44 +1,91 @@
<!DOCTYPE html>
+<!--#if expr="'$__SSIC__' eq '__SSIC__'" -->
+ <!-- Apache HTTPd mod_include -->
+ <!--#if expr="$DOCUMENT_BASE = ''" -->
+ <!--#set var="DOCUMENT_BASE" value="" -->
+ <!--#endif -->
+ <!--#if expr="$MEDIA_BASE = ''" -->
+ <!--#set var="MEDIA_BASE" value="" -->
+ <!--#endif -->
+<!--#else -->
+ <!-- Server Side Includes Compiler -->
+ <!--#if expr="'$DOCUMENT_BASE' eq ''" -->
+ <!--#set var="DOCUMENT_BASE" value="" -->
+ <!--#endif -->
+ <!--#if expr="'$MEDIA_BASE' eq ''" -->
+ <!--#set var="MEDIA_BASE" value="" -->
+ <!--#endif -->
+<!--#endif -->
+
<html>
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta charset="utf-8">
<meta name="author" content="Patrick 'P. J.' McDermott <mailto:pjm@nac.net>">
<meta name="description" content="The resume, software, and essays of P. J. McDermott -- a software and hardware hacker and advocate for software and cultural freedom.">
-<!--#if expr="${title} = /^$/" -->
+<!--#if expr="'$__SSIC__' eq '__SSIC__'" -->
+ <!-- Apache HTTPd mod_include -->
+ <!--#if expr="$title = ''" -->
<title>P. J. McDermott</title>
+ <!--#else -->
+ <title><!--#echo var="title" --> - P. J. McDermott</title>
+ <!--#endif -->
<!--#else -->
+ <!-- Server Side Includes Compiler -->
+ <!--#if expr="'$title' eq ''" -->
+ <title>P. J. McDermott</title>
+ <!--#else -->
<title><!--#echo var="title" --> - P. J. McDermott</title>
+ <!--#endif -->
<!--#endif -->
- <link rel="stylesheet" type="text/css" href="/main.css">
+ <link rel="stylesheet" type="text/css" href="<!--#echo
+var="MEDIA_BASE" -->/main.css">
</head>
<body>
- <div class="header">
- <a href="#body" class="skip">Skip to body</a>
- <h1><a href="/">P. J. M<span class="super">c</span>Dermott</a></h1>
+ <a href="#body" class="skip">Skip to body</a>
+ <header>
+ <h1><a href="<!--#echo var="DOCUMENT_BASE" -->/">P. J. M<span class="super">c</span>Dermott</a></h1>
<p>Software and hardware hacker and advocate for software and cultural freedom.</p>
- </div>
- <div class="menu">
+ </header>
+ <nav>
<ul>
<li>
- <a href="/contact.html">Contact</a>
+ <a href="<!--#echo var="DOCUMENT_BASE"
+-->/contact.html">Contact</a>
</li>
<li>
- <a href="/resume.html">R&#233;sum&#233;</a>
+ <a href="<!--#echo var="DOCUMENT_BASE"
+-->/resume.html">R&#233;sum&#233;</a>
</li>
<li>
- <a href="/guides/">Guides</a>
+ <a href="<!--#echo var="DOCUMENT_BASE"
+-->/guides/">Guides</a>
</li>
<li>
- <a href="/essays/">Essays</a>
+ <a href="<!--#echo var="DOCUMENT_BASE"
+-->/essays/">Essays</a>
</li>
<li>
- <a href="/talks/">Talks</a>
+ <a href="<!--#echo var="DOCUMENT_BASE"
+-->/talks/">Talks</a>
</li>
<li>
- <a href="/projects/">Projects</a>
+ <a href="<!--#echo var="DOCUMENT_BASE"
+-->/projects/">Projects</a>
</li>
</ul>
- </div>
- <div class="body">
- <a id="body"></a>
+ </nav>
+ <section id="body">
+<!--#if expr="'$__SSIC__' eq '__SSIC__'" -->
+ <!-- Apache HTTPd mod_include -->
+ <!--#if expr="$title != ''" -->
+ <!--#else -->
+ <h1><!--#echo var="title" --></h1>
+ <!--#endif -->
+<!--#else -->
+ <!-- Server Side Includes Compiler -->
+ <!--#if expr="'$title' ne ''" -->
+ <h1><!--#echo var="title" --></h1>
+ <!--#endif -->
+<!--#endif -->
+ <article>
diff --git a/index.html b/index.html
deleted file mode 100755
index b551d28..0000000
--- a/index.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!--#set var="title" value="" -->
-<!--#include file="includes/header.html" -->
-<img src="work-area-portrait.240x240.png" alt="P. J. McDermott" class="photo">
-<p>
- This is my personal Web site, which contains personal and professional
- information about me, technical guides on GNU/Linux and UNIX, and essays
- on computing ethics and freedom.
-</p>
-<h3>About Me</h3>
-<p>
- I am:
-</p>
-<ul>
- <li>A hacker (that is, a playful tinkerer interested in exploring the limits
- of technology).</li>
- <li>A knowledgeable user of GNU/Linux.</li>
- <li>A competent software author.</li>
- <li>A fan of freely- and semi-freely-licensed heavy metal and rock
- music.</li>
- <li>A student in the
- <a href="http://www.google-melange.com/gsoc/homepage/google/gsoc2012">2012
- Google Summer of Code</a> program
- <a href="http://wiki.debian.org/SummerOfCode2012/StudentApplications/PJMcDermott">working
- with the Debian Project</a>.</li>
- <li>The leader of a project to develop a fully-free
- <a href="http://os.pehjota.net/">embedded operating system
- distribution</a>.</li>
- <li><a href="https://www.fsf.org/register_form?referrer=10830">Associate
- member</a> #10830 of the Free Software Foundation.</li>
- <li>A recent university graduate with a degree in computer science.</li>
- <li>A self-taught student of U.S. and international copyright law and free
- software licensing.</li>
- <li>The former leader of my university's undergraduate GNU/Linux special
- interest group.</li>
- <li>Trained in karate.</li>
- <li>Licensed to operate motorboats.</li>
- <li>Certified for open water SCUBA diving.</li>
-</ul>
-<h3>New</h3>
-<ul>
- <li><a href="talks/software-contracts/">A presentation on the disputed legal
- validity of software contracts</a>.</li>
- <li><a href="guides/shell-workshop/">A workshop on the UNIX shell</a> I gave at
- NJIT.</li>
-</ul>
-<h3>To Come</h3>
-<ul>
- <li>More essays on computing ethics and freedom.</li>
- <li>Technical guides on GNU/Linux, especially one related to the boot
- process (an apparently popular topic with which I'm quite familiar).</li>
-</ul>
-<!--#include file="includes/footer.html" -->
diff --git a/index.mdwn b/index.mdwn
new file mode 100644
index 0000000..d8e226f
--- /dev/null
+++ b/index.mdwn
@@ -0,0 +1,53 @@
+<!--#set var="title" value="" -->
+<!--#include virtual="/includes/header.html" -->
+
+<img src="work-area-portrait.240x240.png" alt="P. J. McDermott" class="photo">
+
+This is my personal Web site, which contains personal and professional
+information about me, technical guides on GNU/Linux and UNIX, and essays on
+computing ethics and freedom.
+
+About Me
+========
+
+I am:
+
+ * A hacker (that is, a playful tinkerer interested in exploring the limits of
+ technology).
+ * A knowledgeable user of GNU/Linux.
+ * A competent software author.
+ * A fan of freely- and semi-freely-licensed heavy metal and rock music.
+ * A student in the [2012 Google Summer of Code][gsoc-2012] program [working
+ with the Debian Project][gsoc-appl].
+ * The leader of a project to develop a fully-free [embedded operating system
+ distribution][proteanos].
+ * [Associate member][fsf-am] #10830 of the Free Software Foundation.
+ * A recent university graduate with a degree in computer science.
+ * A self-taught student of U.S. and international copyright law and free
+ software licensing.
+ * The former leader of my university's undergraduate GNU/Linux special
+ interest group.
+ * Trained in karate.
+ * Licensed to operate motorboats.
+ * Certified for open water SCUBA diving.
+
+[gsoc-2012]: http://www.google-melange.com/gsoc/homepage/google/gsoc2012
+[gsoc-appl]: http://wiki.debian.org/SummerOfCode2012/StudentApplications/PJMcDermott
+[proteanos]: http://www.proteanos.com/
+[fsf-am]: https://www.fsf.org/register_form?referrer=10830
+
+New
+===
+
+ * [A presentation on the disputed legal validity of software
+ contracts](talks/software-contracts/).
+ * [A workshop on the UNIX shell](guides/shell-workshop/) I gave at NJIT.
+
+To Come
+=======
+
+ * More essays on computing ethics and freedom.
+ * Technical guides on GNU/Linux, especially one related to the boot process
+ (an apparently popular topic with which I'm quite familiar).
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/main.css b/main.css
index df3a869..9c8fe2f 100644
--- a/main.css
+++ b/main.css
@@ -6,20 +6,16 @@ body {
* {
margin: 0px;
}
-h1 {
- font-size: 24pt;
- margin: 16px 0px 16px 0px;
-}
-h2 {
+body>section>h1 {
font-size: 20pt;
margin: 16px 0px 16px 0px;
}
-h3 {
+body>section>article>h1 {
font-size: 16pt;
margin: 16px 0px 16px 0px;
}
-h4 {
- font-size: 12pt;
+body>section>article>h2 {
+ font-size: 14pt;
margin: 16px 0px 16px 0px;
}
p {
@@ -43,92 +39,94 @@ p span.super {
font-size: 9pt;
}
-div.header {
- margin: 16px;
-}
-div.header a.skip {
+a.skip {
display: none;
}
-div.header h1 {
+
+header {
+ margin: 16px;
+}
+header>h1 {
+ font-size: 24pt;
font-family: serif;
margin: 0px 0px 0px 0px;
}
-div.header h1 a {
+header>h1>a, header>h1>a:visited, header>h1>a:hover {
color: #000000;
text-decoration: none;
}
-div.header h1 span.super {
+header>h1>a>span.super {
vertical-align: 33%;
font-size: 18pt;
}
-div.header p {
+header>p {
font-style: italic;
text-align: right;
font-size: 12pt;
margin: 0px 0px 0px 0px;
}
-div.menu {
+nav {
margin: 0px 0px 0px 0px;
padding: 0px 72px 0px 72px;
background-color: #CC4433;
text-align: center;
}
-div.menu ul {
+nav>ul {
list-style-type: none;
margin: 0px;
padding: 12px 0px 12px 0px;
}
-div.menu ul li {
+nav>ul>li {
display: inline;
font-family: sans-serif;
font-size: 12pt;
}
-div.menu ul li a {
+nav>ul>li>a, nav>ul>li>a:visited {
color: #FFFFFF;
font-weight: bold;
font-size: 12pt;
text-decoration: none;
padding: 12px;
}
-div.menu ul li a:hover {
+nav>ul>li>a:hover {
color: #FFFFAA;
background-color: #BB3311;
font-weight: bold;
text-decoration: none;
}
-div.body {
+body>section {
margin: 24px 64px 8px 64px;
font-family: serif;
}
-div.footer {
+footer {
margin: 32px 8px 8px 8px;
padding-top: 8px;
font-family: sans-serif;
border-top: 1px solid #666666;
}
-div.footer p.copyright {
+footer p.copyright {
margin-top: 0px;
}
-div.footer p.dates {
+footer p.dates {
margin-bottom: 0px;
}
-div.footer p.web-site {
+footer p.web-site {
float: right;
margin-top: 0px;
margin-bottom: 0px;
text-align: right;
}
-div.footer p.license img {
+footer p.license img {
float: left;
/*vertical-align: middle;*/
margin: 0px 8px 8px 0px;
}
/* Homepage */
-div.body img.photo {
+body>section img.photo {
float: right;
margin: 0px 0px 16px 16px;
width: 240px;
diff --git a/projects/cgol/index.html b/projects/cgol/index.html
deleted file mode 100755
index 30a4a74..0000000
--- a/projects/cgol/index.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--#set var="title" value="cgol (Curses Game of Life)" -->
-<!--#include virtual="../../includes/header.html" -->
-<h2>cgol (Curses Game of Life)</h2>
-<p>
- cgol is an implementation of Conway's Game of Life written in C and using
- the curses interface. Upon start, it generates a finite grid with a random
- seed pattern. It then iterates through generations indefinitely (unless the
- '-n' option is supplied).
-</p>
-<p>
- It was written simply for its hack value. Game of Life is a magnificent
- hack of a game: there is no gameplay beyond the initial state, yet it can
- still provide hours of fun.
-</p>
-<h3>Getting cgol</h3>
-<p>
- Download or browse the repository hosted on this server:<br>
- <a href="http://odin1.pehjota.net/git/cgol/">&lt;http://odin1.pehjota.net/git/cgol/&gt;</a>
-</p>
-<p>
- You may share and modify this software under the terms of the GNU General
- Public License, version 3 or later. See "COPYING" in the source tree for
- details.
-</p>
-<!--#include virtual="../../includes/footer.html" -->
diff --git a/projects/cgol/index.mdwn b/projects/cgol/index.mdwn
new file mode 100644
index 0000000..7bec380
--- /dev/null
+++ b/projects/cgol/index.mdwn
@@ -0,0 +1,22 @@
+<!--#set var="title" value="cgol (Curses Game of Life)" -->
+<!--#include virtual="/includes/header.html" -->
+
+cgol is an implementation of Conway's Game of Life written in C and using the
+curses interface. Upon start, it generates a finite grid with a random seed
+pattern. It then iterates through generations indefinitely (unless the '-n'
+option is supplied).
+
+It was written simply for its hack value. Game of Life is a magnificent hack of
+a game: there is no gameplay beyond the initial state, yet it can still provide
+hours of fun.
+
+Getting cgol
+============
+
+Download or browse the repository hosted on this server:
+&lt;<http://odin1.pehjota.net/git/cgol/>&gt;
+
+You may share and modify this software under the terms of the GNU General Public
+License, version 3 or later. See "COPYING" in the source tree for details.
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/projects/changelog-gen/index.html b/projects/changelog-gen/index.html
deleted file mode 100755
index 2357b84..0000000
--- a/projects/changelog-gen/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--#set var="title" value="changelog-gen" -->
-<!--#include virtual="../../includes/header.html" -->
-<h2>changelog-gen</h2>
-<p>
- A UNIX shell script to generate a change log from "CHANGE:" tags found in
- Git commit messages.
-</p>
-<h3>Getting changelog-gen</h3>
-<p>
- Download or browse the repository currently hosted on Gitorious:<br>
- <a href="https://gitorious.org/pehjotas-tools/changelog-gen">&lt;https://gitorious.org/pehjotas-tools/changelog-gen&gt;</a>
-</p>
-<p>
- See the "README" file for help with changelog-gen.
-</p>
-<p>
- You may share and modify this software under the terms of the Expat license.
- See "changelog-gen.sh" for details.
-</p>
-<h3>Changes</h3>
-<p>Version 0.2.1:</p>
-<ul>
- <li>Fixed: Commits contained by multiple tags can pollute the changelog.</li>
- <li>Accept an optional filename (or "-" for standard output) as an
- argument.</li>
-</ul>
-<p>Version 0.2.0:</p>
-<ul>
- <li>Add help and version options.</li>
- <li>Group changelog entries by formatted Git tags.</li>
-</ul>
-<p>Version 0.1.0:</p>
-<ul>
- <li>Initial release.</li>
-</ul>
-<h3>Planned Improvements</h3>
-<ul>
- <li>Possibly switch to licensing under the terms of the GNU LGPL</li>
- <li>Use here-doc to print long blocks of information instead of a mass of
- printf commands.</li>
- <li>Maybe offer HTML output.</li>
-</ul>
-<!--#include virtual="../../includes/footer.html" -->
diff --git a/projects/changelog-gen/index.mdwn b/projects/changelog-gen/index.mdwn
new file mode 100644
index 0000000..e8eca01
--- /dev/null
+++ b/projects/changelog-gen/index.mdwn
@@ -0,0 +1,43 @@
+<!--#set var="title" value="changelog-gen" -->
+<!--#include virtual="/includes/header.html" -->
+
+A UNIX shell script to generate a change log from "CHANGE:" tags found in Git
+commit messages.
+
+Getting changelog-gen
+=====================
+
+Download or browse the repository currently hosted on Gitorious:
+&lt;<https://gitorious.org/pehjotas-tools/changelog-gen>&gt;
+
+See the "README" file for help with changelog-gen.
+
+You may share and modify this software under the terms of the Expat license.
+See "changelog-gen.sh" for details.
+
+Changes
+=======
+
+Version 0.2.1:
+
+ * Fixed: Commits contained by multiple tags can pollute the changelog.
+ * Accept an optional filename (or "-" for standard output) as an argument.
+
+Version 0.2.0:
+
+ * Add help and version options.
+ * Group changelog entries by formatted Git tags.
+
+Version 0.1.0:
+
+ * Initial release.
+
+Planned Improvements
+====================
+
+ * Possibly switch to licensing under the terms of the GNU LGPL
+ * Use here-doc to print long blocks of information instead of a mass of printf
+ commands.
+ * Maybe offer HTML output.
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/projects/index.html b/projects/index.html
deleted file mode 100755
index a0958d8..0000000
--- a/projects/index.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--#set var="title" value="Projects" -->
-<!--#include virtual="../includes/header.html" -->
-<h2>Projects</h2>
-<p>
- The following is a list of projects that I maintain. All of these works are
- freely-licensed and may be shared and modified under the terms of their
- respective licenses. I offer my work with hope that some may find it useful,
- but without any warranty. If it breaks, you're free to fix it (or find
- someone who can) -- unlike the case with non-free software.
-</p>
-<!-- h3><a href="librcio/">libRCIO</a></h3 -->
-<h3><a href="https://gitorious.org/librcio">libRCIO</a></h3>
-<p>
- A library written in ISO C to read and write UNIX-style run
- control (configuration) files.
-</p>
-<!-- h3><a href="cowbell/">Cowbell</a></h3 -->
-<h3><a href="https://gitorious.org/cowbell">Cowbell</a></h3>
-<p>
- "Curses, I'm up already!" A feature-packed alarm clock with a curses
- interface.
-</p>
-<h3><a href="screen-batt/">screen-batt</a></h3>
-<p>
- A simple battery status indicator for GNU Screen.
-</p>
-<h3><a href="changelog-gen/">changelog-gen</a></h3>
-<p>
- A UNIX shell script to generate a change log from "CHANGE:" tags found in
- Git commit messages.
-</p>
-<!-- h3><a href="hidrect/">HIDRECT (Human Interface Device Reverse Engineering
- Capture Tool)</a></h3 -->
-<h3><a href="https://gitorious.org/hidrect">HIDRECT (Human Interface Device Reverse Engineering
- Capture Tool)</a></h3>
-<p>
- A simple event-based capture tool for human interface devices.
-</p>
-<!-- h3><a href="vhc/">VHC (Virtual Host Config)</a></h3 -->
-<h3><a href="https://gitorious.org/vhc">VHC (Virtual Host Config)</a></h3>
-<p>
- A collection of scripts to manage hosted users, domains, Web roots, and
- mailboxes.
-</p>
-<!-- h3><a href="testbuild/">testbuild</a></h3 -->
-<h3><a href="http://odin1.pehjota.net/git/testbuild/">testbuild</a></h3>
-<p>
- A simple script to automate build testing for software managed with Git.
-</p>
-<h3><a href="cgol/">cgol (Curses Game of Life)</a></h3>
-<p>
- An implementation of Conway's Game of Life written in C and using the curses
- interface.
-</p>
-<h3><a href="opkhelper/">opkhelper (opkg Build Helper Tools)</a></h3>
-<p>
- A set of programs to assist in building binary packages installable by the
- lightweight package manager "opkg". These tools are inspired by
- "debhelper", a similar set of programs written primarily by Joey Hess for
- Debian. They are designed to build source packages that comply with draft
- version 1.0 of
- <a href="http://specs.os.pehjota.net/source-package-format-1.0.html">this source package format</a>.
-</p>
-<!--#include virtual="../includes/footer.html" -->
diff --git a/projects/index.mdwn b/projects/index.mdwn
new file mode 100644
index 0000000..4a0c664
--- /dev/null
+++ b/projects/index.mdwn
@@ -0,0 +1,82 @@
+<!--#set var="title" value="Projects" -->
+<!--#include virtual="/includes/header.html" -->
+
+Following is a list of free/libre and open source software projects that I
+maintain.
+
+Active or Otherwise Interesting
+===============================
+
+[ProteanOS](http://www.proteanos.com/)
+--------------------------------------
+
+ProteanOS is a fully-free BusyBox/Linux-libre operating system binary
+distribution designed for embedded applications.
+
+Within this project, I've also developed a number of programs, including:
+
+ * [opkbuild](http://git.proteanos.com/opkbuild/opkbuild.git/)
+ * [opkhelper](http://git.proteanos.com/opkhelper/opkhelper.git/)
+ * [markdownbook](http://git.proteanos.com/markdownbook/markdownbook.git/)
+ * [pro-archman](http://www.proteanos.com/dev/pro-archman/)
+
+[ssic (Server Side Includes Compiler)](ssic/)
+---------------------------------------------
+
+ssic processes HTML documents with SSI directives formatted as SGML comments.
+It can be used to process documents without an HTTP server for local browsing or
+to generate static HTML documents to be efficiently served by an HTTP server.
+Documents could even be preprocessed, e.g. by a Markdown processor, before being
+parsed with ssic.
+
+[cgol (Curses Game of Life)](cgol/)
+-----------------------------------
+
+An implementation of Conway's Game of Life written in C and using the curses
+interface.
+
+[screen-batt](screen-batt/)
+---------------------------
+
+A simple battery status indicator for GNU Screen.
+
+
+Dead
+====
+
+[libRCIO](https://gitorious.org/librcio)
+----------------------------------------
+
+A library written in ISO C to read and write UNIX-style run control
+(configuration) files.
+
+[Cowbell](https://gitorious.org/cowbell)
+----------------------------------------
+
+"Curses, I'm up already!" A feature-packed alarm clock with a curses interface.
+
+[changelog-gen](changelog-gen/)
+-------------------------------
+
+A UNIX shell script to generate a change log from "CHANGE:" tags found in Git
+commit messages.
+
+[HIDRECT (Human Interface Device Reverse Engineering Capture Tool)][hidrect]
+----------------------------------------------------------------------------
+
+A simple event-based capture tool for human interface devices.
+
+[hidrect]: https://gitorious.org/hidrect
+
+[VHC (Virtual Host Config)](https://gitorious.org/vhc)
+------------------------------------------------------
+
+A collection of scripts to manage hosted users, domains, Web roots, and
+mailboxes.
+
+[testbuild](http://odin1.pehjota.net/git/testbuild/)
+----------------------------------------------------
+
+A simple script to automate build testing for software managed with Git.
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/projects/opkhelper/index.html b/projects/opkhelper/index.html
deleted file mode 100755
index 3e9b56a..0000000
--- a/projects/opkhelper/index.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--#set var="title" value="opkhelper (opkg Build Helper Tools)" -->
-<!--#include virtual="../../includes/header.html" -->
-<h2>opkhelper (opkg Build Helper Tools)</h2>
-<p>
- A set of programs to assist in building binary packages installable by the
- lightweight package manager "opkg". These tools are inspired by
- "debhelper", a similar set of programs written primarily by Joey Hess for
- Debian. They are designed to build source packages that comply with draft
- version 1.0 of
- <a href="http://specs.os.pehjota.net/source-package-format-1.0.html">this source package format</a>.
-</p>
-<h3>Getting opkhelper</h3>
-<p>
- Download the latest version of opkhelper from this Web site:<br>
- <a href="opkhelper-1.0.0.tar.gz">opkhelper-1.0.0.tar.gz</a><br>
- <a href="opkhelper-1.0.0.tar.bz2">opkhelper-1.0.0.tar.bz2</a>
-</p>
-<p>
- Download or browse the repository hosted on this server:<br>
- <a href="http://odin1.pehjota.net/git/opkhelper/">&lt;http://odin1.pehjota.net/git/opkhelper/&gt;</a>
-</p>
-<p>
- You may share and modify this software under the terms of the GNU General
- Public License, version 3 or later. See "COPYING" in the source tree for
- details.
-</p>
-<!--#include virtual="../../includes/footer.html" -->
diff --git a/projects/screen-batt/index.html b/projects/screen-batt/index.html
deleted file mode 100755
index b1b2fbd..0000000
--- a/projects/screen-batt/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--#set var="title" value="screen-batt" -->
-<!--#include virtual="../../includes/header.html" -->
-<h2>screen-batt</h2>
-<p>
- A simple battery status indicator for GNU Screen.
-</p>
-<h3>Getting screen-batt</h3>
-<p>
- Download or browse the repository currently hosted on Gitorious:<br>
- <a href="https://gitorious.org/pehjotas-tools/screen-batt">&lt;https://gitorious.org/pehjotas-tools/screen-batt&gt;</a>
-</p>
-<p>
- See the "README" file for help with screen-batt.
-</p>
-<p>
- You may share and modify this software under the terms of the Expat license.
- See "screen-batt" for details.
-</p>
-<!--#include virtual="../../includes/footer.html" -->
diff --git a/projects/screen-batt/index.mdwn b/projects/screen-batt/index.mdwn
new file mode 100644
index 0000000..01b2132
--- /dev/null
+++ b/projects/screen-batt/index.mdwn
@@ -0,0 +1,17 @@
+<!--#set var="title" value="screen-batt" -->
+<!--#include virtual="/includes/header.html" -->
+
+A simple battery status indicator for GNU Screen.
+
+Getting screen-batt
+===================
+
+Download or browse the repository currently hosted on Gitorious:
+&lt;<https://gitorious.org/pehjotas-tools/screen-batt>&gt;
+
+See the "README" file for help with screen-batt.
+
+You may share and modify this software under the terms of the Expat license.
+See "screen-batt" for details.
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/projects/ssic/index.mdwn b/projects/ssic/index.mdwn
new file mode 100644
index 0000000..fcb4fee
--- /dev/null
+++ b/projects/ssic/index.mdwn
@@ -0,0 +1,36 @@
+<!--#set var="title" value="ssic (Server Side Includes Compiler)" -->
+<!--#include virtual="/includes/header.html" -->
+
+This is ssic, a Server Side Includes Compiler.
+
+ssic processes HTML documents with SSI directives formatted as SGML comments.
+It can be used to process documents without an HTTP server for local browsing or
+to generate static HTML documents to be efficiently served by an HTTP server.
+Documents could even be preprocessed, e.g. by a Markdown processor, before being
+parsed with ssic.
+
+The set of commands, tags, and variables supported by ssic is mostly a superset
+of those supported by the old [NCSA HTTPd][ncsa-httpd-ssi] and a subset of those
+supported by [Apache HTTPd's `mod_include`][mod-include-ssi].
+
+ssic uses the `CGI::SSI` Perl module for directive processing.
+
+[ncsa-httpd-ssi]: http://web.archive.org/web/19971210170837/http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html
+[mod-include-ssi]: http://httpd.apache.org/docs/2.2/mod/mod_include.html
+
+
+Downloading
+===========
+
+ssic is maintained in a [Git repository][repo-http], which can be cloned from
+`git://git.pehjota.net/ssic/ssic.git`.
+
+Debian packaging for ssic is maintained in a separate [Git
+repository][repo-debian-http], which can be cloned from
+`git://git.pehjota.net/ssic/ssic.debian.git`. Prebuilt packages are not yet
+available.
+
+[repo-http]: http://git.pehjota.net/ssic/ssic.git/
+[repo-debian-http]: http://git.pehjota.net/ssic/ssic.debian.git/
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/resume.html b/resume.html
deleted file mode 100755
index 10a6542..0000000
--- a/resume.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!--#set var="title" value="R&#233;sum&#233;" -->
-<!--#include file="includes/header.html" -->
-<h2>R&#233;sum&#233;</h2>
-<p>
- Download a copy of <a href="resume-web.pdf">my r&#233;sum&#233; in Portable
- Document Format (PDF)</a>.
-</p>
-<p>
- I'll eventually write an HTML version for more convenient viewing.
-</p>
-<!--#include file="includes/footer.html" -->
diff --git a/resume.mdwn b/resume.mdwn
new file mode 100644
index 0000000..52b8b04
--- /dev/null
+++ b/resume.mdwn
@@ -0,0 +1,9 @@
+<!--#set var="title" value="R&#233;sum&#233;" -->
+<!--#include virtual="/includes/header.html" -->
+
+Download a copy of [my r&#233;sum&#233; in Portable Document Format
+(PDF)](resume-web.pdf).
+
+I'll eventually write an HTML version for more convenient viewing.
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/server.html b/server.html
deleted file mode 100755
index 1de509f..0000000
--- a/server.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--#set var="title" value="About This Server" -->
-<!--#include file="includes/header.html" -->
-<h2>About This Server</h2>
-<h3>Hardware</h3>
-<p>
- This server is an AMD Athlon II X2 250 Regor dual-core 3.0-GHz CPU sitting
- next to one 2-GiB DDR3 SDRAM module, all on an Asus Micro-ATX motherboard
- and sitting inside a very old and bare Gateway chassis. Connected to the
- board is a 500-GB 7200-RPM hard disk drive. Powering the whole machine is a
- 400-W ATX power supply. One front-mounted 80-mm fan keeps the case and
- components cool.
-</p>
-<h3>Software</h3>
-<p>
- This server runs Debian GNU/Linux. There is no non-free software (not even
- firmware) installed on this system. I even have plans to someday port
- coreboot (freely-licensed and high-quality boot firmware) to my server's
- motherboard (and I purchased a board for which a port should be easy).
-</p>
-<p>
- With the help of apticron, I keep the system up-to-date with proposed
- updates and security fixes. These documents are served by the Apache Web
- server with mod_include for SSI parsing. My mail server of choice is Exim 4,
- however port 25 is currently firewalled. I manage virtual hosts in Apache
- httpd and Exim using <a href="projects/vhc/">VHC</a>.
-</p>
-<!--#include file="includes/footer.html" -->
diff --git a/server.mdwn b/server.mdwn
new file mode 100644
index 0000000..3505a83
--- /dev/null
+++ b/server.mdwn
@@ -0,0 +1,27 @@
+<!--#set var="title" value="About This Server" -->
+<!--#include virtual="/includes/header.html" -->
+
+Hardware
+========
+
+This server is an AMD Athlon II X2 250 Regor dual-core 3.0-GHz CPU sitting next
+to one 2-GiB DDR3 SDRAM module, all on an Asus Micro-ATX motherboard and sitting
+inside a very old and bare Gateway chassis. Connected to the board is a 500-GB
+7200-RPM hard disk drive. Powering the whole machine is a 400-W ATX power
+supply. One front-mounted 80-mm fan keeps the case and components cool.
+
+Software
+========
+
+This server runs Debian GNU/Linux. There is no non-free software (not even
+firmware) installed on this system. I even have plans to someday port coreboot
+(freely-licensed and high-quality boot firmware) to my server's motherboard
+(and I purchased a board for which a port should be easy).
+
+With the help of apticron, I keep the system up-to-date with proposed updates
+and security fixes. These documents are served by the Apache Web server with
+`mod_include` for SSI parsing. My mail server of choice is Exim 4, however port
+25 is currently firewalled. I manage virtual hosts in Apache httpd and Exim
+using [VHC](projects/vhc/).
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/talks/index.html b/talks/index.html
deleted file mode 100755
index d8d59d6..0000000
--- a/talks/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!--#set var="title" value="Talks" -->
-<!--#include virtual="../includes/header.html" -->
-<h2>Talks</h2>
-<p>
- Here you will find information about some of the talks and presentations
- I've given.
-</p>
-<ul>
- <li><a href="software-contracts/">Legal Validity of Software Contracts</a></li>
-</ul>
-<!--#include virtual="../includes/footer.html" -->
diff --git a/talks/index.mdwn b/talks/index.mdwn
new file mode 100644
index 0000000..0a917cb
--- /dev/null
+++ b/talks/index.mdwn
@@ -0,0 +1,9 @@
+<!--#set var="title" value="Talks" -->
+<!--#include virtual="/includes/header.html" -->
+
+Here you will find information about some of the talks and presentations I've
+given.
+
+ * [Legal Validity of Software Contracts](software-contracts/)
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/talks/software-contracts/index.html b/talks/software-contracts/index.html
deleted file mode 100755
index 158810f..0000000
--- a/talks/software-contracts/index.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--#set var="title" value="Legal Validity of Software Contracts" -->
-<!--#include virtual="../../includes/header.html" -->
-<h2>Legal Validity of Software Contracts</h2>
-<p>
- This is a presentation that I gave in a law-related course at the New Jersey
- Institute of Technology (NJIT) in the Spring of 2012.
-</p>
-<p>
- In the presentation, I define software contracts (a.k.a. "end-user license
- agreements", "software license agreements", or simply "licenses") and
- explain the history of software copyright law and contracts. I then examine
- the disputed legal validity of software contracts in three main areas:
- assent to terms (including "shrink wrap" and "click wrap" contracts),
- ownership of copies (the "licensed, not sold" argument), and conscionability
- and preemption.
-</p>
-<p>
- The presentation refers to statutory and case law in the United States, but
- the concepts should apply to almost any jurisdiction.
-</p>
-<h4>Slides</h4>
-<p>
- The following are the slides I prepared for the presentation:
-</p>
-<ul>
- <li><a href="software-contracts.odp">OpenDocument Format</a></li>
- <li><a href="software-contracts.pdf">Portable Document Format</a></li>
-</ul>
-<p>
- Included in the OpenDocument version is the script to the presentation
- (in LibreOffice, look in the "Notes" tab).
-</p>
-<p>
- Many reader programs render stripes in the slide background of the PDF file.
- This is due to
- <a href="https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/164233">a bug</a>
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=47706">in cairo</a>
- which has been fixed in a version newer than that which I used.
-</p>
-<h4>Copyright</h4>
-<p>
- Copyright &copy; 2012 Patrick "P. J." M<span class="super">c</span>Dermott
- <br>
- All works related to this workshop, including this document, the flyer, the
- notes, and the session records may be used under the terms of the
- <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
- Attribution-ShareAlike 3.0 Unported license</a>.
-</p>
-<!--#include virtual="../../includes/footer.html" -->
diff --git a/talks/software-contracts/index.mdwn b/talks/software-contracts/index.mdwn
new file mode 100644
index 0000000..7727014
--- /dev/null
+++ b/talks/software-contracts/index.mdwn
@@ -0,0 +1,46 @@
+<!--#set var="title" value="Legal Validity of Software Contracts" -->
+<!--#include virtual="/includes/header.html" -->
+
+This is a presentation that I gave in a law-related course at the New Jersey
+Institute of Technology (NJIT) in the Spring of 2012.
+
+In the presentation, I define software contracts (a.k.a. "end-user license
+agreements", "software license agreements", or simply "licenses") and explain
+the history of software copyright law and contracts. I then examine the
+disputed legal validity of software contracts in three main areas: assent to
+terms (including "shrink wrap" and "click wrap" contracts), ownership of copies
+(the "licensed, not sold" argument), and conscionability and preemption.
+
+The presentation refers to statutory and case law in the United States, but the
+concepts should apply to almost any jurisdiction.
+
+Slides
+======
+
+The following are the slides I prepared for the presentation:
+
+ * [OpenDocument Format](software-contracts.odp)
+ * [Portable Document Format](software-contracts.pdf)
+
+Included in the OpenDocument version is the script to the presentation (in
+LibreOffice, look in the "Notes" tab).
+
+Many reader programs render stripes in the slide background of the PDF file.
+This is due to [a bug][bug-lp] [in cairo][bug-fdo] which has been fixed in a
+version newer than that which I used.
+
+[bug-lp]: https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/164233
+[bug-fdo]: https://bugs.freedesktop.org/show_bug.cgi?id=47706
+
+Copyright
+=========
+
+Copyright &copy; 2012 Patrick "P. J." M<span class="super">c</span>Dermott
+
+All works related to this workshop, including this document, the flyer, the
+notes, and the session records may be used under the terms of the
+[Creative Commons Attribution-ShareAlike 3.0 Unported license][cc-by-sa-3.0].
+
+[cc-by-sa-3.0]: http://creativecommons.org/licenses/by-sa/3.0/
+
+<!--#include virtual="/includes/footer.html" -->
diff --git a/terms.html b/terms.html
deleted file mode 100755
index d27f421..0000000
--- a/terms.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!--#set var="title" value="Terms of Service" -->
-<!--#include file="includes/header.html" -->
-<h2>Terms of Service</h2>
-<p>
- The following terms and conditions govern your use of this Web site. By
- using this Web site, you agree to be bound by the terms and conditions of
- this agreement.
-</p>
-<p>
- <strong>1. Affirmation terms.</strong>
- You agree that the statements made in section 2 below are true.
-</p>
-<p>
- <strong>2. Denial terms.</strong>
- You agree that the statements made in section 1 above are false.
-</p>
-<!--#include file="includes/footer.html" -->
diff --git a/terms.mdwn b/terms.mdwn
new file mode 100644
index 0000000..020d26b
--- /dev/null
+++ b/terms.mdwn
@@ -0,0 +1,14 @@
+<!--#set var="title" value="Terms of Service" -->
+<!--#include virtual="/includes/header.html" -->
+
+The following terms and conditions govern your use of this Web site. By using
+this Web site, you agree to be bound by the terms and conditions of this
+agreement.
+
+**1. Affirmation terms.**
+You agree that the statements made in section 2 below are true.
+
+**2. Denial terms.**
+You agree that the statements made in section 1 above are false.
+
+<!--#include virtual="/includes/footer.html" -->