February 2010
3 posts
Changing blog platforms
I’ve decided to move my blog from Tumblr to Wordpress, primarily due to how difficult it is to get source code into the tumblr posts (lots of manual html editing).  Fortunately I was able to transfer my old blog posts here thanks to the great script written by Hao Chen. Hopefully this will make it easier for me to incorporate more source code snippets into the blog. You can find the new...
Feb 5th
2 tags
Apache Log4j
Apache Log4J This is the second Java library I’ve mentioned (the first was Apache Commons Primitives), and it won’t be the last. Apache Log4J is a logging system that is designed to have the same interface as java.util.Logging’s (the faq suggests a find and replace of all the util.Logger calls with org.apache.log4j.Logger will do the trick). Why should you use a logging...
Feb 4th
2 tags
How to make a solar system: Introduction to affine...
At the heart of all computer graphics lies linear algebra, and specifically matrix multiplication. One can use matrices to perform all sorts of operations, such as transformations to move from one coordinate system to another, as well as a set known as affine transformations. Affine transformations are those that map lines to lines in the transformed coordinate space, and which preserve the...
Feb 3rd
January 2010
5 posts
1 tag
Habitforge
 Well, it’s almost February so the New Year’s Resolution rush has probably gone by.  If you’re anything like me, there are a lot of things you would like to do, habits to get into, but that you can’t really find the time or energy to keep them up.  I stumbled upon a website that promises to help you meet and sustain your goals - habitforge.com. The premise of the site is...
Jan 31st
Jan 28th
Jan 21st
2 tags
Review: The Passionate Programmer
The Passionate Programmer: Creating a Remarkable Career in Software Development by Chad Fowler Publisher: The Pragmatic Bookshelf I received a gift card to Border’s for Christmas and was perusing their voluminous computer section when I saw Chad Fowler’s The Passionate Programmer: Creating a Remarkable Career in Software Development.  The cover of the book features a stylized...
Jan 20th
Jan 5th
December 2009
2 posts
2 tags
Useful utility functions - 0 of n
This is the first in what I’m sure will be a lengthy series of posts about utility functions I find myself needing time and time again.  When I say utility function, I generally just mean a static function that does something useful (aka helper function), whose logic is often self-contained and unrelated to a specific class or component.  The first of these methods I never knew I was...
Dec 16th
Apache Commons Primitive Collections
Do you ever work with libraries that require you to pass around primitive arrays?  If you do, you’ve probably run into the pain involved with trying to create these arrays if the underlying data is variably sized.  Why is it painful in Java?  Because the wonderful Collection classes that exist are for Objects only, and not primitive types.  There are no variable sized collections for...
Dec 2nd
November 2009
1 post
3 tags
Password masking
Jakob Nielsen, web usability guru and author of the seminal Designing Web Usability, wrote in his blog recently, urging developers to Stop Password Masking, the practice of hiding a password with asterisks or other characters. His main point is that the password masking reduces the visual feedback, making errors more prevalent and perhaps leading to riskier behavior: When you make it hard for...
Nov 10th
October 2009
5 posts
3 tags
Android: Dialog box tutorial
Hi folks, There’s a lot that’s been written about the evils of dialog boxes , those little boxes that pop up to ask you how whether you’re sure you want to do action X, or provide some information Y.  The real issue with most of these dialog boxes is that they block the user interface, stealing the attention of the user, and disallowing him to deal with what he was doing until...
Oct 31st
Google Calculator + Free text entry
For those of you who don’t use Google Calculator - you should.  It’s amazing.  I use it all the time for conversions.  All you have to do is enter the units you’re converting into a google search, and one of the top results will be the Calculator interpretation of your search. For instance, when SCPing files, I wanted to estimate how long the transfer would take for x...
Oct 23rd
1 tag
Android - ItemizedOverlay +...
More wonkiness going on with the ItemizedOverlay class Google provides. Here’s the situation (a fairly common one): You have a dynamic list of Icons you wish to display on a map.  The list can grow and shrink.  You might think the following would work: public class CustomItemizedOverlay extends ItemizedOverlay { private ArrayList mOverlays = new ArrayList(); public...
Oct 19th
1 tag
Android - OverlayItem.setMarker(Drawable icon)
I’ve been developing in Android for a little over two months off and on and am finding certain things I really love and certain things I hate.  This is one of the things I hate. Android provides a nice class to manage drawing OverlayItems to a map called ItemizedOverlay; for instance you might want to display all the people in your contact list on a map.  Well, you’d probably want to...
Oct 16th
Oct 12th
September 2009
3 posts
iTunes 9 - Genius mixes
I hadn’t heard much fanfare about iTunes 9 except with relation to the Home network sharing of music and the ability to rearrange the icons on your iPhone.  In my opinion, a much bigger deal is the introduction of the Genius mixes. The Genius feature was introduced in iTunes 8; if you’re not familiar with it, it takes a single song as input and attempts to create a playlist of similar...
Sep 30th
Ruby On Rails impressions
I recently had the opportunity to write a web-app in Ruby on Rails at work for a developer contest.  Despite having a steep learning curve, it was a very good experience. Ruby, the programming language is a dynamically typed language, similar in some ways to python.  Rails is a web development framework written in Ruby that is very popular with the Web 2.0 and agile folk; it lets you develop web...
Sep 27th
X.this in Java
I don’t know how I missed out on this information, but there’s a very useful construct in Java when dealing with inner classes. Say we have the following: public class A { private JButton button; public A() { button = new JButton("Push me"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); } } How do we...
Sep 9th
August 2009
1 post
Office 2007 - Death of Blue Screen
It was brought it to my attention that Office 2007 killed the white text on blue background feature.  I was incredulous - how could the folks at Microsoft be so myopic?  This feature is an absolute necessity for long bouts of staring at a computer screen.  But sure enough, Microsoft confirms it: Blue background with white text option: This feature, included in earlier versions of Word to...
Aug 30th
July 2009
1 post
Automated phone trees: two potential solutions
After entering the “real world” I’ve had to confront something I’ve never had to deal with before: the dreaded automated phone tree system.  The routine is generally the same: Welcome.  Choose language.  Listen to top level hierarchy.  Choose one, drill further down.  Rinse and repeat. These systems annoy people because they feel impersonal and they take a lot of time. ...
Jul 5th
June 2009
4 posts
The Visual Display of Quantitative Information,... →
This book is marvelous, and should be required reading to anyone who creates charts, graphs, or other summaries of quantiative/numeric data.  Especially interesting is the section showing how less is more in charts and how taking away information enhances the legibility. Highly recommended.
Jun 30th
User Interface Post #2: Nonreactive scroll bars
User Interface Design: Scroll bars that do not react to mouse wheel Our screens are much higher resolution than they were 10 years ago.  Nevertheless, with web content we often still have to scroll to get places.  This pain has been alleviated with the advent of the near ubiquitous mouse wheel.  There are few things that irk me more while browsing the web or using supposedly Web 2.0 type...
Jun 29th
Thoughts on the Sony Vaio P
I played around with this netbook at Staples yesterday briefly, and came away with two main impressions. Screen The screen is sharp.  Unbelievably sharp.  To fit a 1600 x 768 screen into 8” means it has an incredibly small pixels and/or dot pitch.  That’s all well and good but.  It also means that things are so small it’s impossible to see what’s going on.  My old...
Jun 5th
User Interface Design: Incremental Search
User interface This is the first of what will be a series of posts detailing user interface designs I think are great, that suck, that are blegh.. you get the idea. User interface cheers #1 Incremental search It’s hard to use the web today and not use incremental search, at least if you are using some of the major web sites of the day. Incremental search means you get search results...
Jun 5th
May 2009
2 posts
“Beautiful is better than ugly. Explicit is better than implicit. Simple is...”
– The Zen of Python, by Tim Peters A little easter egg built into the python interpreter; type “import this” at the command prompt.  This is the first thing I learned from O’Reilly’s Learning Python book I bought yesterday.
May 24th
Computer Science Students Receive State Police... →
Tucker, Jeremy, and I received an award from the Maine State Police yesterday.  It was a very humbling ceremony; a lot of officers and citizens received bravery commendations for dealing with hostage situations and violent criminals at the same ceremony.  To think that a piece of software we wrote was deserving of such praise was incredible. Whole flickr set
May 21st
April 2009
3 posts
Three seniors fight child porn, one click at a... →
Another write-up about the work two students and I performed for the Maine State Police.
Apr 17th
Apr 11th
Great Java demos of procedural textures, and more →
The home page of Ken Perlin, for whom Perlin noise is named.  Lots of great demos and interesting applets
Apr 3rd
March 2009
6 posts
Bowdoin students help fight child porn →
Newspaper coverage of a project I worked on at Bowdoin.
Mar 19th
“To write clean code, you must first write dirty code; and then clean it.”
– Robert C. Martin http://www.objectmentor.com/resources/articles/Clean_Code_Args.pdf
Mar 11th
Mar 10th
These cookies are delicious! - Speech synthesis... →
A very interesting retrospective over computer speech synthesis.  The best part is at the end where they demonstrate concatenative speech synthesis, where the computer uses a large database of professionally recorded lines of speech in order to assemble a sentence.  It sounds really good!
Mar 5th
Image compression with polygons →
A very cool article about how you can encode the information of a photograph by using evolutionary algorithms and overlaying polygons of different colors and sizes to recreate the original image.  The sizes are impressive - a 256x256 pixel image fits in 1028 bytes.
Mar 5th
“To illustrate the difference between Web applications that don’t use MVC and...”
– Jakarta Struts For Dummies Mike Robinson, Ellen Finkelstein As Seth Glickman puts it, “They were almost definitely high when they wrote that.”
Mar 3rd
February 2009
5 posts
“[Java] might be successful - after all, MS DOS was - and it might be a...”
– http://www.stlport.org/resources/StepanovUSA.html A C++ STL author lays the smack down on Java and Object Oriented Programming.  Also interesting for the STL work he describes.
Feb 22nd
Mozy online backup →
I’ve heard good things about this service.  I’m going to try the free 2 GB version for now and see how it is before shelling out $5 a month.  But seems worth it for the peace of mind alone.
Feb 22nd
How Facebook and Google use R →
Interesting read.  rpart comes in handy again.
Feb 22nd
Real Advice Hurts →
This blog post details the problems with consuming bite-sized tips that are all so prevalent on the web today.  As the author, Merlin Mann, says, We can’t get good at something solely by reading about it. And we’ll never make giant leaps in any endeavor by treating it like a snack food that we munch on whenever we’re getting bored. You get good at something by doing it repeatedly. And by...
Feb 21st
WriteRoom →
If you’re on a mac, you owe it to yourself to try this product.  It’s a barebones text editor, where sparsity is the point.  It’s just you and the text (while in full screen mode) with no distractions in the background.
Feb 21st
January 2009
4 posts
Stuff white people like →
I didn’t realize that the Bowdoin themed site of a similar name is just a knockoff of this one.  … Which is funny, because it is pretty redundant in light of the site its aping in the first place. Pretty amusing.
Jan 30th
“He usually appears in public with a lost umbrella in each hand. He prefers to...”
– How to Solve It: A New Aspect of Mathematical Method - G. Polya I am hoping to buy this book soon.  Apparently Microsoft used to give copies of it to all of its junior developers.
Jan 28th
Tada List →
I use this site all the time.  It does one thing and it does it very well - to do lists.  Or any sort of list that you need to be able to check things off on. If you’ve ever used BaseCamp you will recognized this is a stripped down, free version of the premium service.  Highly recommended.
Jan 28th
Cake wrecks →
Hilarious site.
Jan 26th