Linux Rant

August 31st, 2008

Last night I got really frustrated getting some basic functionality out of a new notebook for my friend. I am sitting here, configuring and working around stuff, while a beautiful Sunday is outside the windows.

Apart from the typical ‘won’t suspend’, ‘oh that’s a wonky pulse audio daemon’, ‘oh you need to install these fishy codecs’, ‘oh CUPS hates people’, ‘yea gstreamer doesn’t do DVD menus’ I had two extra ones that brought me to my knees.

For some reason Brasero, now the default audio CD burner used by Banshee insists on using the reverse order of the tracks to burn them and gives no obvious way to change this. This is a stupid trivial issue, hardly something a maintainer would mark as a showstopper in bugzilla, yet makes the whole toolchain useless for my friend.

The other grief was her generic mp3 player. We don’t really have the infrastructure to allow huge amounts of people to contribute information about their devices to have other people have theirs work out of the box or have data to make a good buy decision.

HAL and the FDI description files is a great technology. But I have been very frustrated last night to see my friend’s generic el cheapo mp3 player not supported only because a description file was missing. A generic usb storage device and I coudln’t see it in Banshee, nor could I just drag and drop files onto a Nautilus window (since when did Banshee lose this capability?). Sadly not even getting the FDI clobbed up didn’t end my horror.

I would so love to see a social site around this, similar to Ohloh. Earning kudos for providing FDI files for all the devices I have. Creating a timeline of what devices I have owned over the years. Seeing what devices my friends use and their Linux support status. Submitting custom icons for specific devices (seeing all the great icons in gnome-icon-theme-extras rot without being used makes me sad).

Hackweek Over

August 29th, 2008

I must say I’m happy about what I picked for this year’s Hackweek. My back and neck have not enjoyed the hackweek, but all the other body parts did :) While I am far from finished, I am surprised how much can be done on a font in a week (around 60 hours I would reckon) if I don’t need to worry about anything else.

The glyph coverage is better than what I planned. The typeface is stronger to what I sketched out and I hate there is no programmatic way to get smaller widths or alter x-height. Nevertheless I think the project was a success.

#

People keep asking what tools I use – Fontforge is the master tool for all this, it’s really packed with features. But I wouldn’t be able to draw a thing in it (even though it does have a large palette of tools), so all the glyphs have been constructed in Inkscape. Big thanks to George Williams not only for the amazing tool, but also for great documentation.

I’ve realized over the week just how much work needs to be done to create a full font family. I always considered the prices to be quite high, but this stuff is years of experience and endless tweaking. I know I’ll never try anything bigger than a display face/headliner in this life. That said, I think now is the perfect time to ask you to come forward and join the fun. Lots of international glyphs I have no idea about need to be done, the spacing fixed, etc. Check out the font from opensuse-art SVN and play with it, improve it. Discussions should take place on the opensuse-art mailing list. Thank you.

Also a big thanks to Novell for a great opportunity to Free openSUSE and Linux in general one step further.

5th Leg, Work in Progress

August 26th, 2008

*

I screwed up with the proportions and the font is way to strong, but I’m liking the process. You can check out the progress in opensuse-art SVN.

Fifth Leg

August 25th, 2008

#

I may be taking on something bigger than I can ever finish in a month and hardly in a hackweek, but it is both fun unknown territory and something that is needed badly.

#

openSUSE uses a rather spiffy Cholla header font by Sibylle Hagmann. The problem is it isn’t a Free nor free font*, making it hard for the community to produce openSUSE branded material. So you guessed it, I’d like to design an original type to replace it. Apart from Lingdings (bullets font for OpenOffice Impress) I’ve never done this. Partly because the font designer and even type setting community is very pedantic, deeply following a strict set of rules. Good fonts come from a lot of experience. So be warned, this is pure amateurism, a font designed by a non-type-designer.

To help me stay focused, I’ve come up with these attributes I’d like the font to have.

  • Simplistic, technical sans serif.
  • Heavy. Rounded.
  • Will not do normal weight, this is a headline font. ‘Close’ to Cholla Wide Bold.
  • Only basic latin glyph coverage for now (a-z, A-Z, 0-9).
  • Low contrast.
  • Open Font License.
  • I don’t aim to kern the font properly this week.

Thanks Garrett for suggesting the name.

* – I would say the cost is the problem in this case, no real need for derivate fonts for a headliner.

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!