Tuesday, April 5th, 2011

ZeroMQ: “Pimped Socket Interface”

Nicholas Piel gives a great introduction to ZeroMQ:

But while the library may feel small it has a grand vision of being the new messaging layer. And really, it is not that weird when you come to think of it. Scalability issues are mostly just communication and portability issues, ZeroMQ can solve these problems for you.

And here’s another bit of wisdom from 0MQ - The Guide:

What we need is something that does the job of messaging but does it in such a simple and cheap way that it can work in any application, with close to zero cost. It should be a library that you just link with, without any other dependencies. No additional moving pieces, so no additional risk. It should run on any OS and work with any programming language.

And this is 0MQ: an efficient, embeddable library that solves most of the problems an application needs to become nicely elastic across a network, without much cost.

/developer   〆   permalink

Thursday, March 10th, 2011

My Virtual Chumby

In anticipation of my chumby made of atoms coming from a Woot order, I’m starting out with this chumby made of bits.

/tech   〆   permalink

Tuesday, May 11th, 2010

Installing PyQt 4.7.3

Abbreviated notes for installing PyQt 4.7.3 on Mac OS 10.6 (Snow Leopard). This assumes you have already downloaded and installed the Qt SDK.

cd tmp

wget http://www.riverbankcomputing.co.uk/static/Downloads/sip4/sip-4.10.2.tar.gz
untar sip-4.10.2.tar.gz 
open doc/html/index.html 
cd sip-4.10.2
python configure.py --arch i386 --sdk MacOSX10.4u.sdk
sudo make install
cd ..
rm -rf sip-4.10.2/

wget http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-mac-gpl-4.7.3.tar.gz
untar PyQt-mac-gpl-4.7.3.tar.gz 
cd PyQt-mac-gpl-4.7.3
python configure.py --use-arch i386
sudo make install
cd ..
rm -rf PyQt-mac-gpl-4.7.3/

Then, do a quick test.

>>> from PyQt4 import QtGui
>>> a = QtGui.QApplication([])
>>> w = QtGui.QWidget()
>>> w.show()    
>>> w.hide()


/developer   〆   permalink

Wednesday, February 24th, 2010

Hg Init

Hg Init: a Mercurial tutorial by Joel Spolsky is awesome. Consise, funny, clear, and true. Plus the domain name is perfect.

/developer   〆   permalink

Wednesday, February 24th, 2010


dive into mark asks his wife to let him replace his car with nothing. Hilarious, yet interesting how hard it can be to simplify.

/life   〆   permalink

Tuesday, February 23rd, 2010

Software Carpentry

Software Carpentry’s tag line is “Basic software development practices for scientists and engineers.” Definitely worthwhile — although I’d recommend hg or git over subversion.

/developer   〆   permalink

Tuesday, February 23rd, 2010

Best Explanation of Git and Mercurial’s Similarities

Mercurial for Git users answered many of my questions on the nuances of Mercurial. The branch model, bare repositories, and command equivalence table were especially helpful for someone like myself who has used both systems but never fully understood the distinctions.

/developer   〆   permalink

Wednesday, February 10th, 2010

TortoiseHg Usage Introduction (Mercurial on Windows)

I wanted to share a quick introduction to using a Mercurial repository on Windows with TortoiseHg. This assumes someone has already setup the repository on a shared network drive (we’ll call \\Shared\Repo\Project44) and you want to keep up do date with the changes directly in Windows Explorer.

Initial Checkout

  1. Download and install the latest TortoiseHg at http://bitbucket.org/tortoisehg/stable/downloads/.
  2. After rebooting, Right-click -> TortoiseHG -> Settings -> Global -> Commit, and set your Username to something. I’m using “Alan Brooks”.
  3. Right-click -> TortoiseHG -> Clone a Repository.
  4. Put your \\Shared\Repo\Project44 in “Source Path”.
  5. Click “clone” in the upper left.
  6. The folder “Project44” on your hard drive is a working copy of all the latest files and also a complete copy of the entire history of the project (a.k.a. the repository in the “.hg” folder). I’ll call this folder your “local repo” for short.

Example Workflow

  1. Edit some code or files until you get to a point where you’d like to record a small incremental change in your local repo.
  2. Notice that the files/folders you’ve changed all have little red marks in Windows Explorer.
  3. Commit to your local repo. Right-click -> HG Commit …, select files to commit, write a checkin comment, then click Commit. This commit will be an atomic action for all the files as a group.
  4. Sync with the remote repo. Right-click -> TortoiseHG -> Synchronize…, click Pull to get anyone else’s changes. If there are changes, they may need merged before you push. If no changes, click Push to publish your changes to the repo.
  5. Look at the history. Right-click -> TortoiseHG -> View Changelog.


A couple of good things to read to get started with Mercurial are:

/developer   〆   permalink

Tuesday, February 2nd, 2010

Homebrew: a retake on Fink and MacPorts

The Homebrew Mac OS X package manager sounds like it might be worth a try.

/mac   〆   permalink

Saturday, January 23rd, 2010

Link Roundup

Trying to clear out my inbox today … so here’s a variety of interesting links I’ve seen in the last few months.

Top 10 User Interaction Myths

Python Debugging Techniques (code.interact(), logging, pdb)

Logging Module

Guide to Branching in Mercurial

Python Bytecode Disassembler

Python Module of the Week

Windows Sysinternals

UI Complexity

Arduino Small Prototyping Board

fabricate Build Tool

mlabwrap Python to Matlab Bridge

eCircuit Center (former Varian guy’s EE circuit learning site)

/developer   〆   permalink

Saturday, January 23rd, 2010

Index Source Code with Spotlight

I was frustrated that Spotlight wasn’t indexing any of my source code. What’s the point of Great, instant, system-wide search that doesn’t look in files I care about most? What’s going on?

Thanks to the article Terminal commands for improving Spotlight on Mac OS X Tips (which, by the way is a nice tips site I never knew about) for showing me the way.

The method I used was to edit the info.plist file in RichText.mdimporter (found in /System/Library/Spotlight/), adding <string>public.python-script</string>. Then, I told Spotlight to re-index the RichText file format via:

mdimport -r /System/Library/Spotlight/RichText.mdimporter

/mac   〆   permalink

Saturday, January 23rd, 2010

PAM and launchd Interaction

While experimenting with /etc/sshd_config settings on Snow Leopard (10.6), I had disabled PAM (by setting UsePAM no). This had an unintended side effect of making launchctl behave poorly for periodic tasks I run from the ~/Library/LaunchAgents folder. I turned PAM back on (set UsePAM yes) and all was happy.

launchd must use the Pluggable Authentication Module interface as part of the mechanism that allows user agents to run.

If you see something like the following error message when trying to run launchctl commands, you may also have this problem:

Bug: launchctl.c:2325 (23930):13: (dbfd = open 
(g_job_overrides_db_path, O_RDONLY | O_EXLOCK | O_CREAT,
S_IRUSR | S_IWUSR)) != -1
launch_msg(): Socket is not connected

Thanks to these threads for getting me thinking along this solution path.

/mac   〆   permalink

Saturday, January 23rd, 2010

A Style Guide and pychecker

I came across Google’s Python Style Guide and enjoyed it. It mentioned pychecker which is a nice static analysis tool for helping to find bugs in Python code.

/developer   〆   permalink

Saturday, January 23rd, 2010

grin: Easy Search of Directorys Full of Source Code

I am loving the grin tool. It’s like a find/grep mashup with good defaults. In human-speak, that means you can easily search source code on the command line with a short command.

Just go pip install grin it already (or easy_install grin if you’re old school).

/developer   〆   permalink

Saturday, January 23rd, 2010

View Python Profiles

Profiling tools are essential to understanding where to focus your attention when improving software performance. RunSnakeRun is a nice way to visualize, sort, and better understand Python profiling data.

/developer   〆   permalink

Saturday, January 23rd, 2010

Instant Ubuntu GUIs with Quickly

I like the idea of Quickly: make easy one-line commands for creating, editing, designing, running, packaging, and releasing Ubuntu GUI projects. Ars’s overview captures the gist of it well.

/developer   〆   permalink

Thursday, January 14th, 2010

Mercurial Command Line Quick Reference

There are two main ways I’ve been using Mercurial over the last couple years: on the command line and via tortoisehg (right-click) on Windows. This is a quick reference to the command-line interface. Mercurial on the command line is called “hg” (a reference to the element Mercury).


>> hg            % lists basic commands
>> hg help       % lists all commands
>> hg help pull  % gives detailed help on command "hg pull"

Where am I?

>> hg status    % tell which files have been modified
>> hg st        % same as hg status (you can abbrevitate
                %    non-ambiguous commands)
>> hg log -l 5  % log of last 5 commits
>> hg diff      % current changes to your working directory
>> hg diff -c 9 % changes made by revision 9

Committing as you work

>> hg commit -m "change 1"  % regular commit
>> hg add new.c             % tell hg to start tracking a file
>> hg ci -m "change 2"      % "ci" is short for commit (legacy)
>> hg rename new.c blue.c   % rename a file (like copy + remove)
>> hg revert ---all          % oops, I didn't want to rename
>> !del blue.c              % del manually (stop tracking blue.c)
>> hg mv new.c red.c        % "mv" is short for rename
>> hg ci -A -m "change 3"   % "-A" adds/del's files, avoids 
                            %    the "hg add, hg remove" dance

Syncing with another repository

>> hg pull      % grab any new changes from default repo
>> hg update    % update your working directory with the changes
>> hg merge     % merge new code with your code
>> hg ci -m "merge" % commit merge result
>> hg fetch     % short for "hg pull, hg update, hg merge, hg ci"
>> hg push      % send your changes to the default repo


>> hg heads     % list the potential heads that could be merged
>> hg merge     % auto-merge (specify rev with -r if >2 heads)
>> hg resolve   % if auto-merge failed, retry after manual edits

Repository management

>> hg init          % make a new repo in the current dir
>> hg clone C:\Repo % clone the repo to work on a branch/idea

Advanced, but nice (many require enabling extentions)

>> hg view      % launches a graphical history viewer
>> hg paths     % where this repo pushes and pulls from
>> hg rollback  % undo the last commit (only OK if not pushed)
>> hg shelve    % stash work-in-progress to fix something else
>> hg unshelve  % resume your work-in-progress
>> hg rebase    % move a set of commits to a new baseline
>> hg tip -p    % show latest committed changes

Hope this helps. Please send me ideas for other commands that you like to use often.

/developer   〆   permalink

Sunday, January 10th, 2010

Congrats, Jessica!

I’d like to congratulate my sister, Jessica, on winning Best of Show in the Madden Arts Center Art Show. Read all about it in the Herald and Review. Well done, sis!

Winning Photo

/life   〆   permalink

Sunday, January 10th, 2010

Is Microsoft Security Essentials Good?

Is the free anti-virus tool now available directly from Microsoft any good? Any one out there used it? Ars Technica reviewed it positively. When I need to run Windows, I’ve never loved Norton or the free AVG. I have been using ESET NOD32 lately and it is ok. But next time I set up a Windows machine, I think I’ll give Microsoft Security Essentials a try.

/mac   〆   permalink

Saturday, January 9th, 2010

Why I Like Mercurial

Mercurial is a great version control tool. I like it for the following reasons:

  • distributed (you can checkin changes with no network connection)
  • free, open-source
  • written in Python (easy to customize with workflows)
  • works well on Mac, Linux, and Windows
  • TortoiseHG on Windows means non-developers at work can use it
  • simple to get started with, but powerful features available
  • hg is the shortest and easiest name to type on the command line compared to the only credible competitors: git, svn, bzr … it doesn’t get any better than 2 adjacent letters on the home row!

/developer   〆   permalink

Saturday, January 9th, 2010

lxml.objectify == Best Python XML API

I’ve used a couple different XML parsing libraries in the past, but have always had a desire for XML to behave just like an object where accessing attributes maps directly to accessing XML children. Who would have known it — the lxml library, one of the fastest XML processors offers exactly this API, calling it lxml.objectify. I can’t wait to try it …

/developer   〆   permalink

Saturday, January 9th, 2010

Generate Microsoft Word 2007/2008 docx Files from Python Code

In some situations, it would be nice to be able to spit out an automated report as a Word document. Mike Maccana has come up with a new tool for doing just that and shared the code on github as project python-docx. I like it.

/developer   〆   permalink

Wednesday, October 14th, 2009

Example MATLAB Code Testing SSIM and CW-SSIM

While learning about structural image quality techniques, I implemented some test code to experiment a bit. Since I didn’t have the MATLAB image processing toolbox conveniently available, I shell out (call external command line programs) to some Imagemagick functions a bit, so watch out for that.

See my test code for the complex wavelet domain structural similarity metric (CW-SSIM). Note that I’m also using Eero Simoncelli’s steerable pyramid tools.

/image processing   〆   permalink

Sunday, September 27th, 2009

Updating NumPy, SciPy, and Matplotlib

I recently upgraded to NumPy to 1.4.0.dev7419, SciPy to 0.8.0.dev5953, and matplotlib version

svn co http://svn.scipy.org/svn/numpy/trunk numpy
cd numpy
python setup.py build
python setup.py install
cd ..

svn co http://svn.scipy.org/svn/scipy/trunk scipy
cd scipy
python setup.py build
python setup.py install
cd ..

>>> import numpy
>>> numpy.__version__    # '1.4.0.dev7419'
>>> numpy.test('1','10') # 26 errors in 2231 tests, but usable
>>> import scipy
>>> scipy.__version__    # '0.8.0.dev5953'
>>> scipy.test('1','10') # 165 errors in 4515 tests, but usable

rm -rf /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib*
wget http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99.1/matplotlib-
open matplotlib-
cd matplotlib-
python setup.py build
python setup.py install
cd ..

ipython -pylab
>>> plot([1,2,3])

/developer   〆   permalink

Monday, July 13th, 2009

Python Link Roundup

Intra-package References

I just found out that Python 2.5 or newer allows relative imports, something I had been writing custom code to work around. Python documentation gives examples in 3 forms:

from . import echo
from .. import formats
from ..filters import equalizer

Packaging Tools

Alex Clemesha explains modern python hacker tools virtualenv, Fabric, and pip. I find all three of them intersting.

pip is an alternative to easy_install where you can install and upgrade python packages easily with commands like:

pip install -U ipython

Fabric facilitates deploying code to a remote location.

virtualenv lets you setup and manage working environments that aren’t littered with everything you ever installed into your global site-packages directory.

I also recommend virtualenvwrapper, which puts a nice interface on top of virtualenv.

/developer   〆   permalink

Thursday, March 12th, 2009

Ophthalmology Explained: What are those numbers in an eyeglasses prescription?

After visiting the Ophthalmologist yesterday, I received a prescription for corrective lenses with some crazy numbers on it. It looked something like this:

        SPH    CYL  AXIS
O.D.: -1.00  +0.75   180
O.S.: -1.25  +0.75   165

What does all that mean? I turned to the Wikipedia explanation for answers.

It turns out that this is a precription for distance vision only (near vision corrections are usually not necessary for a 25-year-old).

What are the abbreviations?

  • O.D. abbreviates oculus dexter, Latin for “right eye”
  • O.S. abbreviates oculus sinister, Latin for “left eye”
  • SPH stands for spherical diopter units
  • CYL stands for cylindrical diopter units
  • AXIS defines the angle of the CYL correction in degrees

The spherical component is the main correction as it acts equally to correct blur in all directions. The cylindrical component corrects blur in only one direction — therefore it is useful in correcting astigmatism. The axis angle defines the direction of the necessary cylindrical correction.

Addenda (2011 April 24):
In addition, my pupillary distance is 65 mm. This distance from pupil center to center is useful for ordering glasses online (such as at Warby Parker).

/life   〆   permalink

Sunday, February 1st, 2009

My Hat Size

Future me, your head is 22 5/8 inches around, making you a hat size 7 1/4. You will thank present me for that information one day.

/life   〆   permalink

Saturday, January 31st, 2009

Agreed. Git is Awesome.

I agree with every word in Fine. Git is Awesome.

/developer   〆   permalink

Saturday, January 17th, 2009

Mercurial and Git Links

Useful Mercurial Setup suggestions from Ted Naleid.

Daily Git tips at git ready.

/developer   〆   permalink

Saturday, January 3rd, 2009

Introducing numpyIO.py

I implemented numpyIO.py because I often use scipy.io.numpyio.fread() and scipy.io.numpyio.fwrite(), but I don’t want to depend on scipy. It uses numpy’s tofile/fromfile functions instead.

Why might you want this instead of SciPy’s numpyio? Well, I can think of a few reasons:

  • it imports faster because it only depends on numpy, not scipy
  • easier to package with py2exe or py2app
  • it is slightly faster
  • it lets you avoid rewriting legacy code that makes extensive use of scipy’s deprecated fread/fwrite

Grab the numpyIO project from bitbucket or clone the repo with:

hg clone http://bitbucket.org/lannybroo/numpyio

/developer   〆   permalink

Saturday, January 3rd, 2009

Updating to Python 2.6 on Mac OS X Leopard 10.5.6

Install Python from source.

cd ~/tmp
wget http://www.python.org/ftp/python/2.6.1/Python-2.6.1.tgz
untar Python-2.6.1.tgz
cd Python-2.6.1
mate Mac/README
./configure --enable-framework
make install
cd ..

Update setuptools so that easy_install works.

wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c9-py2.6.egg
sh setuptools-0.6c9-py2.6.egg

Add the following to my .profile so that the binaries installed by easy_install take precedence over my old Python 2.5 stuff.

export PATH=/Library/Frameworks/Python.framework/Versions/2.6/bin:$PATH

Easy install various packages I use frequently.

easy_install IPython
easy_install nose
easy_install pexpect
easy_install cheetah
easy_install clonedigger
easy_install pyserial
easy_install markdown2
easy_install euclid
easy_install psyco

Do the slightly tougher installs: NumPy (svn rev 6271), SciPy (svn rev 5300), matplotlib, and euclid. See http://www.scipy.org/Installing_SciPy/Mac_OS_X for details. Before starting, I also updated to the latest apple developer tools, although this isn’t strictly necessary.

wget http://r.research.att.com/gfortran-4.2.3.dmg
open gfortran-4.2.3.dmg # install using GUI

wget http://www.fftw.org/fftw-3.2.tar.gz
untar fftw-3.2.tar.gz
cd fftw-3.2
sudo make install
cd ..

svn co http://svn.scipy.org/svn/numpy/trunk numpy
cd numpy
python setup.py build
python setup.py install
cd ..

svn co http://svn.scipy.org/svn/scipy/trunk scipy
cd scipy
python setup.py build
python setup.py install
cd ..

>>> import numpy
>>> numpy.test('1','10') # 6 problems in 1897 tests, but usable
>>> import scipy
>>> scipy.test('1','10') # 168 errors of 3990 tests, but usable

sudo port install libpng
sudo port install freetype
easy_install matplotlib

ipython -pylab
>>> plot([1,2,3])

svn checkout http://pyeuclid.googlecode.com/svn/trunk/ pyeuclid
cd pyeuclid
python setup.py install
cd ..

Install wxPython and PythonCard for GUI development.

wget http://downloads.sourceforge.net/wxpython/wxPython2.8-osx-unicode-
wget http://downloads.sourceforge.net/wxpython/wxPython2.8-osx-docs-demos-
open wxPython2.8-osx-unicode-
open wxPython2.8-osx-docs-demos-

wget http://prdownloads.sourceforge.net/pythoncard/PythonCard-0.8.2.tar.gz
untar PythonCard-0.8.2.tar.gz
cd PythonCard-0.8.2
python setup.py install
open /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/PythonCard/samples/minimal/

Then, Ctrl-click and open minimal.py with Python Launcher to test.

/developer   〆   permalink

Tuesday, December 23rd, 2008

Hi-Def Video Playback on Windows

Jeff Atwood’s great tips on Hi-Def video playback for Windows.

/tech   〆   permalink

Sunday, November 30th, 2008

Git-SVN Cheat Sheet

Set good “don’t mess with my line endings” option before first checkout:

git config --global core.autocrlf false

Do this one time to suck in the repo w/history from SVN:

git svn clone svn://myrepo.com/project/

Do this loop over and over until your code ready to push back to SVN. The cool thing about this is that the adds and commits can be done off the network! Don’t forget to merge and re-test your changes after the rebase:

git add .
git commit -m "Added some awesome stuff"
git svn rebase

Push all local changes back to the SVN repo, which will now have all the local commits you did when you were on the airplane:

git svn dcommit

One other key tip is what when you want to decommit or rebase but you are in the middle of some changes, don’t worry. git-stash to the rescue:

git stash
git svn rebase
git stash apply

Also, here are a few links that inspired this post:

/developer   〆   permalink

Sunday, November 30th, 2008

Speedy Python

A great reference: Tools for Accelerating Python. I learned about quite a few new ways of getting Python code to run faster …

/developer   〆   permalink

Sunday, November 30th, 2008

Git Link Roundup

I’ve been working more with git lately and have found a few more interesting sites I’d like to share.

The Git Community Book is a great quick reference for finding out how to use a command if you can’t recall from the man page.

If you want to really understand the gory details of branching and merging with git (and I do highly recommend understanding them … easy branching is the best part of git coming from a svn background), then read this long article on LWN.net.

Also, R. Tyler Ballance has a series of blog entries on moving his team from subversion to git. I especially liked Team Development with Git which details the bad habits of developers that are just becoming familiar with distributed source control.

The Battery Powered blog tells us how to deploy a Git Repository Server in Ubuntu, which may prove useful soon. Currently, I’m just using Git for my local work and then pushing to a SVN repo, but I’d like to move others to Git soon.

scie.nti.st also explains how to host a Git repo. Both this and the Battery Powered link above use gitosis to make setup easier.

/developer   〆   permalink

Monday, October 6th, 2008

Decent Python References

I’ve been doing some more Python development lately. Wanted to document the following decent references online.

/developer   〆   permalink

Sunday, September 14th, 2008

Amanda’s Marathon Training Video

Amanda and I are running the Chicago Marathon this year. We’re hoping our friends will want to come watch us run on Sunday, October 12!

We are running as part of a fundraising group that supports the Chicago Children’s Memorial Hospital. So, Amanda made a fun video showing her unique Rocky Balboa training methods.

Anyway, hope you enjoy the video. If you like it and want to sponsor us, head to Amanda’s donation site and make a pledge to support her. Or, you can pledge to support me here.

Watch below, or check it out in HD on YouTube.

/life   〆   permalink

Monday, June 30th, 2008

Announcing Haiku Of the Day (HOD)

I helped put together a simple website and RSS feed of Haiku published by Bronze Man Books. Read the announcement or check out today’s haiku of the day!

/web   〆   permalink

Saturday, May 10th, 2008

Run Your Software on Your GPU

Check out GPULib from Tech-X Corp. It gives you the ability to run mathematical functions on your GPU card (certain NVIDIA models only, as the moment). Includes a blog and bindings for Python (pystream) and MATLAB.

/developer   〆   permalink

Tuesday, May 6th, 2008

Idiomatic Python, the Cheese Shop, PyEuclid

Today is becoming python link day, so here are a few more:

  • Idiomatic Python has some great tips on how to use python as it was intended.
  • The Python Package Index is a good place to look for code someone has already written that might solve the problem you’re thinking about, and probably in a much cleaner way than you were thinking. This used to be known as the Cheese Shop.
  • pyeuclid is a nice 2D/3D vector, matrix, and quaternion math library (that needs better docstrings and a ray-sphereoid intersection).

/developer   〆   permalink

Tuesday, May 6th, 2008

Numpy for MATLAB Users

Great reference for those of us recovering from a MATLAB addiction, like this guy, who recently moved his scientific workflow to Python.

/developer   〆   permalink

Thursday, May 1st, 2008


Straight-forward Python reference the explains the standard library rather completely and cleanly just by showing a simple example for each module and function. Very nice for a quick lookup of something you don’t quite remember.

/developer   〆   permalink

Monday, April 28th, 2008

Universal Sole 10

Amanda, Shayna, Mark, and I ran the 10-mile Universal Sole race in Lincoln Park yesterday. Here’s an excerpt with our times (full results):

O'All No. Name   Div/Tot  Rank 5 Mile  Pace  Finish    Pace 
===== === ====== ======== ==== ======= ===== ========= =====
  788 369 MARK   103/120   960   49:11  9:51 1:33:00.4  9:19
  883 155 ALAN    57/66    961   49:12  9:51 1:35:53.2  9:36
 1148 370 SHAYNA 119/130  1181 1:00:52 12:11 1:56:42.8 11:41
 1149 156 AMANDA 120/130  1182 1:00:53 12:11 1:56:44.4 11:41

/life   〆   permalink

Thursday, March 13th, 2008

Installing IPython, SciPy, and Matplotlib into Apple’s Python on upgraded Leopard

Start by reading this reference and some tips at MacResearch.

Because it obscures the nice Leopard python that includes Numpy and Dtrace, remove your old Python completely.

sudo rm -rf /Library/Frameworks/Python.framework/

Check that NumPy is already installed and working.

import numpy

Install latest IPython, version 0.8.2. Note that I always alais untar='tar xvzf' in my bash setup.

wget http://ipython.scipy.org/dist/ipython-0.8.2.tar.gz
untar ipython-0.8.2.tar.gz
cd ipython-0.8.2
sudo python setup.py install

Install a fortran compiler binary because it is needed to compile/install Scipy. I get the PPC version of gfortran. You can also find the Intel version at HPC Mac OS X.

wget http://internap.dl.sourceforge.net/sourceforge/hpc/\
sudo tar -xvf gfortran-ppc-leopard-bin.tar.gz -C /

Edit a disttools file in Apple’s NumPy distribution so it is more lenient in allowing the use of the above gfortran compiler when building SciPy. Inspired by this note.

cd /System/Library/Frameworks/Python.framework/Versions/2.5/\
sudo cp -p gnu.py gnu.py.bak

And edit the following lines as follows (I use mate gnu.py to edit in TextMate).

- version_match = simple_version_match(start=r'GNU Fortran (?!95)')
+ version_match = simple_version_match(start=r'GNU Fortran')
- version_match = simple_version_match(start='GNU Fortran 95')
+ version_match = simple_version_match(start='GNU Fortran')

Build and install SciPy 0.6.0. Source available here.

wget http://internap.dl.sourceforge.net/sourceforge/scipy/\
untar scipy-0.6.0.tar.gz
cd scipy-0.6.0
sudo python setup.py install

This installs SciPy here: /Library/Python/2.5/site-packages/scipy, which isn’t seen by Python at first. I added the following to my .profile.

export PYTHONPATH="/Library/Python/2.5/site-packages"

Test it after closing your terminal and re-opening. I actually have 2 failures and 3 errors, but they are things I don’t care about at the moment.

import scipy

Install matplotlib binary.

wget http://internap.dl.sourceforge.net/sourceforge/matplotlib/\
sudo easy_install -N matplotlib-0.91.2-py2.5-macosx-10.3-fat.egg

Test it out and be happy that you’re done!

ipython -pylab

/mac   〆   permalink

Saturday, December 15th, 2007

Rocky Fetching, Fighting the Roomba

Our boy continues to be quite the fun addition to the family. He can run around playing fetch all day. He also likes to fight with Little Buddy (a.k.a. our Roomba). I think we should teach him to ride it around.

/doggy   〆   permalink

Tuesday, November 6th, 2007

Markdown in Python

A clean, fast Markdown implementation in python.

/web   〆   permalink

Monday, October 22nd, 2007

Meet Rocky Brooks

We love our little 4-month-old Chihuahua we adopted on 20-Oct-2007. He also loves to play with his inverted self in the mirror …

/doggy   〆   permalink

Wednesday, October 17th, 2007

Clean up your Contextual Menus

Thanks to this TidBITS article, I was tipped off to find this Mac OS X Hint about how you can rebuild the Launch Services database that determines which applications show up in your “Open With” contextual menu. My Open With had a huge amount of cruft accumulated over time with Classic apps, apps on my backup hard drive, and an annoying number of image droplets in the Photoshop/Samples/Droplets folder.

So I rebuilt my Launch Services database to make my Open With much cleaner and faster. Here’s how I did it.

  1. Eject my backup hard drive so that the database doesn’t include duplicate copies of all my applications.

  2. Archive the Photoshop/Samples/Droplets/ folder (right click, Create Archive, then delete the folder).

  3. Add the following line to my ~\.profile so typing the lsregister command is easier. (alias ... should all be on one line)

    # make launch services register easy to find
    alias lsregister='/System/Library/Frameworks/
  4. Save a description of the old database (out of curiosity, not necessary).

    lsregister -dump | less > lsregDumpOld.txt
  5. Rebuild the database. (all on one line)

    lsregister -kill -r -f -domain system -domain system
        -domain user "/Applications"
  6. Save a description of the new database (again just curious).

    lsregister -dump | less > lsregDumpNew2.txt

The new database is now about 1 MB, down from the original 6 MB. There sure was a lot of junk in there!

/mac   〆   permalink

Tuesday, October 16th, 2007

Steve vs. Alan on Hearing High Stuff

I can hear up to 17.1kHz. Steve can only hear up to 14.7kHz. So I win this round. Although maybe that means he can save more disc space and compress his MP3s a little more?

If you want to perform your own test, you can use Python on Windows as follows:

from winsound import Beep
Beep(14000, 1000)

14000 is the frequency 14kHz and 1000 is beep duration 1000ms (1 second). Crank up the frequency until you can’t hear it.

Update: alternate MATLAB one-liner for doing the same:


Update 2: Paul says he can hear up to 16.9kHz well but also claims to faintly hear 18-20kHz. I think that means he wins, because I cannot hear above 17.1kHz at all. He said he used headphones whereas I used crappy laptop speakers, so I consider that cheating a little.

Update 3: So apparently, the results are very dependent on the speakers being used. I tested Amanda at home using the Bose speakers and she can hear up to 17.5kHz. Funny thing: with these speakers, I can hear up to about 18.4kHz. Not sure what to make of that except that I’m winning again.

/life   〆   permalink

Monday, October 15th, 2007

Punched before Eating

Maybe the funniest SNL Digital Short yet.

/web   〆   permalink

Monday, October 15th, 2007

Hidden Dictionary on The New York Times

Woah, I just randomly double-clicked a word while reading an article nytimes.com and it popped up a definition/theauraus with information on that word. Seems to work while reading articles, but not on the front page.

It is actually more than just a dictionary. For example, go read about Led Zeppelin finally doing digital downloads and when you click Zeppelin, it gives a short bio on the band. Says it’s powered by Answers.com.

/web   〆   permalink

Saturday, October 13th, 2007

iPhone Unleashed

Hack the iPhone is the best site that collects iPhone hacks, how-to’s, and downloads. Installer.app is a package manager that lets you install, update, and uninstall a great variety of 3rd party iPhone software. Awesome. Finally, iFuntastic lets you change your icons, backgrounds, and install apps.

Update: The iPhone Dev Wiki gives the most updated info on current hacking status, including a list of working native apps.

Also, iPhone Alley has some great news and guides.

Also also, iPhonegoboom has good warnings.

/mac   〆   permalink

Saturday, October 13th, 2007


Great Python articles, books and downloads. Visit and enjoy. I especially enjoyed this optimization of a log file parser.

Some other interesting articles:

/developer   〆   permalink

Friday, October 12th, 2007


I’m starting to really like the Humanized weblog. A few interesting articles:

/web   〆   permalink

Thursday, October 11th, 2007


Adam Engst of TidBITS has me convinced to try Twitter.

/web   〆   permalink

Thursday, October 11th, 2007

SVN Version in Your Source

Suppose you are using Subversion to manage your code and find that you’d like to include revision information within a file. You might read this and think it won’t work, but do not be dismayed. You really wanted to look at Keyword Substitution in the Subversion book.

There you will find that enabling substution on a file is rather easy. Say you have some code in Spam.py and you’re running TortiseSVN. Then, the basic process is:

  1. Rt click file -> Properties -> Subversion tab -> Properties.
  2. Add a property svn:keywords with value Date Revision Author HeadURL Id
  3. Put a keyword in the file where you want it to expand the thing — I put $Id$ in the docstring of Spam.py. Id is a summary which, after checking in, expanded to "$Id: Spam.py 513 2007-10-10 23:10:30Z username $".

/developer   〆   permalink

Tuesday, October 9th, 2007

Hex Fiend for Windows

On Mac OS X, Hex Fiend handles editing of binary files beautifully. On occasion, I also need to munge around with large hex files on Windows. Today, I found the XVI32 hex editor — it does the job nicely, letting me delete out segments and re-save the result. It probably wouldn’t work as well with extremely huge files because it does everything in-memory, but for 300MB files, it works great.

/developer   〆   permalink

Friday, October 5th, 2007

Text Processing in Python

Check out this great book online (there is a print version too).

/developer   〆   permalink

Saturday, September 29th, 2007

Audio Lectures for Free

In the never-ending search for commuting content, I stumbled upon listening to words. It has a decent collection of interesting video and audio lectures available for free. Give it a listen.

/web   〆   permalink

Saturday, September 29th, 2007

Blueprint CSS

A CSS framework that “gives you a solid CSS foundation to build your project on top of, with an easy-to-use grid, sensible typography, and even a stylesheet for printing.” Check it out. By the way, Google Code is starting to host some great stuff lately …

/web   〆   permalink

Saturday, September 29th, 2007

Web File Sharing Services

Sometimes it is nice to be able to send huge files to people over the web without hosting a server. pando and YouSendIt are both good solutions for doing that. Pando gives 1GB free while YouSendIt gives 2GB.

/web   〆   permalink

Saturday, September 29th, 2007

ninja words

I love the tagline “A really fast dictionary … fast like a ninja.” ninja words really is litening fast with instant results that show up in your browser window without reloading.

Nice use of AJAX.

/web   〆   permalink

Monday, September 24th, 2007

Why Rewrites Can Go Wong

Good article series from Chad Fowler on why rewriting software often goes bad if you do it as a Big Rewrite. Kevin Barnes also has some thoughts.

/developer   〆   permalink

Monday, September 3rd, 2007

Read and Write NTFS on Mac

I was having trouble mounting, reading, or writing to an external USB hard drive on my Mac. Trouble was it is formatted with NTFS and I didn’t want to reformat. Solution: install macfuse and ntfs-3g then go to Terminal and type

diskutil list | grep Windows_NTFS

to find your NTFS disk matching /dev/disks, then mount the disk

mkdir /Volumes/ntfs
ntfs-3g /dev/disk3s1 /Volumes/ntfs -ovolname="Fuse Drive"

Also, if you’d like to graphically mount a SSH or FTP share as a drive, install MacFusion. Now I wish MacFusion worked with NTFS too …

/mac   〆   permalink

Saturday, May 12th, 2007

More Twin Photos

Arik posted some new photos of the twins. I, of course, prefer these especially goofy ones.

Alien Chair Babies

/life   〆   permalink

Saturday, May 12th, 2007

Sarah and Scott get Hitched

Last weekend, I gained another brother-in-law! The wedding was great fun — check out my photos.

Under the Huppah

/life   〆   permalink

Sunday, April 29th, 2007

Millikin University’s Teaching Excellence and Campus Leadership Award

Congrats on being honored, dad.

/life   〆   permalink

Tuesday, April 24th, 2007


Check out my good friend Steve Hoelzer’s Master’s thesis on reducing blocking artifacts in DCT-coded images (like highly-compressed JPEGs). I enjoyed the clear and concise executive summary.

/image processing   〆   permalink

Monday, January 22nd, 2007

Twins are Born

Last weekend, I became a proud double-uncle when my brother’s family grew from 2 to 4 overnight! Ashley Nicole and Lindsey Grace were born at 12:30 in St. Louis on January 12, 2006.

I posted some photos on flickr, Dad has photos on his website, and the hospital has pictures of Lindsey, Ashley, and both.

Congratulations, Arik and Laura!

Update: Arik has a great picture gallery up on his website now.

Twins Comfort Each Other

/life   〆   permalink

Saturday, January 20th, 2007

Video To TiVo From My Mac

Now there’s a way to put video back to my TiVo from my Mac. The interface for turning it on is hidden until you either command-click the TiVo preference pane or type defaults write com.tivo.desktop FileVideo -dict-add VideoUIEnabled -bool true into Terminal (this feature is also known as “TiVoToComeback”).

TiVoToComeback UI

The original discovery came from this TiVo Community Forum post.

Also, you might find TiVoizer useful in converting videos to the mpeg2 format that TiVo likes.

/tv   〆   permalink

Saturday, December 30th, 2006

Link Roundup

Farecast predicts airfares.

OpenDNS makes browsing faster and helps with URL typos.

The Biomedical Imaging Group (BIG) has some great reviews on sampling and image interpolation.

Erik Meijering presents A Chronology of Interpolation.

Maps of War gives a 90-second visual History of Religion.

MAKE suggests open-source gifts.

Mac Geekery explains how to decrypt and transcode TiVo recordings on your Mac. I contributed some comments.

The TiVo File Decoder software allows decryption of .TiVo files into MPEG-2 format.

iLounge offers great iPod-related reviews and a beautiful iPod buyer’s guide. Here’s their high-end iPod speaker system ratings.

/web   〆   permalink

Friday, November 10th, 2006

Useful Free Software for Video Playback and Format Conversion on Windows

If you ever find yourself needing to do video playback and format conversion with a wide variety of video formats on Windows, I have a few key free pieces of software to recommend:

  1. VirtualDub: a video capture and processing tool that can very quickly read, manipulate, and write AVI files in many formats (VirtualDubMod, a spinoff, handles even more formats) (Wikipedia description)
  2. VirtualDub filters: the other great thing about VirtualDub is that there are many plugin filters available that implement a variety of video/image processing algorithms
  3. ffdshow: a codec (decoder and encoder) package that installs as a native Windows DirectShow filter, enabling playback of many modern video formats in Windows Media Player
  4. Auto Gordian Knot: a tool for converting DVD video content into XviD or DivX or x264 MPEG4 video
  5. MediaInfo: reveals the codecs used for video and audio contents within a video file

/image processing   〆   permalink

Thursday, November 9th, 2006

Directory of Open Access Journals

The DOAJ lists scholarly journals that give free access to the full text articles. Some papers are pretty decent — I poked around and found the International Journal of Signal Processing interesting.

/tech   〆   permalink

Sunday, November 5th, 2006

Bobble Head Respect

YouTube is extremely easy to upload video to. I’m impressed.

/life   〆   permalink

Sunday, November 5th, 2006

Too Much Time on Our Hands in High School

Chad, Tim, and I had too much time one day …

(How to embed YouTube videos as valid XHTML 1.0)

/life   〆   permalink

Sunday, November 5th, 2006

The IR & EO Systems Handbook

The IR & EO Systems Handbook — the definitive reference for Infrared and Electro-Optical systems — is available for free. For scanned PDFs, the quality is high. Unfortunately, the fact that they are scanned means that the text is not searchable.

How to download (via Randy Jost):

  1. go to http://stinet.dtic.mil/
  2. search for “Accetta and Shumaker”
  3. download pdfs and be happy

There are eight volumes:

Volume 1: Sources of Radiation
Volume 2: Atmospheric Propagation of Radiation
Volume 3: Electro-Optical Components
Volume 4: Electro-Optical Systems Design, Analysis, and Testing
Volume 5: Passive Electro-Optical Systems
Volume 6: Active Electro-Optical Systems
Volume 7: Countermeasure Systems
Volume 8: Emerging Systems and Technologies

/tech   〆   permalink

Sunday, November 5th, 2006

Restarting TiVo Desktop Automagically Using Launchd and AppleScript

For some reason, TiVo Desktop version 1.9.3 (008) for Mac OS X is a processor hog for me. Especially after I’ve committed the crime of actually running iTunes or iPhoto on a given day.

I’ve noticed that stopping and starting TiVo Desktop improves this situation, but I’ve also gotten personally tired of doing this, so now I offer you a way of automating an escape from this monotony. Use the plist file here:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
<plist version="1.0">
    <string>Restarts TiVo Desktop periodically.</string>

saved in the /Users/uname/Library/LaunchAgents/ folder with a name something like com.QuickSilverWatch.plist in combo with these launchd instructions. Or, just use lingon as described is this Mac OS X Hint. Either way, you’ll need this applescript to actually reboot TiVo Desktop:

-- open Sys Prefs and wait for it to open
tell application "System Preferences"
end tell

-- stop/start TiVo Desktop w/10 trys
repeat 10 times
    delay 1
        tell application "System Events"
            tell application process "System Preferences"
                -- set frontmost to true w/10 trys
                repeat 10 times
                        click menu item "TiVo Desktop" of menu ...
                            "View" of menu bar 1
                        delay 1
                        tell window "TiVo Desktop"
                            click button "Stop"
                            click button "Start"
                        end tell
                        exit repeat
                    end try
                end repeat
            end tell
        end tell
        exit repeat
    end try
end repeat

-- quit Sys Prefs
tell application "System Preferences"
end tell

You must have GUI Scripting enabled to run this AppleScript.

/mac   〆   permalink

Sunday, September 10th, 2006

6-year Old’s Drawing of Sept 11th Terrorist Attack

See my little sister’s drawing along with my father’s haiku.

/life   〆   permalink

Sunday, September 10th, 2006


Babynamewizard.com has a tool called NameVoyager that shows a graph of popular baby names over time. The data is massaged out of the Social Security Administration’s records. The really cool thing is that you can type parts of names and get instant feedback as the popularity graphs change. It’s fun to explore — check it out.

The plots show the 1000 most popular names versus time whre the popularity axis is the number of names per million babies. When looking at the “all names” graph (the first graph that comes up as you visit the website), it’s interesting to see observe an upward trend in name diversity since the 50’s. This trend shows up directly as the thickness of many name-lines decreases and indirectly because the overall number of top 1000 names displayed goes down. In the 50’s, 95% of the names were in the top 1000 while in 2005 only about 75% were in the top 1000. Go find interesting trends.

(via David Pogue)

/web   〆   permalink

Wednesday, August 23rd, 2006

A Response to How to Write a Haiku

RSS alert
no five-seven-five
a brow furrows

(thanks, KC)

/life   〆   permalink

Tuesday, August 22nd, 2006


fun times

/web   〆   permalink

Monday, August 21st, 2006

More Notes on How to Write a Haiku

incomplete sentences
no syllable counting
learn from masters

/life   〆   permalink

Monday, August 21st, 2006

How to Write a Haiku


/life   〆   permalink

Tuesday, June 13th, 2006

Confessions of a Car Salesman

A journalist goes undercover as a salesman at 2 car dealerships. Read it if you’re considering buying a car (or at least look at the recommendations at the end).

(via Kris)

/life   〆   permalink

Tuesday, June 13th, 2006


Green Hybrid has a very nice database of actual mileage recorded by hybrid car owners. HybridCARS.com lists current and expected hybrid models.

/life   〆   permalink

Saturday, June 3rd, 2006

Petals Around the Rose

I have joined the Fraternity of Petals Around the Rose (via Steve). Kris, how long till you grok it?

/tech   〆   permalink

Wednesday, April 26th, 2006


Powerful photo essay on the Chernobyl disaster.

/web   〆   permalink

Sunday, April 23rd, 2006

Commands necessary to make squid run as a proxy for ME not as admin

Assumes squid installed via fink.

Useful for debugging:

squid -NCd1
top -l 1 | grep squid
sudo squid -k shutdown

Making squid have no cache — I just want it to be a proxy — add the following to /etc/squid.conf:

acl AllIncomingIps src
no_cache deny AllIncomingIps

Getting the permissions right (make owner me and open up permissions):

sudo chown -R myusername /sw/var/log/squid/
chmod -R u=rwx,g=rw,o=rw /sw/var/log/squid/
sudo chown -R myusername /sw/var/cache/squid/
chmod -R u=rwx,g=rw,o=rw /sw/var/cache/squid/
sudo chown -R myusername /sw/var/run/
chmod -R u=rwx,g=rwx,o=rx /sw/var/run/

Now, I can run squid instead of sudo squid and that makes me happy.

Of course, I actually don’t run it manually, I use launchd thanks to Steve’s instructions.

/mac   〆   permalink

Sunday, April 16th, 2006

Language-Maven vs Tool-Maven

In The IDE Divide, Oliver Steele uses his analytical knife to split developers into language mavens versus tool mavens. What would you rather use on your next project?

  1. a powerful language and text editor
  2. whatever language and a powerful IDE

/developer   〆   permalink

Sunday, April 16th, 2006

Web Based Terminals

Anyterm and Ajaxterm provide a way to use SSH (remote login) through any browser. Once this is setup, it would be slightly easier than downloading PuTTY.

/web   〆   permalink

Friday, April 14th, 2006

Face Time

Creating passionate users is becoming one of my favorite websites. Yesterdays post on why face-to-face matters notes how video chat is very close to face time but lacks in the eye contact department:

Video chat is better than any other form of non face-to-face, because you get facial expressions, tone of voice, body language, AND real-time responsiveness. But—he said there’s still a very unsettling feature for the brain because there’s really no way for BOTH speakers to make eye contact! … there’s no way to have the camera right in your face, in a place where you can still look into the other person’s eyes. Bottom line: You can see the camera or the person’s eyes… but not both.

I wonder if some fancy image processing could be applied so as to give the illusion of eye contact between both parties.

/image processing   〆   permalink

Monday, April 10th, 2006

People Don’t Crunch Well

Evan Robinson gives a clear explanation of why crunch mode doesn’t work.

In most times, places, and industries over the past century, managers who worked their employees this way would have been tagged as incompetent — not just because of the threat they pose to good worker relations, but also because of the risk their mismanagement poses to the company’s productivity and assets. A hundred years of industrial research has proven beyond question that exhausted workers create errors that blow schedules, destroy equipment, create cost overruns, erode product quality, and threaten the bottom line. They are a danger to their projects, their managers, their employers, each other, and themselves.

/developer   〆   permalink

Sunday, March 19th, 2006

Info theory book (free online)

David MacKay provides online copies of his textbook Information Theory, Inference, and Learning Algorithms (in pdf, ps, djvu, & latex formats). You can also buy the dead-tree version.

It’s a very readable text compared to the other things I’ve previously read (or skimmed) on Information Theory.

(via Sotos)

/image processing   〆   permalink

Sunday, March 19th, 2006

infogami (makes websites)

You can create a website in no time at infogami.com (a service created as a Y Combinator startup by Aaron Swartz). So, of course, I made a Daily Burrito site. Some good infogamis have already popped up; I like Y Rumors and Yet Another Javascript Reference.

/web   〆   permalink

Sunday, March 19th, 2006

Berkeley podcasts

Many of Berkeley’s courses are now available as podcasts. Listen and learn …

/tech   〆   permalink

Sunday, March 19th, 2006


I like iStockphoto. It’s much easier that looking through huge clip art galleries — you just search and buy royalty-free photos right on the website. I enjoy looking for burros, donkeys, and mules.

/web   〆   permalink

Sunday, March 19th, 2006

Markdown + XeTeX = Hi Fi Text

Luxagraf mates markdown and XeTeX (LaTeX with MacOS X fonts) to produce a wonderful offspring: hi-fi text. In goes clean, minimal markdown text. Out comes beautiful typeset pdf documents.

/tech   〆   permalink

Sunday, March 19th, 2006

GUI for real-time file usage info in Mac OS X

Robert Pointon has written the GUI analog to fs_usage in fseventer. It shows a very nice graphical display of all file system events.

/mac   〆   permalink

Sunday, March 19th, 2006

Effect of Bandwidth Optimizer

I installed Broadband Optimizer, a program that aims to increase network speed on Mac OS X by increasing TCP memory buffers, effectively making data come in bigger chunks.

I used 3 online bandwidth testers to quantify the improvement (clearing Firefox’s cache between each test). I took the best of three runs of each test.

c|net test
1350 -> 1586 kbps (17% increase)

bandwidth speed test
2300 -> 2500 kbps (9% increase)

1104 -> 1488 kbps (35% increase)

On average, that’s about a 20% increase in download speed compared to the default Mac OS X settings. I like it.

/mac   〆   permalink

Sunday, March 19th, 2006

Joel Test for the Web

The Joel Test gives 12 simple tests for the quality of a sofware development team.

Drew Mclellan offers thoughts on The Joel Test for Web Development. He finds that the test is still very useful in the context of web development.

/developer   〆   permalink

Sunday, March 19th, 2006

Cheat Sheet Roundup

Pete Freitag lists cheat sheets for developers. I love cheat sheets. This covers web, programming, version control, OS commands, and more.

/developer   〆   permalink

Sunday, March 19th, 2006

Subversion Install and Use on Mac OS X

Justin Williams of MacZealots.com gives some good tips on installing and using subversion on Mac OS X. I found subversion indispensable in keeping track of all the code and writing for my master’s thesis.

/developer   〆   permalink

Sunday, March 19th, 2006

Simple, Free Mac OS X RAM Disk

Michael Parrot offers a freeware RAM Disk creator (Esperance DV) that works great. Get it.

/mac   〆   permalink

Sunday, March 19th, 2006

Haskell for C Programmers

Haskell (a programming language) has no update operator. There is no order of operations. Find out more from this introduction to a “functional” programming language.

/developer   〆   permalink

Sunday, March 19th, 2006


Face and text recognition for your personal photos. Upload, do little training, then search by face. “Hey computer, find me all the photos that have both Tim and Chad because I’m to lazy to browse my 30000 thumbnails.”

Try it. (only Firefox and IE6 currently supported)

/web   〆   permalink

Sunday, March 19th, 2006

Using mod_rewrite to make pretty URLs

Here’s a nice guide for using the mod_rewrite Apache web server module for making nice URLs. I use it to make my blog URL dailyburrito.com/blog instead of dailyburrito.com/blah/blah/morecrap/blosxom.cgi and to make www.dailyburrito.com map to dailyburrito.com (for some reason, I really hate that www).

I altered the configuration of Apache web server that comes installed Mac OS X in two spots to accomplish the above goals. First, I edited the main Apache configuration document by adding the following line at the very end of /etc/httpd/httpd.conf, instructing Apache to look at my own configuration files.

Include /private/etc/httpd/users/*.conf

Then, I created the file /private/etc/httpd/users/alan_apache_setup.conf that looks like this:

# Blosxom script redirect
ScriptAlias /blog /Library/WebServer/CGI-Executables/blosxom.cgi

# Redirect visitor by domain name
RewriteEngine On
RewriteCond %{HTTP_HOST} !^dailyburrito.com$ [NC]
RewriteRule ^(.*)$ http://dailyburrito.com$1 [R,L]

Voila! Missions accomplished. URLs are pretty.

/web   〆   permalink

Sunday, March 19th, 2006

Mini Putt Putt

Fun Putt Putt game that runs in your browser. (requires the Flash plugin)

/life   〆   permalink

Sunday, March 19th, 2006

State of the Environment

A transcript of Robert F. Kennedy’s amazing speech about the some of the horrific things that we are doing to our environment. It touches on everything from coal-burning power plants to mercury in the water to strip mining to cultural values to draft dodging. Long, but well worth the read.

(via Wil Shipley)

/life   〆   permalink

Sunday, March 19th, 2006

Dignity considered harmful

Kathy Sierra, a writer for the Creating Passionate Users blog, elaborates on Paul Graham’s idea:

When you evolve out of start-up mode and start worrying about being professional and dignified, you only lose capabilities. You don’t add anything… you only take away. Dignity is deadly.

/developer   〆   permalink

Saturday, February 11th, 2006

Hoping that a future subversion won’t lose file dates

This feature is proposed in their issue tracking database as Issue 1256. It recently got bumped from consideration for version 1.3 and is now being considered for 1.5. For some reason, the fact that subversion doesn’t keep the last modification date of files under version control is very annoying for me.

/developer   〆   permalink

Wednesday, February 1st, 2006

Essential Mac OS X Applications

Mac Specialist provides a very nice list of essential Mac Apps.

/mac   〆   permalink

Saturday, January 28th, 2006

ECE 432 Final Report on Face Recognition

Woo hoo! My final report for class is now complete and available in html and markdown text formats. The report describes the eigenface and fisherface techniques for facial recognition and includes MATLAB source code.

/image processing   〆   permalink

Monday, January 9th, 2006

Kariela’s Sandvox

Sandvox looks to be a very promising tool for creating websites that look great and comply with standards. You can download the public beta now and try it out.

/mac   〆   permalink

Friday, December 23rd, 2005

LaTeX on Mac OS X

If you need to use LaTeX on Mac OS X, start by following the most simple beginner’s guide to get things installed. Then, you might want to read Getting Started With TeX on Mac OS X and look at the Mac OS X TeX/LaTeX Web Site for a good set of related links. More details about the i-Installer and some links from a LaTeX course are also available. Finally, there is a nice visual equation editor that makes complicated equations easier to edit.

/life   〆   permalink

Wednesday, November 23rd, 2005

LaTeX on Windows

If you ever find yourself wanting to write LaTeX documents on Windows, I’d suggest installing the MiKTeX utilities along with the WinEdt editor. One guy’s opinion on why you might want to do this.

Also, there are nice LaTeX style files for both the SPIE and IEEE proceedings.

/life   〆   permalink

Wednesday, November 23rd, 2005

libjpeg is good

Recently for my master’s work, I found that a very nice implementation of JPEG compression is available from the Independent JPEG Group. The code and supporting documents are quite nice and flexible. At least one of my readers (Steve) will like to hear that it supports compressing with a user-specified quantization table.

/image processing   〆   permalink

Sunday, November 13th, 2005

Web Application Development Platforms

Ruby on Rails vs Django vs TurboGears. Ready … fight!

For the first round, we’ll look at two O’Reilly articles:

  1. What Is Ruby on Rails
  2. What Is TurboGears

Which brings me to my point: why no article on Django yet? Is it because they don’t have a cool demo video?

Oh yeah, I’m thinking that Blog engines are not really the same thing as these web application platforms. Or maybe they are a focused special case.

/web   〆   permalink

Wednesday, November 9th, 2005

William Kahan’s Archive of Math-Related Problems with Floating Point Implementations (including MATLAB, Java, C, …)

Mr. Kahan is a math/EE/CS professor at Berkely who writes some interesting notes on limitations and problems with math libraries. His work is archived on his homepage. Some of my favorites include:

/developer   〆   permalink

Wednesday, November 9th, 2005

How to Approach Research

“You and Your Research”, an interesting talk by Richard Hamming given 7 March 1986.

“Knowledge and productivity are like compound interest.” Given two people of approximately the same ability and one person who works ten percent more than the other, the latter will more than twice outproduce the former. The more you know, the more you learn; the more you learn, the more you can do; the more you can do, the more the opportunity - it is very much like compound interest. I don’t want to give you a rate, but it is a very high rate. Given two people with exactly the same ability, the one person who manages day in and day out to get in one more hour of thinking will be tremendously more productive over a lifetime.

/science   〆   permalink

Wednesday, November 9th, 2005

Here’s Hoping for Launchy

While my normal computing platform of choice is Mac OS X, I do end up using Windows at work. On OS X, I really love the quick-launching abilities of LaunchBar and QuickSilver, so naturally I’m always on the look-out for similar launcher utilities for Windows.

Launchy is a promising start. It was written for fun by a guy who just wanted it for himself, then shared it with friends, then shared it with the world. Despite being so young, it has three of the best features I deem necessary in this strain of program:

  • blazing fast speed
  • almost non-existant UI (it only shows up with a keyboard command, Alt+Space)
  • partial pattern matching (typing “mword” matches “Microsoft Word”)

I would be very happy if only someone could add a bit of:

  • manual match tuning
  • learning (remember manually tuned matches)
  • custom matching (I want to launch stuff that is not in the Start menu)

As for now, I ran it for a few days, but ultimately turned it off.

/mac   〆   permalink

Wednesday, October 26th, 2005

Illusions of Perception

The CVCL (Computational Visual Cognition Lab) at MIT presents a gallery of perceptual image illusions. The hybrid faces are very interesting. They combine high and low spatial frequency information to create a face that changes with viewing distance. (via Ian Rowland via reddit)

Doh! Right after posting this, I realized that Steve Hoelzer beat me to the punch. Nice scoop, fellow reddit reader.

/image processing   〆   permalink

Tuesday, October 25th, 2005


FlightAware has real-time tracking of flights, current flights to/from OHare, and an awesome animation of all US flights in one day. Toward the end of the animation, you can see the country wake up starting with the east cost, then midwest, then west. Impressive. (via reddit)

/web   〆   permalink

Tuesday, October 25th, 2005

Python + Readline = Auto Complete

I can’t really tolerate a command line and/or programming environment that doesn’t include a usable auto-completion feature (like Python’s built-in shell). To solve this problem, I’m using the “enhanced” shell IPython on my Windows machine. It wasn’t working well, but then I found that IPython’s docs suggest that I need the readline extention:

While you can use IPython under Windows with only a stock Python installation, there is one extension, readline, which will make the whole experience a lot more pleasant. It is almost a requirement, since IPython will complain in its absence (though it will function). The readline extension needs two other libraries to work, so in all you need:

  1. PyWin32 from http://starship.python.net/crew/mhammond.
  2. CTypes from http://starship.python.net/crew/theller/ctypes (you must use version 0.9.1 or newer).
  3. Readline for Windows from http://sourceforge.net/projects/uncpythontools.

Sweet. Download 3 exe’s. Install. It works and I’m happy. Lesson: sometimes it’s useful to read documentation.

See IPython’s quick tips for a crash course in the magic of IPython.

Also, see ONLamp’s tutorial.

/developer   〆   permalink

Sunday, October 9th, 2005

Grand Challenge 2005

DARPA’s Grand Challenge (a race between vehicles that are able to navigate an off-road course without human intervention) started yesterday. It looks like they will soon be announcing the winner because only 1 of the 23 teams is still running with no chance of catching up to the very tight pack of 4 teams that have completed the 132 mile race in less than 10.5 hours.

It’s looking like the final placing will be:

  1. 9h 55m: Stanford Racing Team’s Stanley, a Volkswagen Touareg with GPS, IMU, laser, radar, vision, and wheel speed sensors.
  2. 9h 59m: CMU Red Team’s Sandstorm, a 1986 HMMWV with vision, radar, laser, and GPS sensors.
  3. 10h 4m: CMU Red Team’s H1ghlander, a 1999 H1 Hummer with INS, GPS, and laser sensors.
  4. 10h 17m: Gray Team’s GrayBot, a 2005 Ford Escape Hybrid with cameras, laser, and GPS sensors.

It is amazing how close the 4 teams that finished were. Sandstorm only lost by 4 minutes!

/tech   〆   permalink

Saturday, October 8th, 2005

Web-Based Collaborative Writing

Drew McLellan reviews a few tools that allow multiple people to edit a document together online: Writely, JotSpot Live, and Writeboard. His criticism of Writeboard leads to improvements the following day.

/web   〆   permalink

Sunday, October 2nd, 2005

What is Web 2.0?

Tim O’Reilly clarifies how he defines Web 2.0.

Let’s close, therefore, by summarizing what we believe to be the core competencies of Web 2.0 companies:

  • Services, not packaged software, with cost-effective scalability
  • Control over unique, hard-to-recreate data sources that get richer as more people use them
  • Trusting users as co-developers
  • Harnessing collective intelligence
  • Leveraging the long tail through customer self-service
  • Software above the level of a single device
  • Lightweight user interfaces, development models, AND business models

/web   〆   permalink

Saturday, October 1st, 2005

Let that Culture out of Jail

The creator of the creative commons license, Lawrence Lessig, has made his book Free Culture available free online. Since his license allows noncommercial derivitive works with attribution, people have remixed the book into many interesting versions:

Of course, you can also buy the dead tree version if you want to give his publisher a few bucks.

/tech   〆   permalink

Tuesday, September 20th, 2005

Perfect Pint in Two Seconds

I love TurboTap’s slogan: Science Pouring Perfect Beer. It’s a Chicago-based beer tap startup. How awesome is that?

/science   〆   permalink

Sunday, September 18th, 2005

Pictures from Navy Pier

Steve is quite the photographer, getting some great-looking night pictures of us all last night. So here’s Alan & Amanda, Laura & Kris, then Dawn & Steve.

Alan, Amanda Laura, Kris Dawn, Steve

/life   〆   permalink

Sunday, September 18th, 2005

More on Markdown & SmartyPants

Some more tidbits on John Gruber’s tools

To run as an OS X Service,

Install HumaneText.service from here. Then,

  1. Select any text.
  2. Press Shift-Cmd-{ to convert “Humane Text” to XHTML.
  3. Press Shift-Cmd-} to convert XHTML to “Humane Text”.

Note that this runs both Markdown & SmartyPants on your text.

To run integrated (via command—line pipes) with SmartyPants,

Run Markdown first, then post-process the html with SmartyPants to make smart-quotes, dashes, and ellipses look nice. E.g.:

% perl Markdown.pl foo.text | perl SmartyPants.pl > foo.html

/web   〆   permalink

Sunday, September 18th, 2005

Arik & Laura Wedding Professional Pictures

A sampling of thier proofs is now available. The couple did such a great job of looking good, it must have made the photographer’s job easy — some great pictures were the result.

Note: to download the photos on your computer, just go to the following website. You can replace the number 16 with any picture number from 1 to 45 to see other photos.

http://www.reprintorders.com/Companies/StLouisColor/ Laura_and_Arik___Photographer_Mark_Brophy/16.jpg

Arik Wedding

/life   〆   permalink

Sunday, September 18th, 2005

Congratulations, Steve & Dawn Hoelzer, on the Upcoming Mammy & Pappyhood

Steve and Dawn are going to be parents! Check out the ultrasound. As you can see in the right hand lower corner of the pictures, the due date is around March 29-30th.

/life   〆   permalink

Sunday, September 18th, 2005

Jessica Turned 10

My little sister, Jessica, just had her 10th birthday. I’m so proud of her! A bit of Sponge Bob was involved.

Jessica Birthday

/life   〆   permalink

Sunday, September 18th, 2005

Snickers Memories

He was a very friendly and loving cat. He’d greet any stranger with curiosity. We’ll miss him. I put together some pictures to remember him by.

Snickers in His Bed

/life   〆   permalink

Sunday, September 18th, 2005

Do Not Fear Unicode

I recently decided to brush up on Unicode because I’m preparing to redesign this website and I’d like it to fully use Unicode as it’s text-delivery format.

What is Unicode? It is basically a mapping of a single number that represents each character in every writing system. It even includes some dead languages from the past.

Here are some great places to learn more.

I was struggling with how to enter Unicode characters on Mac OS X, when I finally found some useful tools that can be enabled by the “Input Menu” tab of the International System Preferences. If you enable “Character Palette” and “Unicode Hex Input”, you’ll get a little flag in your menu bar that lets you choose among two useful input methods:

  1. Character Palette - graphically pick your glyphs (see screenshot)
    character palette

  2. Unicode Hex Input - type in the hex Unicode code point while holding down the option key

Here’s some examples, for your viewing pleasure.

〆 = ideographic closing mark (U+3006)
☃ = snowman (U+2603)
♥ = heart (U+2665)
⌘ = place of interest sign (U+2318)
☮ = peace sign (U+262E)
∃ = there exists (U+2203)
∢ = spherical angle (U+2222)
’ = apostrophe (decimal 8217)
Δ, Й, ק, م, ๗, あ, 叶, 葉, and 냻

/developer   〆   permalink

Friday, September 16th, 2005

Useful Commands for Python Debugging

As explained in the Python Library Reference documentation, command-line debugging in python is made possible by the pdb module.

I like using it this way:

python -m pdb myscript.py

Once you’re in the debugger, the following commands were most useful.

h(elp): show me some help

w(here): print the current stack trace (where is the code now?)

u(p) and d(own): navigate up/down within the stack heirarchy

s(tep): run current line of code, stopping within sub-functions

n(ext): run current line of code, stopping at next line in the current function (aka step over)

b(reak): specify a breakpoint

c(ont(inue)): run until you hit a breakpoint

l(ist): show the source code surrounding the current line

p <expression>: print the contents of an object <expression>

q(uit): quit the debugger and your program

/developer   〆   permalink

Monday, September 12th, 2005

Web Development Trends for 2006

Anil Dash (of Six Apart) on web developer trends.

/web   〆   permalink

Friday, September 9th, 2005

Setting bash command history expansion to use the up arrow like MATLAB

This is one of those simple once you know it but annoying to figure out settings. Via google, I found the solution — add the folling lines to “.inputrc” in your home directory:

"\e[A": history-search-backward
"\e[B": history-search-forward

For extra fun, you can make the command line cycle through options instead of printing them all when you press TAB. Try adding the following line (via macosxhints):

TAB: menu-complete

The jury in my head is still out on if I prefer this behavior. I wish they would just hurry up and decide so I can get used to it.

Update: Note that this takes effect in new terminal windows and new logins, not your current command line session.

Update 2: Steve suggested an alternative approach is to add the following lines to “.profile” or “.bashrc”:

# make bash autocomplete with up arrow
bind '"\e[A":history-search-backward'
bind '"\e[B":history-search-forward'

# make tab cycle through commands instead of listing
bind '"\t":menu-complete'

/mac   〆   permalink

Friday, September 2nd, 2005


Some good articles on XMLHttpRequest

/web   〆   permalink

Friday, September 2nd, 2005

MATLAB Update to R14 Service Pack 3

Tommorrow, The Mathworks released an update to MATLAB. It’s funny that I’m reading about it right now, yet it is not released until tomorrow. Some of the improvements of interest to me (and to Steve) include:

  • better Mac support for plotting, speed, and the compiler
  • large scale modeling which seems to be their buzzword for the integration of Simulink and Stateflow with GUI navigation
  • bug fixes in the Image Processing Toolbox, including an improved imagerotate

/tech   〆   permalink

Thursday, September 1st, 2005

Quasi-Monte Carlo Metropolis algorithm

According to the PNAS Journal (a favorite of Berkely Groks), the quasi-Monte Carlo Metropolis algorithm can get your results much quicker if your MC problem happens to fit their conditions: it has to be “completely uniformly distributed” (CUD). If you have a CUD problem, PNAS can solve it (those of your giggling at this are immature).

Thanks to my friend Sotos for pointing this one out.

/tech   〆   permalink

Thursday, September 1st, 2005

AJAX 10-minute Tutorial

A very simple and nice tutorial on AJAX (interactive web done right). It may take him 30 seconds but it takes me 10 minutes. I guess I’m slow.

/web   〆   permalink

Tuesday, August 30th, 2005

Respect the launchd

This saga was enabled by my recent upgrade to Mac OS X 10.4 (the upgrade itself went very smoothly). I decided that I should setup squid to run automagically via launchd. Luckily, faithful reader Steve wrote a tutorial that explaines exactly how this should work.

It’s all working great now, but that took a little doing. I followed Steve’s commands exactly but ran into trouble because of a permissions problem with the cache. Steve recommended changing the permissions (sudo chmod -R 755 /sw/var/cache/) and I now realize that following his advice would have fixed the problem right away.

Instead of listening to the Wise Words of Steve, I decided it would make sense to do a sudo killall launchd. Oops. If I would have read this more carefully, I might have remembered that launchd is now responsible for starting the window manager on Tiger, but alas, I was driven to figure it out without thinking.

So, you might ask at this point: what happens after you sudo killall launchd? As happens often in scientific inquiry, I have stumbled upon the answer to this oft-pondered quandry by chance.

Here’s what happened:

  • Apps that were already running continued to run, minus network connections
  • New apps wouldn’t launch — the app would bounce in the Dock forever
  • Couldn’t Shut Down, Restart, or Log Out

I guess the lesson is: typing sudo killall whatever on stuff you don’t know anything about is probably a bad idea.

/mac   〆   permalink

Tuesday, August 30th, 2005


For travel, visit kayak, another very simple, clean interface. After the search completes, it has awesome little sliders to narrow your results by price and times.

I suppose the theme of the day has become simple web interfaces.

/web   〆   permalink

Tuesday, August 30th, 2005


Indeed is a new job search company. Googley-simple interface that meta-searches many of the major job listings online. (via This is going to be BIG!’s 10 Steps to a Hugely Successful Web 2.0 Company, also a good read)

/web   〆   permalink

Wednesday, August 24th, 2005

WebOS Coming?

Jason Kottke (who makes a living running his interesting links website) explains the idea for a WebOS in his article entitled GoogleOS? YahooOS? MozillaOS? WebOS?. His idea is that a users of WebOS only need to run a browser and web server locally and then all of the actual work can be done in web applications.

Some current web apps that are already trending toward a WebOS include Gmail, Flickr, and Bloglines. In the future, we’d expect IM, word processing, spreadsheets, iTunes, backup, and all of those fun business apps.

One of his key ideas in making this all possible is that the local web server would provide synchronization & caching of local changes to your data as necessary so you don’t have to be connnected to the internet to use web applications. As you connect to the internet, the local server and remote server synchronize without the user worrying about it (think BlackBerry for the desktop).

A couple of his best ideas for WebOS apps:

Gmail. While online, you read your mail at gmail.com, but it also caches your mail locally so when you disconnect, you can still read it. Then when you connect again, it sends any replies you wrote offline, just like Mail.app or Outlook does. Many people already use Gmail (or Yahoo Mail) as their only email client…imagine if it worked offline as well.

Newsreader. Read sites while offline (I bet this is #1 on any Bloglines user’s wish list). Access your reading list from any computer with a browser (I bet this is #1 on any standalone newsreader user’s wish list).

/web   〆   permalink

Wednesday, August 24th, 2005

Google talk

Today Google released thier newest product/service — Google talk — as Windows-only client software. It’s really too bad this didn’t end up being a web applicaiton. Gmail was done so well that it had me hoping for a great web-i-fied IM client too. Kottke was also dissapointed.

For us mac-loving freaks, even though we didn’t get an actual Google talk client, there is a smidgen of love: it works with iChat allowing both text and audio chat, even though Google says it only works with text.

/web   〆   permalink

Tuesday, August 23rd, 2005

Einstein’s Big Idea

PBS’s NOVA is airing the story behind E = mc^2 on Tues, Oct 11.

/science   〆   permalink

Tuesday, August 23rd, 2005

How to see if someone is trying to guess your ssh passwords

Tipped off by this Mac OS X hint I went looking to see if anyone might be trying to break into my computer via scripted ssh login/password guessing attacks. After reading some of the comments on macosxhints and doing some digging, I figured out a nice way to check for attacks by using grep to search the system.log files.

zgrep 'Illegal' /private/var/log/system*

zgrep (a variant of grep) searches the archived log files in addition to the current ones. On my system, this produced a long list of breakin attempts that look like they are coming from an automated script running through user names.

I’m not sure if disabling the ssh password, as the hint suggests, is the best idea to counter this attack (and, I admit, I’m too lazy to setup the crypto keys thing for now).

For my own home computer, I thought it would be better to only allow login for myself and keep my password very strong. To accomplish that, I edited the cooresponding settings in /etc/sshd_config to to the following:

# Enable only SSH2 protocol (not the less secure SSH1)  
Protocol 2

# Don't allow any remote root login
PermitRootLogin no 

# Make sure only a particular user (dorkuser) can SSH
AllowUsers dorkuser

That’s it! Much more secure. dorkuser is, of course, not my real username.

For fun, here’s a look at a processed (minus IPs and my user name) snippet from the log:

08:38 sshd: Illegal user wwwrun
08:40 sshd: Illegal user wwwrun
08:42 sshd: Illegal user wwwrun
08:44 sshd: Illegal user wwwrun
08:46 sshd: Illegal user wyoming
08:48 sshd: Illegal user wyoming
08:50 sshd: Illegal user wyoming
08:52 sshd: Illegal user 0002593w
08:54 sshd: Illegal user 001
08:56 sshd: Illegal user 1
08:58 sshd: Illegal user 123
09:00 sshd: Illegal user 1234
09:02 sshd: Illegal user 127
09:04 sshd: Illegal user 16
09:06 sshd: Illegal user 1a4
09:08 sshd: Illegal user 1dd
09:10 sshd: Illegal user 22b
09:12 sshd: Illegal user 2a
09:14 sshd: Illegal user 3e
09:16 sshd: Illegal user 4ct
09:18 sshd: Illegal user 511
09:20 sshd: Illegal user 561
09:22 sshd: Illegal user 587
09:24 sshd: Illegal user 72
09:26 sshd: Illegal user 75
09:28 sshd: Illegal user 9ia
09:30 sshd: Illegal user a
09:32 sshd: Illegal user a
09:34 sshd: Illegal user a_kirchner
09:36 sshd: Illegal user a1775b
09:38 sshd: Illegal user a4
09:40 sshd: Illegal user aaaa
09:42 sshd: Illegal user aabraham
09:44 sshd: Illegal user aadriano
09:46 sshd: Illegal user aaghie
09:48 sshd: Illegal user aagt
09:50 sshd: Illegal user aahie
09:52 sshd: Illegal user Aaliyah
09:55 sshd: Illegal user aaltje
09:57 sshd: Illegal user aandjstructural
09:59 sshd: Illegal user aando
10:01 sshd: Illegal user Aaron
10:03 sshd: Illegal user aaron
10:05 sshd: Illegal user aaron2
10:07 sshd: Illegal user aart
10:09 sshd: Illegal user aatef
10:14 sshd: Illegal user aba
10:16 sshd: Illegal user aba
10:18 sshd: Illegal user Aba
10:20 sshd: Illegal user abaintelkam
10:22 sshd: Illegal user abawah
10:24 sshd: Illegal user abby
10:26 sshd: Illegal user abc
10:28 sshd: Illegal user abculp
10:30 sshd: Illegal user abe

/mac   〆   permalink

Tuesday, August 23rd, 2005

Patent Reform with First-to-File

Saw this article on groklaw that points out the Patent Reform Act of 2005 wants to change our US patent system from first-to-invent to first-to-file.

Thoughts? (I’m looking at you, Kris)

/web   〆   permalink

Tuesday, August 23rd, 2005

Copilot’s Tech and MatrixSSL

Fog Creek Copilot’s (Joel Spolsky’s latest product that was developed by interns in one summer) technical details explained. It’s a nice combination and simplification of existing tech (TightVNC and MatrixSSL) and that should be useful for many users.

Also, MatrixSSL looks to be a good simple SSL implementation. Here’s some specs included in the GNU Public License version:

  • < 50KB total footprint with crypto provider
  • SSL server and client support
  • Included crypto library - RSA, 3DES, ARC4, SHA1, MD5
  • Full support for session resumption/caching
  • Fully cross platform, portable codebase; minimum use of system calls
  • TCP/IP optional
  • Multithreading optional
  • Only a handful of external APIs, all non-blocking
  • Example client and server code included
  • Clean, heavily commented code in portable C
  • User and developer documentation

/web   〆   permalink

Monday, August 22nd, 2005

“Fundamentalism was enabled by science”

In this post, Ned Gulley points out a recent New Scientist magazine article that links modern Fundamentalism to the forgotten ideas of mythos and logos.

/web   〆   permalink

Monday, August 22nd, 2005

Side Scrolling Web Design

The International Herald Tribune has a great side-scrolling web design powered by CSS and JavaScript. It works by dynamically flowing text into 3 columns depending on the height of your browser window. There are Next Page and Previous Page controls that work instantly because you already have the full articly text — a JavaScript simply displays the section you are interested in seeing.

Check out this article for an example. I’m wondering how this handles pictures embedded in the article. Can it flow around them nicely? Their JavaScript had some variables that referred to an “articlePhoto” but the code was commented out, so maybe there are some problems.

/web   〆   permalink

Sunday, August 21st, 2005

Sleepy Deepey

Mr Hoelzer recently linked to a Harvard magazine article, Deep into sleep, that convinced me it might be worth trying sleeping more. My hate of sleep has been broken a bit.

Especially The Fatigue Tax section of the article seems to be scientifically sound. However, in defense of my personal “I hate sleep — it’s a waste of time” doctrine, I would have to point out that there is a bit of a problem with the part of this article that talks about less sleep hastening death. This may be a confusion correlation and causation. I’ve not read any of the actual research and this is really out of my league to evaluate very well, so that’s about all I can say for now …

/web   〆   permalink

Sunday, August 21st, 2005

Gizmo vs Skype

Michael Robertson advocates Gizmo, a competator to Skype, the free program that lets any user make telephone calls over the internet. Of course, he would advocate it since he started the company that makes it, SIPphone.com. Anyhoo, it does look pretty nice at first glance. Wanna try, Kris or Steve?

/web   〆   permalink

Friday, August 12th, 2005

The Bro Does a Site Update

My brother, Arik Brooks, just updated his website and I definitely like the new design because it’s much cleaner both visually and in the code (he’s now using CSS for almost all of the formatting).

If you’d like to look at the design before and after, check out the following screenshots of the main page (or just check the internet archive).

Before (now this is old-school html if I ever did see it):
Old Arik Website

After (much nicer with a good style):
New Arik Website

A notable new section describes their New House including weekly photos of the house he and Laura are having built. I’m excited to visit once it is complete!

Also, his wife Laura now has a page as well. I like the clean blue design on her page.

Cheers, Arik and Laura!

/life   〆   permalink

Wednesday, August 10th, 2005

Installing Subversion on Windows with No Sweat

Mere-Moments Guide to installing a Subversion server on Windows allowed me to install Subversion within about 10 minutes on my laptop. Thanks, Joe White, for doing the work to write this easy-to-follow guide.

/developer   〆   permalink

Wednesday, August 10th, 2005

How Google Suggest Works

Google suggest (which I mentioned in December) is demystified by Chris Justus. He de-obsfucates the code to explain how Google’s JavaScript/XMLHttpRequest engine works.

/web   〆   permalink

Wednesday, August 10th, 2005

“ab” is a Bad Name for a Program, but it’s a Useful Tool for Benchmarking Apache

ab -n 1000 -c 150

where the arguments specify:
-n number of requests to use in the benchmarking session
-c number of simultaneous requests to perform

As noted in the comments of ridiculous_fish’s Mystery entry, there is apparently a stalling problem with using ab that may be caused by something deeper in OS X.

/web   〆   permalink

Wednesday, August 10th, 2005

Define Ajax

Definition of Ajax by Jesse James Garrett that is probably the origin of the term that simplifies “Asynchronous JavaScript + CSS + DOM + XMLHttpRequest”.

The acronym AJAX comes from Asynchronous JavaScript And XML.

/web   〆   permalink

Tuesday, August 9th, 2005

JavaScript gets no empathy

Douglas Crockford debunks some myths and stands up for JavaScript.

/web   〆   permalink

Tuesday, August 9th, 2005

How to Write More Clearly

I stumbled across Michael A. Covington’s presentation on how to write more clearly, think more clearly, and learn complex material more easily. I enjoyed it.

/web   〆   permalink

Tuesday, August 9th, 2005

Blogs 101

The New York Times has a useful blogroll that links to some of the supposed “best” web logs out there (athough they missed my two favorites: DrunkenBlog and Daring Fireball).

/web   〆   permalink

Tuesday, August 9th, 2005

Steve did something with his site that I didn’t notice until now

Spell with Flickr

I wonder if Spell with Flickr could be used in a captcha implementation.

/web   〆   permalink

Tuesday, August 9th, 2005

Politics No Likey

Kris Classen, my good friend and 1 of 2 dedicated readers of the site, offers the following analysis of my previous post.

regarding the news post, he [Paul Graham] is mostly correct for the type of news that makes TV…. they dont have much actual analysis, and they favor worthless human interest stories… however, good papers like the wash post and the NY times actually have interesting articles because the authors bother to do research to add context and meaning to those meaningless presidential speeches… likewise any other specialty publications that focus on their topic (like even the shuttle article you have)—the writers who take the time to do a good job produce an interesting product… i think the bottom line for the guy you are quoting is that he just isnt interested in politics, so he finds politics stories to be uninteresting….

I like Kris’ idea that the value of good reporting is adding context in explaining why things like political speeches happen. As you can see, Kris is a fan of the ellipsis (at least, in email).

/life   〆   permalink

Monday, August 8th, 2005

News that is not New

I really liked this quote in Paul Graham’s latest writing. He’s talking about the fact that a very large amount of the content produced by the news media is not very interesting or thought-provoking.

Most articles in the print media are boring. For example, the president notices that a majority of voters now think invading Iraq was a mistake, so he makes an address to the nation to drum up support. Where is the man bites dog in that? I didn’t hear the speech, but I could probably tell you exactly what he said. A speech like that is, in the most literal sense, not news: there is nothing new in it.

Nor is there anything new, except the names and places, in most “news” about things going wrong. A child is abducted; there’s a tornado; a ferry sinks; someone gets bitten by a shark; a small plane crashes. And what do you learn about the world from these stories? Absolutely nothing. They’re outlying data points; what makes them gripping also makes them irrelevant

Web writing is so much more interesting than “the news”.

/life   〆   permalink

Monday, August 8th, 2005

Critique of _The Alphabet_

Doug Bartow offers this hilarious critique of the alphabet where he rates each letter’s upper- and lower-case pair from Aa to Zz.

It makes me sad because my name includes some of the worst letters in the alphabet, apparently.

/web   〆   permalink

Monday, August 8th, 2005

State of the Shuttle

Here’s a very interesting article that rips up NASA’s shuttle program (via kottke.org). The author stresses that we are spending too much money on the uninteresting experiment of keeping primates alive in space that could be much better used in unmanned exploration programs like the Mars rovers or Titan lander.

we have the right to demand that the space program have some purpose beyond trying to keep its participants alive

/web   〆   permalink

Tuesday, July 5th, 2005

Protect that Gooey Brain

This article at motorcyclistonline.com has a hilarious/frightening description of helmet testing. Favorite quote: “To minimize the G-forces on your soft, gushy brain as it stops, you want to slow your head down over as great a distance as possible.”

Sure makes you think twice about not wearing a helmet on a bicycle or motorcycle.

/web   〆   permalink

Monday, June 27th, 2005

Sparklines: Drawing Plots as a Web Service

Check out this awesome plot-drawing program for websites. The source is a python program used as a CGI script on a webserver.

/web   〆   permalink

Monday, June 27th, 2005

Google Guide

David Pogue recommends the google guide, a detailed list of tips on how to do advanced searches with google.

/web   〆   permalink

Friday, June 24th, 2005

More Python: psyco and pythonmac

pythonmac.org has some very nice python packages pre-built for Mac OS X.

Psyco can really speed up the execution of Python code (only on i386 processors for now). It is a just-in-time compiler so you can run your code fast with no change in your souce code. If you’re interested in more tech detail, check out the theory (pdf).

Some other packages of interest are Matplotlib (provides a plotting library with commands similar in syntax to MATLAB), numarray (array/matrix processing), py2app (converts python scripts to standalone Mac OS X apps), and the Python Imaging Library (PIL).

/developer   〆   permalink

Friday, June 24th, 2005

Codeville Version Control

The distributed version control system called Codeville sounds very nice. I’d like to check it out. Favorite feature: “Almost trivial to use for personal projects without running a server”.

/developer   〆   permalink

Tuesday, June 21st, 2005

Norm Matloff’s Python Tutorials

Professor Norm Matloff from University of California at Davis has many sets of nice tutorials. I especially liked his stuff on Python.

Actually, he has quite a few nice articles and tutorials on programming:

/developer   〆   permalink

Tuesday, June 21st, 2005

Flyakite OSX On a Web Page

The folks at FlyakiteOSX have created a very cool web site that acts exactly like Mac OS X. Very impressive.

/mac   〆   permalink

Tuesday, June 21st, 2005

Real-time file usage info in OS X

Jonathan Rentzsch describes the details on how to use the command line tool fs_usage to discover what files a program is opening, reading, writing, saving, and so on. This could be is quite useful for figuring out where a program is storing information or what might be going wrong with a mis-behaving app.


For example, the following shows filesystem activity for Safari (-w forces a wide detailed output and -f filesys shows only file system related output instead of including network related output too).

sudo fs_usage -w -f filesys Safari

See also:

  • sc_usage (system call usage statistics)
  • latency (monitors scheduling and interrupt latency)
  • vm_stat (virtural memory statistics)

/mac   〆   permalink

Tuesday, June 14th, 2005

An Odd Yet Interesting Site

Fake is the New Real is interesting. I got a kick out of electorial college reform and subways at scale.

(the author seems to live near Chicago)

/web   〆   permalink

Sunday, June 12th, 2005


Some cool dorky videos are available here. The authors describe how to build a wireless camera detector in episode 1 and a mythTV box in episode 2.

/web   〆   permalink

Thursday, June 9th, 2005

Intel Mac Comic

Funny …

/mac   〆   permalink

Monday, May 30th, 2005

Share Papers You’re Reading

Check out CiteULike … it tracks what academic papers people are currently reading. You can “share, store, and organise” the stuff you’re reading.

/web   〆   permalink

Monday, May 30th, 2005

Picking a Color?

If you’re having troubling choosing colors for a web design (or really any design), have a look at this color combo website for inspiration.

/web   〆   permalink

Monday, May 30th, 2005

Windows Freeware that is Useful

When you’re forced to use Windows, here a good list of freeware that you might consider installing.

/mac   〆   permalink

Tuesday, April 26th, 2005

Great Camera Reviews

Check out www.dpreview.com, www.dcresource.com, and www.digitalcamerainfo.com for some very nice digital camera reviews.

/web   〆   permalink

Tuesday, April 26th, 2005

Quote: Simple Human Brain

If the human brain were so simple that we could understand it, we would be so simple we couldn’t.

/life   〆   permalink

Tuesday, March 29th, 2005

Paul Graham’s “Writing, Briefly”

I liked Paul Graham’s tips on writing. It reads like a bullet list, which makes it a little choppy, but it succeeds in offering many useful ideas in a form that is compact enough to understand all-at-once. Here are my favorite points:

  • write version 1 fast
  • rewrite many times
  • if you can’t get started, verbally explain your point to a friend
  • don’t try to sound impressive
  • work in fairly long chunks of time
  • use simple words

/web   〆   permalink

Tuesday, March 29th, 2005

Image Processing Test Image: The Burger Girl

Here’s a test image I enjoy. Click the image to see an ucompressed 512x512 version (640KB PNG).

Burger Girl

/image processing   〆   permalink

Wednesday, March 23rd, 2005

MarsEdit … Tried the Demo Once and I’m Already Loving It

I decided to give MarsEdit from ranchero software a try and it was very enjoyable. It took all of 5 minutes to get it working great with my Blosxom weblog software. You simply point it towards the folder your weblog files are stored in and it configures the rest very nicely. I like how it lets you compose drafts before publishing them to your blog … just like composing an email before sending it.

The only reason it took 5 minutes instead of 2 is that I wanted the preview mode to use Markdown. As suggested here, the MarsEdit developers already made this very easy to change the default mode to Markdown. Simply setup a default by typing the following into a Terminal window (it should all go on one line).

defaults write com.ranchero.MarsEdit 
    previewWithMarkdownAlways YES

/web   〆   permalink

Sunday, March 20th, 2005

Looking for new design ideas: my blog is ugly …

I’m on a search for ideas on how to give my website and blog a nice makeover. Open Source Web Design might be nice — there seems to be no fee associated with thier designs.

Update: here’s a nice implementation of rounded corners without using images called Nifty Corners. I like it.

/web   〆   permalink

Sunday, March 20th, 2005

What makes an image look good?

I gave a presentation on image quality and some related topics (global and local image phase, steerable pyramid wavelet transforms, statistical modeling of natural images, and structural image quality).

Some of the most interesting questions resulting from the talk were:

  1. How should one interpret the diagram from the Phase & Perception of Blur paper — specifically, what do the converging lines represent? My current interpretation is that they are equal-phase contours corresponding to a well-localized feature point at any scale.

  2. What is the gaussian scale mixture (GSM) model? I hope to better explain and interpret this in an upcoming blog entry.

  3. How do SSIM and CWSSIM compare to the latest perceptual error-based models of image quality (such as ones derived from the Watson paper)? A specific test could evaluate structural methods with images that are only degraded with a just-noticable difference (JND). In other words, look at errors that are just visible at the threshold of human perception instead of the gross “suprathreshold” errors that we looked at before.

/image processing   〆   permalink

Wednesday, March 16th, 2005

Papers on Perceptual Image Quality Metrics, Image Phase, Subband Transforms, and Image Statistics

This entry documents the most interesting papers I’ve been reading and studying this quarter. I have sorted them into categories and then sorted chronologically to show the influence that early papers has on the newer ones.

Image Phase

1975 Kuglin and Hines, “The phase correlation image alignment method”
1979 Oppenheim, Lim, Kopec, and Pohlig, “Phase in speech and pictures”
1980 Hayes, Lim, and Oppenheim, “Signal reconstruction from phase or magnitude”
1999 Thomson, “Visual coding and the phase structure of natural scenes”
2000 Kovesi, “Phase congruency: A low-level image invariant”
2003 Wang and Simoncelli, “Local Phase Coherence and the Perception of Blur”

Subband Transforms: Steerable Pyramids

1991 Freeman and Adelson, “The design and use of steerable filters”
1991 Simoncelli, “Shiftable Multi-scale Transforms”
1995 Simoncelli, “The steerable pyramid: A flexible architecture for multi-scale derivative computation”
2000 Portilla, “A Parametric Texture Model based on Joint Statistics of Complex Wavelet Coefficients”

Statistical Image Modeling

2002 Srivastava, “On advances in statistical modeling of natural images”
2005 Simoncelli, “Statistical Modeling of Photographic Images”
2005 Wang, “Reduced-Reference Image Quality Assessment Using a Wavelet-Domain Natural Image Statistic Model”

Perceptual Image Quality

1998 Watson, “Toward a perceptual video-quality metric”
1998 Eckert, “Perceptual quality metrics applied to still image compression” 2001 Chen and Pappas, “Perceptual Coders and Perceptual Metrics”
2002 Wang, “Why is Image Quality Assessment So Difficult?”
2004 Pappas, “Perceptual Criteria for Image Quality Evaluation”
2004 Wang, “Image Quality Assessment- From Error Visibility to Structural Similarity”
2005 Wang, “Translation Insensitive Image Similarity in Complex Wavelet Domain”

/image processing   〆   permalink

Tuesday, March 15th, 2005

Eero Simoncelli’s “Statistical Modeling of Photographic Images”

Main idea:

Out of the huge set of possible images, a particular subset of likely images exist, and these images can be described using a probability model.

Three probability models are discussed:

  1. The Gaussian Model
    • pros
      • easy computations
      • single parameter
      • direct application to compression and noise removal
    • cons
      • unconstrained phase (can destroy image content)
      • doesn’t capture structure in most real images
  2. The Wavelet Marginal Model
    • pros
      • captures non-gaussian histogram characteristics (with peaks at zero and long tails)
      • better fit (reduced entropy) leads to improved compression and noise removal
    • cons
      • important image information is still not captured
      • wavelet coefficients are not independent — their high-order statistics are correlated
  3. Wavelet Joint Models
    • pros
      • adapts to local variance
      • gaussian scale mixture (GSM) model is useful
      • gives much improved noise removal results
    • cons
      • still can’t capture all image structure

/image processing   〆   permalink

Tuesday, March 15th, 2005

Feedback and Answers on SSIM

Thanks to my dedicated reader, Steve, for providing feedback to my recent entries on image quality using structural similarity. He had these ideas:

  1. Start with a low quality image (such as one that is already blurry) and degrade it more. See if results still are good — does SSIM measure this further degradation in a reasonable way?

  2. What happens with an image that is all noise and then gets distorted? There is no structure to start with.

I ran a quick test to check out the first idea. The results follow. Click the thumbnails to view full-sized images. The image on the left is the image that has been blurred once, while the one on the right has been blurred twice.

Reference Image Degraded Image

The additional blurring operation gave a MSE = 9.9 and a MSSIM = 0.975. Qualitatively, this result makes sense — I think we lost much more visual information with the original blur than this one.

In response to the second question (what if the original image is noise only), I found that the results depend on the type of distortion. Distortion by shifting the mean or stretching the contrast gave results similar to those obtained when using natural images (MSSIM = 0.998 or so).

However, it was interesting look at the distortion caused by compressing the noise image using jpeg to achieve a MSE = 60. To achieve a MSE of 60, the jpeg algorithm couldn’t compress the noise image (shown below) very much. I can’t distinguish between the “original” and “degraded” images, therefore, my intuitive understanding is that the compressed noise-only image has a high image quality. The high MSSIM result of 0.952 coincided well with my intuition.

Noise Image

/image processing   〆   permalink

Monday, March 14th, 2005

The Importance of Phase in Images

Many papers have suggested that phase information in an image is very important. A report from Alan Oppenheim in 1979 entitled Phase in Speech and Pictures demonstrated that much of the structural information in an image is preserved even when it is represented by phase alone.

He describes an experiment in which an image is decomposed into phase and magnitude parts using a Fourier transform, then the magnitude is set to unity, and an image is reconstructed from the remaining phase information.

The idea is that Fourier phase includes important information about the features and details in an image. The following figures show an original and the phase-only reconstruction of an example image. These were produced by the following MATLAB commands:

% start with an image stored in variable "im"
im_fourier = fft2(im);
im_phase = angle(im_fourier);
im_reconstruct_from_phase = abs(ifft2(exp(i*im_phase)));

% display original & reconstructed image 
% (scaled for visibility)

original einstein phase-only einstein

Many of the high-frequency structures have been preserved in the phase-only image. Indeed, the transformation into a phase-only image can be approximately interpreted as a high pass filtering operation.

It turns out that the intelligibility of the phase-only representation depends on the magnitude “smoothness” of the signal being looked at. Since most natural images contain mostly low frequency content, their magnitude rolls off quickly at high frequency and this leads to the situation where the “high pass” interpretation of the phase-only transform holds.

/image processing   〆   permalink

Thursday, March 10th, 2005

Overview of Zhou Wang’s “Image Quality Assessment: From Error Visibility to Structural Similarity”

The main idea in this paper (available here) is that human visual perception is built to understand a scene based on its structure suggesting that this structural information is the key component of visual quality. A good way to measure image quality, then, is to quantify the degradation in the structure within a distorted image versus an original.

This is a change in the fundamental assumption from past image quality work. Previous approaches measure perceptual image quality assuming that image intensity is the key component of visual quality. These methods often measure intensity error and then penalize these errors according to visibility.

To get started, let’s go over some definitions of commonly used “image quality” terms and abbreviations.

  • image quality: a field of study with goals of quantifying subjective human-perceived visual quality and developing objective measures that accurately predict subjective quality
  • subjective image quality: human-perceived visual quality, often measured for a group of test subjects and reported as a mean opinion score (MOS)
  • objective image quality: quantitative measures that can accurately predict subjective image quality
  • full-reference: the complete undistorted original image is available
  • no-reference or blind: only the distorted image is available
  • reduced-reference: partial information (extracted features) about the original image is available
  • MSE: mean squared error, the average of squared pixel intensity differences
  • PSNR: peak signal-to-noise ratio

Error-Sensitivity Approach

The assumption here is that the perceived distortion is directly related to the error signal. These approaches apply a sequence of steps consisting of: preprocessing to scale/align and account for human color perception, CSF (contract sensitivity function) filtering to account for human spacial and temporal frequency response, channel decomposition into temporal and spacial subbands, error normalization according to a perceptual masking model, and error pooling to weight errors and come up with a single quality number.

Some common problems with these approaches have been emphasized in this paper, including:

  • the quality definition problem: it’s not clear that error visibility corresponds well with image quality
  • the supra-threshold problem: most perceptual studies have been evaluated with small errors, where the error is producing a JND (just noticeable difference) and therefore, the studies don’t account for large errors very well
  • the natural image complexity problem: the images used to develop perceptual threshold are very simple compared to natural images
  • the cognitive interaction problem: foveation (where a person is likely to look in an image) and cognation of the image also leads to variable image quality perception

Structural Similarity Approach

The goal of the new approach is to “find a more direct way to compare the structures of the reference and the distorted signals.” The assumption is humans extract structural information from images — not pixel intensities.

An image quality metric based on structural similarity can overcome many of the problems associated with the error-sensitivity method. The SSIM index is one specific implementation of a structural similarity approach — it is not the only possible architecture that uses the structural similarity paradigm, but it is interesting as a first example of structural similarity’s utility.

SSIM: An Example Structural Approach

Structural Similarity Diagram

Algorithm Description

The figure above shows a proposed image quality measurement system that compares registered images x and y. The similarity measure SSIM(x,y) is a function of luminance l(x,y), contrast c(x,y), and structure s(x,y). Also, it is necessary to include three constants (C1, C2, and C3) to prevent unstable results when the denominators approach zero.

The average intensity (ux and uy) is used to define the luminance function

l(x,y) = (2*ux*uy + C1) / (ux^2 + uy^2 + C1).

The standard deviation (sx and sy) is used to define the contrast function

c(x,y) = (2*sx*sy + C2) / (sx^2 + sy^2 + C2).

The correlation (sxy) after removing the mean and normalizing by the standard deviation is used to represent structural similarity:

s(x,y) = (sxy + C3) / (sx*xy + C3).

Finally, the similarity is computed as a combination of the luminance, chrominance, and correlation in a general form

SSIM(x,y) = l(x,y)^a * c(x,y)^b * s(x,y)^g

where a > 0, b > 0, and g > 0 are parameters that determine the relative weighting of each term.

For the specific implementation in this paper, SSIM is simplified by choosing a = b = g = 1 and C3 = C2/2, giving

SSIM(x,y) = -----------------------------

Local image statistics are measured in a weighted 11x11 circular window around each pixel to generate SSIM for each pixel. A few other numbers are needed to fully define the parameters C1 and C2. The dynamic range of the pixels is defined as L (255 for 8-bit grayscale). Then, C1 and C2 are given as functions of L and some small constants K1 << 1 and K2 << 1.

C1 = (K1*L)^2
C2 = (K2*L)^2

In the paper, the author uses these settings: K1 = 0.01; K2 = 0.03. A single number representing overall image quality is computed by averaging the SSIM values to give a mean:

MSSIM(X,Y) = 1/M * sum( SSIM(:) ).

Test Results

Using the example MATLAB implementation referenced in the paper, I compared MSSIM with mean-squared error (MSE) for a few images. The following figure shows the test images I used. Also, there is a high-resolution version (540kB).

Test Images

From left-to-right starting across the top row, these images are 1. the original version 2. jpeg-compressed 3. blurred 4. added gaussian white noise 5. mean-shifted 6. contrast-stretched

All of these versions were created to give an equal mean-squared error (MSE) of 60 — this clearly demonstrates that MSE does not correlate with perceived quality. It is clear that the image quality of 2 and 3 is much worse that the others. Let’s see if MSSIM works better.

Table 1: Comparing Image Quality Measures
Image #     MSE     MSSIM
  1          0      1.000
  2         60      0.817
  3         60      0.881
  4         60      0.638
  5         60      0.998
  6         60      0.998

Structural similarity accurately predicts the high quality of images 5 and 6, the mean and contrast-shifted images.

It is interesting to discuss the results from image 4, the one with gaussian white noise added. MSSIM is the lowest for this image, contradicting my expectation that image 4 has a perceptual image quality somewhere between the worst images (2 and 3) and the best images (5 and 6). I wonder why this result didn’t match my expectations …

Anyway, I hope you enjoyed this summary. Please send me suggestions and/or comments.

/image processing   〆   permalink

Wednesday, March 2nd, 2005

Where am I: My Latitude and Longitude in GeoURL

GeoURL is an interesting website that implements a location-to-URL reverse directory that can be used to find URLs by proximity to a given location.

I used terraserver to find my location — it turns out I’m at 42.05062 degrees latitude and -87.68261 degrees longitude (western hemisphere longitudes are negative). Interestingly, my building didn’t exist in 2002 when this sattelite picture was taken — it was just a parking lot then.

To become a part of the GeoURL database, I added the following <meta> tags to my website’s <head> section:

<meta name="ICBM" content="42.05062, -87.68261" />
<meta name="DC.title" content="Alan The Dork" />

Then, I told the GeoURL server that my page needs to be indexed by using the ping form mentioned in step 4 of these instructions.

Now, you can look at the sites near me.

/web   〆   permalink

Thursday, February 24th, 2005

Get Back To Work

While procrastinating by surfing the internet, I stumbled across an article on overcoming procrastination. I love his “Get Back to Work” home page idea.

/life   〆   permalink

Wednesday, February 23rd, 2005

Intro to GPS

Trimble presents a very straight-forward explanation of how GPS works that I enjoyed.

/web   〆   permalink

Tuesday, February 22nd, 2005

Image Quality Assessment

I’m currently taking a course on digital video processing given by Prof. Thrasyvoulos Pappas, my advisor in the Image and Video Processing Laboratory (IVPL) at Northwestern.

For the course project, I’m studying objective image quality metrics, or the computation of a number that corresponds to the perceived quality of an image.

One image quality metric that is often used when comparing a reference and degraded image is the mean squared error (MSE), computed by simply averaging the squared differences between the reference and degraded image. For example, the degraded image could be a highly compressed version of the reference. While MSE is simple to understand and easy to compute, it does not achieve a good correspondance with perceived image quality.

Some interesting image quality methods have been proposed and tested recently. Junquig Chen from the IVPL evaluates metrics used when optimizing image compression, comparing MSE with subband, wavelet, and DCT-based metrics (see the SPIE paper).

Also, some very intersesting work has come from Eero Simoncelli’s Laboratory for Computational Vision (LCV) at New York University. Zhou Wang’s work on his Structural SIMilarity (SSIM) index is the best approach I’ve found so far for quantitatve evaluation of image quality for many different applications.

In upcoming blog entries, I hope to summarize and review some of the most interesting and influential papers that deal with image quality. I’ll start with Zhou Wang’s “Image Quality Assessment: From Error Visibility to Structural Similarity”. Stay tuned ….

/image processing   〆   permalink

Monday, February 21st, 2005

2005 Cubs Tickets

It’s that time of year again — time to prepare for the 2005 Cubs season by desperately trying to get tickets.

They go on sale this Friday, February 25th. The online “waiting room” is open at 9:30 a.m. and then sales start at 10:00. Also, you can get a wristband Wednesday or Thursday and if you’re lucky, acquire some tickets in person at Wrigley Field on Friday. For more information, check out the Cubs single-game ticket instructions.

/life   〆   permalink

Tuesday, February 15th, 2005

Faster LAME for TiVo AAC Playback

In my previous post, I was hoping to speed up the AAC-to-MP3 transcoding by compiling LAME on my own. This turned out to be very easy and gave quite an impressive performance improvement.

Here are the steps on the command line for a G4 (from the blacktree forum). Note that the multi-line commands should be entered on one line.

$ cd ~
$ mkdir tmp
$ cd tmp
$ curl http://internap.dl.sourceforge.net/sourceforge/lame/lame-3.96.1.tar.gz -o lame-3.96.1.tar.gz
$ tar xvzf lame-3.96.1.tar.gz
$ cd lame-3.96.1
$ ./configure CFLAGS="-O3 -falign-loops-max-skip=15 -falign-jumps-max-skip=15 -falign-loops=16 -falign-jumps=16 -falign-functions=16 -malign-natural -ffast-math -fstrict-aliasing -funroll-loops -floop-transpose -mpowerpc-gpopt -fsched-interblock --param max-gcse-passes=3 -fno-gcse-sm -mcpu=G4 -mtune=G4"
$ make
$ sudo make install
$ cd ~
$ rm -rf tmp

After compiling, I compared the resulting binary program in /usr/local/bin/lame to the fink-compiled lame and found that the optimized version was 3.6x faster (7 versus 25 seconds) at compressing an mp3 with the default options.

This optimization reduced my processor usage while transcoding with TiVo from 80% to 25%.

/tv   〆   permalink

Tuesday, February 15th, 2005

TiVo Desktop 1.9 Plays AAC Files

After digging around to learn more about TiVo Desktop 1.9 for Mac OS X, I learned about an interesting hidden feature: you can play back AAC files on your TiVo by using a transcoding feature.

On the TiVo Community Forum thread about version 1.9, a user describes that you can use LAME to transcode unprotected AAC files. This doesn’t get you iTunes Music Store DRM’ed AAC playback, but if you’ve ripped many other CDs in AAC (like I have), you’ll be quite happy about this.

The basic idea is: 1. Install the lame command line program in /usr/local/bin/lame (or do “fink install lame”, then “ln -s /sw/bin/lame /usr/local/bin/lame”) 2. Stop and re-start TiVo Desktop via the Preference Pane 3. Enjoy

On my dual-800 G4 powermac, the fink version of lame used about 75% of one processor to do the real-time AAC to MP3 conversion.

Alternatively, I’m hoping that compiling lame using an optimization suggested on this blacktree forum will give me an improvement.

/tv   〆   permalink

Saturday, February 12th, 2005

TiVo Desktop Mac Goes to 1.9

Grab the update from TiVo or Versiontracker.

Here’s the blurb direct from TiVo:

This update contains: a revised preferences mechanism, support for photo album heirarchies, a new plug-in API, and minor bug fixes.

I installed the TiVo Desktop 1.9 update on my Mac and I was happy to notice that the background process that runs when TiVo Desktop is on is much more efficient. With 1.8, cpu usage was 3-7% all of the time, even when I wasn’t playing music or looking at photos on TiVo. With 1.9, the cpu usage is 0.0% with occasional spikes to 0.9% — much improved.

Also of interest was some of the information displayed by the installer. Here’s a snippet:

Changes since version 1.8 * TiVoDesktop can now work with applications other than iPhoto to share photos. * Enhances performance and stability.

I wonder what applications other than iPhoto they have in mind?

Unfortunately, this update does not support TiVo To Go or the playback of AAC files in Music & Photos. For Mac users, waiting is.

/tv   〆   permalink

Saturday, February 12th, 2005

Someone in Love with TiVo

This hilarious FAQ discribes TiVo in a unique way. It made me cackle.

/tv   〆   permalink

Thursday, January 20th, 2005


A while back, I read In the Beginning … Was the Command Line by Neal Stephenson and I think it eventually led to overcoming my fear of the command line and learning to value a text-based interface for some tasks.

Garret Birkel wrote an interesting update and response to Neil’s work that I enjoyed reading. This update brings the discussion to 2004 is presented interspersed with the original essay: the format works well.

/mac   〆   permalink

Wednesday, December 15th, 2004

iPod Portfolio

I came across an interesting web portfolio created with an iPod-like interface. It even plays music and switches songs while you’re viewing it. Check out a screen shot.

/mac   〆   permalink

Tuesday, December 14th, 2004

DVD Coasters are Really No Fun

Well, they aren’t. Therefore, I link to Steve’s blog entry that says to go to www.nomorecoasters.com. Read it, then buy good DVD-R and CD-R discs in the future. Yes yes.

/web   〆   permalink

Tuesday, December 14th, 2004

Map24 is a Good Map

Map24 is similar to mapquest or yahoo maps in purpose, but it shines in implementation. The interactive map is a Java applet that lets you smoothly zoom, scroll, and navigate the map. It updates very smoothly and nicely without reloading the webpage.

/web   〆   permalink

Monday, December 13th, 2004

Google Suggest

Google Labs is always coming up with interesting ideas. They’ve got another winner with the newest addition: Google Suggest.

It’s a makeover of google.com with a tweak that auto-completes the search term you are typing. A drop-down list of popular search terms is generated with each character typed. The amazing part is how quickly it works.

As documented in this slashdot comment, it is implemented using an XmlHttpRequest in a Javascript that sends very small amounts of data back and forth to update the list.

/web   〆   permalink

Wednesday, December 8th, 2004

Where is the Condo?

Here is a map showing where our condo is. The red square is our place. There is public parking for a good price just north of the dark blue square. Mi casa, su casa.

800 Elgin Ave

/life   〆   permalink

Saturday, December 4th, 2004

Graphical User Interface (GUI) Design Tips

Benjamin Roe’s “Usable GUI Design: A Quick Guide” nicely summarizes some of the most useful ideas in user interface design. His 5 major points are:

0) The user is not “using” your application, rather getting their work done with the help of your application.

1) Fitt’s law: big stuff close to your mouse is easier to click on.

2) Avoid unnecessary interference with your user.

3) Use the power of the computer to be helpful to the user. Don’t burdon with mundane tasks.

4) Make items easy to distinguish and find.

I also think that saving state is a very great feature that could improve many applications. Ben mentions this under his point 3, but I just wanted to emphasize that saving state is very important. Some of my favorite applications do this well (MATLAB, UltraEdit, Firefox with SessionSaver) once it is setup, but I think it should be the default!

/developer   〆   permalink

Sunday, November 28th, 2004

MATLAB Distributed Computing Toolbox 1.0

On a related note to my previous post, The MathWorks, makers of MATLAB, have just released thier first toolbox focusing on supporting distributed computing.

The Distributed Computing Toolbox allows one to develop a MATLAB program or Simulink simulation that can be run on a cluster of computers. It’s very platform-savvy: it runs on Linux, Mac OS X, Solaris, or Windows.

/developer   〆   permalink

Sunday, November 28th, 2004

Using MATLAB with Xgrid

As reported on Mac OS X Hints, it is possible to use MATLAB to Xgrid. It only should work well for those “embarassingly parallel” tasks that you can manually split into chunks of data to process, but it could be interesting!

/developer   〆   permalink

Thursday, November 25th, 2004

New Wedding Photos of Shayna and Mark Fullarton

Congratulations to Shayna and Mark! They had a really fun wedding at the Palmer House in downtown Chicago on November 7th. Now that they are back from honeymooning in Aruba, thier wedding website has some great pictures. Check it out!

/life   〆   permalink

Wednesday, November 17th, 2004

Why we have big booties

Have you ever wondered why humans have such big butts? We may have been born to run (nytimes.com, registration required). Here’s a bit of the explanation:

Earlier human ancestors, like chimpanzees today, had pelvises that could support only a modest gluteus maximus, nothing like the strong buttocks of Homo.

“Have you ever looked at an ape?” Dr. Bramble said. “They have no buns.”

Dr. Lieberman, a paleontologist, explained: “Your gluteus maximus stabilizes your trunk as you lean forward in a run. A run is like a controlled fall, and the buttocks help to control it.”

/life   〆   permalink

Monday, November 15th, 2004

Yummy Eats in Evanston

Northwestern’s Associated Student Government has a great restaurant guide for the Evanston area. I added a few ratings for my favority places. Can you tell I’m looking forward to moving back there?

/life   〆   permalink

Wednesday, October 27th, 2004

Good SW Essays

A good collection of software essays is listed on Joel on Software discussion group.

/developer   〆   permalink

Monday, October 25th, 2004

Open Course Ware at MIT

The Massachusetts Institute of Technology offers much of the course material from more than 500 of thier courses at the MIT OpenCourseWare website. It’s a great resource when you want to brush up on a subject or learn something new.

/web   〆   permalink

Friday, October 15th, 2004

A Tiny Little PC

The OQO is a tiny computer that looks pretty cool. It’s only 5in wide by 3.5in tall by 0.9in thick and it includes a 1GHz Transmeta processor, 20 GB hard drive, and 256 MB of RAM. Will this type of thing get cheaper and kill the PDA?

The OQO computer in someone's hands

/web   〆   permalink

Monday, October 11th, 2004

Are You a Dummy About Fixin Yo Car?

Auto Repair 101 is a good beginner’s guide to car repair. I like to read up a bit before heading to the shop, so that I at least sound like I know what I’m talking about.

/life   〆   permalink

Tuesday, October 5th, 2004

Improve Frame

My one trusty reader, Steve Hoelzer, may have to geek out and update his cool CSS frame demo once he sees this great CSS box made from a single image. The one-image one is fixed-width, so it’s not quite as flexible as Steve’s.

/web   〆   permalink

Tuesday, October 5th, 2004

Common Web Design Mistakes

Roger Johansson has put together a very complete list of web development mistakes that many people make. I sure make a few of them, but hope to fix them soon!

/web   〆   permalink

Monday, September 27th, 2004

Arik Moved His Website

In more family news, my brother Arik Brooks moved his website from Bradley University (where he went to undergrad) to Washington University (grad school).

/life   〆   permalink

Wednesday, September 15th, 2004

What is a real essay?

Paul Graham gives a great answer to the question, “How do you write a quality essay?”

A sample to wet your appetite:

The most obvious difference between real essays 
and the things one has to write in school is that real 
essays are not exclusively about English literature. 
Certainly schools should teach students how to write. 
But due to a series of historical accidents the teaching 
of writing has gotten mixed together with the study of 
literature. And so all over the country students are 
writing not about how a baseball team with a small budget 
might compete with the Yankees, or the role of color in 
fashion, or what constitutes a good dessert, but about 
symbolism in Dickens.

With the result that writing is made to seem boring and 
pointless. Who cares about symbolism in Dickens? Dickens 
himself would be more interested in an essay about color 
or baseball.

/life   〆   permalink

Friday, September 10th, 2004

Intro to Source Control

Erik Sink’s Source Control HOWTO is a very good introduction into the basics of a software configuration management system.

/developer   〆   permalink

Friday, September 10th, 2004

TiVo Hacking

The best TiVo forum for learning how to use and improve a TiVo is definately the TiVo Community Forum.

/tv   〆   permalink

Friday, September 10th, 2004

Some Possible Free HyperCard Substitutes

I miss the old days of HyperCard stack tinkering, but PythonCard looks like it could be interesting. Also, if HyperSense ever gets its OSX version done, it might be good.

/mac   〆   permalink

Friday, September 10th, 2004

Mac OS X Hidden Files

Westwind computing describes all of Mac OS X’s hidden files and directories very nicely. This is a good reference when using the command line because it tells where to expect all of the command line applications to be stored.

/mac   〆   permalink

Friday, September 10th, 2004

Todd’s Website

My old buddy from Decatur, IL is out in California now. He is a graphic designer with a very cool website.

/life   〆   permalink

Thursday, September 9th, 2004

SimpleBits CSS Articles

SimpleBits has a collection of nice CSS notes that describe some useful questions and answers about Cascading Style Sheets.

/web   〆   permalink

Tuesday, September 7th, 2004

How do we read?

Kevin Larson at Microsoft describes the history of research into how we recognize words. We use our gool ol’ built-in neural network, of course, recognizing words by their letter combinations as our fixation point hops along, skipping over the small/common/easily recognized words.

/web   〆   permalink

Monday, September 6th, 2004

A Comprehensive CSS Reference

W3Schools provides a very complete CSS Reference that I find useful. Did you know CSS2 profides Aural style sheets for use by the blind and others with reading problems?

/web   〆   permalink

Saturday, September 4th, 2004

jclark.org blog

J Clark’s blog has a nice blosxom plugin called moreentries that lets you see more than the first few entries in a blosxom category.

/web   〆   permalink

Saturday, September 4th, 2004

Linux PVR

I’m still intested in building a TiVo-like Linux box. AnandTech explains a setup with MythTV in a good article.

/tv   〆   permalink

Friday, September 3rd, 2004

Security and Privacy for Regular Folks

Thomas C. Greene writes about improving Linux and Windows security. It’s quite in depth.

/developer   〆   permalink

Wednesday, September 1st, 2004

How Stuff Works is Nice

I’ve been enjoying some of the articles on www.howstuffworks.com. Now you can enjoy too.

/web   〆   permalink

Wednesday, September 1st, 2004


Version 6 of the Internet Protocol supports up to about 3.4 x 10^38 addresses. This is enough for 4.3 x 10^20 unique addresses per square inch of the Earth’s surface. Do you think we’ll run out of those?

See the wikipedia entry for a summary or RFC 2373 and RFC 2374 for details.

/web   〆   permalink

Wednesday, September 1st, 2004

Skype for Mac OS X

Hey Steve, we should try Skype. It’s a voice chat program that supposedly has higher quality than iChat and allows Windows-to-Mac chatting.

Read a good explanation of the P2P telephony technology that powers skype.

/mac   〆   permalink

Tuesday, August 31st, 2004

Steve comments on Gmail

Steve’s writeup of Gmail is pretty much how I feel about it too. I’m not too concerned with the “privacy” issues people have raised with Gmail — I think you should consider all unencrypted email to be pretty out-in-the-open anyway.

It’s sure fun having Gmail account! If you want to try contacting me, just email me at the user “alancbrooks”, then an “at” symbol, then “gmail.com”.

/web   〆   permalink

Tuesday, August 31st, 2004

Pay It Forward works for Gmail

The Pay It Forward concept, popularized by this movie, works in the context of sharing the Gmail invitations that allow you to get on of Google free email accounts.

Here’s the thread on MacRumors forums that is working proof of the pay it forward idea. Also, Gmail swap is another great place for getting Gmail addresses.

/web   〆   permalink

Thursday, August 26th, 2004

Anti-Spyware for Mac? Huh?

Apparantly there is now an anti-spyware program out for macintosh called MacScan. Is there a need? Has anyone used it? Steve, are you there?

/mac   〆   permalink

Wednesday, August 25th, 2004


TLAs decrease the SNR of technical communication. (TLA abbreviates “three letter acronym” and SNR stands for “signal-to-noise ratio”.)

When you examine a technical report or presention about an unfamiliar subject, often the abundant use of acronyms causes a great deal of trouble in understanding. To the uninformed reader, the acronyms increase the “noise” level of the “signal” that the author is trying to convey.

Only when one is familiar with a particular field’s abbreviation jargon do they have the ability to fully understand the information. So, TLAs are kind of “encoded” information. If you don’t know the code, the information is just noise.

(A fun* analogy is in spread spectrum communication: information is encoded and transmitted over such a wide spectrum that is looks like nothing but noise except to the reciever who has to code that pulls the signal out of the noise.)

*fun for dorky engineers at least

That’s the thought of the day. If you love it, eat a burrito.

/web   〆   permalink

Wednesday, August 25th, 2004

Cascading Style Sheets (CSS) Intro

I found a very good CSS introduction here.

/web   〆   permalink

Wednesday, August 25th, 2004

Don’t Forgive the Browsers!

I agree with this article by J. David Eisenberg on A List Apart. Forgiving browsers should be considered harmful. Bad bad browsers.

/web   〆   permalink

Wednesday, August 25th, 2004

Brooks Books Haiku is Reborn

My parents, Randy and Shirley Brooks, are transitioning their fun little haiku company’s website from family-net to www.brooksbookshaiku.com. Be on the lookout for an awesome re-design!

/life   〆   permalink

Saturday, August 21st, 2004

BocceFest 2004

The Sixth Annual Davito BocceFest is today! The city slickers (Me, Dave Stopek, Mark Fullarton, and Mick Montgomery) are sure to have our first victory ever. Look for pictures to come! For more on Bocce ball, look at the Wikipedia coverage.

/life   〆   permalink

Friday, August 20th, 2004

The story of an article that was only worth it’s while for about 1.2 hours

Markdown has now gone to version 1.0, so my previous story is obsolete. Enjoy. Also, this site is now rendered using Markdown 1.0 — it is nice. If you’re interested in trying this easy tool that allows one to write HTML with out thinking HTML, check out the dingus.

/web   〆   permalink

Friday, August 20th, 2004

Markdown 1.0fc2

Markdown 1.0 final candidate 2 is now available. Steve, start your updating engine.

/web   〆   permalink

Monday, August 16th, 2004

Parlay of the iTunes Music Store and the iPod on iTunes

John Gruber, the creator of the wonderfully simple writing syntax Markdown, has written an insightful article explaining his view that Apple’s current “licensing” situation with the iTunes Music Store (iTMS) is not similar to thier Macintosh OS platform licensing decisions two decades ago.

I agree. Licensing is little related to the value of the iPod — ripping all of your CDs to your computer and using iTunes/iPod to organize and listen to them is the most compelling use of the iTunes/Pod combination. iTMS is just icing on the cake.

/mac   〆   permalink

Tuesday, August 3rd, 2004


I heard about these a while ago, but forgot the name. A Captcha is a test used to tell computers and humans apart. See the Wikipedia definition and the Carnegie Mellon project.

/image processing   〆   permalink

Tuesday, August 3rd, 2004

The Creator of Wikipedia Gives an Interview

Steve mentioned my interest in Wikipedia, an online encyclopedia created by its readers. Some interesting news about it has recently surfaced. As reported on Slashdot, Wikipedia founder Jimmy Wales responds to some questions about Wikipedia.

The idea of creating useful free content other than source code is certainly intriguing.

/web   〆   permalink

Tuesday, August 3rd, 2004

Vacation Slide Show

I’ve posted a slide show with my photos from our vacation to Washington DC and Virginia beach. If you have any pictures to add (Dad?), please send them my way.

Also, Jessica’s pictures are available in a zip-file.

/vacation   〆   permalink

Monday, August 2nd, 2004

Dan Bailey’s Celestial Imaging

Check out Dan’s new astronomical imaging website. I’m hosting it on my server for a while, so that is fun. He takes many interesting photographs with his telescope. One of the best is from his recent trip to the Badlands.

/life   〆   permalink

Saturday, July 24th, 2004

J Ratings

Special restaurant ratings brought to you by Jessica (my 9-year-old sister).

Her main requirements for a good restaurant center around the available food options. If they serve plain pasta with a large helping of parmesan cheese on the side, an A or higher is guaranteed. Her other dining favorites include peanut butter and jelly, crab legs, and ice cream.

Washington DC

  • Bobby Van’s Steakhouse: D
  • Old Ebbitt’s Grill: B
  • McCormick & Schmick: A+

Virginia Beach

  • Fish Bones: A
  • Dairy Queen: A
  • Lunch on Beach: A
  • Dough Boy: A

/vacation   〆   permalink

Monday, July 19th, 2004

Question - D.C. Resident Voting

How do Washington D.C. residents get to vote? I don’t understand this district thing.

Update: Quickly searching the wikipedia, I found out that Washington DC residents do vote for President but do not have any representation in Congress. For more details, check out the wikipedia entry yourself.

/vacation   〆   permalink

Monday, July 19th, 2004

Monday (guess what lovely lady wrote this and you will be an honorary spy)

I awoke to my beautiful wife ready to see D.C. We had a lovely bagel at COSI and then we were off on our first mission to the SPY Museum!

At the museum, I realized my true calling. I must leave my job as soon as we get home and begin a new life of secrecy as a man of international mystery.

/vacation   〆   permalink

Monday, July 19th, 2004

Spies and History

Today, we took off at 9, grabbed a light breakfast at Cosi, and then headed to the International Spy Museum.

spy mus picture

Jessica was very excited about seeing the spy museum and was telling us all types of James Bond facts along the way. We saw all types of recording devices, mini-cams, radio transmitters, and so on.

One of the most memorable artifacts was a fancy round seal that was given as a gift to a US Official from Soviet school children in the 1970s. Many years later, it was revealed that the gift had a listening device cleverly hidden within.

Then we headed on to the Smithsonian History Museum. We saw the insect zoo, gemstones (including the Hope Diamond), and the animal bones.

hope diamond photo

For dinner we had McCormick and Schmick. Jessica was thrilled — see her rating system.

Later on in the evening, we visited the Lincoln Memorial and captured some great images.

lincoln mem photo

/vacation   〆   permalink

Sunday, July 18th, 2004

Discovering Our Nation’s Capital!


We woke up excited about our first day out exploring D.C. — a quick start at Starbucks for bagels and coffee and we were on our way.

On foot, we explored around the White House, Decatur House, Washington Monument, the mall, a cool sculpture garden, and then the Space Smithsonian Museum.

white house picture

sculpture picture

Then we headed out to the National Gallery of Art, where Amanda really was into the impressionist drawings. One of her favorites was Children Playing on the Beach by Mary Cassatt. I really liked The Bridge at Argenteuil by Claude Monet.

Finally, we ended our walking tour by checking out the newly opened World War II memorial.

WWII memorial photo


Much of the capital is currently under construction, probably for a combination of security and beautification purposes.

The White House’s surrounding grounds are being updated and you really can’t get to close to it … although this squirrel could:

squirrel photo

The Washington Monument’s grounds were all torn up and the public could only get near it via one path. Also, the reflecting pond was empty and full of stinky gunk — yuck.

Boxers and Dinner

I was a little forgetful with a particular undergarment that is nice to change often, so after getting back from our walking tour, Amanda and I headed over to Filene’s Basement to pick up some boxers for me.

Then, on our way back, we noticied the Old Ebbitts restaurant and got our name on the list. It was a great dinner — I loved the Chicken and Crab Saltisoma.

old ebbitt photo

/vacation   〆   permalink

Saturday, July 17th, 2004

Travel to Washington D.C.

Today, we left for Washington at 4:45 AM — now that’s early! My mom is a good morning driver, so she took the early shift. We started off on I-72 and I-74 from Decatur to Champaign and then to Indianapolis. Then, our route was I-70 all of the way.

It was a 14 hour tour: we arrived at the Sofitel at about 8 PM eastern time. We were excited because our hotel is about a block from the White House. We then went on a mission to ease our hunger, settling on Bobby Van’s Steakhouse after walking around a bit and realizing that this area’s restaurants are mostly open at lunchtime.

The food was tasty (I had a crabcake) and we were satisfied.

We went to sleep and enjoyed our room (Manda was getting decorating ideas).

/vacation   〆   permalink

Wednesday, July 14th, 2004

I made a favicon.ico

For some fun today, I created a favicon.ico file (the little icon displayed next to the web address in most browsers). I started with my background geek image and did all of the image processing on the command line using imagemagick and png2ico.

The png2ico developer, Matthias Benkmann, has a simple description of how to setup a favicon.

I used the following command sequence to reduce the background image to the correct size, convert it into the .ico format, and then put it in the right spot for my Mac OS X webserver. :

$ convert -scale 16x16 -normalize geek.jpg geek16x16.png
$ png2ico --colors 16 favicon.ico geek16x16.png
$ cp favicon.ico /Library/WebServer/Documents/

Then, I added the following 2 lines between <head> and <\head> in the web pages in which the new icon should be displayed. :

<link rel="icon" href="favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">

Hopefully, you can see the result above!

/web   〆   permalink

Wednesday, July 14th, 2004

Steve updated his blosxom blog

I had linked to his blog before his computer crashed, but now the young whippersnapper has some new content and a slightly new web address:


Once again, I commend his use of cascading style sheets (CSS). His blog style sheet is here. He helped me improve my site a bit with CSS — note the background image sticks to the middle right part of the screen and doesn’t scroll with the text.

/life   〆   permalink

Friday, July 9th, 2004

Welcome, visitors from my email

Hi friends and family! Hope you got the move info. Thanks for coming to check out my weblog (“blog” for short).

I’m running this off of my own computer from home, so if any of you have anything you’d like to post (photos, comments, etc..), I’ve got plenty of web server space, so please feel free to email me about that.

Have fun!

/life   〆   permalink

Thursday, July 8th, 2004

Steve’s new css-styled blog

I really like the look of Steve’s newer blog. He’s using style sheets very well!

/life   〆   permalink

Thursday, July 8th, 2004

Jury Duty at the Daily Center

Last week, I spent Tuesday and Wednesday serving my first jury duty. I served at the Dailey Center for the Circuit Court of Cook County.

They have a one day, one trial system where your service obligation is fulfilled if you (1) wait in the juror waiting room all day, (2) get called for jury selection but are dismissed, or (3) get selected and serve on one trial.

I was selected as the 12th juror, so I served on a civil case Wednesday. It was interesting, and fortunately easy to come to a consensus when the jury deliberated.

/life   〆   permalink

Sunday, July 4th, 2004

Happy Forth of July!

It was a fun forth weekend — we saw a Cubs/Sox game at Wrigley, I got a new grill (and made some tasty steaks), and enjoyed some fireworks off of the balcony.

/life   〆   permalink

Monday, June 28th, 2004

HDTV Over-the-air Receiver and Antennas

Since moving to Arlinton Heights, I’ve been trying to get HDTV over the air. The experiment didn’t succeed — I could only get 3 channels (WGN, ABC, and PBS). Without FOX and NBC, it wasn’t worth it.

However, when a channel did come in with HD content, it looked awesome! The nature specials on PBS were very clear and in widescreen high-definition (you could really see that bobcat fight the snake).

For the record, I used a Motorola HDT-100 high definition television receever on an open-box deal from Circuit City (for $270). It worked well, but had to be returned in the end because …

… it turns out I live on the wrong side of the apartment to be able to receive signals from the Sears Tower and Handcock building in downtown Chicago. I did have some luck with the Gemini Silver Sensor UHF antenna — it’s very directional and helped with the multipath problems caused by the signals going through my apartment building. A good website on general antenna info (for dummies) is here.

Also, antennaweb.org is a great website. You type in your address and it can tell you what direction all the TV stations are from your address and then recommend an antenna type.

/tv   〆   permalink

Monday, June 28th, 2004

Seein Cubs/Sox at “The Cell”

This weekend, I had my first chance to see US Cellular Field — it was the Cubs vs the Sox. Although the Sox won, it was a beautiful day for a game. After the game, we walked through the Taste of Chicago for some yummy eats — fried okra and a steak taco were my favorites.

/life   〆   permalink

Friday, June 18th, 2004

We should contact Dr. Huggins

I think we should get in touch with Huggins to find out how to replace the broken link to the windows code from Steve an I’s OFDM project.

/web   〆   permalink

Friday, June 18th, 2004

My Brother Got Married!

arik & laura under the 

Can you believe it? Arik married Laura Hanson, a wonderful young lady, on June 4, 2004. It was a great time! See my dad’s photo collection.

/life   〆   permalink

Thursday, June 17th, 2004

Relocated to Arlington Heights

For those who are interested, Amanda and I are moving to an apartment in Arlington Heights this Sunday. We got our keys and checked it out today — it was quite nice! This is our intermediate place to live while our condo back in Evanston is built.

Our new address: 299 N Dunton Ave Apt 604 Arlington Heights, IL 60004

Phone number (effective Monday): 847-577-8563

/life   〆   permalink

Wednesday, June 16th, 2004

Kris got a job!

Congrats to my friend Kris Classen on putting that law degree to use and getting a new job at the Appelate Court of Illinois in Richmond, IL. He’ll be working for Jack O’Malley.

/life   〆   permalink

Tuesday, June 15th, 2004

Link on Mac OS X Hints

I was excited to have my simple hint posted at macosxhints today. It’s just a convenient way to quit Mail.app remotely so that I can check email using pine.

/mac   〆   permalink

Tuesday, June 8th, 2004

Markdown with cat and open

To concatenate head.html, tail.html files and auto-open result

Tack on another command (cat) that concatenates the text from the header, stdin, and footer. Then open the result in your default browser. E.g. (should be all on one line):

% perl Markdown.pl foo.text | perl SmartyPants.pl | 
  cat head.html - tail.html > foo.html; open foo.html

/web   〆   permalink

Monday, June 7th, 2004

Recursive Posting

Since Steve introduced my blog, I posted a response, and then Steve responded to the response, then of couse I had to add the obligitory recursive post in response.

Steve’s use of iBlog & .Mac does seem quite simple for setting up simple useless blogs :)

/life   〆   permalink

Monday, May 31st, 2004

How to use Markdown.pl on the Command Line

Use the --htmltags command-line switch to produce HTML output from a Unix-style command line. E.g.:

% perl Markdown.pl --htmltags foo.text > foo.html

Type perldoc Markdown.pl, or read the POD documentation within the Markdown.pl source code, for more information.

/web   〆   permalink

Monday, May 31st, 2004

Steve Hoelzer’s Blog

Steve’s Blog has arrived. Some say he’s crazy, and I concur. Also, check his homepage, where he dabbles in CSS.

/life   〆   permalink

Monday, May 31st, 2004

Face Detection

A pre-requistie for face recognition is face detection. The Robotics Institute at CMU has a great demo with my submission.

/image processing   〆   permalink

Sunday, May 30th, 2004

Face Recognition

I’ve been working on face recognition for my ECE 432 computer vision class at NWU. Here’s some images I’ve been working with:

a montoage of the ALAN database

They come from some photos I took in class one day and from my dad’s student websites.

/image processing   〆   permalink

Sunday, May 30th, 2004

Domain Name Registration

Just a quick note: dotster.com is good for domain name registration. You can do fun searches for what domain names are available.

/life   〆   permalink

Saturday, May 29th, 2004

Fun at Navy Pier

We had a good time dining and visiting with our friends tonite at Navy Pier tonite.

Some “oil cans” of Fosters were consumed, and that led to discussions concerning the best movie of all time. The candidates included:

  • Forrest Gump
  • Rain Man (don’t these 2 always come up in similar discussions)
  • American History X
  • American Beauty
  • The Shawshank Redemption
  • Office Space
  • Old School
  • The Jerk (courtesy of Kris)
  • 12 Monkeys (the greatest movie ever)
  • Bandits & Zoolander (oops, dat’s Manda talkin)
  • L.O.T.R. (i can’t believe we forgot to discuss this)
  • help me menber de rest cuz I be forgettin now

Over & out.

/life   〆   permalink