Tuesday, May 31, 2005

I want to...

...hang out with these guys. Stay tuned for rasturme+gmaps remixing.

Friday, May 27, 2005

Hiding or Disabling Menu Items

Another user interface debate came up at work today. Do we hide links when they're not available or do we show them but deactivate the link? A quick google search returned a link to the brilliant Raymond Chen's entry on the matter. Doesn't answer the question but provides some guidelines. I remember reading a Slashdot headline of an interview with an ex-Apple guy who touched on the same question. I couldn't find the link, but I want to say it was with Jef Raskin.

Wednesday, May 25, 2005

Extreme JavaScript

During my internship at IBM this spring, I met a certain person who I found very interesting. He was bright, funny, worked on some really cool technologies, and gave great presentations. I had a hard time agreeing with him on one point. He liked to gripe about the lack of features in web applications... arguing that users would prefer rich applications on the desktop. He was sort of biased since his work would benefit in the case that this preference was dominant across all users since he worked on a plugin for Ecilpse that produced Java applications.

I just watched another screencast by Jon Udell that showed a very impressive use of JavaScript in the browser. The company essentially build an IDE in the browser. The IDE was capable of doing most of the features I saw demoed by this certain IBMer. I wish I could go back and show him this kind of web application.

Sunday, May 22, 2005

Less Clicks

Continuing my experimentation with bluetooth communication between the laptop and phone, I just installed Romeo. It's an application very similar to Salling Clicker (from what I hear) except it's free. It does what I was interested in doing, which is adding AppleScript hooks to proximity actions. Whenever I come in range, the laptop runs the script I talked about in my last posting, meaning one less click for me. Now I just need to figure out how to run an application (Nokia Collector) in the background.

Thursday, May 19, 2005


I'm using a new phone that happens to have a camera. For my next phone purchase I was considering getting a camera phone so I'm playing with this camera to see how much I'd actually use one. Pictures kept on the phone are only so useful--displaying a contact's picture when they call or what not. What I really want is to share the pictures with others in Flickr. I can email pictures, one by one, from the cellphone but this is tedious and expensive on my plan. I began playing with the new Automator application in Mac OS X Tiger. My experience was not pleasant. The UI is far from snappy and my end result didn't work. The workflow produces the expected results when run from within Automator but not when saved as a plug-in or application. Instead, AppleScript did the trick. The script below will open Nokia Collector (works with my SonyEricsson), grab my latest pictures over Bluetooth, browse the folder of downloaded images looking for JPG images with a certain name (that my phone uses), and email those images as attachments.

on run
tell application "Nokia Collector"
delay 30
end tell
set photosFolder to "OCL PB3:Users:mhdavids:Library:Application Support:Nokia Collector:Library:00-0e-07-1e-04-d9"
tell application "Mail"
set newMessage to make new outgoing message with properties {subject:"title", content:"description" & return & return}
tell newMessage
set sender to "my@address.com"
make new to recipient at end of to recipients with properties {address:"e@mail.com"}
tell content
set photos to list folder photosFolder without invisibles
repeat with i from 1 to (count of photos)
set strFile to ((photosFolder & ":" & item i of photos) as string) as alias
set recFileInfo to info for strFile
if (not folder of recFileInfo) then
set strFileName to name of recFileInfo
if ((strFileName contains "Moblog") and (strFileName contains "jpg")) then
make new attachment with properties {file name:strFile}
end if
end if
end repeat
end tell
end tell
send newMessage
end tell
end run

It's pretty rough but it gets the job done.

Monday, May 16, 2005

Cleaning Keyboards

We get cans of compressed gas dusters at work.

Alex: Sweet, I need this.

Alex begins dusting off the keyboard.

Jordan: What are you doing? That doesn't sound good. There's liquid coming out.
Alex: I know what I'm doing. I use these at home all the time.

Alex proceeds to shake the can and turn it upside down to get a better angle under the keys and sprays each row down the line.

Jordan: I just don't know. Isn't that stuff flammable? Like, maybe turn off your laptop first.

Alex picks up the can and actually reads the label.

Alex: "Use short quick blasts. Do not shake, or tilt or turn can updside down before or during use. Turn off all equipment before using.... EXTREMELY FLAMMABLE."

He couldn't have done things more wrong even if he tried.

Tuesday, May 10, 2005

Prepping the Disk for Tiger

I installed Mac OS X Tiger today... once I got the harddrive repaired. It wasn't repairable by the Disk Utility tool that comes with the installer so to increase the visibility of the page that helped me out I'll blog about it.

I was getting two different kinds of errors. First was the Overlapped Extent Allocation error. Chris Anderson has wrote a section called Manually fix Overlapped Extent Allocation Errors without Diskwarrior over on The Mac Help Desk that took care of it. Then there was the Invalid volume free block count error. It turns out that the first command mentioned by Chris fixes this one (fsck -fy).

Friday, May 06, 2005

LiveJournal OPML

Data: URIs are pretty cool. I'm playing with the idea of adding files to a website on the fly, beyond simple icons. Fortunately Simon Willison did most of the hard work by implementing the wonderful data: URI kitchen in JavaScript.

For my test run, I generated OPML files for a LiveJournal users's list of friends. Most of my friends have blogs hosted on LiveJournal. I wouldn't read them at all until I found out you can stream their through RSS. So then I'd read Melanie's. Now I have them all imported to NetNewsWire using this greasemonkey script. Right now, it does not distinguish between people, communities, and feeds but I don't mind unsubscribing items as much as I mind manually subscribing to one feed at a time.

Now that I know it works, I can think of much cooler applications of this combination.

Update: Greasemonkey script has been updated to support LiveJournal's new URL scheme. Yeah I'm a few months behind on this one. Thanks to Scott for pointing it out to me.

Thursday, May 05, 2005


I'm not so sure about the XHTML Friends Network but others seem to be. I came across a greasemonkey script that displays these relationships that are hidden in the rel attribute of a link. The display, however, became very obtrusive when viewing pages with long blogrolls that used the XFN notation. In some cases it took up half of the screen. So I modified this script as well to insert a little [XFN] icon (thanks to the data: URI kitchen) by each link that contains the rel attribute and shows the relationships when you hover over the icon. Like BASF, I didn't make the script... I made the script better. Or so I'd like to think.

Google Accessibility

I'm annoyed whenever my hands have to leave the keyboard to use the mouse, especially when I'm on a laptop, which is most of the time these days. I think I remember a project within Google Labs that enabled you to navigate using your keyboard. I don't see it anymore but even if it was there, it's still not part of the main site so I probably wouldn't use it. Fortunately, we're seeing more and more recombinant interfaces. One such exable is the Firefox extension Greasemonkey which gives users the ability to alter web pages. One of the scripts I use is one that numbers all Google search results and when you type the number your browser loads the corresponding result. Unfortunately, it only worked for non-double digit results. I've modified the original script by Adam Langley for those of you who sometimes venture past the 10th search result.


Nyligen så har jag funderat en del på vad jag igentligen vill göra inom datateknik. Jag vet definitift vad jag inte vill syssla med: teoretisk datateknik och dom lägre nivåerna som operativ system och data arkitektur. Jag förstår att sådant är viktigt men jag vill hellre leka med applikationer som vanligt folk ser och använder. I alla fall, jag har hört lite om sociala gränssnitt (genom Clay Shirky, Joel Spolsky, m.m.) vilket man kan tänka sig. Det ligger väl inom "human-computer interaction" men fokserar på metoder som gör det enkelt för människor att kommunicera med varandra, inte bara med datorn. Därför så spanar jag in Terry Winograd just nu, och verksamheten han driver. Vad det än blir så hoppas jag skaffa en utbildning i något som kan hjälpa mig att jobba med företag som Sixapart, Google, Technorati, JotSpot, elller starta eget.

Java Mail and Google Search API

On one of the projects I'm involved with, we use Java Mail for sending e-mail and the Google search API for indexing our pages. These seemingly unrelated components are in fact connected.

For the longest time we were seeing javax.mail.NoSuchProviderException: No provider for smtp type exceptions. My searches told me that this was most likely because of either a mis-match between my mail.jar and activation.jar files or that I had duplicates of either. I was positive neither was the case. Finally, I removed the JAR files and the code still compiled. We must have had a duplicate after all. After putting together a Perl script to search all the JARs on my classpath, I found that the google-api.jar was in fact the culprit. It includes both the mail and activiation frameworks. So for anyone else who happens to come across this same problem and then subsequently comes across this page (i.e. nobody), now you know what to do.


Jag läste just Doc Searls Getting Flat, Part 2. Själva handlingen är interessant men kommentaren kring Microsofts kultur påminnde mig om en annan artikel jag läste alldeles nyligen. Tyvärr kommer jag inte ihåg länken men den utlyste Microsoft som ett företag där akademiska meriter betyder allt. Det hela får mig att tänka på hur viktigt det är med "corporate culture." Jag jobbade på IBM för tolv veckor från Januari till Aprill. Det var en hyffsat bra erfarenhet. Dels för att jag jobbade mest med studenter som mig själv och dels för att dom gav oss mycket frihet i vad vi skapade. Under hela tiden så uppmande dom en att komma tillbaka till företaget och jobba heltid när man var klar med studierna. Tyvärr så vet jag inte om jag tänker göra det. Om det blir av så skulle det vara med de fåtal interessante personer som jag träffade personer som jobbade med spännande projekt. Annars, på det stora hela så känndes kulturen inte så kul och det är en tur jag helst slipper.

Jag tror att kulturen spelade störst roll när jag valde mellan skolor. Stanford ska visst var väldigt lungt och slappt på sitt sätt. Men samtidigt så är skolan omcirklat av ett område som är bland det hetaste när det kommer till vad jag sysslar med. Jag ser fram imot att vara bland otroligt duktiga människor och att kunna lära från dom. Larry Page från Google (och från Stanford) höll ett tal vid utgången på University of Michigan (en skola jag valde bort). Han sa något som jag har trott sedan jag blev intagen och accepterade Stanfords inbjudan. Han sa att han trodde att skolan hade begått ett stort mistag när dom tog in honom och när han kom dit så skulle han bli hemskickad på en buss. Nu blev det ju inte riktigt så men vi får se vad som händer med mig.