a clue as to why: functional ft2font.so: $ otool -L /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/ft2font.so /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/ft2font.so: /usr/local/lib/libfreetype.6.dylib (compatibility version 10.0.0, current version 10.22.0) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3) /usr/local/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.14.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11) nonfunctional ft2font.so: $ otool -L /Users/adam/repos/yt/yt-i386/lib/python2.7/site-packages/matplotlib/ft2font.so/Users/adam/repos/yt/yt-i386/lib/python2.7/site-packages/matplotlib/ft2font.so: /Users/adam/repos/yt/yt-i386/lib/libfreetype.6.dylib (compatibility version 13.0.0, current version 13.2.0) /Users/adam/repos/yt/yt-i386//lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3) /usr/local/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.14.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11) /usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) The culprit is the difference between those two (maybe?): $ file /usr/local/lib/libgcc_s.1.dylib/usr/local/lib/libgcc_s.1.dylib: Mach-O universal binary with 4 architectures/usr/local/lib/libgcc_s.1.dylib (for architecture i386): Mach-O dynamically linked shared library i386/usr/local/lib/libgcc_s.1.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64/usr/local/lib/libgcc_s.1.dylib (for architecture ppc): Mach-O dynamically linked shared library ppc/usr/local/lib/libgcc_s.1.dylib (for architecture ppc64): Mach-O 64-bit dynamically linked shared library ppc64$ otool -L /usr/local/lib/libgcc_s.1.dylib/usr/local/lib/libgcc_s.1.dylib: /usr/local/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.9)
Articles by Adam (keflavich@gmail.com)
Mercurial - behave like SVN?
I'm trying to use hooks to make mercurial behave like svn when committing. I like the idea that I can commit changes to my cloned repo while I'm away from the internet, but I never want that behavior when I do have internet access. Therefore, I want to attempt to pull before updating and attempt to push after committing. Every time. I have been consistently very unhappy with the hg merge command. [hooks]precommit = hg pull; hg uppostcommit= hg pushpost-pull = hg up However, this doesn't work. precommit freezes with the error waiting for lock on working directory of [dir] held by [procnum] and pre-commit results in other errors: running hook pre-commit: hg pull; hg uppulling from [source]searching for changesno changes foundrunning hook post-pull: hg upabort: outstanding uncommitted mergeswarning: post-pull hook exited with status 255abort: outstanding uncommitted mergeswarning: pre-commit hook exited with status 255 AG
mercurial merge
AG My most hated behavior of mercurial:
searching for changesadding changesetsadding manifestsadding file changesadded 1 changesets with 3 changes to 3 files (+1 heads)(run 'hg heads' to see heads, 'hg merge' to merge)remote: 1 changesets foundrunning hook post-pull: hg upabort: crosses branches (merge branches or use --clean to discard changes)warning: post-pull hook exited with status 255$ hg mergeabort: outstanding uncommitted changes (use 'hg status' to list changes)$ hg commitnothing changed
Solution: `` hg merge --force `` Hopefully there are other solutions that I'll eventually add to this.
Merging postscripts
This is essential and really difficult to find answers to, but this guy gave it: http://ludo.qix.it/archive/2005/08/merge-postscript-files.html The keywords I would have liked to see: "merge postscripts into multi-page document" or "combine postscript multiple page" e.g. gs -sDEVICE=pswrite -sOutputFile=output.ps -dNOPAUSE -dBATCH file1.ps file2.ps file3.psorgs -sDEVICE=pswrite -sOutputFile=05358spectra.ps -dNOPAUSE -dEPSFitPage -dBATCH `ls 05358_*.eps`(the added option is to make sure the .eps isn't cropped)
meta
Why a blog? I've been strongly opposed to blogs for the longest time (after all, Desert Strike coined the word BLOG as an acronym for building), so why use one now? 1. link power - more links to my own pages if done correctly 2. google owns the blogger 2.a. google made it really easy 3. it's easier to add content here than to my real 'web page' which is already too content-heavy. Still, my web page is more useful for displaying code, my cv, etc. 4. needed a place to post beer reviews / brewing related content that doesn't fit on a normal web page unless I made a blog there 5. easiest way to take notes that I can't just accidentally delete... and now that I've made this post, 6. because I like metahumour
Molecular Clouds
I'm starting a blog on Molecular Clouds partly for the International Year of Astronomy. Ideally, I'd like to present a tour of the W3/4/5 region, but at the moment that's more of a research blog than a public blog. This is partly in response to Pamela Gay's request for astronomy blog feeds. I've generally spent more time maintaining my personal web page than my blog pages. The most interesting are: W5 P Cygni Some pictures but feel free to browse around.
Montage wrapper
(I'm going to try to gradually shift my blogging to this one...) I wrote a bash wrapper for Tom Robitaille's montage wrapper to allow fits wildcards. #!/bin/bashorigdir=`pwd`#echo $# $*if [ $# -gt 0 ]then for ii in $* do if [ ${ii%=*} == 'header' ] then /usr/local/bin/montage/mGetHdr ${ii#*=} mosaic.hdr elif [ ${ii%=*} == 'outfile' ] then outfile=${ii#*=} elif [ `echo $ii | grep =` ] then params="$params,${ii%=*}='${ii#*=}'" elif [ `echo $ii | grep ".fits"` ] then files=( ${files[@]} $ii ) fi donefiecho ${files[@]} ${#files} if [ ${#files} -gt 0 ] then mkdir tmp cp ${files[@]} tmp/ cp mosaic.hdr tmp/ cd tmp/fiif [ -f mosaic.hdr ] then echo "mosaic.hdr exists, continuing" dir=`pwd` echo python -c "import montage; montage.wrappers.mosaic('$dir','$dir/mosaic',header='$dir/mosaic.hdr'$params)" python -c "import montage; montage.wrappers.mosaic('$dir','$dir/mosaic',header='$dir/mosaic.hdr'$params)" cd $origdir if [ -d tmp ] then if [ $outfile ] then mv tmp/mosaic/mosaic.fits $outfile else mv tmp/mosaic mosaic fi rm -r tmp fielse echo "mosaic.hdr does not exist. Quitting." cd $origdirfi
More beer tastes
Stone Vertical Epic 8: described as an overhopped Belgian, and I think they hit the mark exactly. It was pleasant and drinkable, with a strong hop flavor but weak hop bitterness. 8.6% ABV Fort Collins brewery double chocolate stout: a reasonable dessert beer. Not nearly as dry as Stone's Oatmeal Chocolate, but not as sweet as Young's double chocolate. Chocolate undertones stayed undertones, which is not what I expect from a double chocolate stout. 8.1% ABV Avery / Liquor Mart 40th anniversary: Just a hoppy ale, nothing special. Had a stronger hop aftertaste than most, not up to Avery's standard. No ABV label. Steamworks Kolsch: Very light kolsch. I think it may have had a crisp flavor to it, but it was the last in line and unremarkable enough that my comments on it are untrustworthy. 4.86% ABV. Also, talked to Bobby again, he recommends St Bernard as a good Belgian. That's on the list.
More tastings
Deschutes Black Butte XX - good for a porter, reasonably drinkable, but still a porter Rogue Chocolate Stout - a bit bitterer than I want in a chocolate stout Victory 12 - pretty good, tasted a bit like a trippel Sketch Wheat - much more drinkable than last time; "weirdness" gone
MOSAIC data reduction
MOSAIC reduction is very difficult. http://www.noao.edu/noao/noaodeep/ReductionOpt/frames.html has the official instructions. Important things: Have the latest version of MSCRED and MSCDB installed. Both will give cryptic errors or "cannot open file" errors (because the files don't exist) otherwise. mscredsetinstrument kpno CCDMosaThin1msccmatch obj09*.fits coords="!mscgetcat $I $C" search=60 rsearch=1 nfit=30 accept=yes interactive=no fit=no