Last.FM

July 18th, 2008

Every dramatic change will trigger a negative reaction wave. The happy users are almost always happy in silence. But I have to express my gratitude to the last.fm redesign. Unlike pretty much all of my friends I welcome the change.

Last.FM was like an ATM. Everybody appreciates the usefulness of these devices even though they have the most terrible interface ever. They make you go through numerous menus, selecting from accounts you don’t even have, only to tell you at the end you mistyped the pin. I felt the same way about the old site. It was an amazing service but I always struggled to find what I’m looking for even though I knew it’s there (a bit like using Blender ;). All these boxes everywhere. And the cheesy aqua highlights! Everything looked the same. It was like trying to find your apartment in a Czechoslovakian panel house estate.

The new site is airy, with plenty of whitespace, the sections are nicely separated and apart from the new logo, everything is just better than on the old one. So if you happen to have been involved in the redesign and read this, there is at least one of your users that is extremely happy about the change. Thanks!

One Canvas Workflow

July 13th, 2008

He’re a raw screencast of me demoing the one-canvas workflow for creating icons with inkscape (and ruby ;). I have such an annoying voice/accent, but you have to cope with it.

I hope to create some more screencasts if people find them interesting. Interestingness is measured in the comment area ;)

Blip.tv service is pretty slick.

Update: refresh your feeds, I’ve uploaded a new screencast discussing improvements suggested in the comments. Thanks for the feedback!

But it’s just a mockup…

June 25th, 2008

From time to time I get asked why has GNOME become so conservative when it comes to widget theming. I generally answer that’s a good thing and simply an effect of the default theme to have matured and becoming usable to the majority of users.

At the same time, you don’t see many designers interested in theming gtk+. Maybe due to the inefficiency of the theming functionality in gtk, or rather ignoring its target audience. Themes in gtk still lie on the shoulders of theme engine hackers. While there are exceptions to the rule, usually those are the people who have their ‘good enough’ limits in visual design set very low. To show this more clearly, those are the people who call this a rounded rectangle:

.

In addition they would not find addressing corner case situations where one needs to remove a 1px padding between certain elements worth their time. In summary they should NOT be working on widget themes. While the following seems to be a general knowledge, I haven’t seen anyone summarize what we are actually lacking in the field of gtk+ theming. Here’s my suggestions based on my theming experience.

  • Drawing / box model. It should be possible to do some basic draw operations in a theme. A typical designer will be familiar with the web/CSS box model. From the theme it should be possible to draw a border, add a margin and padding to a widget/part, specify corner rounding solves most of the drawing needs if it’s accompanied by next item.
  • Bitmaps. Most important is being able to use an image as a background. In addition to the CSS tiling and positioning, it would be beneficial to be able to stretch the bitmap to the size of the box/widget.
  • Gradients. Drawing gradients as background/fill and box borders.
  • Compositing. An extremely important feature would be to properly composite objects with alpha transparency. We should be allowed to use RGBA bitmaps, setting a global opacity of a box/widget and being able to use alpha transparency in gradients.
  • Selectors.This one is slightly controversial, as the theming is already using a functional matching syntax, yet for a designer a CSS-like selectors would be much more understandable and approachable. With a tool described below, this may not be as important.
  • Debugger. For a web designer, one word would sum it up — Firebug for widgets. Being able to visually select a widget on a window and be able to find it in the widget tree(?) and see its associated style properties would be a dream come true. A tool to help form efficient selectors. A tool to measure speed implications of certain operations.

And if somebody would like to rewrite theming from ground up, I would suggest form/functionality separation. Having actual layout and positioning functionality in the theming, it would stop being a pain to conform to the GNOME interface guidelines. Application developers would worry about what type of input widgets they would like to use, not how to indent labels or how many pixels is the suggested padding between X and Y.

Update: Turns our Rodney has touched the topic around 3 years ago. While I do refer to CSS a lot, I’m putting the basic drawing capabilities to theme authors in front of all the other items. Having an intermediate layer in the form of a specific theme engine as cimi mentions in the comments is a good-enough short term solution I guess.

Christmas!

June 17th, 2008

Why did the news fail to mention it’s Christmas? Firefox 3, openSUSE 11.0, Wine 1.0 (in which I’m not involved at all, but it’s an amazing project I depend on as a user). Celebrate!

Clone Reparenting

June 11th, 2008

I’m not sure I’m the only one bumping into this in every UI Mockup / website workflow, but I find the way Inkscape deals with clones and duplication very unuseful.

watch a demo on youtube

We’ve talked about this with Andy a bit during LGM. He was trying to explain why this sort of behavior is desirable as opposed to easy (to little effect I’m afraid). Anyone providing a way to point the duplicated links to the duplicated parent (within a group?) gets eternal fame and my worshiping. Filed a rather sucky bug on this.

Update: Not quite there yet, but it’s a step in the right direction. Thank you Bulia, you already have my worship and fame ;).

Networked openSUSE Install Success Story

June 9th, 2008

I have been struggling on how to install the latest and greatest openSUSE on my x61 thinkpad. The liveCD installation is probably the best way to get a system up an running for a desktop user. With a system that lacks an optical drive, things need a little bit of tinkering. It ended up being a whole lot of tinkering for me as I have tried and failed installing 11.0 using the USB stick method that worked for me with 10.3. Essentially it boiled down to problems with BIOS drive mappings confusing grub and kiwi nuking my root partition with a swap during first boot.

But I did succesfully install openSUSE 11 Factory using just a network drive and an extra machine serving the linux kernel using TFTP. The added benefit is that you don’t need to download any isos and you only get what you really need.

While this sort of howto might be useful to have on the wiki, keep in mind that this is a graphics designer giving you advice on how to do a rather specialty installation that only network administrators usually do. I encourage people who actually understand these issues to rephrase it and post it.

So let’s get started.

PXE Boot

PXE Boot is a system to serve an operating system to clients that are able to boot from a network card. It is generally considered a system suitable for large desktop deployments within larger companies and there is no configuration necessary on the clients. Everything is set up on the server by qualified administrators. Which became quite an issue for a mere mortal like me. All the documentation available, filled with adjectives like trivial, simple, self-explanatory has had me fail badly. The typical scenario involves setting up a DHPC server (dhcpd) that will serve IP addresses to clients and point them to the server that will send a system image (kernel+initrd). The server is usually TFTPd. Most of the howtos also tell you how to set up an NFS server as large deployments would want you to pull installation data off a local network rather than grabbing them off the internet. Even if there are yast modules to set up a DHCP server and TFTP server on SUSE, you still need to know what you’re doing to start serving system images over the network.

Luckily there is another way. First, on your 10.3 box (server) you will need to install some packages — syslinux, pxe and dnsmasq (`zypper in syslinux pxe dnsmasq`).

To keep things clean, I have created /tftpboot directory to host my PXE configuration and Linux images. We need to copy a basic template from PXE and syslinux first:

sudo cp -Rpv /var/lib/tftpboot/X86PC/linux/* /tftpboot/
sudo cp -v /usr/share/syslinux/pxelinux.0 /tftpboot/

The awesome DNSMasq

Luckily there is a more human-approachable server that does everything and has a nicely documented configuration file that is readable by us mortals. I have been using it to assign specific IPs to specific hosts using DHCP and act as a DNS cache. The good news is that it can also do PXE boot and even has a TFTP server built in.

The PXE-specific configuration is as follows:

dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/tftpboot

Piece of cake (luckily).

Serving Linux

All we need to send to the clients is the linux kernel image and initrd. We do that through the TFTP server and tell Yast to pull all its data directly from the opensuse http server (not a very nice thing to do if you have more deployments, this is where you may want to mirror stuff locally).

So first off you want to download the linux and initrd images and put them to /tftpboot/factory/ (I use the factory subdir as I want to serve many installers, but you can put it in /tftpboot directly). The PXE config file /tftpboot/pxelinux.cfg/default has almost the same syntax as grub’s menu.lst, but there are a few parameters that differ. You need to edit it to point to where kernel, initrd images are and where the installer data lives:

PROMPT 1
DEFAULT local
DISPLAY messages
TIMEOUT 50
F1 help.txt

label factory
  kernel factory/linux
  append initrd=factory/initrd ramdisk_size=512000 ramdisk_blocksize=4096 splash=silent showopts netdevice=eth0 install=http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/

After starting the server with /etc/init.d/dnsmasq start you should now be able to boot your client, which would get an IP, grab the pxeboot menu, where you would choose ‘factory’ at the boot: prompt. From then on, the new amazing yast installer got everything right automagically. Props to the yast team!

Twitm

April 30th, 2008

I enjoy Twitter a lot. There’s many, many clients for the service. I’ve grown to like Alert Thingy (yes, that’s the actual title) which actually integrates with Friendfeed too.

But I felt a bit ashamed using Adobe AIR. Inspired by garrett’s stylesheet tweets, I created a Prism app bundle that makes Twitter main web-interface nice and compact. It wouldn’t be complete without an icon.

twitter icon

I couldn’t figure out how to nicely integrate the multi resolution icon into the bundle though. While the mac and windows icons can be multi-res, for Linux we get grandpa XPM. I have no idea why the spec defines to use XPM. Such an ancient format incapable of using alpha transparency needs to die. It’s not like gecko would have trouble rendering PNG. Also sad to see my whining hasn’t been fruitful yet. Especially when there’s a library available!

twitm

As for how to use this thing — for now you need to copy the individual sizes to ~/.icons/hicolor/. Once you let Prism generate your .desktop file, edit the link to the icon to just say Icon=twitm. That way you get all the sizes nicely thresholded on the panel/menu/desktop.

Maybe using the mobile site would have been safer, but I prefer the javascript character counter, so I went with styling the main site. As soon as the site layout changes, expect brokage :/

Mii Screenshot

April 23rd, 2008

Dear lazyweb, is there a way to get a preview/screenshot of a Mii on Linux? I managed to transfer the Mii, but am unable to find a tool to give me a preview. I’m wanting to have a high quality screenshot of it.

This little editor does seem to work under Mono (wow), but I can only load, edit and save the mii, not really get a preview of how it looks. The miieditor.com seems to be killed off by Nintendo :(.

Update Garrett found the Mii Editor editor, but the extracted SWF file fails to open a file when run locally or hosted with apache :/.

Firefox 3 Improvements

April 21st, 2008

It’s been a long time since I’ve had some fun on my own website. So over the weekend I transplanted a nice last.fm cover art widget and added yet another navigation element for the most useful stuff on the site.

.

Since it is my personal site I went a bit overboard. It’s a nice demo for showing how much Firefox 3 improved. Apart from rendering in higher quality (anti-aliased rounded corners, amazing SVG renderer, filtering of scaled images) it’s also way faster. Just head over to the frontpage and compare :)

The sliding effect, called kwick (web 2.0, you know) has been a magnet for the javascript library moo tools for me. I’m happy somebody ported it over to the more human-approachable jquery library too.

Interesting Statistics

April 10th, 2008
jimmac@hal:~> history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head
206 git
173 cd
71 ls
56 rug
42 ssh
27 vim
25 gvim
25 git-svn
24 sudo
23 less