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:
- What Is Ruby on Rails
- 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
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:
- PyWin32 from http://starship.python.net/crew/mhammond.
- CTypes from http://starship.python.net/crew/theller/ctypes (you must use version 0.9.1 or newer).
- 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:
- 9h 55m: Stanford Racing Team’s Stanley, a Volkswagen Touareg with GPS, IMU, laser, radar, vision, and wheel speed sensors.
- 9h 59m: CMU Red Team’s Sandstorm, a 1986 HMMWV with vision, radar, laser, and GPS sensors.
- 10h 4m: CMU Red Team’s H1ghlander, a 1999 H1 Hummer with INS, GPS, and laser sensors.
- 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.
/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,
- Select any text.
- Press
Shift-Cmd-{ to convert “Humane Text” to XHTML.
- 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
/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.
/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.

/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:
Character Palette - graphically pick your glyphs (see screenshot)
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
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
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
Kayak
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
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):

After (much nicer with a good style):

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
syntax:
ab -n 1000 -c 150 http://127.0.0.1/
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
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.
Update:
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
Systm
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
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).

/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:
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.
What is the gaussian scale mixture (GSM) model? I hope to better
explain and interpret this in an upcoming blog entry.
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:
- 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
- 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
- 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:
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?
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.

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.

/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)));
im_reconstruct_from_phase
% display original & reconstructed image
% (scaled for visibility)
imshow(im,[])
imshow(im_reconstruct_from_phase.^.4),[])

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

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
(2*ux*uy+C1)*(2*sxy+C2)
SSIM(x,y) = -----------------------------
(ux^2+uy^2+C1)*(sx^2+sy^2+C2)
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).

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
ITBWTCL 2k4
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