Posts tagged ‘frustration’

A visit to the golden prison

My wife managed to win an iPod Touch a the office Christmas party. I got more excited than her; she actually suggested we put it on eBay unopened, of course I simply had to open it and play a little. After a weekend I came to the conclusion that, to me, it was a piece of useless crap that we should try to sell ASAP. Luckily we managed to sell it on to someone who’s recently had a large sip of the Apple Kool-Aid. Here’s what I found out anyway, let’s start with the least bad.

The UI

It’s cute, very cute. Clicking icons, typing in the “keyboard” all very enjoyable. I tried out the zooming in Safari, beautiful. Then the cracks started showing, I can’t zoom everywhere, suggesting that it’s implemented on an application level. Why not provide that on a system level instead, so that all applications have it automatically? I also found it really irritating that there’s no copy-paste (apparently a common gripe). After I broke the jail of the 1.1 firmware and installed a audio cast client I had to use a pen and paper to copy URLs from Safari in order to subscribe. Poor!

Browsing the web

Getting network connectivity was a breeze. The UI of Safari is cute and the zoom is really handy. The first thing that irritated me was that there’s no way of saving things. Yes, there’s WiFi available in many large cities nowadays, but there’s still a lack of wireless connectivity outside of cities. So, my hope of being able to look for things while online and read while offline was a no-starter. I also would have liked to download videos and watch them later, on the other hand, and this is such a ridiculous mistake by Apple since it basically breaks the web, there’s no support for flash. Yes, the format that basically everybody uses to post videos online is not supported! Oh, but there’s YouTube you say? Well, on to that then…

The YouTube application

The only way of watching videos on YouTube is through this application. Surprisingly it’s not possible to use Safari to browse around using YouTube’s well-known web interface and find interesting things to watch that way. No flash support, remember?

On top of this there is no way of saving a video to watch it later. Again, listen Apple, there are areas that don’t have WiFi connectivity in the world!

Loading things on to the iPod Touch

I found this to be most disappointing. The only way to get stuff, music/video/audio cast, on to it one must use iTunes. There are rumours of support in bleeding edge libgpod, but by this time I didn’t bother with trying that out. What I did try was breaking the jail, installing OpenSSH, mounting it using SSHFS just to find out I only had read access in the versions of gtkpod/libgpod that’s in Debian Sid. Then I tried installing iTunes in WINE, but gave up after a few hours of trying to get that working. The next attempt was to use VMWare, using an evaluation license for Workstation I got as far as installing iTunes just to find out that it wouldn’t accept the iPod Touch when I plugged it into the USB port. After all of this, and my other findings, I didn’t think it’d be worth compiling libgpod from source.

Other bits and pieces

I’ve heard the calendar and contacts can only be synced to a Mac. Of course I couldn’t try it, since I don’t have a Mac.

The iTunes application on the device itselfi only contains just enough to spend money on the iTunes store. No way to subscribe to audio casts that I could findii.

Conclusions

I’ve never thought quite as much about the words “proprietary” and “technological silo” as I did while playing with the iPod Touch. The experience has put me off all Apple products, sure they are beautiful and cute, but to me they aren’t usable.

  1. I can’t remember if it were on there when I first opened it of if it only appeared after upgrading to firmware version 1.2.[back]
  2. I could always set up a personal audio cast containing my music had it been possible.[back]

I’m not being alone in thinking del.icio.us is crap

Ah, someone else is feeling the pain with the del.icio.us API.

Interesting information about throttling on usage of posts/all. It all adds up to del.icio.us API being nearly useless for experimentation and interesting new uses of bookmarks. I’m just so happy there are other social bookmark sites that don’t put whimsical limitations on API usage.

On Windows programming

I always find myself going through the same motions when trying to programming on Windows: excitement, bewilderedness, frustration, relief. It’s exciting to find new libraries and frameworks that seem to deliver exactly the functionality I require. I feel bewildered because I don’t think I’ve ever come across a Windows C/C++ API that immediately makes sense to me. Then follows a time of frustration, often a rather long period too, when I try to use the library/framework to solve the problem I have. At some point I hit that stage where my little project is debugged into behaving properlyi and a sense of relief comes over me.

One thing that never ceases to amaze me is how many small surprising things there are lurking just under the hood in Windows:

  1. Want to print an error message? GetLastError gives you an error value and FormatMessage whips it into a nice printable string. Take a good long look at FormatMessage. Where is the convenience function a lá strerror?

  2. Another thing is the surprising order of paths that is searched for DLLs. By putting PATH so far down the list and completely leaving out an equivalent of LD_LIBRARY_PATH they actively encourage developers to copy DLLs into the home dirs of executables. I suspect this is inevitable given the DLL-hell phenomenon on Windows. It’s nonetheless extremely irritating when developing against a non-standard DLL (i.e. one that isn’t installed in \windows\system32).

  3. The utter confusion I experience when trying to figure out just where to find the correct framework to use. There is considerable overlap between Visual Studio and the Windows Platform SDK. To add more confusion there are sometimes other frameworks that overlap the both of them, e.g. Debugging Tools for Windows provides dbghelp.{dll,h}, both of which are provided in slightly different versions in the other placesii.

  4. The lack of fixes for known issues, e.g. the version of dbghelp.h included in Debugging Tools for Windows can’t be included as is because it lacks the definition of a macro. The webpage announcing version 6.6.7.5 was updated 18 July, 2006. One would think that gives Microsoft ample time to address the issue, but no such luck.

Well, that’s enough of ranting for one night…

  1. Through experience I’ve come to the conclusion that it isn’t worth the time and effort to try to fit Microsoft solutions into some logical framework. I’d argue that’s true for most closed-source solutions.[back]
  2. A tip, make sure to use the ones that comes from Debugging Tools for Windows![back]

More on the weirdness that is del.icio.us API

As I’ve said before del.icio.us is not easy to program against. Here’s a brief recount of my latest explorations into how to program against del.icio.us.

I received a report about some problems with epilicious, to which I responded with a pointer to my post about my past experiences. In response I got a suggestion to pick apart the “official” Firefox plugin for del.icio.us. It turned up some interesting details. AFAICS they are using the API in an undocumented way!

First of all every single request is a POST rather than a GET. The data they send is _user=<cookie>. That cookie is retrieved from Firefoxes cookie jar; it’s set after the user logs in at https://secure.del.icio.us/login. Apparently this allows them to use cookie:cookie as the username and password for Basic Authentication. Also, every request has src=ffbmext1.4.27 as an argument in the URI (1.4.27 is the current version of their plugin). There’s also an undocumented “function” for getting only the hashes of the bookmarks at https://api.del.icio.us/v1/posts/hashes?. The maybe most interesting detail is that they don’t seem to bother with the threat of throttling at all!

Hopeful that this might offer a way around the increasingly erratic behaviour of the API I played around with python. No luck though! A few hours of investigation, some quick hacking and long testing (once you’re throttled it takes a LONG time for del.icio.us to let you back in, sometimes more than 10 minutes!!) later I found myself not being able to hold back on profanities. The API usage description is a joke! Programming against something like that is little better than programming Windows based on MSDN ;-)

It seem the official plugin can get away with disregarding throttling because all interaction with del.icio.us happens with user interaction between each call. It takes a very fast user to trigger the throttling.

I can understand that del.icio.us wasn’t designed to be used a base for synchronising bookmarks, the throttling clearly shows that. However, one second between requests is not enough to avoid throttling and there is no indication on how long one remains in a throttled state.

This exercise has pushed me to put more energy into looking for alternative backends for epilicious. So far ma.gnolia seems good and I’d like to add support for Google bookmarks as well.

del.icio.us, WTF is happening?

I haven’t had much trouble with del.icio.us before. My little epiphany plugin has worked fine. The two utility programs I wrote to test it (one makes a backup of all your bookmarks on del.icio.us the other restores them) worked fine too. Now all of a sudden it seems it’s all going downhill. A few days ago I received an email from a user saying that syncing failed for him, he got error code 500. I had never received a 500 and the API documentation doesn’t mention it either.

Short interlude here. del.icio.us asks of developers that programs using the del.icio.us API wait at least 1 second between requests. Otherwise requests will be throttled by responding with error code 503.

So, guessing a little I made my use of the API a little less aggressive. I waited a second for every request, not only after having been throttled. That solved the problem. All’s well again, right? No!!!

Yesterday I was playing around a bit with epilicious again. Moving to darcs and some refactoring. To test my changes I cleaned out my del.icio.us account using delbackup. It failed with a code 500. So, I modified the code, treating 500 in the same way as 503—wait a second. Then I received a 999 and I was locked out from del.icio.us and asked to “hold off for a few minutes and try again later, in a gentler fashion”. WTF?

I modified the code again, waiting 2 seconds for 503, 10 seconds for 500, and 15 seconds for 999i. Then I waited for the lock-out to end and I tried again. Locked out again! Tiring!

So, now I’ve modified the code again, now waiting 2 seconds before each request, 2 seconds if I ever get a 503, 10 seconds for a 500, and 15 seconds if I get a 999.

Now I’m instead waiting an awfully long time to get something done, and what happens then? I get locked out since I’m obviously not waiting long enough after receiving a 999.

I am clearly waiting long enough between requests! Has del.icio.us introduced some new arbitrary, undocumented limitation on using the API?

If anyone knows anything that I could stick as an option next to using del.icio.us I would love to hear about itii. Two requirements:

  1. Web API, preferably as easy as del.icio.us API (even better, a compatible API)
  2. Use https for connections

Dear lazyweb, any suggestions?

  1. It’s not as silly as it sounds to wait when receiving a 999. From some testing I concluded that receiving a 999 doesn’t result in being locked out immidiately.[back]
  2. I know of scuttle but I’m having problem finding basic information about it, e.g. what URI is the API on? I’m also not sure it provides API access over https[back]

What’s bad about Ubuntu

The only really bad thing with Ubuntu is that they release every 6 months. This means that every 6 months the web is flodded with articles about installing Ubuntu; articles about what’s good, articles about what’s bad, articles about how to fix what’s bad and thereby showing that Ubuntu still is good, articles about upgrading, articles about installing on a clean system, articles about Ubuntu chaning lives, articles about how installing Ubuntu saves a kitten…

If this continues the web will become useless. Seriously, it will!

Keeping windows up-to-date

Eric is grumbling about installing software on Windows. Well, he didn’t hit the real point of pain with Windows yet: upgrading applications. As I’ve mentioned before Window’s package management is broken. Yes, it’s that simple, and the worst thing is that there seems to be no solution in sight. At least not unless every Windows software provider agrees to chip in and create a central repository for upgrades… I don’t see that happening any time soon though.

A few weeks ago I bit the bullet and spent an afternoon to hunt down upgrades for the software I’ve got on my Windows machine at work… What a pain! It only becomes more painful when one knows that apt-get update; apt-get upgrade works so well.