08 December 2011

I'm a doctor, not a grad student

Well, all the hard work and perseverance has finally paid off. I have passed my thesis defense, and I don't have any revisions to my thesis! Those so inclined may download my dissertation for fun and enrichment.

Next stop, adulthood!

20 November 2011

Living up to all the hyphe

Today I dreamt of paired, hyphenated words.

  • hoity-toity
  • arsy-versy
  • topsy-turvy

And the bonus word:

  • hubble-bubble

I will never utter the mundane word 'hookah' again. Why prefer a common, understandable word when a ludicrous, fanciful one is available?

19 November 2011

Color spacing out

On certain pages---and only certain pages---of my LaTeX-written dissertation, sub-pixel anti-aliasing was strangely unavailable. On these pages, where I'd embedded PDFs created in Illustrator, the print quality would also suffer. And this behavior only appeared in documents generated on one computer, which has pdftex-1.40.12; not my other, which has pdftex-1.40.11. Moving the PDF file from one computer to the other preserved the behavior of that PDF.

After a little hunting, I determined the problem to occur only when Illustrator saved its PDFs in a CMYK color space, which were then embedded in the newer pdftex-generated document. Telling Illustrator to use an RGB color space for that document fixed the problem.

The things you learn as a nuclear engineer.

19 October 2011

Oh, Google

Google voice transcription of background noise when someone accidentally pocket dialed me:

Hey hey, how sorry bye. Hey, Just okay bye bye bye. Ciao. Thank you. Hello How, yeah Okay bye. Ohh okay, bye. But quo, okay bye bye, okay bye okay Kirk, bye. Cook please bye hey. Hello Hello. Hello. I think. Bye still talk, cost the commercial. Okay bye. Dick, call and Mark, dot, com hey, book. Hey check. Thanks, hey, spoke out bye drop left bye bye, back okay okay bye bye. Hey. Okay bye. Okay, bye Park City. Hey, hey. Hey, bye hey hey you, bye hey pitch. That's perfect book, good okay. I'll talk to you. If you are. I love you bye bye. What's up are you back bro. Hello, hey hello.

Clearly, Google expects a large fraction of phone messages to consist of "hey," "hello," "bye."

12 October 2011


The Rackham dissertation requirements state that "at least" the first sentence of all figure captions must appear in the "List of figures" at the beginning of the thesis. I follow the stylistic convention of having a brief description of the figure as the first sentence, and a sometimes lengthy elaboration afterward. It is unwieldy to have a paragraph of explanatory text appear in the index at the beginning, so I've been using the \caption[as it appears in index]{as it appears on the page} feature of LaTeX captions to have only the first sentence show in the index. To prevent the duplication of text, and to comply with the requirement that the first sentence must exactly match, I wrote the following simple but very useful LaTeX macro:


Now, I can write my caption as \Caption{Cross-sections in my test problem.}{Light regions have $\sigma=1$.} without having to manually duplicate the first sentence.

27 September 2011

Trilinos GCC Warnings patch

If anyone else is as tired as I am of spurious warnings when compiling Epetra, Teuchos, and Belos modules in Trilinos with -Wall -Wextra, I have created a patchfile that corrects the deficient code.

21 September 2011

Fully integrated LaTeX in Macvim

I've been less than pleased with TeXShop on Lion. I do most of my editing in Vim using Vim-LaTeX, but I compile with TeXShop. Most importantly, I sometimes use SyncTeX to jump between my compiled document and source.

To switch away from TeXShop, I want both an integrated compiler and an external editor with SyncTeX. Skim with this configuration fit the bill. Yet Vim-LaTeX won't play nicely with my dissertation, which uses a file for each chapter and the TeXShop convention of

% !TEX root = ../thesis.tex

to denote the true TeX file. The solution involves this feature of Vim-LaTeX, and the following function I wrote:

" Look for main file by looking in the first 20 lines, same as TeXShop, for:
" % !TEX root = [filename].tex
" Author: Seth R. Johnson
let g:Tex_MainFileExpression = 'SRJMainFile(modifier)'

function! SRJMainFile(fmod)
    let s:Tex_Match = '\v^\s*\%\s+!TEX\s+root\s+\=\s+\zs(.*\.tex)\ze\s*$'
    let s:lnum = 1
    while s:lnum < 20
        let s:basefile = matchstr( getline(s:lnum), s:Tex_Match)
        if !empty(s:basefile)
        let s:lnum += 1

    if !empty(s:basefile)
        let s:origdir = fnameescape(getcwd())
        let s:newdir = fnameescape(expand('%:p:h'))
        exec 'cd'.s:newdir
        let s:basefile = fnamemodify(s:basefile, a:fmod) 
        exec 'cd'.s:origdir
        let s:basefile = expand('%'.a:fmod)

    return s:basefile

" Command-R will write, open for viewing, compile, go to the end of the quickfix, hide the
" preview, switch back to main window
map <D-r> :w<cr><leader>lv<leader>llG<C-w>p:q<cr>
imap <D-r> <ESC><D-r>
" Inverse search
nnoremap <D-S-LeftMouse> <leader>ls

Now typing \ll in my individual chapter files will compile the true thesis. Typing \lv will open the thesis in Skim, \ls will jump from the TeX source to the corresponding output line, and command-shift-clicking in Skim will cause MacVim to jump to the appropriate source line. Command-R is a shortcut to compile and view.

UPDATE 2011/9/25: I've uploaded my vim scripts to GitHub.

UPDATE 2011/9/27: Modify the "reverse lookup" in Skim to be --remote-silent +":silent %line" "%file" to avoid the obnoxious Press ENTER to continue prompt in Vim.

15 September 2011

Making a "lite" git repository

I've had my research in a git repository for more than a year and a half. Because most of my computational experiments are small (i.e., single processor rather than supercluster), I've stored a number of results in the repository rather than in a separate directory. Well, 18 months and many obsolete and regenerated results later, my repository is rather bloated. Preferring to only modify my thesis, figures, and related files on my new MacBook Air, I chose to create a new "thesis" repository.

To preserve the history of modifications I'd already performed, git filter-branch is the way to go. (Stack Overflow was helpful in finding out the details.) The only sticking point was in getting the large HDF5 files to be removed in garbage collection (git gc): removing .git/refs/original and expiring the reflog.


git clone --no-hardlinks /Users/seth/_research thesis
cd thesis
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch \
   research_* _testproblems* _python* meeting_notes* *.h5 *.silo \
   .gitignore .gitxattr_json anisotropic_ss ideas_include technotes" \
   --prune-empty -- --all
git remote rm origin
rm -rf .git/refs/original/
git reflog expire --expire=0 --all
git gc --prune=now

Anyhow, I now have a nice, clean, 20MB repository suitable for putting on an ultraportable and for later uploading to GitHub/elsewhere to serve mankind.

14 September 2011

Vim and TeX keywords

After updating my vim installation, my command set iskeyword+=: in ~/.vim/after/ftplugin/tex.vim stopped functioning. (This was recommended by the Vim-LaTeX project.) My auto-completion for chapter references chap:intro and equations eq:blahBlah was broken because the colon was no longer interpreted as a command character.

To make a long story short, I found the :verbose set isk command which told me the last file to set iskeyword:


Somehow, that syntax file is hard-wired to reset iskeyword. The solution is to add the following line or equivalent:

let g:tex_isk='48-57,a-z,A-Z,192-255,:'

07 June 2011

LaTeX ANS transaction update

Those who are in the nuclear engineering business might be interested to know that I've updated the LaTeX class for ANS transaction summaries. It is now more compliant with the ANS-specified guidelines, and it uses a much better version of the Times math font.