Thursday, June 28, 2007

Dictionaries filled with typos

Why, oh why do most spell check dictionaries allow the user to easily add words to the dictionary but not remove them? Every once a week or so I accidentally add yet another common typo to the list of custom words and then have to go looking through that programs config files searching for the place where it keeps my list-of-typos, find it, and remove it. How do are normal users supposed to deal with this situation? I seem to remember the first few programs I used with this feature used to provide a nice way of going into the custom list of words and editing them. Now they just disappear into the ether and good look trying to convince the computer that "teh" is not a valid word!

Grr..both SeaMonkey and Evolution do this to me. At first I thought it might be accessible by way of the preferences. Since it was a relatively pedestrian setting, I looked in the advanced tab.. Nope, not there... Not in any other either.. Oh well.

Putting a potentially dangerous setting right next to items that are in common use is just bad UI design. Making it incredibly difficult to fix the mistake is downright user hostile. A pox on whoever came up with the bright idea of omitting this setting!

Thursday, June 21, 2007

Programming in a group

http://www.codinghorror.com/blog/archives/000890.html

1 isn't the loneliest number! 0 is! It doesn't even have itself to keep it company!

Actually, I spent almost 10 years programming on my own, in my own projects. When I did join the rest of the programmer race, the biggest challenge was communications. Thomas Kuhn, in his book The Structure of Scientific Revolutions, mentions that one of the problems when trying to resolve conflicts between two competing paradigms is that the vocabulairy, structure etc.. of the frameworks used within each paradigm are different. In order to have successful communication, you need to know enough of the other person's frame of reference and share enough vocabulary in common to say the right words in the right order to transmit a thought. Unfortunately for me, I had little to no idea of how other people thought about programming and only a vague idea of the vocabulary. My first few 6 months were spent in a continuous, desperate bid to explain my thoughts on a given design or problem in a way that was comprehensible to someone else. In the end I got the general idea.

Programming in a group can be very humbling. It's human nature to ignore one's own mistakes if it's believed they were mistakes but inevitable.. or that something or other was impossible anyway... When programming in a group, it's likely that someone in the group will be able to show you your folly; to see that your inevitable mistake is someone else's obvious mistake.

..arrogance is the natural result of insufficient "learning opportunities"..

Wednesday, June 20, 2007

Biking

Last week-end was the Ottawa-Kingston bike tour.. aka the Rideau Lakes cycle tour.

http://www.ottawabicycleclub.ca/rlct

It's a 360km bike ride spread out over two days. 180km from Kingston to Ottawa and next day back again.

Why is it the last 20km are always completely brutal? When we past the 45km to go mark I felt fine. Even when we past the last 20km mark I felt fine.. but then we got this massive headwind and I just died. Anyways, we did alright in the end. It also only happens on the second day. The first day the last few kilometers are always fine.. Must be some sort of bike-tour-law-of-physics or something :-).

On the last day of the tour I got two flats (the second one happened literally a few hundred meters from the finish. It was a relatively slow leak so I just leaned progressively forward until I had to get off with about 100 meters to go.) and my chain broke. Oh how I hate it when the chain breaks.. My chain has now broken twice. Time to get a new chain. It was lucky my dad had brought with him some extra chain links because I'd already taken 2 out last time and needed to take another 4 out for the repair (well, three links really, but it was easier just t take 4 out). He brought exactly 6 links so it worked out well.

The problem with getting a new chain is that you also need to get a rear cassette. If you don't, the old cassette will damage the new chain and wear it out very quickly. Since I broke my wheel two weeks before the ride and did the ride on a lender, I also need a new wheel. The pessimist here would suggest I actually could use a new bike but I don't think so. I don't like throwing out old equipment, especially if it's not working. I guess that means I'd rather get it working and then throw it out, which doesn't make any sense, but I've checked and there's no law that says I have to make sense so I'm going to stick with my preference. :-).. Not that I am going to throw it out. I'm sure it could do another hundred million miles so the plan is: get all the new parts I need to bring the bike to working order and then keep riding it.

One important thing I learned on this tour: taking two spare inner tubes is good. However, before you do, make sure they are the right size for your wheel. An inner tube with a schrader valve won't work on a presta valve rim... Also 35mm wide is a little too big for a 28mm tire.. doh! Canadian tire sold me the wrong tube! Right box with wrong tube!

Monday, June 18, 2007

Bugs

Well, I'm happy. One of the bugs I filed on sun's java VM's drag and
drop support on windows has been dealt with and fixed.

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6362095

I'm quite proud to have helped improve the robustness of their product.
It makes me wonder, though... Why did this take so long to find?

While trying to figure out what the heck was wrong with my code I posted
a message in the java forums. The only person to reply was someone
wanting to know how the heck I managed to get drag and drop working at
all:

http://forum.java.sun.com/thread.jspa?threadID=567809&messageID=3979708

I'm starting to wonder if drag and drop is one of those technologies the
tends to be badly understood despite the fact it's widely used and very
basic. A few other technologies that have a similar problem are:

1) How various different text encoding work and interact. Everyone
understands ascii and everyone understands that UTF is magic fairy dust
that makes everything work but the concept of a text encoding format and
how it's important to know what text encoding is being used when reading
a string of text seems to be lost on the majority of programmers.

http://www.codinghorror.com/blog/archives/000178.html

2) String escaping. The number of times I've seen code that hasn't been
properly escaped before being processed is uncountable. The basic idea
behind escaping is to allow for arbitrary strings inside another
formated string. The classic example for me is how to display things
like html syntax inside a html document.

http://en.wikipedia.org/wiki/Escape_character
http://en.wikipedia.org/wiki/HTML_encoding
http://amit.chakradeo.net/2005/11/28/escaping-urls-vs-escaping-html/

The reason I mention these two in addition to drag and drop is, is the
one thing they all have in common is the central point of confusion with
these technique/technologies revolves around data formats. In fact,
sometimes I swear that, if I didn't know better, many programmers simply
do not understand what it means for data to be in a format at all.

Thursday, June 14, 2007

Anti-aliasing

Joel and Coding horror are talking about font anti-aliasing today.

http://www.joelonsoftware.com/items/2007/06/12.html
http://www.codinghorror.com/blog/archives/000885.html

There's been a renewed interest in the topic since the release of Apple's Safari hit MS windows and brought along Apple's way of doing anti aliasing, ignoring the way windows does it. I think Joel has a good point and I agree with his hypothesis that all that's happening is that people are being confronted with a new, different way of doing anti-aliasing and are expressing an aversion to it because it's new. I suspect this partially since I was using computers before this way generally possible and still, to this day, get irritated by the fact that anti-aliasing is on at all.. That is, when I notice.

Apple's version of anti-aliasing, where they try to reflect what the font would look like when printed, is really handy when writing up documents to be printed. It's also quite nice if, like Apple used to and maybe still does, use made-for-print fonts on the web. I remember seeing Apple's old font, Apple Garamond (http://en.wikipedia.org/wiki/Garamond), for the first time with anti-aliasing enabled and thinking to myself: "Ooohhh, is that the font they're using.".. Without the anti-aliasing I didn't recognize the font on the website was the same as the one on the mac's computer box. It's a really nice looking font too so I was quite impressed. With font made for on screen reading, it doesn't help much. Did you know, for instance, that way back when the mac was created it used a very small, 9 inch computer screen running at 72 dpi. They had quite a big of trouble getting any fonts that looked nice since the screen's resolution was too long and the fonts too small. Their solution was to create fonts like monaco, geneva and chicago that were essentially made to look good when viewed on the screen:

http://cajun.cs.nott.ac.uk/compsci/epo/papers/volume4/issue3/ep050cb.pdf http://lowendmac.com/myturn/2k0525.html)

It really showed they looked very nice without anti-aliasing. I think we should return to the good old days and make fonts look good without anti-aliasing. Now that's the final solution to blurry text.... :-)

First post!

Ok, so we've tried live journal now we try blogger. So far so good. Ordinarily one would expect that this is the first place I'd turn to since I actually read a few blogger based blogs. In reality I chose to shop around first. Partly so I could get a lay of the land but mostly because I can't stand the word "blog". It sounds like bog or blob. Every time I hear someone described as a blogger I get the feeling the person is liable to sneak up behind my and dump a big bucket of slime on me or something. Yuck. I have a strong dislike of slime.