Jon Aquino's Mental Garden

Engineering beautiful software jon aquino labs | personal blog

Monday, May 30, 2005

Fighting tag spam with ... tags

The issue of tag spam has been making the rounds of the blogosphere recently. Just now I had an idea: why not fight tag spam with tags? If people spot tag spam, they could tag it with "report-spam" -- the more people apply this tag to an item, the more likely that the item is spam.

So if you are reading your links and see something that looks like spam (an ad for low mortgage rates, say), you could tag it with "report-spam". If enough people tagged it with "report-spam", would filter it out.

Fight tag spam with tags.

Sunday, May 29, 2005

Poor Man's Kinesis Keyboard: The K'nexis Keyboard

My left wrist hurts. It's one of those problems that plague computer programmers. In my case it is the dreaded Emacs Pinky in which repeated pressing of the Ctrl key with your pinky finger gives you wrist pain. (And Emacs is the world's greatest text editor. But I digress.)

One solution is to buy a Kinesis keyboard:


These beautiful keyboards move the Shift and Ctrl keys to your thumbs, which have more power than the lowly pinkies. This eliminates the physical pain, but it does add financial pain: $240 US -- double that if you need one for home and one for work.

So like any geek would, I decided to make my own Kinesis keyboard. I used a building toy called K'nex (it's like Lego but it uses rods). Let us call it the K'nexis keyboard. (Well I thought it sounded clever...).


Anyway, like I said, K'nex is a building tool. Like Lego, but it uses rods:


Basically I wanted to use these rods to press the Ctrl, Shift, and Alt buttons with my thumbs. So I picked some suitably sized rods and secured them with bits of double-sided tape:


Along the rods are three raised grey plastic pieces that act as the new keys for my thumb. Thus I can use my thumb to press Ctrl, Shift, and Alt:


Here I am doing a Ctrl-Alt-Delete. The left thumb is hitting control (left rod), the right thumb is hitting Alt (red rod), and another finger is hitting delete:


Tomorrow I'll be taking a set of these rods to the office, along with some double-sided tape. No doubt there will be some strange glances and double-takes.


Finally a picture of the K'nexis keyboard in front of the greatest text editor in the world.


Thursday, May 26, 2005

"Mock Objects" - Great Unit-Testing Technique

Today I learned how to use "mock objects", which are a super-easy way to create fake objects for testing. You barely have to write any code - just tell the DynamicMockObject what values to return for what method names.

Update: I must say that NMock is better than DotNetMock. Better documentation, more tutorials, more flexible specification of values (IsAnything), rules can be relaxed (SetupResult).

Saturday, May 21, 2005 Making progress

Well, it's Day 1 of development of Got the domain name registered, and as you can see above I've started coding. Whew! I must have been coding for 10 hours. I am learning a lot about Ruby on Rails -- this is a great learning project. RoR is a great web application framework, but it does seem to take a day or so before one starts to feel comfortable with it (same with everything else I'm sure).

11:30 PM -- time to wind down for bed. There comes a point at which one simply has to say, "Enough for today!"

A couple more pics. I'm hoping that Jeff can come up with some good ideas for the design of this thing.

Friday, May 20, 2005

Meetr: Desigining a Free Alternative to

Now that has decided to start charging for its services, the world needs a free alternative to (a website that makes it easy to find people in your city meeting around a common interest e.g. The Victoria Great Dane Meetup Group, The Victoria Punk Meetup Group, The Victoria Indie Publishing Meetup Group, The Victoria Anarchy Meetup Group, etc.).

This is also an opportunity for me to learn Ruby on Rails! (a popular web-application framework)

I'm going to make a free alternative to, and I'm calling it Meetr (name inspired by Flickr). I've sketched out a database model below -- if anyone has any suggestions, I would be grateful.


Sunday, May 15, 2005

JUMP: Free, Open Source Java GIS

Just wanted to let people know about a free Java Geographic Information System (GIS) that I created with Martin Davis at Vivid Solutions.


It's called JUMP, and you can use it to edit Shapefiles and GML. If you're learning Java it's also a good example of design patterns and Swing. And if you've been wanting to contribute to an Open Source project, this might be a fun one for you.


JUMP is free; and it has been used on an important government project (RoadMatcher).



Mailing-List (our beloved JUMP community):

Update: Some enthusiastic JUMP users have decided to create their own customized version of JUMP, which will be called OpenJUMP:

Saturday, May 14, 2005

Readwalking - Jon's Productivity Principle #8

Readwalking is the practice of reading a book while walking. It is a means of making good use of one's time; it is also potentially dangerous, particularly near intersections. It exercises the mind and the body, simultaneously.

I have not seen readwalking practiced in my hometown (Victoria BC), other than my own experiments. Anyone else tried it?

Wednesday, May 11, 2005

Tip: Random-number generator for Firefox

If you're like me and use random numbers a lot (e.g. for deciding which of 4 things to do each evening), imagine if you could just type "random 4" into your browser and get back a random number.

Well now you can! (if your browser is Firefox)
  1. Drag the following link to your Bookmarks menu:
  2. In your Bookmarks menu, right-click the new bookmark ("randnum") and click Properties
  3. Set the Name to: Random Number
  4. Set the Keyword to: random
Now you can type "random 1000" into the address bar and you will get a random number between 1 and 1000!

P.S. The 4 things that I randomly decide which to do each evening are: (1) emailing a random contact, (2) reading a page from The Pragmatic Programmer, (3) reading a page from the Osbourne Illustrated World History, and (4) reading a page from Nonviolent Communication.

Monday, May 09, 2005

Bloglines tip for eliminating duplicate posts

If you are using Bloglines, you might encounter duplicate entries in some of your feeds, probably because Bloglines is treating textual changes as updates. The solution is to go into Bloglines, click Edit Subscription for the problematic feed, then set Updated Items to "Ignore".

I wish Bloglines would make this the default setting.

"Click Here" Is Not A Bad Thing

There are many worthy usability battles to fight, but "click here" is not one of them. The use of a hyperlink that says "click here" has often been frowned upon by experts, and yet many people still use this idiom. Why? Because it is a useful thing.

Suppose I said to you, "Get Amaya!" Your obvious reply would be, "Okaaay . . . how?" And yet, "Get Amaya!" is the recommended wording from the W3C standards body.

They frown upon the wording "To download Amaya, click here," which is an obvious, natural way to say it. If your computer could talk (and some do), that is what it would say. It wouldn't leave you hanging with "Get Amaya". It would tell you how to accomplish this task (if you wanted to do it).

Interacting with the web is a two-way conversation. It is perfectly valid for the web to speak in terms of informing you what to click on to accomplish various tasks.

Flickr RSS Mashup: Chocolate + Peanut Butter

from the because-we-can dept.:
Here I have used FeedJumbler to create an RSS feed that mashes up the Flickr "chocolate" photofeed with the Flickr "peanut butter" photofeed: RSS, HTML. Yum!

Web-Enabled Business Card: it simply has your name

Call it confident. Call it cocky. The web-enabled business card, shown below, simply has your name. No additional details are required -- they're all on your web page:


(Note: This only works if a web search for your name brings up your homepage). "But where's your telephone number?" they ask. You reply nonchalantly, "Just google for me" (or whatever your search engine of choice may be).

After you meet someone for the first time, the only crucial piece of information they need is your name ("Dang, what was that person's name again?"). Everything else is available on the web (telephone number, email address, etc.).

It's an unusual business card that provokes curiosity.

Thursday, May 05, 2005

descriptious: Adding descriptions to and Populicious feeds

Get the Descriptious version of PopuliciousRecommended!: RSS, HTML
Get the Descriptious version of RSS, HTML
Get the Descriptious version of Trendalicious: RSS
(See complete list at the end of this post)

Populicious and are two wonderful RSS feeds that show you what is popular on the web each day (I like Populicious better because it removes duplicates). But the problem with these feeds is that they only give a title for each link -- there are no descriptions. To find out what each link is about, you have to guess from the title, and failing that, actually visit each link. This is time consuming -- and totally unnecessary because many users enter descriptions for their links.

Descriptious to the rescue. Descriptious augments each of these wonderful feeds with descriptions entered by users. So now when you're checking out those new links, you get descriptions for each of them. Simply subscribe to the Descriptious version of the feed (see the links at the end of this post).

The Descriptious feeds are updated hourly. (Ruby source code)

What other feeds would benefit from descriptions?

Below is a picture of Descriptious in action. Note the descriptions in italics, collected from extended descriptions entered by users. They are useful for getting an idea of what the article is about, as the headlines are often not very helpful.

Update: Some people have requested Descriptious versions of other feeds. Here is a complete list:
  • Populicious: New Sites (24h):Recommended! RSS, HTML
  • Populicious: New Sites (48h): RSS, HTML
  • Populicious: Last 24h popular: RSS, HTML
  • Trendalicious: RSS
  • Oishii:New! RSS
Bloglines tip for eliminating duplicates: If you are using Bloglines, you might encounter duplicate entries in your Descriptious feeds, probably because Bloglines is treating textual changes as updates. And of course the text changes as people add descriptions. The solution is to go into Bloglines, click Edit Subscription, then set Updated Items to "Ignore".

Emailing a random contact (Plus: a webapp for randomizing any list)

It's good to stay in touch with your contacts. And you've got more contacts than you might be aware of. Consider all the emails that you have sent in the past year -- there's a hundred right there I'll bet. Many of these people you probably don't know too well -- and yet they are still important, because there is strength in weak ties.

How to stay in touch with all these people? It can seem overwhelming when you think about it. But a great solution to this and other problems about which you feel overwhelmed is good ol' randomization. And here's a web app I wrote to help you out. Simply paste in a list of your contacts (or any list of anything) and it will shuffle the lines for you. Pick the name at the top of the list, and send them an email, asking them what's the coolest project they are working on right now (even if you don't know them that well) (thanks to David Nunez for that excellent question). Because those weak ties become strong when taken as a whole.

You'll be receiving an email from me soon!