Subversion Notes

Here’s what a checkout request on the command line looks like:

$ svn checkout http://svn.example.com/repos/calc
A calc/Makefile
A calc/integer.c
A calc/button.c
Checked out revision 56.

### SSH Problems

> ## Planet Argon, ssh, authorized_keys, and TextMate happiness

> Been trying to get ssh-based password-free login going at Planet Argon (more on the transfer from DreamNightmareHost to Planet Argon in a future post). A couple of back-and-forths with the admins over there. Both they and this thread insist that ~/.ssh/authorized_keys needs to be chmoded to 600. This isn’t right. It only needs 644.

But what the above thread pointed me to is that ~/ needs to be chmoded to 750. Voila! Now I can use Subversion, directly inside the best text editor on the Mac.

Let’s just hope there aren’t any groups that need to write to my home directory.

## Problems

Toulouse:~ jjl$ ssh -v
OpenSSH_4.5p1, OpenSSL 0.9.7l 28 Sep 2006
usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-i identity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-w local_tun[:remote_tun]] [user@]hostname [command]

## Following Allan’s Advice

Your identification has been saved in /Users/jjl/.ssh/id_dsa.
Your public key has been saved in /Users/jjl/.ssh/id_dsa.pub.
The key fingerprint is:

Shakespeare was the pass-phrase used.

## MacFusion

Set up on 2007-04-28. Used SSH (which has the wild woman password by the way). Mounted like a charm. Now, let’s see what’s in there and how well this works.

## SVN Checkout

If you are using bash you should put this in your ~/.bash_profile (or a similar file which gets sourced when you open a terminal):

export LC_CTYPE=en_US.UTF-8

In the Era of the Meta-Platform, Content Is King

### The Story Everyone Tells

What we are in the midst of, but everyone already knows, is that the computer is displacing all other means of communication and distribution of content. Already the race for IP TV, as it is sometimes called, is on. IP stands for “internet protocol” and it acknowledges that television programming will no longer be delivered in analog waves but in digital bits. Almost all consumers already are getting their television pictures in bits; they just don’t know it. Cable companies may charge more for “digital” packages but the fact of the matter is that even basic cable programming is already largely distributed digitally and then converted to analog at the node as opposed to in your house. Take a close look at your television picture some time, if you have cable, and look at a smoke-filled or dark scene, you will discover a range of digital artifacts that will reveal to you that you aren’t getting a full analog signal but merely a digital signal resolved “up” to something like analog. The switch to digital equipment allows cable companies to push four digital channels in the same bandwidth of one analog. To do so, they have to degrade the picture.

And while radio stations still exist — and they will continue to exist in the scenario I unfold here, but in a lesser, or at least different, capacity — I think everyone would agree that you see few people listening to radios outside of certain contexts. The radio still plays in the car and in shops and other work situations, but when you see people listening to music individually, they are usually porting some sort of MP3 player. Most new cars now come either with auxiliary ports or iPod docks built into their radios.

While we’re in the car, let’s not forget the GPS aids in there, along with the DVD players. When I first wrote the proposal for the LCVC project four years ago, I predicted we would see a convergence of those two devices, and I think that’s already begun to happen. It won’t be long before you’ll not only get live updates of traffic additions to your in-car navigation / entertainment device, but other forms of content streamed to it as well. That device will be simply another computer, one that is location aware — as the iPhone G3 already is.

All these devices will, of course, function by being “on the net.” That means they will be delivering on the great promise that the internet made — at least that was the intent of the people who worked to create the network and so far it has largely held to be true — and that is to put the means of production into a vastly larger number of people’s hands than ever before. The communications industries have their array of catch words for this phenomena, “one-to-one advertizing” or “niche marketing” or “focused marketing” or even “the long tail”, but they are also just as worried about what is, in effect, P2P, because the reality is: they don’t own the network. They can’t, and that boggles and maddens them.

Now, I should take a moment to say what I mean by “communications industries.” For me, these are the usual suspects of radio and television stations and cable channels, the movie studios (which produce content in the sense of financing it but don’t really make anything themselves) and the record labels. It also includes all the support industries that have sprung up to service the financial conduit that make these providers go: advertizing, marketing, etc. Universities train workers for these sectors and lump their job-training programs under the banner of “communications” — sometimes breaking out a department of “mass communications” — and thus it’s just easier for me to call the whole lot “communications industries.”

Now, having defined some terms, let’s get back to the convergence, because it really changes a lot.

(It doesn’t change “everything” as some technologists are fond of proclaiming, and thus I can now further qualify the qualification I made above about how I am not calling for the demise of the communications industries, and the university departments, or other personnel, that serve them.)

Perhaps the best way to describe what is happening is to look no further than the RIAA’s current campaign to make web-based radio stations pay more than broadcast radio stations for the distribution of content. (The figure I have heard bandied about is something like double, but I’ll leave that to others to argue over.) The recording industry’s argument for why conventional radio stations are getting a better deal is that they drive album sales where network radio stations drive only sales of singles. Immediately, a previous era, and its methods and business models, is revealed quite clearly.

In making that claim the recording industry conveniently leaves out a larger history that would recall a rather long period during which radio stations sold “singles” in the form of fast-playing 45s that contained both the single that made it onto the air as well as the once-infamous “B side” cut which everyone hoped would prove the depth of a musical performer and lead to album sales. The album era thus had the down-side of having these singles, which had to be priced less but of which you could sell a lot, but it had the upside that only the record companies could produce them. The audio cassette era was short-lived, but it too had its upside — largely the demise of the single — and its downside — the ability of consumers to make their own tapes.

The “mix tape” survived into the compact disk (CD) era, but the single did not, which meant that the recording industry could sharpen its focus on its business model, which was to continue to generate what really were often “one-hit wonders” that really did sell albums that held only one song worth listening to.

(This experience was recently made fresh for me. Because we live in a small house, Yung-Hsing and I have been making a concentrated effort to “purge” stuff we don’t use or don’t need. We recently came across two boxes tucked up in a closet full of audio cassettes, and as I went through them, I realized how much money I had spent for what really came down to only one to three songs per tape that were worth remembering — quite literally, I could only remember one to three songs per tape.)

So the recording industry built albums with a hit or two on them, and the radio stations played those hits which were, in turn, only available through purchase of the album. It was the rare station that played albums, not necessarily because there really was so little on albums but because in order to maximize the total amount of product displayed, they could only play a song per album. They had to maximize the number of albums because they were, after all, a broadcast medium, which meant they had to appeal to the maximum number of individuals who might be listening during any given time period. It’s one thing to listen to three minutes of a song or musician you don’t like, another to know you have to wait half an hour or an hour to hear something different.

And so audio content got packaged into three-minute chunks. That isn’t necessarily how long all songs or tunes want to be, but that’s how long they are. As a folklorist and as someone who attends live music events, I know — as do you — that the three-minute song in no way reflects the nature of jam session nor does it reflect the classic dance tunes that usually have at least an A and B part and can thus be played for as long as people seem to be willing to dance or the musicians are interested in going. The three-minute single has been here for so long that we are all now convinced that that is how long we want to dance.

Much the same goes for television, with important differences of course. Like radio, television sought to parse out its content in order to maximize viewers. Like radio, it did so in part by limiting the length of its content so that it could rotate enough material so as to minimize alienating individual viewers — thus the half-hour comedy and one-hour drama were born. It also had to schedule its programming so that viewers could find it. Since viewers could not choose when to watch a program, it had to come on at a fixed time, which led to things lasting only in terms of one of three time allotments: half hour, one hour, two hours. (So far as I know, it wasn’t until the mini-series came along in the 1970s that the two-hour ceiling was broken.)

Well, what does all this have to do with the content? (And in turn with the humanities?)

Everything. Perhaps most importantly, in the broadcast era, given the nature of the distribution channels and the businesses that evolved to feed those channels, content was structured for the time allotted. (Movies shown on television now carry the warning upfront that they have been edited not only for various content concerns but also “to run in the allotted time.”)

In the post-broadcast, post-channel era, programming doesn’t need to conform to broadcast schedules, or to air play schemes. Instead, programming can conform to the content. As I said in the talk I gave for the Project Bamboo workshop up in Chicago, an audio program or video program can now be as long or as short as it needs to be to deliver its content. I listen to a variety of podcasts. It’s clear which ones are created by old-school broadcasters and which are generated by new-school content creators. A program like “This Week in Technology” always clocks in right at an hour. A program like “The Ruby on Rails Podcast” is 27:51 one week, 40:55 the next, and 1:02:13 another. It is, in short, as long as it needs to be and no longer. There’s no need to fill for air time and there’s no need to cut things short either.

Just as important, this new network (the network of connected computers) doesn’t care what form my content comes in. It can deliver audio and video, but it was delivering texts for far longer and it does just as well at delivering images. And it can deliver all those formats in any mix I as a content creator want or need or I as a content consumer desire. One photo not enough? I can create a slideshow on Flickr or any of a dozen sites. Slideshow pacing too fast? As a consumer, I can decide the pace at which I want to proceed.

Let’s call it “fit.” In this new network era, the era of the meta-platform as I termed it above, form is fitted to content. Content creators are free not only to choose what form works best to deliver a given content but they are equally free to size the form appropriately for the scope of the content. It’s not just audio and video, the staples of radio and television, that are going to enjoy this new paradigm, but think about texts! I think about it in terms of scholarly publishing in the humanities, where the 7500 to 10000 word article has been the mainstay of academic productivity. Yes, there is some argument to be made that expression of certain arguments or ideas require a given amount of room (words), but it is no less a factor that journals are built around publishing x number of articles averaging y number of words.

It frees up a lot.

And it frees up content creators to engage their readers in more ways. There will always be the simple disgorgement of content, but there is also the increasing number of collaborations that are taking place between artists and their audiences. Blog posts and the attached comments are a writer-reader revolution in this regard. Readers not only respond, but their response becomes part of the content for future readers!

All this is already changing the way I teach, and will continue to do so for some time to come. It, too, is freeing, especially in terms of what it means for the classroom. For certain kinds of content, like lectures, which deliver a fixed and mostly static content, I can create it in advance and post it to a course website. Students need only view the material in advance of a class activity — a discussion, a workshop, or something else that I am now free to invent. More importantly, they can stop and start the lecture according to their needs as note-takers or learners. They can watch a lecture again, if they need to. That frees up class time for other forms of collaboration between teacher and student in order not only to maximize the student’s education but the teacher’s own as well.

Other forms of collaboration are also possible. This past spring I began something I am calling, for the time being and for lack of anything catchier, “The Louisiana Survey.” I asked my Louisiana folklore class to go out and record any kind of stories they had heard that met the requirements for being folklore. Instead of telling them that Louisiana folklore consisted of X genres with Y topics, I allowed them not only to figure it out for themselves, but in the process which actually began to map out not what had been the case, as is the case with the printed collections, but what is the case. So, yes, folklorists know the folktale’s time has come and gone, but it turns out that it isn’t just the personal anecdote and the joke that have taken over in terms of what we talk about when we talk to each other but the history as well. I might have been able to guess this after a year or more in the field, but I would also never quite be sure if the fact that I was an university professor wasn’t skewing the results. With twenty-some odd college students out talking with their friends and the family, there is a much better sense not only that the data reflects a broader reality but with so much of it, we can actually begin to quantify the dimensions of that reality.

All of that material, by the way, is publicly available as a Google Code project. It’s at code.google.com/p/louisianasurvey. And it’s in the form of a wiki. My students not only did the research, but they also did the publishing and are now authors of documentation available to the world at large.

### A Condensation of Our Results So Far

* Reality is multi-modal.
* The content of any representation of a reality should be in the mode that best suits the function, and purpose, of the representation.
* The networked era frees content creators to pursue the mode of their choosing.

### A New Future for the Humanities

Wasn’t that the title of what was the original Star Wars? (Later, we discovered it was Episode 4, which wasn’t so bad when it was the prelude to Episodes 5 and 6 but not so good when it was the results of Episodes 1 and 2.)

So how do the humanities fit into all of this? Why does any of this matter to me as humanist? (Sure, the technologist in me is also interested, but that’s for another time.)

It’s really pretty simple. I think the humanities are really in the best position, and have in some ways long been about, training content creators, and I don’t simply mean in the way that UL currently has it configured as training workers for the “digital media” industries. Framing it in terms of “digital media” and in terms of “industries” reveals that the folks who wrote the university’s vision just aren’t thinking about how much reality of content creation and consumption may very well already be changing.

What we need to be doing is not creating “digital media workers” but creating content specialists who are fully aware of the new platform and its many possibilities.

But I’m not sure I really like the term “aware” because that seems an awful lot like the current computing requirement of our students. They seem aware that computers can do more things than check e-mail and surf the web, but they have no reality of how any of it works. If they have exposure to production using computers, then it’s mostly to use word processors as somewhat glorified typewriters to mash out term papers in the usual fashion.

Don’t get me wrong. I’m a big believer in texts and textual production. I love turning out words — this text is currently at 3000 words after all, but it troubles me when I discuss hypertext markup and students have no idea what I’m talking about. Hypertext markup. It doesn’t get more rudimentary than that, and yet our students, juniors and seniors, have no idea what it looks like, let alone how to produce it.

Which is another way to say that my vision for humanities becoming the new content specialists is predicated that the larger goal of universities is going to make sure that students have a firm grasp of the foundations of the networked world in which they live. They are going to need to know at least the core concepts and practices of acronyms like IP/TCP, HTML, and SQL as well as the technologies behind DRM and the technologies that implement it like HDMI.

And it goes without saying that I think humanities faculties are going to have to get themselves versed in these things as well. All of these things are involved not only in the production, distribution, and consumption of ideas but the latter are at the heart of emergent intellectual property regimes, which will probably get worse before they get better.

What will humanities faculty being doing in their classrooms? Well, they will probably be discussing many of the same things they always have. Human nature remains as diverse and as consistent as ever. Extraordinary representations of it will continue to seize our imaginations, and examination of those representations will continue to be one way that we encourage students to examine all representations as well as to create their own representations.

That’s the central engine that has always driven the humanities.

But we are in, or, for universities like UL which are not quite there yet, emerging into a universe where the kinds of texts that we examine and produce are far more varied. More importantly, some texts which were beyond us because of the technologies involved — e.g., film — are now within our reach not only as consumers but also as producers.

We will, in short, need to be versed in a lot more media. We will also, however, be free to find those forms, as well as those contents, with which we are most proficient. Content best determines form, but that is in constant dialogue with the producer who will have his/her preferences and proclivities. (Some of us write better than we play music or frame images or edit videos.)

And, I hope, humanities faculty will encourage, if not require, their students to discover for themselves their preferences and their proclivities. And now, with form freed, so can our preferences and proclivities for content. Thoreau once urged his readers to “gnaw your own bone.” I like the way Annie Dillard puts it: each of us has within us that one thing we were put on this earth to give life to. As a folklorist, I am open to the fact that for some this will be a crawfish boat or side plow. For others this will be a particular dish or a quilt. And for others it will be a story or a way of telling jokes. That is, folk culture has long had this openness to diversity, to everyone within a community finding their own excellence and pursuing it.

It looks like we might be on the verge of being able to do this on a larger scale, and that’s terribly exciting.

I’ll leave for another time the program I think humanists need to pursue to get there, but I think I’ve begun to paint the bigger picture as I see it for you. I’ll be discussing some of this when I go to Chicago for the Project Bamboo workshop in a few weeks.

Login to Console

>console still works for me in 10.5.2; it’s just that there’s a log message printed over the “login:” prompt so you can’t see it (but it is there). For those who don’t know about `>console`, basically at the login window you enter `>console` as the username, with no password, and then loginwindow will exit and you get a text console. If your login window is set to show a list of users, hit the up or down arrow key to select an item in the list and then press option-shift-return. Then you can type in `>console`. At the login prompt (obscured by the log messages), type your username (short version), hit **Return**, then type your password and hit **Return** again.

ReST Primer


A ReStructuredText Primer
=========================

:Author: Richard Jones
:Version: $Revision: 4350 $
:Copyright: This document has been placed in the public domain.

.. contents::


The text below contains links that look like "(quickref__)".  These
are relative links that point to the `Quick reStructuredText`_ user
reference.  If these links don't work, please refer to the `master
quick reference`_ document.

__
.. _Quick reStructuredText: quickref.html
.. _master quick reference:
   http://docutils.sourceforge.net/docs/user/rst/quickref.html


Structure
---------

From the outset, let me say that "Structured Text" is probably a bit
of a misnomer.  It's more like "Relaxed Text" that uses certain
consistent patterns.  These patterns are interpreted by a HTML
converter to produce "Very Structured Text" that can be used by a web
browser.

The most basic pattern recognised is a **paragraph** (quickref__).
That's a chunk of text that is separated by blank lines (one is
enough).  Paragraphs must have the same indentation -- that is, line
up at their left edge.  Paragraphs that start indented will result in
indented quote paragraphs. For example::

  This is a paragraph.  It's quite
  short.

     This paragraph will result in an indented block of
     text, typically used for quoting other text.

  This is another one.

Results in:

  This is a paragraph.  It's quite
  short.

     This paragraph will result in an indented block of
     text, typically used for quoting other text.

  This is another one.

__ quickref.html#paragraphs


Text styles
-----------

(quickref__)

__ quickref.html#inline-markup

Inside paragraphs and other bodies of text, you may additionally mark
text for *italics* with "``*italics*``" or **bold** with
"``**bold**``".

If you want something to appear as a fixed-space literal, use
"````double back-quotes````".  Note that no further fiddling is done
inside the double back-quotes -- so asterisks "``*``" etc. are left
alone.

If you find that you want to use one of the "special" characters in
text, it will generally be OK -- reStructuredText is pretty smart.
For example, this * asterisk is handled just fine.  If you actually
want text \*surrounded by asterisks* to **not** be italicised, then
you need to indicate that the asterisk is not special.  You do this by
placing a backslash just before it, like so "``\*``" (quickref__), or
by enclosing it in double back-quotes (inline literals), like this::

    ``\*``

__ quickref.html#escaping


Lists
-----

Lists of items come in three main flavours: **enumerated**,
**bulleted** and **definitions**.  In all list cases, you may have as
many paragraphs, sublists, etc. as you want, as long as the left-hand
side of the paragraph or whatever aligns with the first line of text
in the list item.

Lists must always start a new paragraph -- that is, they must appear
after a blank line.

**enumerated** lists (numbers, letters or roman numerals; quickref__)
  __ quickref.html#enumerated-lists

  Start a line off with a number or letter followed by a period ".",
  right bracket ")" or surrounded by brackets "( )" -- whatever you're
  comfortable with.  All of the following forms are recognised::

    1. numbers

    A. upper-case letters
       and it goes over many lines

       with two paragraphs and all!

    a. lower-case letters

       3. with a sub-list starting at a different number
       4. make sure the numbers are in the correct sequence though!

    I. upper-case roman numerals

    i. lower-case roman numerals

    (1) numbers again

    1) and again

  Results in (note: the different enumerated list styles are not
  always supported by every web browser, so you may not get the full
  effect here):

  1. numbers

  A. upper-case letters
     and it goes over many lines

     with two paragraphs and all!

  a. lower-case letters

     3. with a sub-list starting at a different number
     4. make sure the numbers are in the correct sequence though!

  I. upper-case roman numerals

  i. lower-case roman numerals

  (1) numbers again

  1) and again

**bulleted** lists (quickref__)
  __ quickref.html#bullet-lists

  Just like enumerated lists, start the line off with a bullet point
  character - either "-", "+" or "*"::

    * a bullet point using "*"

      - a sub-list using "-"

        + yet another sub-list

      - another item

  Results in:

  * a bullet point using "*"

    - a sub-list using "-"

      + yet another sub-list

    - another item

**definition** lists (quickref__)
  __ quickref.html#definition-lists

  Unlike the other two, the definition lists consist of a term, and
  the definition of that term.  The format of a definition list is::

    what
      Definition lists associate a term with a definition.

    *how*
      The term is a one-line phrase, and the definition is one or more
      paragraphs or body elements, indented relative to the term.
      Blank lines are not allowed between term and definition.

  Results in:

  what
    Definition lists associate a term with a definition.

  *how*
    The term is a one-line phrase, and the definition is one or more
    paragraphs or body elements, indented relative to the term.
    Blank lines are not allowed between term and definition.


Preformatting (code samples)
----------------------------
(quickref__)

__ quickref.html#literal-blocks

To just include a chunk of preformatted, never-to-be-fiddled-with
text, finish the prior paragraph with "``::``".  The preformatted
block is finished when the text falls back to the same indentation
level as a paragraph prior to the preformatted block.  For example::

  An example::

      Whitespace, newlines, blank lines, and all kinds of markup
        (like *this* or \this) is preserved by literal blocks.
    Lookie here, I've dropped an indentation level
    (but not far enough)

  no more example

Results in:

  An example::

      Whitespace, newlines, blank lines, and all kinds of markup
        (like *this* or \this) is preserved by literal blocks.
    Lookie here, I've dropped an indentation level
    (but not far enough)

  no more example

Note that if a paragraph consists only of "``::``", then it's removed
from the output::

  ::

      This is preformatted text, and the
      last "::" paragraph is removed

Results in:

::

    This is preformatted text, and the
    last "::" paragraph is removed


Sections
--------

(quickref__)

__ quickref.html#section-structure

To break longer text up into sections, you use **section headers**.
These are a single line of text (one or more words) with adornment: an
underline alone, or an underline and an overline together, in dashes
"``-----``", equals "``======``", tildes "``~~~~~~``" or any of the
non-alphanumeric characters ``= - ` : ' " ~ ^ _ * + # < >`` that you
feel comfortable with.  An underline-only adornment is distinct from
an overline-and-underline adornment using the same character.  The
underline/overline must be at least as long as the title text.  Be
consistent, since all sections marked with the same adornment style
are deemed to be at the same level::

  Chapter 1 Title
  ===============

  Section 1.1 Title
  -----------------

  Subsection 1.1.1 Title
  ~~~~~~~~~~~~~~~~~~~~~~

  Section 1.2 Title
  -----------------

  Chapter 2 Title
  ===============

This results in the following structure, illustrated by simplified
pseudo-XML::

    
Chapter 1 Title <section> <title> Section 1.1 Title <section> <title> Subsection 1.1.1 Title <section> <title> Section 1.2 Title <section> <title> Chapter 2 Title (Pseudo-XML uses indentation for nesting and has no end-tags. It's not possible to show actual processed output, as in the other examples, because sections cannot exist inside block quotes. For a concrete example, compare the section structure of this document's source text and processed output.) Note that section headers are available as link targets, just using their name. To link to the Lists_ heading, I write "``Lists_``". If the heading has a space in it like `text styles`_, we need to quote the heading "```text styles`_``". Document Title / Subtitle ````````````````````````` The title of the whole document is distinct from section titles and may be formatted somewhat differently (e.g. the HTML writer by default shows it as a centered heading). To indicate the document title in reStructuredText, use a unique adornment style at the beginning of the document. To indicate the document subtitle, use another unique adornment style immediately after the document title. For example:: ================ Document Title ================ ---------- Subtitle ---------- Section Title ============= ... Note that "Document Title" and "Section Title" above both use equals signs, but are distict and unrelated styles. The text of overline-and-underlined titles (but not underlined-only) may be inset for aesthetics. Images ------ (quickref__) __ quickref.html#directives To include an image in your document, you use the the ``image`` directive__. For example:: .. image:: images/biohazard.png results in: .. image:: images/biohazard.png The ``images/biohazard.png`` part indicates the filename of the image you wish to appear in the document. There's no restriction placed on the image (format, size etc). If the image is to appear in HTML and you wish to supply additional information, you may:: .. image:: images/biohazard.png :height: 100 :width: 200 :scale: 50 :alt: alternate text See the full `image directive documentation`__ for more info. __ ../../ref/rst/directives.html __ ../../ref/rst/directives.html#images What Next? ---------- This primer introduces the most common features of reStructuredText, but there are a lot more to explore. The `Quick reStructuredText`_ user reference is a good place to go next. For complete details, the `reStructuredText Markup Specification`_ is the place to go [#]_. Users who have questions or need assistance with Docutils or reStructuredText should post a message to the Docutils-users_ mailing list. .. [#] If that relative link doesn't work, try the master document: http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html. .. _reStructuredText Markup Specification: ../../ref/rst/restructuredtext.html .. _Docutils-users: ../mailing-lists.html#docutils-users .. _Docutils project web site: http://docutils.sourceforge.net/ </pre> </div><!-- .entry-content --> <footer class="entry-meta"> Posted on <a href="https://johnlaudun.net/rest-primer/" title="10:10" rel="bookmark"><time class="entry-date" datetime="2008-04-07T10:10:05+00:00" pubdate>2008-04-07</time></a><span class="byline"> by <span class="author vcard"><a class="url fn n" href="https://johnlaudun.net/author/johnlaudun/" title="View all posts by John Laudun" rel="author">John Laudun</a></span></span>. <span class="cat-links"> Posted in <a href="https://johnlaudun.net/category/work/" rel="category tag">work</a> </span> <span class="sep"> | </span> <span class="tags-links"> Tagged <a href="https://johnlaudun.net/tag/text/" rel="tag">text</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-2007 --> </div><!-- #content .site-content --> </section><!-- #primary .content-area --> <div id="secondary" class="widget-area" role="complementary"> <aside id="search-2" class="widget widget_search"> <form method="get" id="searchform" action="https://johnlaudun.net/" role="search"> <label for="s" class="assistive-text">Search</label> <input type="text" class="field" name="s" value="" id="s" placeholder="Search …" /> <input type="submit" class="submit" name="submit" id="searchsubmit" value="Search" /> </form> </aside> <aside id="recent-posts-2" class="widget widget_recent_entries"> <h1 class="widget-title">Recent Posts</h1> <ul> <li> <a href="https://johnlaudun.net/open-source-alternatives/">Open Source Alternatives</a> </li> <li> <a href="https://johnlaudun.net/clarksons-farm/">Clarkson’s Farm</a> </li> <li> <a href="https://johnlaudun.net/why-i-user-a-reference-manager/">Why I Use a Reference Manager</a> </li> <li> <a href="https://johnlaudun.net/monte-carlo-simulations/">Monte Carlo Simulations</a> </li> <li> <a href="https://johnlaudun.net/automating-text-cleaning/">Automating Text Cleaning</a> </li> </ul> </aside><aside id="meta-2" class="widget widget_meta"><h1 class="widget-title">Meta</h1> <ul> <li><a href="https://johnlaudun.net/wp-login.php">Log in</a></li> <li><a href="https://johnlaudun.net/feed/">Entries feed</a></li> <li><a href="https://johnlaudun.net/comments/feed/">Comments feed</a></li> <li><a href="https://wordpress.org/">WordPress.org</a></li> </ul> </aside><aside id="categories-2" class="widget widget_categories"><h1 class="widget-title">Categories</h1> <ul> <li class="cat-item cat-item-754"><a href="https://johnlaudun.net/category/500/">500</a> </li> <li class="cat-item cat-item-751"><a href="https://johnlaudun.net/category/application/">application</a> </li> <li class="cat-item cat-item-2"><a href="https://johnlaudun.net/category/basic/">basic</a> </li> <li class="cat-item cat-item-1"><a href="https://johnlaudun.net/category/uncategorized/">chronicle</a> </li> <li class="cat-item cat-item-5"><a href="https://johnlaudun.net/category/home/">home</a> </li> <li class="cat-item cat-item-753"><a href="https://johnlaudun.net/category/teaching/">teaching</a> </li> <li class="cat-item cat-item-6"><a href="https://johnlaudun.net/category/work/">work</a> </li> </ul> </aside><aside id="archives-2" class="widget widget_archive"><h1 class="widget-title">Archives</h1> <ul> <li><a href='https://johnlaudun.net/2021/08/'>August 2021</a></li> <li><a href='https://johnlaudun.net/2021/07/'>July 2021</a></li> <li><a href='https://johnlaudun.net/2021/06/'>June 2021</a></li> <li><a href='https://johnlaudun.net/2021/05/'>May 2021</a></li> <li><a href='https://johnlaudun.net/2021/04/'>April 2021</a></li> <li><a href='https://johnlaudun.net/2021/03/'>March 2021</a></li> <li><a href='https://johnlaudun.net/2021/02/'>February 2021</a></li> <li><a href='https://johnlaudun.net/2021/01/'>January 2021</a></li> <li><a href='https://johnlaudun.net/2020/12/'>December 2020</a></li> <li><a href='https://johnlaudun.net/2020/11/'>November 2020</a></li> <li><a href='https://johnlaudun.net/2020/10/'>October 2020</a></li> <li><a href='https://johnlaudun.net/2020/08/'>August 2020</a></li> <li><a href='https://johnlaudun.net/2020/07/'>July 2020</a></li> <li><a href='https://johnlaudun.net/2020/06/'>June 2020</a></li> <li><a href='https://johnlaudun.net/2020/05/'>May 2020</a></li> <li><a href='https://johnlaudun.net/2020/04/'>April 2020</a></li> <li><a href='https://johnlaudun.net/2020/03/'>March 2020</a></li> <li><a href='https://johnlaudun.net/2020/02/'>February 2020</a></li> <li><a href='https://johnlaudun.net/2020/01/'>January 2020</a></li> <li><a href='https://johnlaudun.net/2019/12/'>December 2019</a></li> <li><a href='https://johnlaudun.net/2019/11/'>November 2019</a></li> <li><a href='https://johnlaudun.net/2019/10/'>October 2019</a></li> <li><a href='https://johnlaudun.net/2019/09/'>September 2019</a></li> <li><a href='https://johnlaudun.net/2019/08/'>August 2019</a></li> <li><a href='https://johnlaudun.net/2019/07/'>July 2019</a></li> <li><a href='https://johnlaudun.net/2019/06/'>June 2019</a></li> <li><a href='https://johnlaudun.net/2019/05/'>May 2019</a></li> <li><a href='https://johnlaudun.net/2019/04/'>April 2019</a></li> <li><a href='https://johnlaudun.net/2019/03/'>March 2019</a></li> <li><a href='https://johnlaudun.net/2019/02/'>February 2019</a></li> <li><a href='https://johnlaudun.net/2019/01/'>January 2019</a></li> <li><a href='https://johnlaudun.net/2018/12/'>December 2018</a></li> <li><a href='https://johnlaudun.net/2018/11/'>November 2018</a></li> <li><a href='https://johnlaudun.net/2018/10/'>October 2018</a></li> <li><a href='https://johnlaudun.net/2018/09/'>September 2018</a></li> <li><a href='https://johnlaudun.net/2018/08/'>August 2018</a></li> <li><a href='https://johnlaudun.net/2018/07/'>July 2018</a></li> <li><a href='https://johnlaudun.net/2018/06/'>June 2018</a></li> <li><a href='https://johnlaudun.net/2018/05/'>May 2018</a></li> <li><a href='https://johnlaudun.net/2018/03/'>March 2018</a></li> <li><a href='https://johnlaudun.net/2018/02/'>February 2018</a></li> <li><a href='https://johnlaudun.net/2018/01/'>January 2018</a></li> <li><a href='https://johnlaudun.net/2017/12/'>December 2017</a></li> <li><a href='https://johnlaudun.net/2017/11/'>November 2017</a></li> <li><a href='https://johnlaudun.net/2017/10/'>October 2017</a></li> <li><a href='https://johnlaudun.net/2017/09/'>September 2017</a></li> <li><a href='https://johnlaudun.net/2017/08/'>August 2017</a></li> <li><a href='https://johnlaudun.net/2017/06/'>June 2017</a></li> <li><a href='https://johnlaudun.net/2017/05/'>May 2017</a></li> <li><a href='https://johnlaudun.net/2017/04/'>April 2017</a></li> <li><a href='https://johnlaudun.net/2017/03/'>March 2017</a></li> <li><a href='https://johnlaudun.net/2017/02/'>February 2017</a></li> <li><a href='https://johnlaudun.net/2017/01/'>January 2017</a></li> <li><a href='https://johnlaudun.net/2016/12/'>December 2016</a></li> <li><a href='https://johnlaudun.net/2016/11/'>November 2016</a></li> <li><a href='https://johnlaudun.net/2016/10/'>October 2016</a></li> <li><a href='https://johnlaudun.net/2016/09/'>September 2016</a></li> <li><a href='https://johnlaudun.net/2016/08/'>August 2016</a></li> <li><a href='https://johnlaudun.net/2016/07/'>July 2016</a></li> <li><a href='https://johnlaudun.net/2016/06/'>June 2016</a></li> <li><a href='https://johnlaudun.net/2016/05/'>May 2016</a></li> <li><a href='https://johnlaudun.net/2016/04/'>April 2016</a></li> <li><a href='https://johnlaudun.net/2016/03/'>March 2016</a></li> <li><a href='https://johnlaudun.net/2016/02/'>February 2016</a></li> <li><a href='https://johnlaudun.net/2016/01/'>January 2016</a></li> <li><a href='https://johnlaudun.net/2015/12/'>December 2015</a></li> <li><a href='https://johnlaudun.net/2015/11/'>November 2015</a></li> <li><a href='https://johnlaudun.net/2015/10/'>October 2015</a></li> <li><a href='https://johnlaudun.net/2015/09/'>September 2015</a></li> <li><a href='https://johnlaudun.net/2015/08/'>August 2015</a></li> <li><a href='https://johnlaudun.net/2015/07/'>July 2015</a></li> <li><a href='https://johnlaudun.net/2015/06/'>June 2015</a></li> <li><a href='https://johnlaudun.net/2015/05/'>May 2015</a></li> <li><a href='https://johnlaudun.net/2015/04/'>April 2015</a></li> <li><a href='https://johnlaudun.net/2015/03/'>March 2015</a></li> <li><a href='https://johnlaudun.net/2015/02/'>February 2015</a></li> <li><a href='https://johnlaudun.net/2015/01/'>January 2015</a></li> <li><a href='https://johnlaudun.net/2014/12/'>December 2014</a></li> <li><a href='https://johnlaudun.net/2014/11/'>November 2014</a></li> <li><a href='https://johnlaudun.net/2014/10/'>October 2014</a></li> <li><a href='https://johnlaudun.net/2014/09/'>September 2014</a></li> <li><a href='https://johnlaudun.net/2014/08/'>August 2014</a></li> <li><a href='https://johnlaudun.net/2014/07/'>July 2014</a></li> <li><a href='https://johnlaudun.net/2014/06/'>June 2014</a></li> <li><a href='https://johnlaudun.net/2014/05/'>May 2014</a></li> <li><a href='https://johnlaudun.net/2014/04/'>April 2014</a></li> <li><a href='https://johnlaudun.net/2014/03/'>March 2014</a></li> <li><a href='https://johnlaudun.net/2014/02/'>February 2014</a></li> <li><a href='https://johnlaudun.net/2014/01/'>January 2014</a></li> <li><a href='https://johnlaudun.net/2013/12/'>December 2013</a></li> <li><a href='https://johnlaudun.net/2013/11/'>November 2013</a></li> <li><a href='https://johnlaudun.net/2013/10/'>October 2013</a></li> <li><a href='https://johnlaudun.net/2013/09/'>September 2013</a></li> <li><a href='https://johnlaudun.net/2013/08/'>August 2013</a></li> <li><a href='https://johnlaudun.net/2013/07/'>July 2013</a></li> <li><a href='https://johnlaudun.net/2013/06/'>June 2013</a></li> <li><a href='https://johnlaudun.net/2013/05/'>May 2013</a></li> <li><a href='https://johnlaudun.net/2013/04/'>April 2013</a></li> <li><a href='https://johnlaudun.net/2013/03/'>March 2013</a></li> <li><a href='https://johnlaudun.net/2013/02/'>February 2013</a></li> <li><a href='https://johnlaudun.net/2013/01/'>January 2013</a></li> <li><a href='https://johnlaudun.net/2012/12/'>December 2012</a></li> <li><a href='https://johnlaudun.net/2012/11/'>November 2012</a></li> <li><a href='https://johnlaudun.net/2012/10/'>October 2012</a></li> <li><a href='https://johnlaudun.net/2012/09/'>September 2012</a></li> <li><a href='https://johnlaudun.net/2012/08/'>August 2012</a></li> <li><a href='https://johnlaudun.net/2012/07/'>July 2012</a></li> <li><a href='https://johnlaudun.net/2012/06/'>June 2012</a></li> <li><a href='https://johnlaudun.net/2012/05/'>May 2012</a></li> <li><a href='https://johnlaudun.net/2012/04/'>April 2012</a></li> <li><a href='https://johnlaudun.net/2012/03/'>March 2012</a></li> <li><a href='https://johnlaudun.net/2012/02/'>February 2012</a></li> <li><a href='https://johnlaudun.net/2012/01/'>January 2012</a></li> <li><a href='https://johnlaudun.net/2011/12/'>December 2011</a></li> <li><a href='https://johnlaudun.net/2011/11/'>November 2011</a></li> <li><a href='https://johnlaudun.net/2011/10/'>October 2011</a></li> <li><a href='https://johnlaudun.net/2011/09/'>September 2011</a></li> <li><a href='https://johnlaudun.net/2011/08/'>August 2011</a></li> <li><a href='https://johnlaudun.net/2011/07/'>July 2011</a></li> <li><a href='https://johnlaudun.net/2011/06/'>June 2011</a></li> <li><a href='https://johnlaudun.net/2011/05/'>May 2011</a></li> <li><a href='https://johnlaudun.net/2011/04/'>April 2011</a></li> <li><a href='https://johnlaudun.net/2011/03/'>March 2011</a></li> <li><a href='https://johnlaudun.net/2011/02/'>February 2011</a></li> <li><a href='https://johnlaudun.net/2011/01/'>January 2011</a></li> <li><a href='https://johnlaudun.net/2010/12/'>December 2010</a></li> <li><a href='https://johnlaudun.net/2010/11/'>November 2010</a></li> <li><a href='https://johnlaudun.net/2010/10/'>October 2010</a></li> <li><a href='https://johnlaudun.net/2010/09/'>September 2010</a></li> <li><a href='https://johnlaudun.net/2010/08/'>August 2010</a></li> <li><a href='https://johnlaudun.net/2010/07/'>July 2010</a></li> <li><a href='https://johnlaudun.net/2010/06/'>June 2010</a></li> <li><a href='https://johnlaudun.net/2010/05/'>May 2010</a></li> <li><a href='https://johnlaudun.net/2010/04/'>April 2010</a></li> <li><a href='https://johnlaudun.net/2010/03/'>March 2010</a></li> <li><a href='https://johnlaudun.net/2010/02/'>February 2010</a></li> <li><a href='https://johnlaudun.net/2010/01/'>January 2010</a></li> <li><a href='https://johnlaudun.net/2009/12/'>December 2009</a></li> <li><a href='https://johnlaudun.net/2009/11/'>November 2009</a></li> <li><a href='https://johnlaudun.net/2009/10/'>October 2009</a></li> <li><a href='https://johnlaudun.net/2009/09/'>September 2009</a></li> <li><a href='https://johnlaudun.net/2009/08/'>August 2009</a></li> <li><a href='https://johnlaudun.net/2009/07/'>July 2009</a></li> <li><a href='https://johnlaudun.net/2009/06/'>June 2009</a></li> <li><a href='https://johnlaudun.net/2009/05/'>May 2009</a></li> <li><a href='https://johnlaudun.net/2009/04/'>April 2009</a></li> <li><a href='https://johnlaudun.net/2009/03/'>March 2009</a></li> <li><a href='https://johnlaudun.net/2009/02/'>February 2009</a></li> <li><a href='https://johnlaudun.net/2009/01/'>January 2009</a></li> <li><a href='https://johnlaudun.net/2008/12/'>December 2008</a></li> <li><a href='https://johnlaudun.net/2008/11/'>November 2008</a></li> <li><a href='https://johnlaudun.net/2008/10/'>October 2008</a></li> <li><a href='https://johnlaudun.net/2008/09/'>September 2008</a></li> <li><a href='https://johnlaudun.net/2008/08/'>August 2008</a></li> <li><a href='https://johnlaudun.net/2008/07/'>July 2008</a></li> <li><a href='https://johnlaudun.net/2008/06/'>June 2008</a></li> <li><a href='https://johnlaudun.net/2008/05/'>May 2008</a></li> <li><a href='https://johnlaudun.net/2008/04/' aria-current="page">April 2008</a></li> <li><a href='https://johnlaudun.net/2008/03/'>March 2008</a></li> <li><a href='https://johnlaudun.net/2008/02/'>February 2008</a></li> <li><a href='https://johnlaudun.net/2008/01/'>January 2008</a></li> <li><a href='https://johnlaudun.net/2007/12/'>December 2007</a></li> <li><a href='https://johnlaudun.net/2007/11/'>November 2007</a></li> <li><a href='https://johnlaudun.net/2007/10/'>October 2007</a></li> <li><a href='https://johnlaudun.net/2007/07/'>July 2007</a></li> <li><a href='https://johnlaudun.net/2007/06/'>June 2007</a></li> <li><a href='https://johnlaudun.net/2007/04/'>April 2007</a></li> <li><a href='https://johnlaudun.net/2007/03/'>March 2007</a></li> <li><a href='https://johnlaudun.net/2006/12/'>December 2006</a></li> <li><a href='https://johnlaudun.net/2006/09/'>September 2006</a></li> <li><a href='https://johnlaudun.net/2006/07/'>July 2006</a></li> <li><a href='https://johnlaudun.net/2006/06/'>June 2006</a></li> <li><a href='https://johnlaudun.net/2006/05/'>May 2006</a></li> <li><a href='https://johnlaudun.net/2006/04/'>April 2006</a></li> <li><a href='https://johnlaudun.net/2006/02/'>February 2006</a></li> <li><a href='https://johnlaudun.net/2006/01/'>January 2006</a></li> <li><a href='https://johnlaudun.net/2005/12/'>December 2005</a></li> <li><a href='https://johnlaudun.net/2005/11/'>November 2005</a></li> <li><a href='https://johnlaudun.net/2005/10/'>October 2005</a></li> <li><a href='https://johnlaudun.net/2005/09/'>September 2005</a></li> <li><a href='https://johnlaudun.net/2005/08/'>August 2005</a></li> <li><a href='https://johnlaudun.net/2004/05/'>May 2004</a></li> <li><a href='https://johnlaudun.net/2004/02/'>February 2004</a></li> <li><a href='https://johnlaudun.net/2001/12/'>December 2001</a></li> <li><a href='https://johnlaudun.net/1992/04/'>April 1992</a></li> <li><a href='https://johnlaudun.net/1986/09/'>September 1986</a></li> </ul> </aside> </div><!-- #secondary .widget-area --> </div><!-- #main .site-main --> <footer id="colophon" class="site-footer" role="contentinfo"> <div class="site-info"> <a href="http://wordpress.org/" rel="generator">Proudly powered by WordPress</a> Theme: Publish by <a href="http://kovshenin.com/" rel="designer">Konstantin Kovshenin</a>. </div><!-- .site-info --> </footer><!-- #colophon .site-footer --> </div><!-- #page .hfeed .site --> <script type='text/javascript' src='https://c0.wp.com/p/jetpack/10.0/_inc/build/photon/photon.min.js' id='jetpack-photon-js'></script> <script type='text/javascript' src='https://johnlaudun.net/wp-content/themes/publish/js/small-menu.js?ver=20120206' id='small-menu-js'></script> <script type='text/javascript' src='https://c0.wp.com/c/5.8.1/wp-includes/js/wp-embed.min.js' id='wp-embed-js'></script> <script src='https://stats.wp.com/e-202138.js' defer></script> <script> _stq = window._stq || []; _stq.push([ 'view', {v:'ext',j:'1:10.0',blog:'194110954',post:'0',tz:'0',srv:'johnlaudun.net'} ]); _stq.push([ 'clickTrackerInit', '194110954', '0' ]); </script> </body> </html>