Monthly Archives: June 2012

On opting out

Captain Awkward has a thread on lateness and keeping in contact with people who are constantly late or no-shows. Her answer is worth reading, because she takes both sides seriously: the way being late feeds into anxiety or depression disorders sometimes (and has for her), and the way to structure social engagements with people who are in that place (whether due to mental health issues or not, it doesn’t require disclosure).

She’s specifically asked that people who are good with time and todo lists (I am, relatively) not drop in with “handy hints”, which is fair enough, but now I’m finding some of the”just loosen up, I have rejected our culture’s terrible clock ticking obsession, and I think that makes me a better person” (uh, paraphrased) comments irritating. I’m posting here rather than there because of the relative privilege of being good with my culture’s approach to time, though.

However, opting out is also a pretty privileged thing to do, honestly. Here’s the big clock related things I can’t opt out of, right now: my son’s childcare, who (like most) fine about $1 a minute for late pickups. Moreover, those people also have children to pick up and errands to run, so a significantly late arrival from me would ruin at least three families’ evenings. (Two staff members are required on premises at all times, so one late parent is two late workers.)

Parenting is by no means the only type of problem here too (look at some writings on spoon budgeting some time: what happens when you are an hour late for someone who set aside spoons to see you?) but it’s a pretty typical set of examples. So are people who work in a great number of jobs, especially low pay and insecure jobs.

You can be over-scheduled in a privileged way (racing from piano lessons to dinner parties), but you can be over-scheduled without that (racing from end of shift to the hard childcare deadline to the hospital’s visiting hours to the mechanics for the 6th car repair this season), too. So, I find it difficult to respond to a fairly simple analysis of “I figure that half an hour doesn’t matter that much, or shouldn’t! We all survived before mobile phones [or clocks]! Just say no!” When your needs are dictated by other people armed with clocks and mobile phones, there may not be an exit sign visible.

There are a lot of living cultures with looser time constraints than the one I live in. (People talk about a “polychronic-monochronic” axis of cultures, which Wikipedia tells me is due to the anthropologist Edward Hall.) There are ways to systemically structure things so that half an hour doesn’t matter that much. But, when you don’t live in such a culture or can’t stay in one, it’s just not that easy. But when is “just say no” ever the solution to anything serious?

More falsehoods programmers believe about time

Noah Sussman has Falsehoods programmers believe about time, including:

All of these assumptions are wrong

  1. There are always 24 hours in a day.
  2. Months have either 30 or 31 days.
  3. Years have 365 days.
  4. February is always 28 days long.
  5. Any 24-hour period will always begin and end in the same day (or week, or month).

As is usual with these kinds of things, he’s only scratching the surface (even though there’s a lot more than in that excerpt). Andrew and I came up with several more already, on the subject of timezones:

  1. All timezones are vertical lines around the globe evenly spaced in 15 degrees intervals.
  2. All timezones are a whole number of hours offset from UTC.
  3. All timezones are no more than 12 hours offset from UTC.
  4. Two cities within some sufficiently small distance must be in the same timezone.
  5. Two cities with the same longitude must be in the same timezone.
  6. A city further to the east of another city must have a time ahead of or equal to the more western city.
  7. There will only be one timezone within any political boundary.
  8. Within a sufficiently large political boundary, there will be different timezones.
  9. Timezone designations like ‘EST’ are unambiguous.*
  10. Daylight savings shifts occur on the same day around the globe.
  11. Or at least within a hemisphere.
  12. Or at least within a continent.
  13. Or at least within a nation.
  14. Daylight savings shifts occur on predictable dates announced ‘sufficiently far’ in advance that there can be an exhaustive listing of them accurate for the next couple of decades.
  15. Well, at least the next few years.
  16. OK, surely at least this month?

* Both Australia and the United States call their east coast timezone this in winter, and guess what: it’s never the same time in New York as it is in Sydney, and the daylight savings status is seldom the same either. (If you’ve seen Australians call it ‘AEST’, well, yes, we do. Sometimes.)

Paul Offit’s Vaccines course

People in my research group have been understandably excited about, eg, Andrew Ng’s online machine learning course (you can also do Natural Language Processing with Dan Jurafsky and Chris Manning, respectively co-authors of Speech and Language Processing and Foundations of Statistical Natural Language Processing, so you need never choose between NLP textbook authors again).

Since submitting my PhD — I never mentioned that here, sorry, but if you follow me anywhere else you’ve probably heard! It’s under examination presently — I’ve zoned out some and eventually decided to head on over to Coursera and see what was on offer, in case I went two weeks without computer science and had withdrawal I guess. There’s nothing that exactly lines up with my desired enrollment dates right now, so instead, I’m in Paul Offit’s Vaccines course, starting June 25. Looking forward to it! Apparently there will be “challenging” assessment quizzes: I’m hoping to write up anything particularly interesting that comes up in the course, although I suspect that for people familiar with Offit’s various books and lectures (I’m not) it may be something of a repeat.

Note: never say never I guess, but anti-vax comments are unlikely to be published.

Useful LaTeX packages: linguistic examples

This is the conclusion of a short series of entries on LaTeX packages I found useful while preparing the examination copy of my PhD thesis.

Today’s entry is a package for displaying linguistic examples (ie, samples of text which you then want to discuss and analyse).  The LaTeX for Linguists Home Page is a good general resource for linguists and computational linguists using LaTeX. I discuss gb4e here because I had to do some messing around to get it to display example numbers the way I want (and the way my supervisor wanted: he likes in-text references to look like “example (4.1)” rather than “example 4.1″), and to get it to work with cleveref, and no one seems to have written that up to my knowledge.

gb4e

gb4e is a linguistic examples package.

\usepackage{gb4e}

Input looks like:

\begin{exe}
\ex This is an example sentence\label{example}
\ex This is another example sentence.
\end{exe}
This is a cleveref reference to \cref{example}.
This is a normal reference to example (\ref{example}).

You can mark sentences with * and ? and so on:

\begin{exe}
\ex[*] {This is an sentence ungrammatical.}
\ex[?] {This is an questionably grammatical sentence.}
\end{exe}

You can do sub-examples:

\begin{exe}
\ex This is an example.
\ex
\begin{xlist}
\ex This is a sub-example.
\ex This is another sub-example.
\end{xlist}
\end{exe}

A few things to do to make gb4e play really nicely. First, some cleveref config. gb4e doesn’t yet automatically tell cleveref how to refer to examples, so you need to tell it that the term is “example”, and second, if you want braces around the number (“example (1.1)” rather than “example 1.1″ you need to tell it to use brackets:

% tell cleveref to use the word "example" to refer to examples,
% and to put example numbers in brackets
\crefname{xnumi}{example}{examples}
\creflabelformat{xnumi}{(#2#1#3)}
\crefname{xnumii}{example}{examples}
\creflabelformat{xnumii}{(#2#1#3)}
\crefname{xnumiii}{example}{examples}
\creflabelformat{xnumiii}{(#2#1#3)}
\crefname{xnumiv}{example}{examples}
\creflabelformat{xnumiv}{(#2#1#3)}

Also, by default, the gb4e numbering does not reset in chapters. That is, your examples will be numbered (1), (2), (3) etc right through a thesis. You probably want more like (1.1), (1.2), (2.1), (2.2), ie chapter.number. Change to this with the following in your preamble:

% Store the old chapter command so that
% our redefinition can still refer to it
\let\oldchapter\chapter
% Redefine the chapter command so that it resets the
% 'exx' counter that gb4e uses on every new chapter.
\renewcommand{\chapter}{\setcounter{exx}{0}\oldchapter}
% Redefine how example numbers are shown so that they are
% chapter number dot example number
\renewcommand{\thexnumi}{\thechapter.\arabic{xnumi}}
You could also get it to reset in sections by replacing \chapter and \thechapter with \section and \thesection in the above.

Useful LaTeX packages: within document references

This is part of a short series of entries on LaTeX packages I found useful while preparing the examination copy of my PhD thesis.

Today’s entry is packages relevant to preparing within document references. These are both fairly new to me, although not absolutely now.

hyperref

This package turns cross-references and bibliography references into clickable links in your output PDF (at least if you generate it with xelatex or pdflatex), without you having to do anything other than the \ref (or cleveref’s \cref) and \cite and so on commands.

\usepackage{hyperref}

You will probably want to modify its choice of colours to something more subtle:

\usepackage\[citecolor=blue,%
    filecolor=black,%
    linkcolor=blue,%
    % Generates page numbers in your bibliography, ie will
    % list all the pages where you referred to that entry.
    pagebackref=true,%
    colorlinks=true,%
    urlcolor=blue\]{hyperref}

Use black if you want the links the same colour as your text.

One note with hyperref: generally it should be the last package you load. There are occasional exceptions, see Which packages should be loaded after hyperref instead of before?

cleveref

cleveref is a LaTeX package that automatically remembers how you refer to things. So instead of:

see chapter \ref{chapref}

you use the \cref command:

see \cref{chapref}

It handles multiple references nicely too:

see \cref{chapref,anotherchapref}

will generate output along the lines of “see chapters 1 and 2″.

Use

\Cref{refname}

to generate capitalised text, eg “Chapter 1″ rather than “chapter 1″

To use it:

\usepackage{cleveref}

It shortens the word “equation” to “eq.” by default, if you don’t like that, then:

\usepackage[noabbrev]{cleveref}

For some packages that don’t yet tell cleveref how to refer to their counters, you will get output like “see ?? 1″ rather than “see example 1″. You use the \crefname command in the preamble to tell it what word to use for each unknown counter, examples of \crefname will be shown tomorrow for gb4e.

Useful LaTeX packages: tables and figures

This is part of a short series of entries on LaTeX packages I found useful while preparing the examination copy of my PhD thesis.

Today’s entry is packages relevant to preparing tables or figures. Again, some are pretty widely known and some aren’t.

rotating

If you have a big table or figure that should be rotated sideways onto its own page:

\usepackage{rotating}

And then you can replace the table and figure commands with:

\begin{sidewaystable}
%Giant table goes here
\end{sidewaystable}
\begin{sidewaysfigure}
%Giant figure goes here
\end{sidewaysfigure}

dcolumn

The dcolumn package produces tabular columns that are perfectly aligned on a decimal point (ie all the decimal points in that column are exactly underneath each other), which is usually how you want to display decimal numbers.

\usepackage{dcolumn}
% create a new column type, d, which takes the . out of numbers, replacing the .
% with a \cdot and aligning on it.
\newcolumntype{d}[1]{D{.}{\cdot}{#1}}

Now that you have defined the column type, you can use d in the tabular environment, where the numeric argument is the number of figures to expect after the decimal point. You don’t have to use exactly that number of figures in every entry, just that that’s how much room it will leave.

% a tabular enviroment with a 1 and 3 figures after the decimal point column
\begin{tabular}{d{1}d{3}}
1.6 & 1.657
\\
2.0 & 6.563
\\
7 & 6.26
\\
\end{tabular}

One annoying aspect of this package is that for the headers of that column, which probably aren’t numbers, you will need to use \multicolumn to get them to display nicely.

% a tabular enviroment with a 1 and 3 figures after the decimal point column
\begin{tabular}{d{1}d{3}}
\multicolumn{1}{c}{Heading 1} & \multicolumn{1}{c}{Heading 2}\\
1.6 & 1.657
\\
2.0 & 6.563
\\
7 & 6.26
\\
\end{tabular}

You can mix the d column type with the usual l, r and p column types.

threeparttable

You can’t use \footnote in a floating table. This is one of several packages that allow table footnotes in various ways.

\usepackage{threeparttable}

threeparttable doesn’t cause tables to float on its own, so you usually want to wrap in a table command:

\begin{table}
\begin{threeparttable}
% Normal bits of your table go here, and use \tnote{a} and
% \tnote{b} and so to generate a note mark
\begin{tablenotes}
\tnote General note
\tnote General note 2
\tnote[a] Note for mark a
\tnote[b] Note for mark b
\end{tablenotes}
\end{threeparttable}
\caption{Caption goes here}
\end{table}

Unfortunately you need to generate the a, b, c (or whatever) numbering manually.

The general \tnote entries are useful for things like “Bold entries are highest in the column”, so that they don’t need to go in the caption.

Useful LaTeX packages: bibliography

I’m going to post a short series of entries on LaTeX packages I found useful while preparing the examination copy of my PhD thesis. Largely this is just so that there’s a reference if my wiki page goes away, but also because I think many people use LaTeX the way I use it, that is, I got wedded to a bunch of packages 10 years ago and never really looked around for more recent stuff.

Today’s entry is a pretty slow start: the bibliography packages I used are pretty standard.

natbib

This is one of the most sophisticated and widely used packages for Harvard-style references (ie, “(Surname, Year)” rather than “[1]” style references).

\usepackage[round]{natbib}
\bibliographystyle{plainnat}

Inside your text use \citep for a reference in parentheses “(Surname, Year)”, and \citet for a in-text reference “Surname (Year)”. Its important to note that the plain \cite command is equivalent to \citet, which you may not expect.

You can use \citeauthor to get just “Surname” and \citeyear to get just “Year”.

bibentry

This is a useful add-on to natbib, which allows you to insert full bibliography entries into the body of your text. This is useful in the declaration portion of a thesis (where you say something like “this thesis incorporates revised versions of the following published articles”).

\usepackage{bibentry}
\nobibliography*

Then later on when you want to insert a full bibliography entry into the middle of your text:

\bibentry{citationkey}