2007-10-20T01:55:05.677+00:00I have moved my blog to the friendly confines of GNOME blogs. See you there!
A 4-lane Interstate Highway fell into the Mississippi river during rush hour several miles from my house. This is the road I take to work every day, though thankfully I take it the other direction. I'm safe, but there's a pit in my stomach.
I've been using git for a while for most of my projects, and I love it. It's fast, powerful, and it's actually quite simple to use. Whenever I start hacking on something, even if it's just a little utility that will never see the light of day, I generally initialize a git repo and hack in there.
But my question is, what do I do if I want to make that repository public? I want to create a 'bare' repository (e.g. without any working directory files) on a public server that I can push to, and that others can pull from and push to. I would have expected some command like
git clone --bare ./local-repo ssh://remote-server/remote-repo, but that doesn't seem to work. Am I overlooking something obvious?
Since Joanne's parents live in Thailand, they're not able to see their new granddaughter very often. They use skype to communicate regularly, so we thought we'd grab a cheap little webcam so that they could see Ruby while they were talking as well. I picked up the cheapest webcam they had at the local Best Buy: a Logitech QuickCam Communicate STX for $35. Just for fun, I thought I'd try it out on my Ubuntu Feisty machine, not really expecting much. To my surprise, I plugged it into the USB port, fired up Ekiga , and within 10 seconds was having a video chat with my brother (well, the video chat was one way, since he doesn't have a webcam or a microphone, but I'm told that he could see and hear me).
By contrast, to get it to work on Joanne's Windows machine (so she could use it with Skype), it wanted to immediately download updated 'drivers' (probably including a bunch of useless utility software -- over 100MB!) and of course, install them. It installed without problem, but all-in-all, it took about 10 times as long as it did to get it working on Linux.
When I first started using Linux, I would have never dreamed that hardware support would have gotten this good by now. In fact, on the way home from picking up the webcam, I joked to Joanne that getting it to work on Linux was going to be my weekend project. Ha!
 By the way, this is the first time I've used Ekiga. It's quite nice, and the new GUI work looks great.
Things with nemiver are coming along at a decent pace and we'll probably be doing another release in the near future. The next release should bring quite a few nice new features and a lot of bugfixes, most of which Dodji has already mentioned.
I recently bought a new Digital SLR camera, the Nikon D40. I wasn't necessarily looking for the best camera I could find, just something reasonably priced that took decent pictures. The D40 is relatively small so I don't feel like I'm lugging a huge camera around (which is important or I probably wouldn't end up using it as much), it's cheap (it comes with a reasonable lens kit for around 600 US, which isn't much more than I paid for my old point-and-shoot digital back in the day), and it takes vastly better pictures than my old camera. I'm really loving the fact that I can actually get decent pictures even if the lighting and environment is less than ideal. I'd highly recommend it if you're looking for a decent entry-level DSLR. I still clearly have a lot to learn about photography (this camera just lets me take better-looking crappy photos). But I'm slowly learning, and I'm getting lots of practice, like any new parent.
Ahhh, spring in Minnesota. It has reached 50F (10C), most of the snow has now melted, and the neighbors are out doing yardwork and sunbathing with their shirts off.
I feel like my GNOME development environment is finally becoming really comfortable. This weekend, while working a little bit on Agave, I ran into a couple issues, and fired up Nemiver to debug the problems. Then I made the commit using giggle.
In the past, I've used GNOME applications for web browsing, checking email, viewing images, listening to music, and all of my other day-to-day computer activities. But I've never really had any GNOME tools that I've been able to use for development. It feels like we're finally making progress on some good basic development tools for GNOME, which makes me really happy. In addition to the ones I mentioned, there's also some really great stuff happening in the new versions of glade3, and there seems to be some good stuff happening in Anjuta as well (though I don't personally use an IDE). All in all, I'm pretty positive about the future of developer tools in GNOME.
In other news, Ruby is still the-cutest-baby-ever™ and doing really well. We're even getting some decent sleep (though decent is pretty relative I suppose).(image)
Ruby says hi:
She's sleeping on my arm right now.
It was a long labor, but Joanne made it through without needing any medication, and they're both doing well. Now if we could just get some decent sleep...
So I've found myself hacking on agave a bit more lately, and I thought I'd experiment a little bit with some different UI ideas. Any thoughts and comments are welcome, of course.
Keep in mind that this is just at an experimental stage at the moment, so I may just throw it away if I decide that it doesn't work well. I do think it gives a better sense of how the colors are related, though.
In any case, it's been fun playing around a little bit with cairomm for once. In the end though, I'd probably want to implement this using some sort of canvas library, but I haven't done enough research on the options that are currently available.
In theory, I'll be a father in a week and a half. It's a little bit crazy to think about. It's definitely feeling a lot more imminent lately. Joanne is very pregnant and ready to be small again, but doing really well. We've pretty much decided on a name, and have sort of entered a state of waiting.
Since it may be a while before we get to a nice restaurant, we went out for a meal at Vincent in downtown Minneapolis for Valentines day. I don't think I've ever enjoyed food as much in my life. It was absolutely phenomenal. I didn't even regret the small fortune we paid for the meal.
Via Jacob Rideout on planet KDE, I found this fascinating site with stats about open source projects: ohloh.net. It doesn't appear that the GNOME stats are ready yet, but interesting nonetheless. Then again, I tend to be a bit of a stat junkie.
Since I've been hacking on the Nemiver debugger, I've been doing a lot of faux-debugging (i.e. start up debugger, step through a few lines, shut down). One thing I noticed very regularly was that there were times when I'd step into a function (usually a function defined in an external library), and gdb would grind away for several tens of seconds at 100% cpu before it finally arrived at the next instruction. Apparently this generally only happens on Debian-based distributions due to the fact that debugging symbols for ld.so are not shipped by default. Installing libc6-dbg solves this problem since this package also includes the symbols for ld.so. But it would be nice if debian-based distributions (in my case, Ubuntu) would automatically install debugging symbols for ld.so as a dependency of gdb, since without these symbols gdb becomes nearly unusable. So if you've been frustrated with a slow gdb on Debian or Ubuntu, do yourself a favor and install libc6-dbg.
Happy new year to everybody. I had a nice relaxing week with family and also got to stand up for a friend's wedding. It was a long needed break and the first vacation that I've had in a while where I actually felt recharged afterward. (My college engineering prof would say that's the sign of a bad vacation, but oh well...)
So, finally back to some GNOME-related hacking. Here's my belated Holiday gift to all of you brave enough to test-drive nemiver:(image)
I've implemented a list of source files that are extracted from the executable that is being debugged. So you no longer have to hunt around in the file system to open a source file and set a breakpoint, you can now choose from a list of valid source files.
There's actually quite a few new things happening in Nemiver since the holiday break. Dodji added a basic text search, there have been several bugs fixed, and some significant performance improvements. Note that if you want to try out the new stuff in nemiver, you'll also need gtksourceviewmm from svn.
Glad to see the GNOME subversion transition went smoothly. Like Steve, I've been thinking about playing around with git-svn since I've been fairly impressed with git. I'd be interested in hearing other people's experiences with git-svn as well.
Apparently the GNOME subversion migration has a new proposed date: December 29. I happened to see that email referenced on IRC yesterday, otherwise I wouldn't have known about it. So for those of you like me who are not subscribed to gnome-hackers, now you know. Hopefully everything goes smoothly this time.
Over my lunch hour, I've started taking about 15-30 minutes of my day and going through the list of newly filed bugs, marking duplicate reports or applying the stock NEEDINFO responses for bug reports without good stacktraces. I can't do any in-depth triaging, since I'm at work away from my development environment, but I figure that I can at least help cut down on some of the noise in bugzilla with only a little bit of effort every day.
I've been using and developing software on Linux for a little while now, but I've always felt slightly uneasy about my lack of detailed knowledge about the Linux kernel. So I picked up rlove's kernel development book this past weekend and I'm about halfway through it already. I'm gradually beginning to feel more ... what's the opposite of uneasy? easy? at ease? Anyway, it's quite good and well written. Highly recommended if you're looking for a nice introduction to the Linux kernel.
Nemiver's proceeding nicely to a 0.2 release which should be a lot more robust in a lot of ways, including better support for poorly-behaved versions of gdb.
I've been back from my long weekend in southern California for a couple of days, and it's a bit difficult to get back into things here. The weekend was incredibly relaxing: 3 full days of warm weather and nothing to do but sit on the beach. If only I had a few more days of that.(image)
Well, I upgraded my main laptop to Ubuntu Edgy last weekend, and for the most part things went OK (I used the official 'update-manager -c' procedure, so I didn't get any severe breakage). Unfortunately, my wireless doesn't work anymore. Sigh... I know I should have done more research into which laptops have good driver support for linux before I bought it, but it's still frustrating. In the past I had to resort to the ndiswrapper driver to get it to work, but that doesn't seem to work anymore. And I can't seem to get the new bcm43xx driver to work right either. Alas, if only I were a hardware wizard. But congrats to the Ubuntu team. If I had the right hardware, I'm sure it'd be a fantastic release :) And at least I get to play with the new GNOME stuff now.
Oh wait, I do have one more complaint about the upgrade: Bug #350053 drives me insane. I love Epiphany, but that bug completely screws up the way I use browse. I can use the 'smart bookmarks' feature, but it's hard to reprogram my brain after getting used to just typing search terms in the location bar and hitting enter. If anyone can get the fix for that into Edgy, I'd be eternally grateful.
Joanne and I are heading out to the L.A. area for a long weekend tomorrow. Hopefully the weather out there's nice and warm there. It's certainly feeling a lot like winter up here. I could really use a few days off work, so I'm hoping for a few nice relaxing days, and the computer's staying home.
So I spent a good deal of saturday chasing down a bug in Agave that was reported by somebody trying to make a Debian package of it. Some time ago, when the second "GNOME Goal" was introduced for Installing theme-friendly icons, I decided I'd do that to Agave as well. (By the way, those little goals were kind of a nice way for new contributors to feel useful, are there plans for any more?). Everything worked fine until a couple days ago when I had a report of a crash when installing the application to
/usr due to an icon not being found in
Why was it looking in
/usr/local/...??? I scoured my source code for hard-coded references to
/usr/local, and not finding any, I sat scratching my head for a good long while. Now, somebody more familiar with gtk icon theme issues may have recognized the problem immediately, but it took me quite a while to figure it out, so I thought I'd post the solution in case anybody else runs in to the same issue. The problem only shows up if you've first installed the application to
/usr/local (the default) and then uninstalled it and installed it to
The GNOME Goal page mentioned above suggests an
install-data-hook rule which updates the gtk icon cache after the program's icons are installed. So the icon cache in
/usr/local gets updated when you first install the program to
/usr/local. Unfortunately, after uninstalling the application, the icon cache is not updated, so gtk still thinks there are application icons located under
/usr/local/ is in the icon theme search path before
/usr, when the application is installed to
/usr, it will find the stale icon cache in
/usr/local and think it found the icon you've requested. Unfortunately the icon that it 'found' has already been deleted, so it will try to load an icon from
/usr/local that doesn't exist, and the program crashes. The solution is to simply add an
uninstall-hook that also updates the gtk icon cache so that you don't have a stale icon cache after you run
`make uninstall`. Something like the following:
gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then echo "Updating Gtk icon cache."; $(gtk_update_icon_cache); else echo "*** Icon cache not updated. After install, run this:"; echo "*** $(gtk_update_icon_cache)"; fi
I've recently added a simple breakpoint list widget to nemiver, and a few other minor things. Dodji's added a few cool new things lately as well, including showing the value of a variable in a tooltip when you hover over it. There's still no release yet, so you'll have to pull from svn for now if you want to try it out.(image)
This weekend Joanne joins me at the ripe old age of 29, so we have a big party planned. Happy birthday Joanne.
Also, I've finally gotten around to gimping up a disembodied head for myself. So if the powers-that-be would like to install the following image as my spokes-head on planet GNOME, feel free.(image)
We had a doctor's appointment this morning, which involved our first ultrasound. We've been trying to avoid as much of the medical birth industry as we can, and do things as naturally as possible (see the Bradley Method), but we decided to do an ultrasound anyway, and I must admit that it was pretty fascinating to see it moving around in there. It looks like it's probably going to be a girl. yay!
I also stumbled upon a ticket for today's playoff game between Minnesota and Oakland. My boss had a couple tickets but his friend got sick so he had an extra, which meant a half day off of work for a baseball game. Unfortunately, the Twins lost the game, but I still got my first taste of live playoff baseball, which was a blast (though the sheer volume of the noise in the dome left me with a bit headache).
Good days. I love 'em.
Ahh, it's my favorite time of the year again. Trees turning color, leaves falling, weather cool enough for a light jacket, etc. This past Wednesday, we had a day outing at work where our whole group went for a canoe trip down the St. Croix River just northeast of the Twin Cities. It happened to be just about the only sunny and rain-free day of the week, so it was a good time. Nothing like getting paid for a day of leisurely canoeing with beer and grilled food on a sandbar along the way.
Joanne seems to be finally past the morning-sickness stage of pregnancy, so life is a lot easier around the house, at least for the time being. I'm also feeling a lot more like cooking lately, which is good for both of us. I generally really enjoy cooking good meals, but I don't get the urge nearly as much in the summertime. I guess that's another nice thing about the arrival of Fall.
I've starting hacking quite a bit on Dodji's GNOME debugger Nemiver lately. It's coming along quite nicely and is fairly usable already (not that I can claim much credit for that). Now that there's a gtksourceviewmm release it should be a bit easier for others to build as well. I'm also planning to make a new release of Agave very soon as well, since I've gotten a few new translations lately. If anybody else wants to send a translation my way, feel free.
We got back from a nice long weekend trip to Milwaukee (another of the great but underappreciated cities of the midwest) visiting my sister and her family. It was a good trip and I got to see my newest niece for the first time.
After getting back home I noticed that we had quite a few Cayenne peppers hanging on the bush in our back yard. So I picked a few and strung them up in the kitchen to dry. I think we're going to dry them, grind them up, and try to make them into a hot pepper sauce. If anybody knows how to make a good hot pepper sauce, let me know.
It feels like I've been making software releases like crazy lately. I guess people who've been involved in GNOME for a while probably feel this way regularly when release time comes around, but it's sort of a first for me.
I've been hacking on cairomm and gtkmm for quite a while now, but cairomm has up to now been in a development state. For the gtkmm 2.10 release, we needed to depend on cairomm, so it had to be declared stable. So that happened over the weekend with version 1.2.0, followed on quickly by a 1.2.1 release to fix a small Windows compilation issue.
There was a slightly nasty gtkmm bug that popped up just after Murray released version 2.10.0 and went on vacation, so I had to try to get a new release cut in time for the GNOME release cutoff today. I've been developing my own Agave application for a while, but this is really the first time I've had to release software that A) matters, and B) needs to get done on a tight schedule. All in all a little nerve-wracking, but exhilarating at the same time.
It's great to see a updates on lot of the great summer of code projects within GNOME. It seems like this year was a really great year for SoC projects within GNOME. Great job to all the participants.
This weekend I actually got some excercise. Sunday Joanne and I decided to go to the park across the street and play a little bit of tennis. I've never really played much tennis in my life, but I've decided that I really like it. I even went and bought some new tennis balls since the ones we had in the house were all old and flat and barely bounced. Maybe I've finally found the thing to get me off my ass and get some excercise every now and then.
Update: for those who don't have any idea who I am, I wrote a little introductory post that didn't seem to get picked up by planet GNOME when I posted it.
Well, I'm told that this blog is now aggregated on Planet GNOME. For those who haven't met me yet, my name is Jonathon Jongsma and I live in the great city of Minneapolis, in the USA. I've been contributing to gtkmm (yes, that new website is my fault), am co-maintainer of cairomm, and have my own little side-project named Agave (which incidentally was the project I started in order to teach myself gtk(mm) programming, so don't be too surprised at the questionable quality of some of the early code). Anyway, thanks to all those who've already made me feel welcome in the GNOME community.
In other news, my wonderful wife Joanne is nearing the end of her first trimester of pregnancy, so we anticipate having our first child around the beginning of next year. So I've been spending a lot of my time cooking meals and trying to find foods that won't be immediately regurgitated.
At long last, I've released a new version of GNOME Colorscheme. Only I've changed the name of the application with this release. The new name is Agave. I decided to change the name of the application after I found that people often assumed (due to the name) that it was an application that could be used to change the colorscheme of their desktop (i.e. window borders, etc). Plus I was just never happy with such a generic name.
Other than the name change / re-branding, there's not a lot of major changes, but there are few minor improvements and an additional translation (Catalan). And now that I've got the name-change release out of the way, I can get back to working on some bigger changes to the application. I've been working on a branch to implement a custom TreeModel which can use standard C++ containers (e.g. std::vector) as its data store. This is of course completely uninteresting from a user perspective, but it makes the code much cleaner and maintainable as I don't have to keep a standard container synchronized with the data in a ListModel and vice versa. I've just merged these changes back into master.
I have hopes that at some point a generic standard-container-based TreeModel can be shipped with gtkmm, but I think it needs a bit of testing here before I can propose adding anything to gtkmm. The implementation I'm using right now is still a bit rough around the edges since this is the first time I've ever implemented a custom TreeModel, but I think it'll get there eventually.
In addition, I've got a few ideas regarding improving the UI for picking colors, and some other things. So that should start picking up soon as well.
In addition, with many thanks to Ross Burton, Agave is making its way into the Debian repository. You can keep an eye on its progress in the Debian NEW queue. Also, it looks like you can grab it from Ross's personal repository if you want to try it out before it actually gets accepted into the official repository. Thanks Ross.