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

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
Proof

/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

XMLHttpRequest

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

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):
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

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

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.

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

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)));
im_reconstruct_from_phase 

% display original & reconstructed image 
% (scaled for visibility)
imshow(im,[])
imshow(im_reconstruct_from_phase.^.4),[])

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

               (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).

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

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