An interview with Daniel G. Siegel
Say cheese! Or maybe that’s “Cheese”? Either way, take a look at this interview by Sayamindu Dasgupta with Daniel G. Siegel, the author of Cheese, a funny GNOME application for taking pictures and videos from your computer’s webcam.
Daniel G. Siegel has been behind one of the most visible GNOME projects for Google Summer of Code 2007 – Cheese. From it’s page on the GNOME Wiki, Cheese can be described as a Photobooth-inspired GNOME application for taking pictures and videos from a webcam. It also includes fancy graphical effects based on the GStreamer media framework.
I had the opportunity of meeting him (and having him as my room mate) during GUADEC this year, and recorded a small interview with him on his project. The interview below is something like an extension of the recording that I made at Birmingham, with a number of updates and corrections made to reflect the current
state of Cheese (and its author).
Tell me a bit about yourself
I’m Daniel, hi!
How did you first hear about GNOME?
My first Linux distribution was packaged in a journal and it had KDE – I thought it was awesome. I was playing around with it, but however, after a while, I was looking for a new challenge, and so I watched out for alternatives, and obviously, there was GNOME.
Before the summer of code project, were you involved in GNOME?
Not really. I did some basic GTK+ things, like gpomme (hotkey manager for Apple Macbook laptops), if you know that. Just basic things, so not much actually, just a bit.
What interested you in your particular project, Cheese?
I wanted to work on an enjoyable project. I didn’t want to do something that was already there and I wanted to do something that was cool. So I just thought, here is my Macbook, what is not possible with that hardware and Linux at the moment, eg: hotkey manager (which I had already been working on)…
So, in a way, you were scratching your own itch?
Yes! I thought something like Cheese would be great and some days after that notion I found Raphaël Slinckx who had written a basic application in Python. I contacted him, and…
When you started out, what were the most difficult things that you had to handle?
Most Difficult? . I think getting my hardware working.
So there were driver issues?
Well, on the one hand, there were driver issues, but on the other, there were issues created due to my own crappy code. In the first two weeks, I had real problems to get a picture of my pretty face on the screen. It was quite hard to get used to and understand new libraries, but it became easier and easier with time. Now for example, if I want to write a new feature, I know where to look, what it takes, and of course it takes me less time.
As a new developer, or rather, comparatively a new developer, looking at the GNOME development platform, which part did you like the most?
Good one. I don’t have a favorite. Or wait, maybe
In that case, which part of the platform did you dislike the most?
auto-. Ah, and then there was GObject, which provides a lot of advanced stuff but it takes some time to understand such a thing. Especially if you are used to plain C and your application is not really big. In that case you will have a lot of boilerplate code.
So you are wondering if it’s worth the effort for a comparatively small application?
Yeah, it’s awesome to have object-oriented capabilities in C code, things like properties and so on, but i don’t think it’s worth the time to use it on really small projects. Of course Cheese is now big enough, and uses GObject almost everywhere. Other project members and myself really enjoy that, as the code gets much more readable.
In the GNOME Development Platform, which areas do you think should be worked on to attract new developers?
If you ask me, it’s pretty hard to get started. I mean, if you are in, once you know what your required API is, your workflow and the exact functions you want to look for, it’s quite an easy process. But if you are new, you don’t know what to do. So the only way to get “in” is to download some source code and study that. It’s not a really good way to attract new developers. There are quite a few tutorials on the net, but I missed the one and only good one .
Going back to the question about the part you liked the most and kind of rephrasing it, what are the things you think work well within the existing system? What do you like about the GNOME development platform? What made your work easier?
I feel GTK is really great. Creating your UI is pretty straightforward. GStreamer is also a very cool platform as well as Glib too. The developers did a really awesome job almost everywhere in the GNOME development platform!
Any advice for a new GNOME developer, someone who wants to get started in GNOME development?
I think one of the most important things is to find someone like Raphaël who is online day and night so that you can bug him whenever you like. 3 AM was a really great time, but quite often either he or myself were drunk . You can always ask in the IRC channels or on a mailing list, but if you want to ask something like ‘How to create a big, fat, blue, shiny button, which blinks when you put your mouse pointer over it,’ they will laugh at you. So it’s nice to have someone to ask such basic questions, like how to begin.
Moving on to a slightly different area, what are the latest updates to Cheese?
Oh, there are many: Cheese has been refactored, a drag and drop implementation, added HAL-webcam recognition, GtkUimanager, some accelerators, a GConf back end, fixed a few million problems (however problems, not bugs, as Cheese is bug-free of course), GObjectified quite literally everything, and finally, we will implement a Conduit back end too.
You mentioned that the original prototype that Raphaël developed was written in Python. Many developers today including myself prefer to code in Python, as it usually makes life easier. What led you to write Cheese in C?
Pretty easy – I don’t know Python. Of course C is a bit more work, but in the end I prefer C because it’s more plain and it has its own advantages.
What tools do you normally use to debug?
printf . Yeah, that’s probably the best debug tool. But sometimes I use the GNU debugger or my programmer slaves for that.
How is the response to Cheese?
Awesome! My mailbox was full of emails. People have contacted me on mail, IRC or IM, providing suggestions, tips, bug reports, enhancement requests, translations, and that was really cool. After all, it was one of the first times that so many people contacted me without wanting me to pay their bill.
How did you go about designing the interface – the UI design?
I had Raphaël’s work to begin with in the first place, but I didn’t like the effects widget, so I (re)wrote it. I know it’s not very good, but at the moment we are fancying it up a bit and soon, we will get a live preview. Overall, the whole UI became better over time and even now, we make enhancements to it every week.
Now that SoC is over what advice would you give someone who is thinking of applying for the program in 2008?
Oh… Apply to GNOME, it’s just damn cool! Ah, and do some work before you apply, like designing the interface or planning the program. It looks better if there is already something you have achieved yourself when applying.
Well, that’s about it, thanks a lot for your time.
Great, I’m already hungry – thank you.
About the author
Sayamindu Dasgupta is a student of Computer Science and Engineering from Kolkata, India. He was a participant in the Google Summer of Code 2007 program, under Federico Mena Quintero. Apart from GNOME and computers, Sayamindu loves travelling, taking photos and having good food.