federico is currently certified at Master level.

Name: Federico Mena-Quintero
Member since: N/A
Last Login: 2007-06-28 00:26:55

FOAF RDF Share This

Homepage: http://primates.ximian.com/~federico

Notes: I keep my diary here.

Projects

Recent blog entries by federico

Syndication: RSS 2.0

26 Aug 2008 »

Tue 2008/Aug/26

  • Predefined desktop items for Nautilus

    Back in the Summer of Code 2007, Sayamindu Dasgupta worked on adding support for predefined desktop items to Nautilus. This is so that system administrators can set up desktop links that will appear on users' desktops. A university could set up an icon to take people to the university's intranet, for example.

    Basically, I'm reviving Sayamindu's patch and bringing it up to date for the current Nautilus. The idea is that you set up a GConf key, /apps/nautilus/desktop/predefined_items_dir, and point it to a directory which holds .desktop files. This kind of indirection through a GConf key is what makes the scheme work nicely for deployments with Sabayon: sysadmins can have predefined items for various groups of users, and select among those by simply changing a mandatory GConf key for each user. This wouldn't be so easy if there were a hardcoded directory like /var/nautilus/global-desktop-items.

    Sysadmins should be able to define mandatory items, which users cannot change or delete, and also "normal" items, which users can tweak or remove. Mandatory ones would be ones like "Company Intranet" or "Link to Helpdesk". Distros could use normal items for their marketing materials; the perenially hacky "Welcome to FooLinux" icons that currently are hard to do properly.

    The problem I'm having is how to make non-mandatory items work. You want this behavior:

    1. The sysadmin defines a non-mandatory item.
    2. The user sees the item in his desktop. He doesn't want it anymore, so he deletes it. Where do we mark this deletion?
    3. The user decides that he wants the item back after all. How does he restore it?
    4. The sysadmin updates the non-mandatory item and he wants it to show up again in people's desktops. How can this override what the user had done?

    I'm leaning toward having two extra boolean values in .desktop files: an X-GNOME-Mandatory and X-GNOME-Deleted. If the "mandatory" value is false, then the user may change or delete the item. For changes, the item is copied from the predefined_items_dir to the user's ~/Desktop and that version is modified. For deletions, the item is copied there as well, but then the "deleted" flag gets turned on.

    If the user wants an item back, he turns on "show hidden files" and those files get shown again. (Or we could hack the Trash to restore the item by turning off the "deleted" flag...)

    If the sysadmin updates an item in the predefined_items_dir, this item will override items of the same name in users' desktops, based on the item's timestamp.

    Does this make sense? Am I overlooking something?

Syndicated 2008-08-26 11:42:00 from Federico Mena-Quintero - Activity Log

21 Aug 2008 (updated 21 Aug 2008 at 18:06 UTC) »

Thu 2008/Aug/21

  • People who use git-mirror.gnome.org may have noticed that SVN tags don't get fetched automatically when they get their daily fix of updates with "git fetch" or "git pull" (that is, you run "git tag" and it doesn't list new tags that appeared since you did your original clone). Within your repository, take a look at .git/config:

    [remote "origin"]
    	url = git://git-mirror.gnome.org/git/gtk+
    	fetch = +refs/heads/*:refs/remotes/origin/*
    	fetch = +refs/tags/*:refs/tags/*      ### <---- Add this line!

    The first "fetch" line is already in your .git/config and it means, "every time I fetch from the origin, get all the branch heads in the origin's refs/heads and stuff them in the refs/remotes/origin namespace" (i.e. update all the branch heads).

    The second "fetch" line is what you need to add. It means, "every time I fetch from the origin, also get all the tags and stuff them in my own namespace".

    After that, just do "git fetch origin" and all the tags will be downloaded to your repository.

  • Mike Wolf has been working madly on rpm2git to make it easier to use. He has made some very cool changes:

    Rpm2git no longer requires you to have an environment suitable for rpmbuild (e.g. specfiles in /usr/src/packages/SPECS, patches in /usr/src/packages/SOURCES). If you have a single directory with a specfile and patches, you can simply run rpm2git on that.

    You don't need to have all the BuildRequires from the specfile, either.

    Perhaps most importantly, you don't need to mess with your $PATH anymore nor install helper scripts. Rpm2git now works out of the box after "make install".

    All of these changes are now merged in the rpm2git repository.

Syndicated 2008-08-21 11:23:00 (Updated 2008-08-21 18:06:09) from Federico Mena-Quintero - Activity Log

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.

  • Labels for RANDR monitors

    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:

    Labels for the tray icon's menu Labels for the display capplet

    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 :)

Syndicated 2008-08-14 12:56:00 (Updated 2008-08-15 01:04:52) from Federico Mena-Quintero - Activity Log

12 Aug 2008 »

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

8 Aug 2008 »

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

119 older entries...

 

federico certified others as follows:

  • federico certified federico as Apprentice

Others have certified federico as follows:

  • raph certified federico as Master
  • rconover certified federico as Master
  • notzed certified federico as Master
  • miguel certified federico as Master
  • lewing certified federico as Master
  • pat certified federico as Master
  • bertrand certified federico as Master
  • timj certified federico as Master
  • clahey certified federico as Master
  • martin certified federico as Master
  • stric certified federico as Master
  • vicious certified federico as Master
  • flaggz certified federico as Master
  • yosh certified federico as Master
  • Centove certified federico as Master
  • thunder certified federico as Master
  • sjburges certified federico as Master
  • Slow certified federico as Master
  • shawn certified federico as Master
  • bit certified federico as Master
  • ole certified federico as Master
  • kmaraas certified federico as Master
  • jamesh certified federico as Master
  • tigert certified federico as Master
  • terral certified federico as Master
  • uzi certified federico as Master
  • cameron certified federico as Master
  • mark certified federico as Master
  • andrei certified federico as Master
  • cipher certified federico as Master
  • johnsonm certified federico as Master
  • ber certified federico as Master
  • scromp certified federico as Master
  • werner certified federico as Master
  • Jody certified federico as Master
  • dieman certified federico as Master
  • federico certified federico as Apprentice
  • alan certified federico as Master
  • negro certified federico as Master
  • shillo certified federico as Master
  • beppu certified federico as Master
  • feldspar certified federico as Master
  • mjs certified federico as Master
  • harold certified federico as Master
  • bombadil certified federico as Master
  • mathieu certified federico as Master
  • neo certified federico as Master
  • temas certified federico as Master
  • dria certified federico as Master
  • mitch certified federico as Master
  • Ryan certified federico as Master
  • dcm certified federico as Master
  • zhp certified federico as Master
  • scottj certified federico as Master
  • gbritton certified federico as Master
  • listen certified federico as Master
  • blizzard certified federico as Master
  • goran certified federico as Master
  • DarkBlack certified federico as Master
  • gstein certified federico as Master
  • drc certified federico as Master
  • mkp certified federico as Master
  • jayc certified federico as Master
  • lupus certified federico as Master
  • matias certified federico as Master
  • anarch certified federico as Master
  • odaf certified federico as Master
  • sengan certified federico as Master
  • harvey certified federico as Master
  • bagfors certified federico as Master
  • green certified federico as Master
  • Darin certified federico as Master
  • anser certified federico as Master
  • phaedrus certified federico as Master
  • ettore certified federico as Master
  • Denny certified federico as Master
  • dsueiro certified federico as Master
  • nils certified federico as Master
  • BrucePerens certified federico as Master
  • ariel certified federico as Master
  • mtk certified federico as Master
  • harinath certified federico as Master
  • msw certified federico as Master
  • cactus certified federico as Master
  • hadess certified federico as Master
  • menthos certified federico as Master
  • lauris certified federico as Master
  • Aspuru certified federico as Master
  • rodrigo certified federico as Master
  • jpick certified federico as Master
  • docwhat certified federico as Master
  • jsheets certified federico as Master
  • gilbertt certified federico as Master
  • Gnrfan certified federico as Master
  • gord certified federico as Master
  • Fyndo certified federico as Master
  • wcooley certified federico as Master
  • juantomas certified federico as Master
  • Barbwired certified federico as Master
  • timg certified federico as Master
  • rtmfd certified federico as Master
  • jules certified federico as Master
  • vladimir certified federico as Master
  • Judith certified federico as Master
  • const certified federico as Master
  • kanikus certified federico as Master
  • kimusan certified federico as Master
  • rw2 certified federico as Master
  • nigelk certified federico as Master
  • lerdsuwa certified federico as Master
  • bratsche certified federico as Master
  • srn certified federico as Master
  • jtc certified federico as Master
  • nullspace certified federico as Master
  • mikeszcz certified federico as Master
  • timur certified federico as Master
  • ebizo certified federico as Master
  • hilaire certified federico as Master
  • dneighbors certified federico as Journeyer
  • lxhispano certified federico as Master
  • ariya certified federico as Master
  • jLoki certified federico as Master
  • bkuhn certified federico as Master
  • hgayosso certified federico as Master
  • fejj certified federico as Master
  • drjekyll certified federico as Master
  • rossigee certified federico as Master
  • monk certified federico as Master
  • MikeGTN certified federico as Master
  • cinamod certified federico as Master
  • nzkoz certified federico as Master
  • gleblanc certified federico as Master
  • juhtolv certified federico as Master
  • trow certified federico as Master
  • almer certified federico as Master
  • wardv certified federico as Master
  • epic certified federico as Master
  • olea certified federico as Master
  • mvo certified federico as Master
  • etumenba certified federico as Master
  • sl0th certified federico as Master
  • quentin certified federico as Master
  • ricardo certified federico as Master
  • typezero certified federico as Master
  • proski certified federico as Master
  • opiate certified federico as Master
  • redowl certified federico as Master
  • pau certified federico as Master
  • sulaiman certified federico as Master
  • wacky certified federico as Master
  • coder certified federico as Master
  • mharris certified federico as Master
  • sculptor certified federico as Master
  • roshan certified federico as Master
  • todd certified federico as Master
  • gka certified federico as Master
  • Rabbitt certified federico as Master
  • mascot certified federico as Master
  • modus certified federico as Master
  • Rockwalrus certified federico as Master
  • lkcl certified federico as Master
  • strider certified federico as Master
  • tanis certified federico as Master
  • bonzini certified federico as Master
  • cortezcarlos certified federico as Master
  • elanthis certified federico as Master
  • carol certified federico as Master
  • fxn certified federico as Master
  • rhestilow certified federico as Master
  • pencechp certified federico as Master
  • Mmarquee certified federico as Master
  • polak certified federico as Master
  • brouhaha certified federico as Master
  • juancpaz certified federico as Master
  • ebf certified federico as Master
  • domi certified federico as Master
  • mdupont certified federico as Master
  • rpelcastre certified federico as Master
  • byte certified federico as Master
  • shooby certified federico as Master
  • Fabian certified federico as Master
  • pasky certified federico as Master
  • garnacho certified federico as Master
  • alvaro certified federico as Master
  • freax certified federico as Master
  • carlosgc certified federico as Master
  • berthu certified federico as Master
  • mrcsparker certified federico as Master
  • simos certified federico as Master
  • derupe certified federico as Master
  • fagrspf certified federico as Apprentice
  • alfons certified federico as Master
  • mathrick certified federico as Master
  • yaubi certified federico as Master
  • rmolina certified federico as Master
  • ebassi certified federico as Master
  • pvanhoof certified federico as Master
  • zbowling certified federico as Master
  • bogart certified federico as Master
  • patux certified federico as Master
  • roozbeh certified federico as Master
  • beto certified federico as Master
  • karkul certified federico as Master
  • fbscarel certified federico as Master
  • madan certified federico as Master
  • behdad certified federico as Master
  • gpoo certified federico as Master
  • Sandino certified federico as Master
  • toxickore certified federico as Master
  • clubfan certified federico as Master
  • Aaaarti certified federico as Master
  • jmauricio certified federico as Master
  • everaldo certified federico as Master
  • zwnj certified federico as Master
  • lucasr certified federico as Master
  • imcsk8 certified federico as Master
  • masood certified federico as Master
  • okaratas certified federico as Master
  • eopadoan certified federico as Master
  • desrt certified federico as Master
  • KBrown certified federico as Master

[ Certification disabled because you're not logged in. ]

New Advogato Features

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!

X
Share this page