Tuesday, August 20, 2013

GUADEC 2013, and GSoC Update Number Seven


I got back from GUADEC a week ago...While I was there I met a lot of new people and also saw friends :) Some things I did:

I attended fewer talks than last year, but spent more time volunteering :) Still, I enjoyed the keynote on Endless Mobile, "Rich custom user interfaces with Glade and CSS", "Gtk+ for Application Developers" (which had some very nice code examples!),  "What's Cooking with GStreamer"...and I'm looking forward to watching videos of the talks I missed.

There were a lot of vegetarian restaurants in Brno! I shared a lot of meals, long walks through town, and late night beers with fellow GNOMErs.

Worked on a new plan for the Developer Documentation with Marta Maria Cassetti. I've relied on Marta's Python Gtk+ docs a lot in the past. I won't have much time in the coming months to contribute to these efforts, but I'll to do what I can to help out with her plan for GJS.

Worked with Hylke Bons and Garrett LaSage on refining the mockups for the Sound Recorder. It was really awesome to see some of the interactions fleshed out and to talk through the design in person.

Gave two talks: one lightning talk and one mainline talk.

Got advice from my mentor, Sebastian Dröge, on completing the Sound Recorder. I think I will be able to finish adding the basic functionality so it has feature parity with the current GRecord.

Talked to Florian Müllner about GJS development, writing applications, Cairo, design issues...

It was nice to see everyone! Thanks to the foundation for sponsoring my trip, and see you all next year :)

GSoC Update Seven

Since returning to Chicago I have been working on waveform code using Cairo and a Gtk.DrawingArea. What I am doing is really, really simple but it took me some time to be able to grok the code at all (somehow using grok in that sentence makes my slowness seem more forgivable, right :p). The other thing I ended up reading a lot about was multi-threading, in order to better decide to not use it. I read through a lot of code before I was able to wrap my mind around it. At this point my simple code for a basic implementation for a playback waveform is working -- except there is a weird bug that causes a "draw" signal to be emitted whenever any part of the recorder interface is clicked or moused-over. I discovered the bug at around 2 am last night and I haven't figured it out yet. There are some other things I need to finish as well - making sure that the recording and the waveform are synced exactly, adding a linear gradient fill, interrupting playback if the user clicks on a different row in the listview, etc. I'm also working on adding the rest of the UI elements to the window. By next week I should have some actual screenshots or maybe a video (even) to show. 

I'm basically on schedule even though I spent most of last week jet lagged and confused by Cairo. Reading list:

Pitivi renderer.c and previewers.py (thanks to Jeff Fortin Tam for showing me the code and spending some time explaining it at GUADEC)

Thread Safety (thanks to Asheesh Laroia for the recommendation)

Cairo GJS Modules (thanks to Cosimo Cecchi for recommending these)

Cairo's Test Suite (I highly recommend these! I really like to read tests, but honestly these are really extra nice :)

Next time, screenshots :) Cheers!