the phrygian cap


d33p shadow

luis

@debethencourt.com

about me

Blogalia
Subscribe with Bloglines

wishlist
amazon.co.uk





bethencourt's Profile Page


<Mayo 2012
Lu Ma Mi Ju Vi Sa Do
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Creative Commons License


planet ubuntu
silicon island



"all religions, arts and sciences are branches of the same tree. all these aspirations are directed toward ennobling man's life, lifting it from the sphere of mere physical existence and leading the individual towards freedom." albert einstein

snappy in gnome





Good news!
snappy is now in GNOME, and by that I mean:



snappy is now officially a GNOME project!
You can play with it, discuss it and report bugs all inside the GNOME umbrella... please do, no excuses!

snappy is an open source media player that gathers the power and flexibility of gstreamer inside the comfort of a minimalistic clutter interface.

3 Comentarios


Using emacs with etags



I'm currently dealing with a very obfuscated and over-engineered codebase, with layers upon layers upon layers. There is always a silver linning though and I finally got around to learning how to use etags in emacs. I can't believe I waited this long to learn this feature, specially since it is so easy.

etags lets you quickly locate a definition by its name anywhere in your code base.

1. First, you need to tag the code. Go to the base directory and run

$ etags `find . -name "*.c" -o -name "*.h"`

This will generate a 'TAGS' file.

2. Let emacs know about the tag file

M-x visit-tag-table [location of the TAGS file]

3. With the cursor on a function call do the following

M-. (which is ALT-.)

This will take you to the function definition anywhere in the entire directory structure

4. Now if you want to go back

M-* (which is ALT-SHIFT-*)


Cool, isn't it? It gets better!
That's not all you can do with the TAGS file. Imagine that you are dealing with very long function names or can't quite remember the exact name. No problem. Type the first few characters of the name, then press M-tab. Either the full function name will appear, or a window will pop up displaying a list of possible completions.

If you like this checkout smart-tab. It allows you to use the tab key to indent and tab complete function/variable names.

** Alternatively, you can use 'make tags' to generate the 'TAGS' file.

3 Comentarios


the real enjoyment is in the doing



I like the *process*. I like writing software. I like trying to make things work better. In many ways, the end result is unimportant – it’s really just the excuse for the whole experience. It’s why I started Linux to begin with – sure, I kind of needed an OS, but I needed a *project* to work on more than I needed the OS.

In fact, to get a bit “meta” on this issue, what’s even more interesting than improving a piece of software, is to improve the *way* we write and improve software. Changing the process of making software has sometimes been some of the most painful parts of software development (because we so easily get used to certain models), but that has also often been the most rewarding parts. It is, after all, why “git” came to be, for example. And I think open source in general is obviously just another “process model” change that I think is very successful. [...]

It’s simply not the end that matters at all. It’s the means – the journey. The end result is almost meaningless. If you do things the right way, the end result *will* be fine too, but the real enjoyment is in the doing, not in the result.


Linus Torvalds



(source interview with TechCrunch)

2 Comentarios


1.0 > vlc > 0.10 > mplayer



Completely unscientific benchmark, just to get you salivating for GStreamer 1.0



X = time, Y = CPU%
gst 0.10 and 0.11 from git, vlc 1.1.12, vlc 2.0.1-0-gf432547, mplayer SVN-r33713-4.6.1
test file: video: H.264 - audio: MPEG-4 AAC

(benchmark created by Wim Taymans)

6 Comentarios


The Feltron Annual Report




full size



Who said data is cold and impersonal? Who said report sheets are boring?

Nicholas Felton (aka Feltron) is an information designer. Since 2005, he has tabulated thousands upon thousands of tiny measurements in his life and designed stunning graphs and maps and created concise infographics that detail that year’s activities. The results were originally intended for his friends and family, but the “personal annual reports” have found an audience with fellow designers and people that really geek out on seeing lots of data, beautifully presented.

In 2010, Nicholas Felton’s father passed away, and Felton decided to turn his annual report into a full biography of his father. He took 4,348 of his father’s personal records and created an intimate portrait of a man, using only the data he left behind.

When correctly displayed data can be beautiful and fascinating.


full size



[source: 99% invisible]

1 Comentarios


Donald Knuth and Steve Jobs



It is always fascinating when two brilliant minds meet...

Steve Jobs had managed to get Donald Knuth, the legendary Stanford professor of Computer Science, to give a lunchtime lecture to the Mac team. Knuth is the author of at least a dozen books, including the massive and somewhat impenetrable trilogy "The Art of Computer Programming."

When Knuth's arrival was announced. Steve bounced out of his chair, bounded over to the door and extended a welcoming hand.

"It's a pleasure to meet you, Professor Knuth," Steve said. "I've read all of your books."

"You're full of shit," Knuth responded.

4 Comentarios


Join GStreamer's GSoC 2012



Are you a college student interested in open source software? what about multimedia? what are you up to this summer? Stop whatever you are doing, and do yourself a favor: apply to GStreamer's GSoC 2012

To find out more about the program visit the GSoC website and pay special attention to the FAQ and timeline.

If you want to take part in Google Summer of Code as a student now is the time to start working on your application. You can either come up with your own idea or get inspired by our ideas list.

GSoC is a great opportunity to join the community, learn a lot, get your name known. All while have a helping mentor during the process and getting paid. It has been said that getting into free software development has a hard barrier to entry, well GSoC is a great side entrance with somebody saving you a seat.



Now that is a cool way to spend the summer.




Edit: nekoyaho demanded I include this picture from last summer. Two PiTiVi/Gstreamer GSoC 2011 students, chatting with GStreamer GSoC 2010 student Thiblahute. Meanwhile having drinks in a Berlin "beach" during the Desktop Summit. Working hard guys. What are those? Margaritas?

0 Comentarios


happy snappy user



I received a very cool thankful email from a snappy user today:

"After testing I quickly found out that Snappy is what I've been looking for ever since I started using Linux, 5-6 years ago.

In my work as an animator I've felt that there have always been a lack of a production quality video player. That is a player that lets me view my clips without getting in the way and gives me full control of playback.
For instance there haven't been a single player that could do frame stepping backwards, I've asked for this feature from all of the players but only got answers like impossible, too much work, why would anyone want that?, etc.
Now snappy is out with exactly that feature. And that is in version 0.2.
Snappy is also targeted towards us professionals. That is reassuring as focus will be on what important to us, playback of video, instead of eyecandy like a gazillion effects.
It fits perfectly in my production pipeline as a tool that does one thing, plays videos, and does it well.

Snappy has been a pleasure to know for the last couple of months.

Thank you!
-David"


... aaand that made my day! \o/
so no, Thank _You_ David

4 Comentarios


Desktop Summit Berlin



Just like most people on Planet GNOME,



I'm already in Berlin and hanging around, and let me say, the venue is awesome! So if you see me please say "Hi. Howdy do?", I might even have some Collabora schwag to give you. Functional and shiny.

0 Comentarios


add some swap on the fly



There is no real benefit of using a designated hard drive partition for your swap. You can just use a file, with the benefit this swap space can be temporary or permanent. So if this is a new system or you just need a bit more swap memory for a while, it is very simple, this is what you do:

[1] su -
[2] dd if=/dev/zero of=/swap1 bs=1M count=1024
[3] mkswap /swap1
[4] chmod 600 /swap1
[5] swapon /swap1

bam! that's it. so here it what just happened...
[1] log in as root
[2] create a 1 GB swap file in /swap1
[3] set up a Linux swap area on the file /swap1
[4] set permissions so users can't try reading sensible data from the swap file
[5] start using the swap file

If you want this file to be used for swapping across reboots (permanently), then enter the following line in the /etc/fstab file:
/swap1   swap   swap   defaults   0   0

If you finished the memory intensive task and want the space used for swap back, then use the following command:
swapoff /swap1

Happy hacking! :)

3 Comentarios


Common acronyms



To increase the speed of communication in the free software community, many people use acronyms. However you might sometimes find one you aren't sure of it's meaning. So here is a list of the most common ones. More can be found in the Jargon file.

  • AFAIK = As Far As I Know
  • AKA = Also Known As
  • ASAP = As Soon As Possible
  • BTW = By The Way
  • ETA = Estimated Time of Arrival
  • FAQ = Frequently Asked Question
  • FUD = Fear, Uncertainty and Doubt
  • FWIW = For What It's Worth
  • FYI = For Your Information
  • WTF = What The Fuck? or What The Frak?
  • LOL = Laughing Out Loud
  • IANAL = I Am Not A Lawyer
  • IIRC = If I Recall Correctly
  • IMHO = In My Humble Opinion
  • IMNSHO = In My Not-So-Humble Opinion
  • IOW = In Other Words
  • OTOH = On The Other Hand
  • PEBKAC = Problem Exists Between Keyboard And Chair
  • ROTFL = Rolling On The Floor Laughing
  • RSN = Real Soon Now
  • RTFM = Read The Fucking Manual or Read The Fine Manual
  • THX = Thanks
  • TIA = Thanks In Advance
  • WIP = Work In Progress
  • WRT = With Respect To


8 Comentarios


Thank You



Yesterday I received an email with the subject "Thank you for freemix", and it truly made me happy.

Every few months I get an email from a random project user, somebody I have never met, that wants to thank me for giving a piece of software away freely. These people appreciate the time and mind invested in a the work that is shared, and this appreciation is the most amazing remuneration ever.

I developed freemix while at College, to scratch a personal itch. Yet it is great to hear the stories from people who are using it for their live gigs. Who are being creative with it, and producing art for others to experience and enjoy. These were the reason I had to share it freely.

Free software developers share their code, a product of hard labor, and it is pushed, packaged and copied to the void. At the end of those tarballs, branches, distributions there are other people thankful for the amazing technology in their hands.

I proudly stand in both sides of the line, a user and a developer. Hugely thankful for everybody who has contributed to make my system possible, and happy to know there are people who are enjoying my code. So everytime I receive a thankful email, I send two of my own to awesome hackers of projects I admire and use extensively.

I suggest you send today a thankful email to a developer of a software project you really enjoy. I suggest this becomes a habit. I suggest everybody does this. I suggest this becomes common.

2 Comentarios


How I learned to stop Architecture and love Free Software





When I was finishing high school I was destined to continue my academic life studying Architecture. I took special art classes to get prepared to study one of the fine arts I always loved, and so I did, I entered the architectural school at my hometown in the Canary Islands.

All students in their first year must learn about the Bauhaus school and their impact. I knew about them but in that year I learned about their philosophy in detail, and I became sanely obsessed with their work. Inside it's difficult social/political time Bauhaus revolutionized the world of architecture, design, and art. Their modernist designs were centered in functionality, simplicity, rationality, and taking art to everybody through mass production. In summary, making our day to day habitats and tools... better, cheaper, simpler and available to all.

So through most of my first year I asked myself "Where is the present-day Bauhaus?" I was certain to find the contemporary equivalent and join in, my personal drive being "the goal isn't to live forever, the goal is to create something that will". After spending months searching I couldn't find any new history-changing movement in architecture or art in general. One day in my second year, I discovered Free Software and its depth through a friend. Being a computer enthusiast I knew the term but not the philosophy behind it, and once I understood them it just clicked - I found it. The next year of my academic life I started studying Computer Engineering, and the rest... well, just fell into place.

Few times every century a social changing movement arises, right now Free Software is defining our freedom, rights, and how we live in a world rapidly switching from analog to digital. Free Software is the contemporary Bauhaus. I feel very proud and lucky to be a small part of it.

5 Comentarios


Hi there Planet





Hello Planet GNOME,

I am very happy to be aggregated to Planet GNOME ;) (thanks aruiz)

I'll introduce myself a bit, my name is Luis de Bethencourt. I'm from the Canary Islands and live in Barcelona, both in Spain. I enjoy working for Collabora.

I currently hack on GStreamer, PiTiVi, GUPnP, Rygel, snappy, freemix and some more. Since I'm a freedom lover, technology geek, music addict and video tinkerer, I feel at home in free software multimedia projects. I used to lead the Ubuntu Studio project, and worked on the now defunct OpenSolaris.

Other personal interests range from pushing around heavy stuff, running for a while to end up at the same place, visiting places for enough time to claim I've been there, petting dogs' heads, avoiding queues, enjoying food cooked by other people, taking pictures, sitting down and pushing buttons to make the pattern of lights in the game change, reading random interesting stuff in the net, mixing videos, experiencing the lack of talent to describe myself, and more which I will talk about in this blog.

so... "Hi everyone!"



pd: feel free to say 'hi back' in the comments section :)

10 Comentarios


HOWTO: Disable the Gnome screensaver from your application



A broad group of applications have some sort of display running without user feedback, an obvious example are multimedia applications. For instance the user of a video editor is viewing his work in-progress, in such use cases it would be frustrating if the screensaver kicked in, blocking the video. So how do we disable the screensaver temporarily from our application?

Recently there have been some changes around GNOME's screensaver and which component handles the requests to disable it. It used to be gnome-screensaver directly but now it is managed by gnome-session. What you need to do is simply send the DBus message "Inhibit" to org.gnome.SessionManager, and later send "Uninhibit" to reactivate it.

Sebastian Dröge implemented this in snappy, basing his code heavily in that of totem. We have the following function that depending on the second argument, disables or enables the screensaver:

static void
screensaver_inhibit_dbus (ScreenSaver * screensaver, gboolean inhibit)
{
  if (!screensaver->gs_proxy)
    return;

  if (inhibit) {
    guint xid;

    xid = screensaver->window;

    g_dbus_proxy_call (screensaver->gs_proxy,
        "Inhibit",
        g_variant_new ("(susu)",
            g_get_application_name (),
            xid,
            REASON,
            GS_NO_IDLE_FLAG),
        G_DBUS_CALL_FLAGS_NO_AUTO_START, -1, NULL, on_inhibit_cb, screensaver);
  } else {
    if (screensaver->cookie > 0) {
      g_dbus_proxy_call (screensaver->gs_proxy,
          "Uninhibit",
          g_variant_new ("(u)", screensaver->cookie),
          G_DBUS_CALL_FLAGS_NO_AUTO_START, -1, NULL, on_uninhibit_cb,
          screensaver);
    }
  }
}


When the "Inhibit" request is satisfied asynchronously, the on_inhibit_cb () callback is called. This checks if the operation happened succesfully, and saves the cookie that we see used above when uninhibiting. gnome-session uses this cookie to track the disabling and enabling of the screensaver by multiple applications. If two applications request a screensaver disable and later only one has enabled it, it will still wait for the second one before doing so.

static void
on_inhibit_cb (GObject * source_object, GAsyncResult * res, gpointer user_data)
{
  GDBusProxy *proxy = G_DBUS_PROXY (source_object);
  ScreenSaver *screensaver = (ScreenSaver *) user_data;
  GVariant *value;
  GError *error = NULL;

  value = g_dbus_proxy_call_finish (proxy, res, &error);
  if (!value) {
    g_warning ("Problem inhibiting the screensaver: %s", error->message);
    g_error_free (error);
    return;
  }

  /* save the cookie */
  if (g_variant_is_of_type (value, G_VARIANT_TYPE ("(u)")))
    g_variant_get (value, "(u)", &screensaver->cookie);
  else
    screensaver->cookie = 0;

  g_variant_unref (value);
}


on_uninhibit_cb () does the reverse, checks if operation finished succesfully and it clears the cookie.

For those who want the whole picture... getting the GDBusProxy (screensaver->gs_proxy) which needs to be set before running the proxy call in screensaver_inhibit_dbus () above, is set by:

static void
screensaver_init_dbus (ScreenSaver * screensaver)
{
  g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
      G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
      NULL,
      GS_SERVICE,
      GS_PATH, GS_INTERFACE, NULL, screensaver_dbus_proxy_new_cb, screensaver);
}


The screensaver_dbus_proxy_new_cb callback checks the operation and then runs:
screensaver->gs_proxy = g_dbus_proxy_new_for_bus_finish (result, NULL);

Here is the full code if you want to take a look at it.


pd: Soon part II, the XTst variant of screensaver disabling for x11.

4 Comentarios


snappy 0.2 is out!



snappy is an open source media player that gathers the power and flexibility of gstreamer inside the comfort of a minimalistic clutter interface.

The snappy development team is proud to announce it's second release: 0.2
codename: "Mrs. Robinson, you're trying to seduce me."


full size


Some of the changes you will notice are:
  • DLNA Media Server through Rygel
  • Continue playback where file was previously closed
  • Frame stepping
  • Volume controllable and displayed in the User Interface
  • Save history of recently viewed files
  • Screensaver disabling
  • Video can be rotated, useful for handheld devices
  • Fixes in the User Interface controls and its proportions
  • Audio files can be played, with gstreamer visualizations
  • Support for network streams
  • Code commented
  • More bugs fixed than we are proud of :P



As mentioned above, snappy is now a MPRIS service so if you have Rygel running as well, snappy becomes a DLNA/UPnP Media Renderer controllable by any DLNA device or application. Rygel acts as a translator/man-in-the-middle by getting all UPnP requests/calls and simplifies them into Dbus messages snappy understands.

Also worth mentioning, --recent shows the list of recently viewed media, and in case you are going to watch something private --secret to ask snappy not to save it in the history. The history is also useful to continue playback where you left off a video, closing snappy before you could finish watching it.

download a tarball: bz2, gz or xz
clone the git repo
packages in distributions will be updated soon


Thanks to all who helped in snappy's 0.2 creation!


Disclaimer: No ponies were harmed during the making of this release. One got sick, but that's about it.

15 Comentarios


snappy in gentoo





good news everyone! i've invented a device that will unwillingly cause you to read this in your head, in my voice. also...


snappy is now available in gentoo!
ebuild: media-video/snappy

snappy is a new media player that gathers the power and flexibility of gstreamer inside the comfort of a minimalistic clutter interface.
so start your portages, and emerge off.

we are in the testing, polishing and bug fixing phase. all help would be welcomed, please report your bugs or send me an email.

once release 0.2 is out next week, snappy will be moved to ~arch and the package.keywords entry can be removed for ~arch users
thanks to leio and nirbheek for handling this :)

that makes snappy easily available now in debian, ubuntu, opensuse and also gentoo.

2 Comentarios


talking about rygel



paraphrasing from christian schaller's blog:

for those who don’t know yet rygel is an open source implementation of dlna, a standard for ensuring interoperability between the different media devices on your home lan. rygel was started some years ago by zeeshan ali and is being used in gnome and meego among others. we, at collabora, have been working on rygel for some time now and thus i did a talk about it at the recent meego summit in san fransisco. it is an interesting talk about the current state of rygel and how a lot of the rygel features are implemented using gstreamer. so if you are interested in the future of interoperable devices check out the talk at the meego website. seek about 3.5 minute into the talk as they haven’t edited the videos it seems to you get a lot of uninteresting preparation before the talk starts."

2 Comentarios


studying new code base



every once in a while i find somebody that is really motivated about contributing to open source, has good programming knowledge, but feels that he/she isn't ready to start pushing code to projects they like. most of the time, it comes down to having an experience where hacking was oriented to very specific goals, like university or work projects which include clear pointers of what needs to be done. neatly contained assignments.

these people then decide to start looking into a big open source project, and are scared by seeing thousands of lines of code, and no clear path of how to go through them. no clue where to start. i'm starting to feel like i don't have a proper response when i'm asked where to start, and how to proceed.

so when you guys join a new open source project how do you dive in and start studying its code base?

go from 'big picture' downward? start looking at interesting parts that pick your eye (like a specific high level action of the interface), trace it downwards and eventually workout how it all fits together? only focus on the sections you need to know or do you like having a general idea of the overall design? what's your experience?

any tools, tips, tricks, routines?
how do you do it?

6 Comentarios


technology changes our life - part i



technology changes our life for good.

that is an obvious statement, but sometimes we focus too much on the trees and forget about the forest. we get obsessed with a certain project we have our hands on, and stop seeing the general change in how we live and our quality of life. it is amazing the things we can do. how we can share, communicate, entertain, trade.

this is why, we should sometimes lean back and contemplate how technology is changing the world.


google has amazing marketing, and in their last chrome ad they hit the nail in the head.


technology gets better. life gets better.


pd: link for planet people that can't see the video

2 Comentarios


©2007-2009 luis de bethencourt guimerá
powered by Blogalia