tag:blogger.com,1999:blog-368167312009-07-13T16:00:26.677-07:00davidwatson.orggeneralist | minimalist | pragmatistDavid Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.comBlogger35125tag:blogger.com,1999:blog-36816731.post-25181800118591929932009-05-18T21:24:00.000-07:002009-05-18T22:11:36.647-07:00Wolfram Alpha - The Software Equivalent of RainmanI played around with Wolfram Alpha today and I'm mostly underwhelmed. I tried putting in <a href="http://www64.wolframalpha.com/input/?i=march+27%2C+1968">my birthday</a> and that left me with the rainman impression - <span style="font-weight: bold;">there are lots of numbers in there, but they are mostly useless and provide no appreciable context</span>.<br /><br />For instance, we know that MLK was assassinated the week following this date and that Bobby Kennedy was assassinated a couple months later, yet neither of these dates show up in relation to March of 1968. Further, the Tet Offensive in the Vietnam War occurred from January to September of that year and yet Wolfram Alpha has no idea that March of 1968 is in the range of dates defined by the Tet Offensive. That is, Wolfram Alpha's query engine seems to be totally oblivious to the fact that a day in history, without the kind of historical context provided by the significant events of the time, is practically indistinguishable from any other day in history. <span style="font-weight: bold;">Wolfram Alpha proceeds to dissect the day in microscopic detail, as if counting ants is a productive exercise, when it should be discussing the broader implications of ant colonies.</span><br /><br />Similarly, if I ask <a href="http://www64.wolframalpha.com/input/?i=carbohydrates+in+a+can+of+coke">how many carbohydrates are in a can of coke</a>, I get the answer 14 grams, which I'm certain is simply wrong. Looking at the details reveals that this is the <span style="font-style: italic;">average carbs in a can of coke</span> where <span style="font-style: italic;">can of </span>is defined as everything from diet soda to the canonical can of coke <span style="font-style: italic;">classic. </span>Nevertheless, the upper bound of the answers provided by Wolfram Alpha is 35.56 grams. The <a href="http://www.thecoca-colacompany.com/mail/goodanswer/soft_drink_nutrition.pdf">correct answer</a> is around 40 grams. Worse, for all its marketecture, <span style="font-weight: bold;">Wolfram Alpha seems to suck at math</span>. Examine the nutrition label in the link above and we find that total carbs = sugar + dietary fiber. Thusly, 14 = 13 + 0. Back to the drawing board.<br /><br />Finally, if we look up a song title, <a href="http://www59.wolframalpha.com/input/?i=i+remember">I Remember</a>, we find that Wolfram Alpha has associated this with the film Amarcord, by Federico Fellini. Why? I have no idea, the search term doesn't even appear anywhere in the film's metadata. Worse, <span style="font-weight: bold;">there's no </span><a style="font-weight: bold;" href="http://en.wikipedia.org/wiki/David_Watson">disambiguation</a><span style="font-weight: bold;"> page ala wikipedia.</span><br /><br />Which brings me to my last point: <span style="font-weight: bold;">Wolfram Alpha is a shining example of how not to develop software products</span> - put a bunch of brainiacs in a room and let them go crazy, then wonder why no one can get any useful information out of the product they produce.<br /><br />Consider that <span style="font-weight: bold;">when Wolfram Alpha returns a data set associated with a query, the metadata are displayed in a form in which every word on the page is a link to - wait for it - a popup box allowing you to copy the linked text to the clipboard!</span> <span style="font-weight: bold;"></span>It's not like I might have wanted to, oh, let's say, drill down into the data from the macro to the micro perspective or link to another authoritative source on the data.<br /><br />While I find the mathematical aspects of Wolfram Alpha to be interesting, <span style="font-weight: bold;">Wolfram Alpha's use as an information query and visualization tool is hampered seriously by a complete lack of vision</span> as to how to go about exposing the data in meaningful ways. It's somewhat ironic that these are treated as problems with no apparent solutions given that the research is both <a href="http://research.google.com/pubs/author36334.html">deep</a> and <a href="http://www.maya.com/portfolio/darpa-visage">aged</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-2518180011859192993?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-49854457942831193502009-01-31T16:41:00.000-08:002009-01-31T16:42:53.695-08:00Is this the future of employment in the US?<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-4985445794283119350?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-73595403784201437692009-01-04T20:26:00.001-08:002009-01-04T20:31:36.452-08:00A couple quick music notesA couple things I noticed while I was on vacation the past couple weeks.<br /><br />Pat Metheny fans can now get the Metheny Manzer guitar but the offering is very limited. If I had <a href="http://www.manzer.com/limited/">$32,000 to spend on a guitar</a>, I'd buy one. <div><br /></div><div>Billy Ward is now offering his wonderful <a href="http://billyward.com/trio_pay.html">trio recordings</a> up Radiohead-style for download with a donation - pay what you believe it's worth. <a href="http://billyward.com/trio_videos.html">The videos</a> are especially interesting to me since I like watching the band play. I'd prefer to have them in HD format for my TV, but hey, you have to start somewhere. I already bought Billy's trio record from amazon mp3, but I still think the video downloads are a great idea for those of us who don't live in NYC.</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-7359540378420143769?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-22272994553587341462008-12-24T08:51:00.000-08:002008-12-24T08:53:21.806-08:00Jingle Bells by Austrian Death MachineThere are some real gems on Amazon mp3. Check out <a href="http://www.amazon.com/gp/product/B001JQ9OGK/ref=dm_dp_trk1?ie=UTF8&qid=1230098590&sr=1-143">this clip</a> by Austrian Death Machine from their release titled "A Very Brutal Christmas".<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-2227299455358734146?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-55384144170821336452008-11-09T18:30:00.001-08:002008-11-09T18:33:01.657-08:00acer restore failed reason 0xd0000017Should you have this problem with your acer while trying to restore the vista partition, simply download, burn, and run <a href="http://www.killdisk.com/downloadfree.htm">this utility</a> to zero out the hard drive partition. Then, run the restore again. Works like a charm. I got into this situation after blowing the vista partition away with a linux install. YMMV.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-5538414417082133645?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com1tag:blogger.com,1999:blog-36816731.post-83599580641595398712008-11-09T07:12:00.000-08:002008-11-09T07:15:53.951-08:00asus x83vb-x1 phoronix benchmarks on 64-bit ubuntu intrepidI ran the phoronix benchmarks on 64-bit ubuntu intrepid 8.10 on my asus x83vb-x1 and i'm pleased to report that <a href="http://davidwatson.org/test-results/asus/">they compare favorably</a> with the <a href="http://www.phoronix.com/scan.php?page=article&item=ubuntu_macosx">mac osx and ubuntu benchmarks</a> reported recently by phoronix.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-8359958064159539871?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-11929492970999512752008-11-05T11:58:00.000-08:002008-11-05T12:06:09.029-08:00Websense: the squid-proxy solutionSome people have asked about problems with websense blocking legitimate technical content on the web. I have used this solution to this problem for years. I do not condone trying to outsmart your employer's IT people. However, I believe that productivity is important.<br /><br /><ol><li>On your home machine: sudo apt-get install squid-proxy</li><li>This will put the squid proxy on port 3128. Additional configuration may be required but is beyond the scope of this document.</li><li>On your work machine: ssh -L 3128:internal_ip_address_of_the_machine_hosting_the_proxy:3128 -p ssh_port username@external_ip_address_of_the_machine_hosting_the_proxy</li><li>On your work machine: Set firefox to proxy to localhost:3128 for everything. This means that firefox is talking to the port forwarding SSH tunnel that we setup in step #3 on the local machine which then sends the traffic over the tunnel to the squid proxy on the remote end. </li></ol><br />I use the following python script to setup the proxy. Replace internal_ip_addr and external_ip_addr with the appropriate IP addresses for your network. You also may need ssh_port if you're like me and you run ssh on a high numbered port. If not, you can remove the -p. You'll need to apt-get a few things like PyQt to make this work, else you can remove them and make it run daemon mode. I'm a GUI guy so that is beyond the scope of this document.<br /><pre><code><br />import os<br />import popen2<br />import sys<br />from PyQt4.Qt import *<br />import signal<br /><br />process = None<br /><br />def on_start_clicked():<br /> global process<br /> print 'clicked start'<br /> ok = 0<br /> tup = QInputDialog.getText(w, 'SSH Password', 'password', QLineEdit.Password)<br /> if tup[1] and not tup[0].isEmpty():<br /> process = popen2.Popen3('sshpass -p ' + str(tup[0]) +<br /> ' ssh -L 3128:interal_ip_addr:3128 -p ssh_port david@external_ip_addr')<br /> print process.pid + 2<br /><br />def on_stop_clicked():<br /> global process<br /> print 'clicked stop'<br /> if process:<br /> os.kill(process.pid + 2, signal.SIGKILL)<br /><br />a=QApplication(sys.argv)<br />w = QWidget()<br />gl = QGridLayout()<br />w.setLayout(gl)<br />start = QPushButton('start')<br />stop = QPushButton('stop')<br />gl.addWidget(start)<br />gl.addWidget(stop)<br />w.connect(start, SIGNAL('clicked()'), on_start_clicked)<br />w.connect(stop, SIGNAL('clicked()'), on_stop_clicked)<br />w.show()<br />a.exec_()<br /></pre></code><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-1192949297099951275?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-12327016608925766242008-11-03T23:12:00.001-08:002008-11-03T23:30:17.814-08:00Two weeks with the T-Mobile G1I finally called T-Mobile today and asked them to fix the fact that my G1 freezes once per day where I have to reset by removing the battery. They had me power the phone off, then hold home and the red button for 25 seconds to get the triangle display, then Alt+L and then Alt+W. Then reboot with Home+Back. We'll see if this fixes the issue. If so, that indicates that loading apps may be causal with respect to these hard freezes in the OS - a disturbing conclusion. If not, AFAIC, the phone is going back. I won't be surprised if the apps are an issue, my wife hasn't had a single lock, and the only difference I can identify, save for usage, is the apps load.<br /><br />Funny thing is that I love the phone. It's like carrying a lightweight laptop around in your pocket. I could go on and on about how much more useful it is than my sidekick. And it's a great phone - dropped calls are largely a thing of the past.<br /><br />Speaking of apps, check out <a href="http://code.google.com/p/connectbot/">connectbot</a> - an SSH client for google android, and arguably the best ssh client I've seen on any platform.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-1232701660892576624?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-44415383759591727092008-10-30T19:23:00.000-07:002008-10-30T19:24:15.053-07:00Usable SSH client for WindowsI just found a nice, usable SSH client for windows. I never cared much for putty but Bitvise's <a href="http://www.bitvise.com/tunnelier.html">Tunnelier</a> does what I want and does it well.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-4441538375959172709?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-11174590200418034852008-10-30T18:51:00.001-07:002008-10-30T18:54:49.364-07:00My google android pumpkin<div style="FLOAT: right; MARGIN-BOTTOM: 10px; MARGIN-LEFT: 10px"><a title="photo sharing" href="http://www.flickr.com/photos/davidwatson/2987419777/"><img style="BORDER-RIGHT: #000000 2px solid; BORDER-TOP: #000000 2px solid; BORDER-LEFT: #000000 2px solid; BORDER-BOTTOM: #000000 2px solid" alt="" src="http://farm4.static.flickr.com/3248/2987419777_304630abd7_m.jpg" /></a><br /><span style="MARGIN-TOP: 0px;font-size:0;" ><a href="http://www.flickr.com/photos/davidwatson/2987419777/">My google android pumpkin</a><br />Originally uploaded by <a href="http://www.flickr.com/people/davidwatson/">David Watson</a> </span></div>We're having a pumpkin carving contest at work tomorrow. I saw a google android pumpkin at <a href="http://phandroid.com/2008/10/21/droid-o-lantern-halloween-love-for-android/">phandroid</a> and was inspired to create my own. It was a lot of work, took me about 2 hours start to finish, but I am pleased with the result.<br clear="all"><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-1117459020041803485?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-24884984781155259872008-10-26T20:51:00.000-07:002008-10-30T21:53:36.941-07:00Asus X83VB-X1 Running Linux 64-bit Kubuntu Intrepid Ibex 8.10I've been searching around for a new laptop for a while. I was torn between the new macbooks, old macbook pros, and the usual stuff from dell. There were various deals going on that were, for better or worse, too rich for my blood.<br /><br />Well, this morning I noted that best buy had put an <a href="http://www.bestbuy.com/site/olspage.jsp?skuId=9050242&amp;st=asus&amp;lp=8&amp;type=product&amp;cp=1&amp;id=1218012522418">Asus Laptop/Notebook at a very good price</a>. This machine included Intel Centrino 5800 duo core at 2.0 GHz, 4 GB RAM, 250 GB disk, and Nvidia 9300M GS with 512 MB dedicated memory, LED display, etc. for $699. That's a lot of hardware for the money. I needed a 64 bit machine with 4 GB RAM as I've been doing a lot of building custom ubuntu derivatives and work in vmware and virtual box.<br /><br />I searched high and low and couldn't find much in the way of success stories with this machine, particularly with ubuntu linux. I did as much research as I could and finally gave up, drove to the best buy with a kubuntu disk in my pocket, walked up to the machine, looked around, jammed it in the cd drive (to my amazement, it wasn't locked down), and rebooted it. The live CD came up with no problems, long enough for me to open a console, confirm that everything was working, and do an lspci noting the wireless chipset, etc.<br /><br />I then pulled the disk out and rebooted the machine (just before the best buy kid walked up), went onto the web via my G1, googled for the intel 5100 wireless and discovered that it was supported with the new .27 kernel under intrepid. So I bought one, brought it home, installed the intrepid version of Kubuntu after noting that the ubuntu and kubuntu intrepid live CDs both showed problems which seemed to be related to a problem with the CD drive, lots of squashfs errors after the dekstop loaded properly. It was very strange because there wasn't a single problem until I tried to run the apps from the desktop and in both ubuntu and kubuntu live, apps wouldn't run, despite the desktop being perfectly functional.<br /><br />So I did the full install to disk and I'm pleased to report that everthing is fine. I'm quite happy with the machine now though I haven't had a chance to test everything out yet, but the screen, video, network, etc. are working great. It's a fast machine, for sure.<br /><br />One thing to note is that with the 64-bit build of firefox, you can use the 32-bit version of flash. I did the following:<br /><br /><ol><li>Install 64-bit firefox from the package manager.</li><li>Install nspluginwrapper from the package manager.</li><li>Download the latest version of flash for x86.</li><li>Unpack it to your favorite location.<br /></li><li>mkdir sudo /usr/lib/browser-plugins,<br /></li><li>sudo cp libflashplayer.so /usr/lib/browser-plugins/.</li><li>nspluginwrapper -i /usr/lib/browser-plugins/libflashplayer.so</li><li>Restart the firefox and the flash player will be working as normal.</li></ol>Suspend works. Hibernate works. The nvidia proprietary drivers work. I'll report more details later after I get some sleep.<br /><br /><span style="font-weight: bold;">UPDATE<span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="font-style: italic;"></span></span></span></span></span></span></span><span style="font-style: italic;"><span style="font-style: italic;"><br /><br /><span style="font-style: italic;"><span style="font-style: italic;">Today I downloaded the official release of Ubuntu Intrepid Ibex and I'm pleased to report that after doing a clean install on the Asus X83VB-X1, everything works including touchpad, wireless, sound, CD-ROM drive (see comment from thafreak below), nvidia proprietary drivers, everything. I was on the fence about keeping this laptop, but I've decided it is the best linux laptop you can buy for $699. Run, don't walk to the local best buy and get yourself one.</span></span><br /></span></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-2488498478115525987?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com15tag:blogger.com,1999:blog-36816731.post-42196632872261832452008-10-26T08:01:00.000-07:002008-10-26T08:02:39.075-07:00I've been abductedChristian pointed out this cool firefox plugin called <a href="https://addons.mozilla.org/en-US/firefox/addon/3408">abduction</a>. The short story is that it allows you to take a screenshot of a web page - the whole web page, even the parts that aren't visible due to scrolling of the browser. Awesome.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-4219663287226183245?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-9264381799859406862008-10-25T13:41:00.000-07:002008-10-25T14:04:08.739-07:00Google Android on the T-Mobile G1 by HTC: Day 4Today we converted my wife's phone from the sidekick to the G1. That was much less troublesome than my conversion since I already discovered how to get her contacts across.<br /><br />One thing that really distinguished the sidekick was the availability of an ssh client. I'm pleased to report that the G1 has <a href="http://code.google.com/p/connectbot/">one of the best SSH clients I've seen on any platform</a>. It was designed to take advantage of the interaction model on the G1 and really sets a very high standard in usability. Best of all, like most android apps I've seen, it's free!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-926438179985940686?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-59727140245933400642008-10-25T12:50:00.000-07:002008-10-25T13:36:02.088-07:00Google Android on the T-Mobile G1 by HTC: Day 3Today I decided to try some music on the G1.<br /><br />Last night I went to see a band called <a href="http://www.brewersrow.com/">Brewer's Row</a> at Moondogs in Blawnox. When we arrived, there was another band on the stage that shall remain nameless - they were terrible. But we were rewarded from the first song when we all realized how amazing Brewer's Row was. We all bought the CD and everyone I've shared it with has loved it.<br /><br />Anyhow, on friday, I took the brewer's row CD, ripped it with banshee to OGG Vorbis, copied the files onto the USB mounted drive from the GI, and proceeded to listen on the G1. Everything sounded great. Unfortunately, the music player on the G1 doesn't seem to know how to handle the artist, album, and song names by parsing the file names and folder names. Sigh. So apparently if you want the music to be properly identified on the G1 once you load it, you've got to make sure there are proper ID3 tags or something. I'll have to investigate this further to determine if it's just an issue with ogg vorbis or with other music files as well.<br /><br />Battery life was much better today with the GPS disabled. TGIF.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-5972714024593340064?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-16239057556980507412008-10-25T12:32:00.000-07:002008-10-25T12:42:52.830-07:00Google Android on the T-Mobile G1 by HTC: Day 2Day 2 with the G1 started out with another crash. This time I was in the settings application, not doing anything special, when the everything on the device froze. I removed the battery like I did the day before and everything was back to normal.<br />Crosses fingers hoping the crashes don't continue.<br /><br />Battery life seemed particularly abysmal today so I turned off the GPS. Then it was much better.<br /><br />Call quality and reception continue to be excellent.<br /><br />Tomorrow I'm going to take a look at the music player.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-1623905755698050741?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-13857560434008185892008-10-22T19:53:00.000-07:002008-10-22T20:34:45.864-07:0024 Hours with TMobile's HTC G1 Google Android PhoneSo I've had the T-Mobile G1 for a little over 24 hours now and I thought this would be a good time to recount my experience with the google phone - good, bad, and ugly.<br /><br /><span style="font-weight: bold;">Good</span><br /><ol><li>Beautiful display and font quality.</li><li>Phone quality - my sidekick would routinely drop calls at two specific places on my daily drive. The G1 doesn't drop below three bars of signal even at these weak spots in the network and calls stayed clear and crisp through the weak spots.</li><li>Included headphone/mic: while I might not listen to symphonic music on these, they're not bad for phone calls. Everything was clear and callers reported hearing me well.</li><li>802.11 - 'nuff said.</li><li>Google calendar - I had not realized how truly good this app is, on the mobile, or the web.</li><li>The trackball - an excellent design that I was used to from the sidekick.</li><li>The touchscreen - for all the criticism over the lack of multitouch, I find the touch screen gestures quite usable if not as deeply integrated as I would like.</li><li>Brown - yeah, brown. I like brown. Apparently, so do a lot of other people.</li><li>Street View - bad ass.</li><li>Pac Man! Drive with the trackball, the touch screen, or the accelerometer.<br /></li></ol><span style="font-weight: bold;">Bad</span><br /><ol><li>The button presses that aren't on the screen just aren't quite right. There is a subtlety and nuance involved in getting the feel of these right and that feel is good or not great. So there may be a point to Apple's buttonless design. Somebody send a haptics team to HTC - quick.</li><li>The camera seems slow and unwieldy which may inherit a bit of its bad behavior from the buttons.</li><li>As reported elsewhere, switching from portait to landscape, ala touchscreen vs. keyboard navigation is painful. In particular, there seem to be a number of places where the navigation could have been easily supported more fully on the touch screen but force a keyboard interaction instead.</li><li>The phone comes with the GPS in a coarse mode from the factory. This meant that the first time that I asked the map application to locate me, it had me somewhere near Kitchener, Ontario which is quite a ways from Pittsburgh, PA. Once I discovered the setting for GPS granularity the tracking improved down to the few feet range. I guess it uses a lot of battery so that's why they leave it in coarse mode from the factory.</li><li>The omission of a native google reader app seems silly. It's not particularly difficult, and with google having what should be the most effective software engineering team in the world, this kind of omission is laughable.<br /></li></ol><span style="font-weight: bold;">Ugly</span><br /><ol><li>There is no task list app! That's a big WTF DOA for a lot of people, me included. Now I may be willing to write my own, but really, it's the canonical hello world in a number of frameworks. Surely, the collective genius at google can produce a todo list. And yes, I'm aware that there are a slew of web-based ones that are excellent - I'm holding out for a native android app.<br /></li><li>Crash! The morning after I got the phone, I proceeded to check the weather with the weather channel app that I had downloaded from android market. I hit the menu button and the phone locked completely, including everything on the screen, and all of the buttons. It didn't respond to any of the reset sequences. Only after removing the battery, was I able to get it to reboot successfully. So much for google's smooth crash handling I'd seen reported.</li><li>Contacts - the migration of contacts from my sidekick to the G1 was positively painful, requiring a lengthy and tedious, mostly manual process that could have been easily planned for by T-Mo. The fact that they failed to solve this is an indicator of how little the designers are thinking of these issues. They stop at the design of the phone but the complete product is the sum of a lot of other components in addition to the phone.</li><li>Did they mention the battery? The battery life is horrible. Granted, I've been playing with the thing obsessively. However, I've not seen it go for more than about 12 hours without a charge. That seems awfully short.</li></ol><span style="font-weight: bold;">Summary</span><br /><br />The T-Mobile G1 with Google Android is a significant improvement over my previous sidekick, which despite the fact that very few people had ever heard of it, was a trendsetter in its time. Virtually every facet of the phone is improved. I don't really care what the comparisons to the iPhone are as the iPhone is not an option for me due to Apple's highly proprietary, provincial, and insular view of the world. While the T-Mobile is far from perfect, and HTC's effort here is clearly not to Apple's hardware standard, the whole is greater than the sum of the parts. Time will tell whether the android market can deliver on the promise of an open application market for mobile phones. Is this 1981 all over again? I think so.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-1385756043400818589?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com1tag:blogger.com,1999:blog-36816731.post-70896835680297225852008-10-22T03:21:00.000-07:002008-10-22T04:29:29.254-07:00From Sidekick to T-Mobile G1 Google Android with ContactsI received my G1 a day early - October 21. I took a half day from work to make the transition which was fortunate, because for as many things as the crew at Google got right, there were some things that T-Mobile overlooked.<br /><br />I realized this after moving the SIM card from my Sidekick ID to the G1. When I turned the phone on and began digging around in what was a very new interface for me, I quickly realized that my contacts - at least the ones with phone numbers - were gone. I tried loading the ones from the SIM card, but realized I didn't have them there either. If you have hundreds of contacts that you need daily as I do, this is a non-starter.<br /><br /><span><span style="font-weight: bold;">Here's my solution to moving contacts from the Sidekick to the G1</span>, which assumes that you have minor league programming skills like editing HTML, editing a CSV file, and running a script at the command line. If you don't have these skills, there are probably better methods. I don't have access to Microsoft Outlook on Windows platforms, so this was the easiest option for me.<br /><br /><span style="font-weight: bold;">Caveat Emptor!</span> This solution has the following limitations - if you destroy your entire personal data infrastructure based on these instructions, you were warned:<br /></span><ol><li><span style="font-weight: bold;">You only get one chance to get it right, if you get it wrong, gmail will import the entries with a name such as "unknown", then the phone will synch these entries, and since there's no multi-delete that I can find in the phone, you'll have to delete them by hand. I found this troublesome given that I thought synch would take care of it.</span><br /></li><li><span><span style="font-weight: bold;">It does not handle contacts that have more than one phone number.</span></span></li><li><span><span style="font-weight: bold;">It does not handle contacts that have email addresses</span>.<br /></span></li><li><span><span style="font-weight: bold;">Additional phone numbers and email addresses are preserved, you just have to edit those contacts by hand</span>.<br /></span></li></ol><span>The email information will be preserved in the notes field. If you know how to preserve this information correctly, please comment. My contacts in the Sidekick were more than 90% phone-only, so email addresses were not a big concern for me. I already had those in gmail.</span><br /><ol><li>Go to my t-mobile and <a href="https://www.sidekick.dngr.com/address/index?sort=last_name&amp;order=descending&amp;category=-2&amp;tab_letter=all&amp;printable=1">show all your contacts in a list</a>.</li><li>Save the page as html: in firefox, right-click, save page as: index.html is fine. The method is similar in other browsers.<br /></li><li>Edit the html, remove everything above the second opening table tag except the opening doctype, html, head, and body tags.</li><li>Find the closing table tag corrsponding to the opening table tag in #3 above - this will be the next table tag in the html.</li><li>Remove everything below the closing table tag except the closing body and html tags. </li><li>Save index.html</li><li>Download <a href="http://sebsauvage.net/python/html2csv.py">this python script</a>.</li><li>Save the script as html2csv.py.</li><li>Make sure you have python installed. If not, you can get it <a href="http://python.org/download/">here</a>.</li><li>Run the script at a command line in the location where you placed the script and your contact list html: python html2csv.py index.html</li><li>Edit the resulting index.csv and set the top line to: "","Name","","","Phone","","Email Addresses",""</li><li>Go to gmail, click contacts, then import</li><li>Select the index.csv file that you just created in the file browser, then click import.</li><li>You should see your contacts appear in gmail, then shortly thereafter they will synch and appear in your G1. I use the contacts display group entitled <span style="font-style: italic;">contacts with phone numbers</span> so I only see the contacts that have phone numbers.<br /></li><li>Edit any contacts with multiple phone numbers using gmail on the web by removing the extra phone numbers that are concatenated onto the main phone number and creating new entries for them.<br /></li></ol>While a bit long-winded, this gets the job done relatively quickly with minor issues for hand-editing. It also points out just how poorly import/export capabilities are designed into, or not designed at all, in many of these systems. Just try finding documentation of the CSV that many of these systems export or import. I found it nearly impossible and guessed by looking at gmail's export to CSV in outlook format. It also points to the need for multi-entity edit capabilities in gmail's contacts feature. If you edit many contacts, you'll realize that having to click a button to get to the notes field is ridiculous, and then having to click save on every entry is a lot of work. It gets very tedious for mass edits.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-7089683568029722585?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com4tag:blogger.com,1999:blog-36816731.post-70486968179895634122008-09-24T20:39:00.000-07:002008-10-16T17:47:47.885-07:00Google Android-based T-Mobile G1 on the wayAs with all sidekick-toting disaffected urban youth, I eagerly awaited the launch of TMobile's G1 - the first iteration of the much maligned google phones running google's mobile OS platform called android. My wife and I managed to order two G1 phones successfully a few hours after the NYC announcement, but it was an experience frought with trouble indicative of T-Mobile's inability to build a web experience that scales.<br /><br />It became clear even before the website was available that they were having issues.<br /><br />First, they launched the site without the content. You could get to the home page, but none of the links worked. They just showed a little teaser message box. This was intentional, of course.<br /><br />Then, once they made the links work, you would be presented with failure after failure as the ordering site was unavailable. Sooner or later the ordering site started responding, but even then, it took several tries to complete each step of the process. I selected the color and got to the final order submission and literally had to submit the page 5-10 times before it succeeded. My wife had similar problems.<br /><br />When the order confirmation appeared, it stated that you would receive a phone message (presumably SMS) within 24 hours. That turned out to be wrong as I called T-Mobile after 24 hours and explained I had not received a confirmation message. They explained that this message was only for a normal phone upgrade which would ship immediately and did not apply to the G1 since it wouldn't ship for another month. Brilliant! Nevertheless, they confirmed that the phones would ship on October 22.<br /><br />Here are some of the more useful links I've found on the G1:<br /><br /><a href="http://www.t-mobileg1.com/">tmobile</a><br /><br /><a href="http://blogs.zdnet.com/cell-phones/?p=179">zd net review</a><br /><br /><a href="http://www.cbsnews.com/stories/2008/10/16/scitech/pcanswer/main4525361.shtml">cbs review</a><br /><br /><a href="http://tmobile.modeaondemand.com/htc/g1/">g1 emulator</a><br /><br /><a href="http://phandroid.com/">phandroid</a><br /><br /><a href="http://www.g1depot.com/">g1 depot</a><br /><br /><a href="http://www.coroflot.com/public/job_details.asp?job_id=21215">design job at motorola</a><br /><br /><a href="http://gizmodo.com/5056476/why-android-will-soon-kick-ass">why android will soon kick ass</a><br /><br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/z7qbPa1O8Ys&amp;hl=en&amp;fs=1"><param name="allowFullScreen" value="true"><embed src="http://www.youtube.com/v/z7qbPa1O8Ys&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object><br /><br /><p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="480" height="385"><param name="src" value="http://www.youtube.com/p/8D19D01A9F4AA199"><embed type="application/x-shockwave-flash" src="http://www.youtube.com/p/8D19D01A9F4AA199" width="425" height="344"></embed></object></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-7048696817989563412?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-44118360251690872182008-09-13T11:02:00.000-07:002008-09-13T11:04:32.726-07:00Media asks the tough questions<span class="Apple-style-span" style="font-family: Arial; font-size: 10px; white-space: pre; "><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/zk-3SPrEJTY&amp;hl=en&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/zk-3SPrEJTY&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-4411836025169087218?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-33514266876490266542008-05-17T08:31:00.000-07:002008-05-17T08:33:15.343-07:00veloroutes.org<a href="http://veloroutes.org/">veloroutes.org</a> is an interesting website for creating and sharing bike routes between two points. It has a neat elevation feature that calculates change in elevation over the ride and allows you to visualize that in a graph, but the elevation calculation and graph appear to be buggy.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-3351426687649026654?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-40741784793590899232008-05-17T07:57:00.000-07:002008-05-17T08:06:35.416-07:00My PhotographyIn the past month I've managed to sell one photograph from from my flickr account and have another featured on a travel website.<br /><br />This photograph was purchased for inclusion in a marketing campaign at a local restaurant chain:<br /><br /><a href="http://www.flickr.com/photos/davidwatson/1470787520/" title="phelps runs for home by David Watson, on Flickr"><img src="http://farm2.static.flickr.com/1159/1470787520_6a401487c6_m.jpg" width="240" height="180" alt="phelps runs for home" /></a><br /><br />This photograph was featured on <a href="http://www.schmap.com/california/parks/#p=19821&amp;i=19821_6.jpg">schmap.com</a>:<br /><br /><a href="http://www.flickr.com/photos/davidwatson/560570259/" title="Majestic Coast Redwoods at Muir Woods by David Watson, on Flickr"><img src="http://farm2.static.flickr.com/1422/560570259_346eeb73c0_m.jpg" width="240" height="180" alt="Majestic Coast Redwoods at Muir Woods" /></a><br /><br />Now, if I could just find the time to take my photography a little more seriously...<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-4074178479359089923?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-65276472308601400002008-03-16T20:02:00.000-07:002008-03-16T20:03:54.935-07:00Diabetes: Of Mice and MenThis weeks <a href="http://www.blog.newsweek.com/blogs/labnotes/archive/2008/03/14/diabetes-of-mice-and-men.aspx">light reading</a> in diabetes research.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-6527647230860140000?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-20328809871847081752008-02-27T19:10:00.000-08:002008-02-27T19:55:46.514-08:00python-couchdb rocks<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://davidwatson.org/uploaded_images/Screenshot-CouchDB---Mozilla-Firefox-707148.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://davidwatson.org/uploaded_images/Screenshot-CouchDB---Mozilla-Firefox-707141.png" alt="" border="0" /></a>I've been playing around with couchdb using python-couchdb on ubuntu 7.10. It's in <a href="http://packages.debian.org/unstable/main/python-couchdb">debian sid unstable</a> so it can be installed trivially with apt-get or synaptic. You can also install it the old-fashioned way by <a href="http://jhcore.com/2007/12/24/couchdb-on-ubuntu/">following these instructions</a>.<br /><br />Couchdb is explained <a href="http://www.couchdbwiki.com/index.php?title=CouchDb_Quick_Overview">here</a>. I was searching for a system that was close enough to the <a href="http://www.maya.com/web/what/papers/maya_universal_database.pdf">VIA repository that we used at MAYA</a>. Couchdb is that system.<br /><br />Here is an <a href="http://userprimary.net/user/2007/12/16/a-quick-look-at-couchdb-performance/">interesting article</a> on couchdb performance and <a href="http://damienkatz.net/2007/12/couchdb_perform_1.html">a response from Damien Katz</a>.<br /><br />Couchdb has a well-designed web interface that is accessible at http://server/_utils/index.html.<br /><br />I use postgres for relational stuff, but I find trying to keep relational and the front end code in synch tedious. Couchdb seems to solve that for me without paying too heavy a price. At the moment, the major missing piece appears to be authentication. That is, there isn't any. That'll be a show-stopper for a lot of projects, but I still find the usability of couchdb compelling.<br /><br />Here's a short sample in python that I worked up from the documentation in python-couchdb that shows how to create a database, delete a database, create a document with a python class-based schema, store the documents, and retrieve the documents using the db directly, and the query interface as well. HTH. Thanks to Nick Smallwood for the query code.<br /><pre><code><br />import couchdb<br />from couchdb.client import Server<br />from couchdb.schema import Document, TextField, IntegerField, DateTimeField<br />import datetime<br />import time<br /><br />print '*' * 80<br />print 'begin'<br />print '*' * 80<br /><br /># the couchdb server we're talking to<br />server = Server('http://192.168.1.30:5984/')<br />print 'established database connection'<br /><br /># create a database, if it already exists, delete and recreate it<br />try:<br /> db = server.create('animals')<br /> print 'database created'<br />except:<br /> del server['animals']<br /> db = server.create('animals')<br /> print 'database deleted and created'<br /><br />print '*' * 80<br /><br /># create a document class<br />class Animal(Document):<br /> name = TextField()<br /> age = IntegerField()<br /> added = DateTimeField(default=datetime.datetime.now())<br /><br /># our input data<br />animals = [{'name': 'keiko', 'age': 5}, {'name': 'goose', 'age': 11}]<br /><br /># store the data in the database<br />for each in animals:<br /> animal = Animal(name=each['name'], age=each['age'])<br /> animal.store(db)<br />print 'animals stored in database'<br /><br />print '*' * 80<br /><br /># read the data from the database<br />print 'reading all animals from database'<br />print len(db), 'animals retrieved from database'<br />print 'name', 'age', 'added'<br />for uuid in db:<br /> animal = Animal.load(db, uuid)<br /> print animal.name, animal.age, animal.added<br /><br />print '*' * 80<br /><br /># query the database<br />print 'querying the database'<br />code = '''function(doc) { if (doc.name=="goose"){ map([doc.name], doc); }}'''<br />results = db.query(code)<br />print len(results), 'animals retrieved from database'<br />print 'name', 'age', 'added'<br />for res in results:<br /> print res.value['name'], res.value['age'], res.value['added']<br />print '*' * 80<br />print 'the end'<br />print '*' * 80<br /></code></pre><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-2032880987184708175?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com3tag:blogger.com,1999:blog-36816731.post-8235305599282340472008-02-12T20:03:00.001-08:002008-02-12T20:03:34.900-08:00out with the old, in with the new<div style="float: right; margin-left: 10px; margin-bottom: 10px;"> <a href="http://www.flickr.com/photos/davidwatson/2261389619/" title="photo sharing"><img src="http://farm3.static.flickr.com/2326/2261389619_830ebef583_m.jpg" alt="" style="border: solid 2px #000000;" /></a> <br /> <span style="font-size: 0.9em; margin-top: 0px;"> <a href="http://www.flickr.com/photos/davidwatson/2261389619/">out with the old, in with the new</a> <br /> Originally uploaded by <a href="http://www.flickr.com/people/davidwatson/">David Watson</a> </span></div>After 9 years with my trusty Minimed 507c insulin pump, I've finally gotten the replacement - a Minimed paradigm 522 with the wireless continuous glucose monitor, etc. I can't wait to get started. The trainer is coming in a few days to teach me how not to hurt myself with this decidedly more complex device, but it's all in the name of progress. I look forward to the fact that I won't have to do the carb/insulin math in my head anymore. And the fact that the bolus function knows how much insulin is active in the body and takes that into account on a secondary bolus is awesome. I'll have to adjust to the silhouette's and sil-serter but that should be a welcome change with my disappearing stomach.<br clear="all" /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-823530559928234047?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0tag:blogger.com,1999:blog-36816731.post-12406967591732154662007-07-31T19:37:00.000-07:002007-07-31T19:41:05.383-07:00Uptown Rhythm & Brass at the Rex - Pittsburgh Music FestivalMy band, Uptown Rhythm &amp; Brass, will be performing Thursday, August 9th from 7-9 PM at the Rex Theatre sponsored by the Pittsburgh Music Festival. Come out and support live music in Pittsburgh. See <a href="http://uptown-rb.com/pghmusicfest.html">this page</a> for more details and a link for purchasing tickets.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36816731-1240696759173215466?l=davidwatson.org%2Findex.html'/></div>David Watsonhttp://www.blogger.com/profile/10976041670512854515davidthewatson@gmail.com0