14 Aug 2008 (updated 15 Aug 2008 at 01:04 UTC) »
Thu 2008/Aug/14
Sometimes Oralia boils water in the kettle, and adds a stick of cinnamon to make an infusion. The other day I heard the kettle boiling and I thought, "time for some green tea!". I didn't notice that the water was actually cinnamon, and made my tea as usual.
Well, hot damn, green tea made with cinnamon water turned out to be *good stuff*. I think I could grow an addiction to this.
When you configure multiple monitors, it is useful to know which physical monitor corresponds to each element in the configuration GUI. Both KDE and MacOS display cute labels on each monitor.
I implemented pretty much the same thing for GNOME, with the addition of color-coding. Hello, sexy:
This is in the following Git repositories (look at the monitor-labeling branches in all of them, and also tray-icon-rotation for gnome-settings-daemon):
This is just awaiting approval from the the release team to be committed to SVN :)
Tue 2008/Aug/12
Why I want to have the children of git rebase --interactive
Sometimes you are hacking madly and committing often. Your commit log looks like this:
* Add some fields for a popup menu
* Create the popup menu
* Refactor the base object to accomodate the menu's commands
* Implement the signal handlers for the menu's commands
Then you type make and of course your code doesn't compile. So you do one-liner commits, one for each build error:
* Add missing include gtkmenu.h
* Fix typo in popup_menu variable name
* Forgot to declare a menu_item variable
* Add missing argument for gtk_menu_popup function
But you don't want you submit all of those patches upstream! You only want to send perfect patches which are either additions or refactorings to the upstream code. You don't want the maintainer to know that you are a fallible human being who forgets include files and variable declarations; instead, you want him to believe that you are a coding god who sends a perfect series of patches every time.
git rebase --interactive allows you to pretend you are better than you really are. This is a good thing.
We have 8 commits in total (4 "good" ones that don't compile, and 4 "embarrassing" ones that are little fixes). So, run git rebase --interactive HEAD~8. This means, "let me fix any fuckups since 8 commits ago".
Git will drop you in an editor where you edit this:
pick ab365cf Add some fields for a popup menu pick 2478bac Create the popup menu pick 9180ffe Refactor the base object to accomodate the menu's commands pick a6c2467 Implement the signal handlers for the menu's commands pick 289cf1a Add missing include gtkmenu.h pick 378ac2b Fix typo in popup_menu variable name pick 821ac6f Forgot to declare a menu_item variable pick 24acf67 Add missing argument for gtk_menu_popup function # Commands: # p, pick = use commit # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit
Now let's reorder the lines there, and replace some pick commands by squash. I've put in some comments about what each moved line does.
pick ab365cf Add some fields for a popup menu squash 289cf1a Add missing include gtkmenu.h # Oops, forgot to "#include <gtk/gtkmenu.h>" to have a field declared "GtkMenu *popup_menu" pick 2478bac Create the popup menu squash 821ac6f Forgot to declare a menu_item variable # Oops, while creating the menu items I forgot to declare my menu_item variable squash 24acf67 Add missing argument for gtk_menu_popup function # Oops, while creating the menu I also missed an argument to this function (how couldn't anyone?) pick 9180ffe Refactor the base object to accomodate the menu's commands pick a6c2467 Implement the signal handlers for the menu's commands squash 378ac2b Fix typo in popup_menu variable name # ... and I also mistyped popup_menu in a signal handler
When you are done, save that temporary file and exit your editor. Git will rewrite your commit history so that you have a clean log, with no commits like "fix this little thing". When you send that patch series to the maintainer, he'll have an easier time reading your code, and he'll be amazed at your meticulousness.
The important thing here is to do one commit per compilation error. Then it's very easy to reorder your commits, where you squash each fix with the corresponding "real" commit.
Syndicated 2008-08-12 14:50:00 from Federico Mena-Quintero - Activity Log
Fri 2008/Aug/08
Two-stone handicap for me on a 9x9 go board, and the birthdayful HPJ still manages to kick my ass by twenty-something points.
They must have put something in the cake, as I had two big slices while HPJ had a single tiny one.
Syndicated 2008-08-08 10:50:00 from Federico Mena-Quintero - Activity Log
7 Aug 2008 (updated 7 Aug 2008 at 19:05 UTC) »
Thu 2008/Aug/07
Here is a second screencast on rpm2git (Ogg Theora, 69 MB). This one tells you how to use rpm2git to take the patches from a SRPM and put them in a Git branch.
During GUADEC in Stuttgart and in Dublin, Evangelia Berdou was interviewing people about how they contribute in GNOME. She used this information for her dissertation, Managing the Bazaar: Commercialization and peripheral participation in mature, community-led Free/Open source software projects. Over 100 people from the GNOME Foundation contributed to her study!
There is very valuable information in this work: how many core-platform hackers, core-desktop hackers, secondary-desktop hackers, translators, and peripheral contributors do we have? Which of them are employed to work only on GNOME, on GNOME and other free software, or are not paid for their contributions? How do people move from being peripheral contributors to core ones?
For people thinking about which sub-group of GNOME needs better tools (translators!) and support from GNOME at large, this is exactly what they need to read.
6 Aug 2008 (updated 7 Aug 2008 at 04:04 UTC) »
Wed 2008/Aug/06
Two things that made my day today.
First, Andrew Jorgensen packaged Meld for openSUSE 11.0, based on Pavol Rusnak's version, which makes git-mergetool awesome.
Two, Ivan Zlatev packaged git-merge-changelog (README), which makes merging ChangeLog entries surprisingly painless. You can even cherry-pick from other branches, where the ChangeLog's diff would not apply cleanly to the destination branch, and git-merge-changelog Just Works(tm) without any manual intervention. This *is* magic.
Here is a little screencast about the problem that rpm2git tries to solve (Ogg Theora, 12.5 MB):
(Screencast recorded with recordMyDesktop. Man, my voice sucks. I swear it sounded better inside my head.)
Tue 2008/Aug/05
I'm no security expert, but the Firefox guys keep saying that the new "this SSL certificate is funny" scheme in Firefox 3 is actually a good thing, but that is just bullshit.
Certificates are broken as designed because every web browser (including Firefox 3) has a button that says "let me access the site anyway", and that's what everyone, including yours truly, does all the time. People just do not know, nor care, how to ensure that a certificate is valid. "What's a certificate, anyway? The site says it is secure!"
If anything, the new scheme for funny certificates in Firefox 3 is worse than it was before, because the warnings are more frequent. So, you get really well-conditioned to hitting the button that says, "begone, stupid warning, and let me access the fucking web site already".
Syndicated 2008-08-05 21:31:00 from Federico Mena-Quintero - Activity Log
30 Jul 2008 (updated 30 Jul 2008 at 19:05 UTC) »
Wed 2008/Jul/30
People like were thinking of a document-centric desktop before my GUADEC talk. W00t. It's nice to see people tuned in to the same channel.
(There is a lot of material in that blog post. Digest it slowly, bit by bit. I don't agree with the parts about needing to dump the fundamentals of our platform, but that's perhaps better seen from an implementator's perspective.)
Nemo is a file manager for GNOME which displays your files based on time, not on folder hierarchies. It also handles categories for files, like tags in F-spot. I had not seen it before GUADEC, and it's a pretty cool concept — much more developed than the simplistic timeline-of-days that I showed in GUADEC. Maybe we can embed the Mono VM into Nautilus and reuse Nemo's super-sexy widgets for time-based displays.
Tue 2008/Jul/29
Here is a fantastic presentation of how the Office 2007 user interface was redesigned (full blog post). Miguel already talked about this presentation when he went to the MIX08 conference.
Obligatory snarky comments: the presentation's slides look like ass. Garish backgrounds. Three different fonts on a slide. Bullets. Anyway, that's the visual material. The actual content of the presentation is very interesting.
Microsoft was in this situation: with Office they had a tremendously powerful piece of software with which people no longer felt comfortable. It's too complex. I don't know all the features anymore. I'm sure it has the feature I want, but I cannot find it. This fucking paper clip never gives me good advice and just gets in my way.
The thing is, designing or improving user interfaces is Real Work(tm). You have to watch people work and see where they get stuck. You have to make prototypes and see how people react to them. Microsoft did that for Office 2007.
On a much smaller scale, this is why I think that the plan for document-centric GNOME has a good chance of being successful. We can show Apple and Microsoft that free software has the balls to change the toplevel way in which people interact with their files. We can definitely turn our desktop into a more comfortable environment than what those proprietary environments gave us twenty years ago.
Speaking of comfortable environments, this is a street cafe one or two blocks away from the grand bazaar in Istanbul. I had the pleasure of having apple tea and coffee with HPJ and JPR on one of those tables, getting relaxed and ready before terrorizing the grand bazaar with our extreme haggling skills.
Let's see how many patterns of good urbanism there are in that place:
I would love it if our Human Interface Guidelines were closer in spirit to A Pattern Language (book) than to Apple's HIG.
One of the most pleasurable things about GUADEC is the chance to find out that hackers share common interests outside of programming.
Andy Wingo was telling me about Richard Gabriel's book, Patterns of Software. Christopher Alexander wrote the preface — he's the main guy who defined those architectural and urbanism patterns from above.
JPR, HPJ, and myself were talking about peak oil. Will free software even be relevant if we can't keep the Internet running?
It turns out that our baby and Chris Blizzard's as well have the same kind of baby chair and swing.
It's fun to talk about camera-nerding with Hub.
Today I'm 0x20 years old. Yay.
Syndicated 2008-07-29 14:44:00 from Federico Mena-Quintero - Activity Log
Wed 2008/Jul/23
I'm writing a little utility that generates Git repositories from some unpleasantly-formatted data. The test suite for this was really simple to write: you can simply ask git, "give me the SHA-1 hash that you have for the content" at the end of the test run (i.e. "git-cat-file -p HEAD" and parse out the "tree" hash from there). If the obtained hash matches your expected hash, then you know the test succeeded. This is much easier than comparing all of the expected/obtained content by hand.
Syndicated 2008-07-23 19:03:00 from Federico Mena-Quintero - Activity Log
Tue 2008/Jul/22
Here is my presentation from GUADEC: Document-centric GNOME (ODP).
The code for document-centric Nautilus consists of the journal view and the Nautilus extension interface for journal providers. This code is not finished yet (nothing gets displayed to the screen; it's all engine code), but you can take a look here:
git clone git://gitorious.org/nautilus/mainline.git nautilus-document-centric
The master branch contains the document-centric code, which is built on top of nautilus-2.22.2. You can also visit the Gitorious repository for document-centric Nautilus and create your forks there.
John Anderson has posted a great little tutorial on Nautilus tips and tricks. Life-savers for me: the list of keyboard shortcuts and enabling the "advanced permissions" view.
Syndicated 2008-07-22 12:42:00 from Federico Mena-Quintero - Activity Log
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
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!