May 27, 2005
Visual Studio 2005 usability issue
If a design of an app bites you again and again, it’s an usability issue.
Overall I like Visual Studio 2005 a lot - it almost makes C/C++ development bearable.
It does have one thing that trips me a lot. It has powerfull docking design and in my main view I have editor window followed by solution explorer window. They both have [x] button for closing. In editor window [x] closes the tab with current document. In the other window it removes solution explorer window altogether.
Very often I close solution explorer when I intend to close a document - somehow the [x] that is the most to the right catches my attention.
The solution to this particular problem would be to have [x] close button in each tab so that there is no confusion as to what it does, just as tabs in Safari are. It would make tabs a bit larger and there’s a chance that you would close [x] button when just trying to switch to a document. However, in my experience with Safari, it doesn’t happen often (so far it never happened to me once).
May 09, 2005
musikCube - nice mp3 player
My latest software find: musicKube is your basik music (mp3, ogg and flac) player.
What’s good about it: it’s a low-resource program with UI similar to iTunes. Compared to musikCube, iTunes is a real memory hog and uses much more cpu than it should. musikCube also beats WinAMP when it comes to the usage of resources (and I’ve never been a fan of WinAMP’s UI).
In the past I used foobar as my low-resource player, but it has ugly UI and recently I found some file that simply crashed it when I was trying to add it to a playlist. Which is a bummer, because there’s no way to figure out which file exactly (out of hundreds in the folder) is crashing.
So the good thing about musikCube is that it has both decent UI and low-overhead. It also doesn’t block when adding songs to the library (unlike certain resource hog from Apple).
There are drawbacks:
- it doesn’t play Apple’s AAC or real audio or wma. For many that might be a deal breaker, for me it isn’t (hopefully musicCube will get support for more formats, being open-source and all)
- it’s variation on “shuffle” is a bit weird and inferior to iTune’s
- I couldn’t figure out their mass-tagging interface
- global hotkeys are not configureable and defaults are not to my liking
- “Net Radio” options doesn’t seem to be doing anything
Despite those faults it looks like musikCube will become my player of choice for some time to come.
May 05, 2005
Backpack observations.
I played with Backpack and my observations so far are:
- 37signals are marketing masters - according to them 10 thousand people signed up for what is essentially an improved wiki. You’ve got to admire their hype-generation moves.
- Basecamp is a nicely designed variation on the wiki. They dumped revision history, de-emphasized wiki links (thank god), added notes/lists/images to each page.
- I like various dhtml tricks they do
- I don’t like that they limit the width of the visible page, resulting in plenty of white-space on my browser
- the preview wiki rendering has a wierd bug: sometimes empty line didn’t separate paragraphs in the preview. The problem was gone when I went to some other page and navigated back. But I only figured out that this is a temporary problem after spending 10 minutes trying to format the page the way it was supposed to be formatted
- their page count limits are terribly low (seriously, $20/month for 500 wiki pages? I can have shared hosting account for that much) and, bizarelly, they don’t have an option for unlimited number of pages.
- their “we delete your stuff when you cancel your account” is a bit harsh and doesn’t inspire warm and fuzzy feeling. Yes, I know you can (and should) export your data to XML before you cancel, but… What if you don’t notice this option? What if you’re one of those billions people on the planet that don’t know what XML is and what can you do with it.
So I’m in the foolish minority of people whose life was not changed by Backpack.
It’s good but clearly over-hyped . Real men need more than a variation on a wiki to wet themselves from excitement and I remain dry.
May 04, 2005
How to delete a file you get from urllib.urlretrieve()
I just hit an interesting corner case in Python. Urllib module has a very useful function urllib.urlretrieve(url, filePath) which will get a given url and save it to a file. This function, however, might fail, in which case we would like to delete it so that we don’t get confused by partially downloaded, corrupted file. To detect failure of urlretrieve() we can simply wrap it inside exception handling. As experience showed, at least on windows, calling os.remove() on the file immediately after the exception happened will fail with ‘Access denied’. According to docs, this error is returned if file is still being used. That is plausible (although not something I would expect). My solution to the problem was to retry os.remove() few times, sleeping for a second between tries, therefore giving python time to close the file used in urlretrieve(). This seems to work. And here’s the full code:
def fFileExists(filePath):
try:
st = os.stat(filePath)
except OSError:
# TODO: should check that Errno is 2
return False
return True
failedDownload = False
try:
urllib.urlretrieve(url, filePath)
break
except:
print "exception: n %s, n %s, n %s n when downloading %s" % (sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2], url)
failedDownload = True
# remove potentially only partially downloaded file
if failedDownload and fFileExists(filePath):
removeRetryCount = 0
while removeRetryCount < 3:
time.sleep(1) # try to sleep to make the time for the file not be used anymore
try:
os.remove(filePath)
break
except:
print "exception: n %s, n %s, n %s n when trying to remove file %s" % (sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2], filePath)
removeRetryCount += 1
Ubuntu - more of the same.
I haven’t used seriously with Linux for a few years now. But I wanted to test-drive roadster (a mapping application only available under linux) so I installed myself Ubuntu.
After using it for a few hours my conclusion is that despite constant Linux-Desktop bruhaha in the past few years, nothing really changed. Ubuntu is supposed to be the best that Linux on desktop has to offer and it’s dissapointingly similar to how RedHat looked like 3 years ago. Without trying to be comprehensive, a few observations:
- I don’t quite get why anyone gets excited about Ubuntu’s installer - I don’t see much difference between RH installer from a few years back and it’s certainly not yet as polished as Windows’ installer
- one noticeable difference were all the annoying sounds Ubuntu was so keen to share with me. Clearly copied after Windows. And also a first thing I disable on Windows (the second one is a distracting background image)
- emacs by default starts with the same ugly, non-anti aliased fonts it did 10 years ago. Would it be so hard to set fonts that match the desktop? (I know this is Ubuntu rant but let me just add a side note that Emacs deserves a special mention as the only editor in the world that forces the user to learn advanced programming language just to so that he can change a font)
- every time I installed additional aplication, the package manager complained that he couldn’t stat some url. God knows why (I had network connection working) and what it meant (packages were installed just fine, so it was just a friendly tip about an information that the user clearly doesn’t care)
The more things change, the more they stay the same. Apple did few short years what none of the hundred of different Linux distributions couldn’t do: created not only usable but also pleasant to use Unix distro. To me that means that Linux distros are doomed to mediocrity forever. It clearly is not about the amount of effort spent. The amount of coding time on Linux in general (Gnome+KDE+all the distros+other basic technologies like freetype/x and apps like openoffice/gnumeric/etc.) most likely dwarfs the amount of work that Apple did on Mac OS X. But Apple has some things that Linux community will never have:
- they have vision where they want to go
- they have years of experience in designing stuff for people
- they have design taste
- they have focus. One UI toolkit, one filesystem, one media player
- they have ability to make unilateral changes in how things work without perpetuating into infinity all the things that Unix got wrong, and there’s plenty of those
In Linux there’s abundance of everything (multiple filesystem, multiple package management systems, multiple UI toolkits, multiple media players, multiple office packages, multiple window managers and, in greatest multiplicity, a million different distributions).
One theory is that existence of multiple products that do the same thing will lead to increased competition and therefore greater rate of improvements. I don’t have any arguments to refute that theory. Good thing that I don’t have to. Whatever mysterious reasons, the facts clearly show that this is not the case. Apple leap-frogged open-source projects on all things that matter despite (or rather because) having only one implementation of a given thing.
I think that the reason for that is that Apple removes randomness from the process. Anyone can hack on open-source projects and while an average coder that tries his hand at open-source might be an above-average programmer, he probably knows about usability and writing software for people about as much as he knows about etymology.
That would explain why, to use a random example, gtk+ has impressive theming engine but its standard file open widget sucked beyond comprehension for so many years. You need adult supervision to set priorities and open-source, on average, will never have that.
There are exception, like FireFox, but they actually demonstrate the problem and the solution. The solution is to have a core group of developers with UI clue and a will to strongly control the developement. But that’s rare.
