Older blog entries for rbultje (starting at number 28)

GNOME Volume Control (update):
So, I did some actual work. I decided to just try and implement two UIs and see which one I (and/or others) like better in practice. So the current one is my own interface proposal that I did earlier, and in the future I'll also do a sample user interface for Eugenia's UI proposal. Shouldn't be hard, because I rewrote the whole thing to use nice objects, so changing small parts should be relatively easy. Anyway, graphics speak.

Current remaining issues:
- if I hide tracks, the padding between the previous/next track will add up, as you can see between headphone and PCM. Is this a GtkTable bug? Or is it outside scope and should I find some other way to work around it?
- I guess "Rec." and "Mute" should become buttons with images, similar to the chainbutton. For "mute", I was thinking of a "speaker"-like icon and for "rec.", a "microphone"-like icon. When disabled, it would show with a red cross on top of it.
- By default, it now shows all tracks. I might want to make a list of "standard" tracks (think "master", "pcm", "line-in", "microphone") that are shown by default (when the user first starts this up) and others would be hidden by default and can be enabled in edit->preferences. Good for new users.
- I'm still pondering about what to do with the "Alsa" in the title bar (should probably be hidden). I left it in for now because it's not final anyway. [/lazy]

Then, let's start on Eugenia's UI. :).

Really back:
Yeah! This week, university starts again. Back to the books for another three months before I'm done, for two days a week. And my laptop's new hard disk finally works, which means I finally had free disk space again and was able to do several CVS commits. Last but not least, life seems to be turning back to normal again. I start to get used to dutch timid life style again, and am not feeling homesick for New York every single second.

To celebrate, I bought the new Soulwax that Thomas recommended, which sounded pretty good with lots of experimental stuff on it. I love it so far. I also bought the latest CD from the Scissor Sisters. I already saw them at PS1 in Queens and was amazed. The CD is just as good. Rock on!

It's good to be back. :).

Distribution update:
So, I got a new hard disk to work tonight, so I installed Fedora Core 2 on it. Whoa! What happened to Galeon? Where's XMMS? Why does Nautilus look like Windows 3.11? And where's my email?

All in all, I pretty much like it. I must confess that I didn't pay much attention to general development for the past half a year, due to lack of time, and I'm hoping to get back into it now that I'm back from New York.

Did I mention that I dearly miss Manhattan? ...

Sucks to do it like this, but I'll have to.

So I've been paid to go to New York, mostly. And I'll probably be paid for to go back to New york and do my graduate studies there next year (September 2005). However, there's an obvious 1-year-gap there. I'd like to work in this period. And given that I'll waste most of my life in pharmacology and psychiatry, I'd like to devote this part of my life specifically to free software engineering.

So go ahead, dear GNOME-loving companies. Hire me, please. I can work for only one year and I have little computing science education (although I have a bachelors and am one month off of getting my masters). On the other hand, I have strong free software devotion and commitment, can work 24/7 for months in a row (and have done so in the past), I have lots of experience in free software development and multimedia (both kernel and desktop) and need no introductory course of two months before I start getting useful.

So that's said now. Let's hope I get a job soon. Houses are expensive... Love y'all. :).

Goodbye parties:
So close, yet imperfect. Today, after more than half a year of full-featured life in New York City, I'm flying back to the Netherlands. Yesterday, we (me and some of my friends that I've gotten to know here) organized a goodbye party for me. Nobody would know the names, so I'll spare you the details. I'd just like to mention how wonderful a feeling it is if you've got around twenty people around you, each of which you have something special with, memories, feelings and promises. I've enjoyed the party to its extreme, don't want to know all the things that I actually did later in the evening. But it was fun. This party was - in all aspects - a typical example of my life here. Thanks to them.

And now... I miss them. Manhattan, hope to see you soon next year. I miss you.

I'll cry, for once.

16 Aug 2004 (updated 16 Aug 2004 at 04:16 UTC) »
GNOME Volume Control mockups:
So, many comments and help on my mockups. Apparently, they help. ;-). Glad people like them.

So, some terminology. The user doesn't need to know them, but just so people know. A single soundcard representation is called an element (e.g. SB!Live [ALSA]). A single sound particle in an element (e.g. line-in) is called a track. A single slider is called a channel (left, right). Mute turns off sound on your speakers and/or headphone when selected. Record turns on sound capture from input tracks such as line-in. Tracks with record turned on will be captured when read()ing from the device. Other tracks will be ignored. Lock groups individual channels in a track together, so if I change the volume on one channel, all other channels in the same track will move to the same value as well. All UI-visible aspects of this are explained in the manual (Help -> Contents), kindly provided by Sun Microsystems.
Oh, ALSA (in its API) calls tracks elements. Elements are called handles. Nevermind the consequence.

Tybstar, on IRC, was the first to give some helpful comments, mostly related to spacing in the window between sliders, between tracks, etc. Mostly some finetuning of the window mockups to the UI guidelines and the HIG. Thanks for that, will work on that. Got some UI tips from Havoc as well, in his p.g.o post, will look at those as well, most sound good. This is stuff like layout, naming and tooltips-on-sliders.

Benjamin (on IRC) and Havoc (on p.g.o) gave some more terminological comments. Nice to know that people care about that. That's somewhat hard, though, not in the last place because the kernel has no single interface that is suited for that job. In other words, it's gonna be incredibly hard, if not completely impossible, to acquire all the necessary information that is needed to get g-v-c up to the level that they propose. I'm also not sure if it's what end users expect. Other comments are very helpful, though, so let's see about some of those in detail.

Volume Applet, GNOME Volume Control and Applications: the volume applet is supposed to be the fast'n'simple accessor for volume control. Any simple control to your master volume should be done via that applet, and any user should have that exposed on its menubar. GStreamer's mixer API (more on wording later) has a MASTER_TRACK flag somewhere to see which of the tracks is the master track. GNOME Volume Control is not for any simple stuff. Benjamin proposed a "simple" version where I can change "output volume", "input volume" and where I can manually show tracks if wished for. This is, according to one of my housemates, similar to what Windows XP does.
This is not a good idea, imho. It's practically impossible and/or unwanted for 2 reasons. The first is that we downgrade any user to the lowest common denominator of all types of users, and give him no more control (by default) then this. Benjamin replied that advanced users would use alsamixer anyway. Well, alsamixer is not part of Red Hat, Fedora or SuSE's default installs and shouldn't be an end user app because it's commandline only. GNOME should have a similar "alternative" for its power users. The second reason is that, at least for inputs, we'd be changing all volumes to one value. The effect of this is best explained by telling what it does on inputs. Setting PCM and Volume tracks both to 90% will result in much more noise at the same audible loudness then when Volume is set to 80% and PCM to 100%. This is hardware imperfection and cannot be fixed or detected in software. For simple stuff, look at the Applet. For complicated stuff, use the Volume Control. Changing the CD playback volume or just changing volume (Joe User vs. Joe Hacker) are both simple and valid use cases...
Applications will always show just the one or two controls that they are interested in. I don't think that means we should leave them out from the main volume control applications. Windows doesn't do that either, neither does Mac OS X.
What I *am* planning on is to hide a lot of those tracks by default. Particularly all of the options and quite some of the more complicated input/output tracks. There'll be a preferences window (returning from pre-2.4 days) to hide/show tracks as the user wishes, but the default should make sense for a default user.
I'm definately not gonna add an advanced and simple mode, like Nautilus-1.x or Windows XP. It's not right (tm).

Volume Control vs. Mixer: naming confusion. I called it mixer in the beginning, and felt bad about that later on. I decided to call everything in the UI Volume Control from now on. Mixer is too technical.

Signals: or, well, rather, GNOME Volume Control updating sliders' values if I change volume in the Volume Applet. Will be worked on shortly, right after the UI is fixed.

Menubar: well, since we'll re-introduce the preferences screen, and the Help -> Contents explains some terms used in the UI (should I use icons like the ones from the GIMP instead?), I guess we can't really remove this just yet.

Headphone vs. Speaker Volume: not possible, I'm affraid. Nice idea, but there's no way to get the required information from the kernel.

So, in the end, some hints are useful, some are debatable and some are - at least now - impossible. I'll try to find the golden middle road. Please give me more feedback, it's very useful and makes me realize a lot of details and all that about UI development - good thing!

Apparently, all sort of people sent me emails as well, I forgot to read my email for the past few days because I went to PS1 (yay for parties in Queens!) yesterday. I'll read those too, I promise!

15 Aug 2004 (updated 15 Aug 2004 at 20:47 UTC) »
GNOME Media:
Since the GNOME Volume Control UI sucks, I thought I'd play with creating some new UI for it. Colin says he likes it. ;). Images here, here, here and here. Not a real app (all Glade magic), but you get the idea.

The basic idea is to separate between input tracks (image #1), output tracks (#2) and option selections (#3). The input/output track separation is sort of logical, and decreases the number of sliders per page. The options need a different UI markup (vertical instead of horizontal) and are therefore separate; besides, as far as I know, they're not input/output specific. Picture #4 shows how to choose a different element (soundcard) for volume control.

Not shown on the images is the return of the preferences screen, where the user can enable/disable individual tracks. Disabled tracks will not be shown in the GNOME Volume Control main screen. Disabling some (maybe even by default?) should decrease UI clutter with many modern sound cards like the SB!Live, which make a total mess of volume control applications.

Of course, current-device and tracks-shown are both saved in GConf. ;).

I'll await some comments from random people who decide to call themselves UI experts and will then implement this for GNOME-2.10 or so. I hope Ross' GNOME-CD rewrite (based on Sound Juicer) makes it into GNOME Media then, which should make GNOME Media a lot better than it currently is!

GNOME Media:
So, I added some new stuff to gnome-volume-control. Didn't commit yet, since I don't know in what freezes we are right now (I've been pretty much inactive for quite a few weeks already). The result is pretty sweet, since we now support all ALSA controls (see bug #150158 for patches), but the resulting UI is horrible. Please, UI people, give gnome-volume-control some love [/lame try to get others to fix his own bugs].

Click here to see for yourself.


So, this monday, I went off to Jones Beach' Tommy Hilfinger Theater to see Korn, Linkin Park, Snoop Dogg and some other smaller bands (I saw Less Than Jake, The Used on mainstage and M.O.P. on the smallstage). Pretty cool alltogether, especially when Korn played a small piece of Metallica's One (yes, they do that a lot, but it's awesome, every time again!) in between. Later on, they also covered Pink Floyd's The Wall (full). Covers are bad? You haven't heard this one yet. Marvelous, that's the word! Absolutely wonderful! I've never heard a crowd singing out loudly like this before.

"All in all, it's just another brick in the wall,
All in all, you're just another brick in the wall"

Too bad there were only seating places... Linkin Park was great too, but I liked Korn better.

... and I'm finishing off my multichannel patch in these last days, too. I'm hoping to commit it before I go back to the Netherlands, or at least post a first version in Bugzilla. I'm finetuning some rough edges now in automatic channel position selection (fixation) in case there's no preference, and the rest pretty much works already. And while I was at it, I cleaned up the dtsdec (DTS decoder), a52dec (AC3/A52 decoder) and faad (MPEG-2/4 AAC decoder) plugins as well. The difference between this patch and the multichannel support that we used to have and that Xine and other projects have is that this allows for making full use of possibilities of individual channel selection that formats like Wave (using the audiowavetagheaderext chunk, not used a lot...) or Matroska allow. It also does automatic channelposition conversion.

Graduate School Applications and GRE:
So, today I did a GRE test because I want to apply for Cornell Graduate School of Medical Sciences. The results are fairly mixed. My verbal score was a lousy 380 points (on a 200-800 scale), which is not very high. Actually, it's plain bad. My quantitative score, on the other hand, was the full 800 points (same 200-800 scale), which is pretty darn good. I guess my excuse for doing so bad on the verbal part is that I'm a foreigner. My english really isn't bad, but I just don't know most of those exotic words that are being referred to in the test. Sorry guys... I hope this is good enough to be considered for admission, though, I'm not applying to be a translator, am I? I'll receive my analytical score (on a 0.0-6.0 range) in two weeks from now.

It's interesting how people try to hide the fact that they're geeks and blatantly fail because their peer is just as bad as them. Thomas already touched upon that in his latest entry, so let's take one of my own examples.

So I live in New York City and hang out with people here. I promised, one day, to send pictures of one night out to two girls that had been coming with me. Those pictures are located on the tweakers.net picture gallery. For those who don't know, tweakers.net is a dutch slashdot-like computer-oriented website (news, forum, ...). So I sent them a link to this picture gallery. The day after, one of those girls pointed out to me that her ex-boyfriend, a "complete geek and ass-hole" (what a surprise for an ex ;-) ), used to be hanging out on this website for full days and she was worried that I was one of those cracks as well.

Of course, I told her I was not. ... That wasn't even a complete lie, realistically. I barely touch computers here, I barely have time for that...

(Makes me wonder: who's this ex-boyfriend of hers? :-). I might even know him. Scary shit.)

Today, I found that I still have pending patches that are as bad as four months old. I suck. I'll be back home in four weeks from now and promise to clean up my inbox after that. My apologies to anyone who's sent me patches and didn't see them applied yet; they're in my inbox (I always mark patches as important and those occur at the bottom of my inbox, marked in red). They just take a while. Same goes for assigned bug reports or pending actions. Sorry guys. I'm doig what I can, but my time is limited right now.

19 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!