viernes, 28 de agosto de 2015

My thoughts of GUADEC 2015

So, GUADEC 2015 is over and I'm back to my country after 2 weeks exploring Europe in my "no extra penny must be spent, no souvenirs, no shopping!" mode, and I really enjoyed the whole experience, it was memorable and I think it marked a sort of inflection point in life.

I finally met my Viking friends: Mattias and Jonas, crew of an awesome långskepp: GNOME Maps. God, they are two memorable characters, hahaha. And also met lots of people there, from vastly different cultures and places, people really enthusiast, funny, especially smart (really smart), humble and people who really love what they are doing. I met new friends around the conference and the hostel, a really enjoyable people to spend your time, like Adri(e|a)n Plazas (sorry, I never going to spell your name correctly :(), Siska, Udayan (my roommate), Tuan, Julita and more!!

The only thing I maybe regret is to not have the english skills to being able to enjoy the full experience, it's hard (really hard) to me to speak and listen to english, particularly listen, maybe sometimes I understood the half of the things people were talking about and sometimes just think "Hey, they could be speaking Swedish and it would be the same to me!". So if you think I was a bit awkward during the conference, 15% of this awkwardness is because of this, I'm still trying to figure out the other 85% :) . Fortunately the people is always nice and understand this limitation, but you know, I prefer to have proper english skills instead.

Anyway, I really enjoyed GUADEC, the talks and the side activities, and I hope I can be there for the next year and enjoy it even more.

miércoles, 29 de julio de 2015

I'm going to GUADEC 2015!

Hi people! I just wanted to tell you that I'm going to GUADEC 2015 in Gothenburg thanks to the great help of GNOME Foundation who is sponsoring a nice part of my travel expenses!

This is going to be my first GUADEC, my first time in Sweden and my first time on the other side of the Ocean. I know I'm going to have a great time with all the GNOMErs and with the Swedish culture. I'm finally going to meet Jonas, Mattias, Zeeshan and all the people who helped me to enjoy my favorite job (GSoC 2014), that's priceless.

See you in Gothenburg!

martes, 6 de enero de 2015

GNOME gets Foursquare integration

If you were reading my GSoC 2014 reports, you surely remember that I was working on integrating GNOME Maps with social networks, so you can share the place you are in Facebook and Foursquare (and Twitter if you enable an option in Maps!). This surely is not going to be an everyday feature, but I learned a lot during its development (and during the whole GSoC).

In my last GSoC report I told you that I hope to have this feature for GNOME 3.16, fortunately it got merged in upstream a couple of weeks ago. The work consist of two parts:

  • GNOME Online Accounts (GOA) Foursquare provider: this allow users to link his/her Foursquare account to the system by using GNOME Control Center. Applications and libraries then get the account information through GOA API (that works internally using D-Bus to contact GOA daemon).
  • Check-in feature for GNOME Maps: this uses the configured Facebook and Foursquare online accounts to post check-ins in the respective streams.

If you have geolocation support in GNOME and press the marker that represents your current location or press the upper left button in Maps while you have a Facebook or Foursquare account configured, you'll see a Check in button in the bubble that appears on the map view. Press it and follow the steps. I hope we find other ways to access this feature, right now is pretty much hidden (hey, everybody love hidden features!).

Using Foursquare account in your application

One thing that it's still pending to implement is a basic native GObject based library to use the Foursquare API and to get easily access to GOA account like what libgfbgraph does with Facebook. Anyway, it's a really easy thing to do even without a library to help you.

The idea is simple: GOA only provides you authentication information about the account, depending on the case, this information could be a username, password, access token, etc. With that information, you can do whatever you want, meaning, use it to make API calls to a web service or send it to the NSA.

Once you get the Foursquare account object (a GoaObject instance) by using the GoaClient API you need to extract the access token for the account by using goa_oauth2_based_call_get_access_token and generate the URL for the Foursquare API call, something like:

https://api.foursquare.com/v2/{call_name}?
    {call_parameters}&
    v={api_version}&
    oauth_token={goa_token}

For instance:

https://api.foursquare.com/v2/checkins/add?
    shout=The%20check-in%20message&
    venueId=4567&
    v=20140226&
    oauth_token=OI5435O43H25OI432HU5IOU234H52U

I recommend you to use librest to perform the API calls.

You can learn more by checking out the GNOME Maps code, specially src/foursquareGoaAuthorizer.js, src/serviceBackend.js and src/foursquareBackend.js files.

Cheers!

miércoles, 3 de septiembre de 2014

GSoC Final Report: Tying up loose ends

So this is the end of the second most exciting project I ever made after the SDL pong game I made when I started to learn programming (those youth projects were welding in my heart, they are hard to overcome :D ). And of course that doesn't mean that this is the end of my GNOME contributions, hopefully I graduate this year and I won't be eligible to GSoC next year but that doesn't mean that my contributions will stop here, moreover with the pending tasks that I already have for 3.16.

GNOME Maps received a lot of love this year, three students including myself was working hard to add some neat features to Maps. Sadly, not everything of this work will be able to 3.14. We actually needed to request a feature freeze exception to include some of GSoC features:

Actually, the Via points feature was merged while I was writing this post :), we worked hard together with Jonas and Dario these last days to get this feature pushed.

The GSoC features may not be present in 3.14 are:

  • Points of Interest, Rishi afforded some technical difficulties during the development of this feature, he needed to make a big refactorization these last days on the POI caching code, you can get more information in this Rishi's post.
  • GNOME Online Accounts Foursquare provider, is very sad to not get this merged this in time because it was in a very pushable state, but The Three Stooges Syndrome affected my communication with GNOME members to create the GNOME app in Foursquare, and that delayed the merging.
  • Check-In feature in Maps, this one was very pushable too, maybe some nits to be solved, also, the delay in the Foursquare provider inclusion affected the inclusion of this feature.
  • Friends check-ins, this one wasn't completed, I dare to say that is 60% completed, some discussion with designers must happen to continue with this.

We hope to have everything mentioned and more for 3.16!

Thank you!

I want to thank to Google and GNOME for give the opportunity to get involved into this wonderful project, it was a really nice experience and I learned a lot. Thanks a lot to GNOME members involved in this project: Jonas Danielsson, Mattias Bengtsson, Zeeshan Ali, Andreas Nilsson. Special thanks to Jonas for his unbreakable patience during the review of my code and constant involvement. Thanks to my GSoC partners: Dario and Rishi, for the inspiring effort they put in their projects and the good willing to work together.

Thank you all!

jueves, 24 de julio de 2014

GSoC Report 4: Stalking your friends with GNOME

More than one month without a GSoC report? Luckily my mentors are so kind to get angry with me ;) . The truth is that I was really busy getting ready for some final exams, but that stuff is finished and I am really motivated to continue.

What was done?

Stalking your friend with GNOME

I started to like the word stalk since I started to play GTA V and got known about the Lifeinvader in-game social network, now this word is coming to GNOME Maps. I was working in a feature to display check-ins from user friends and from the user him/herself. This feature is going to be available only for Foursquare users that have a Foursquare account configured in GNOME Online Accounts. Since I was mostly working in the non-GUI part of the feature I don't have much to show you, just one screenshot:

No! I'm not using maximize and minimize buttons in my environment! that's happening to me with the latest version of Gtk+, dunno why :)

These are markers that Maps will show to represent a check-in (for the current user or for the user itself), obviously, if you press on that marker, a bubble with more information about the check-in will appear, I'm working with Andreas to get a nice mockup for that bubble. Maybe some GNOMErs remember me asking for help in IRC to get a photo with a circle shape, that was what I was trying to do :) .

Maybe you want to get involved in this feature since a have some usability worries that I explain in this Bugzilla comment, any feedback related to this will be appreciated.

Reviews, reviews and more reviews

Now I'm starting to getting some nice feedback from Dario and Rishi (GSoC students working on Maps) about the markers and bubbles I'm coding.

I hope when everything get merged, we will have a really nice maps app for GNOME.

What's next?

Showing check-ins in Maps is the last goal for my GSoC project, so the next tasks is to finish this and work hard to get everything merged before 3.14.

GUADEC

Sadly, I am not going to be in Strasbourg this weekend, not because I couldn't get sponsorship, but due personal stuff. I hope next year to be different, because I really wanted to be there, hacking with you :(

jueves, 12 de junio de 2014

GSoC Report 3: Check-In GUI, markers and bubbles

First of all, sorry for the delay of this report, I was a little busy with non-GSoC stuff. Now I'm back, ready for code and make GNOME better!

In my previous report I told you that I was hopping to have some screenshots for the Check-In GUI that is going to be present in GNOME Maps 3.14, if you got excited after read that (because you got excited, right!!??), you are on luck, I have your screenshots :)

Let's start!

What was done?

Check-In GUI for GNOME Maps

Let's start with some screenshots

If you remember my previous report, I told you the idea of how Check-In is going to work, this is the result. The first and second step are susceptible to don't appear at all. For the first step, if you use just one account for Maps, this step is ommited. For the second step, if we can find the selected POI for check-in in the social service database, we also omit this step, if not, we give a list of found places so the user can select the appropiate place to check-in. The second step emergence depends too much on how similar is Overpass API POI compared to the social network POI (mainly name and nearness)

We discussed with Zeeshan, Andreas and Mattias about using directly the social network API as a POI provider for Maps. This actually will solve the problem of the 2nd Check-In step, but we will keep it simple for 3.14 and discuss if we can do it for a next iteration

In the 3rd step there is a More options expander, this shows options for the check-in like visibility (for Foursquare and Facebook) and Facebook/Twitter broadcasting (only for Foursquare).

You cannot use this dialog directly at this moment because I need some of the Rishi code to get it working (when you click a POI in Maps, a bubble will be shown with the "Check-In" button on it).

You can get more information in Bugzilla ticket #731113.

New markers and bubbles

Do you rembember how current user position marker and bubble looks? Well, it looks like this

Now, I'm refactoring the markers and bubbles code to use GtkPopover based bubbles

Please note that I'm not lost in the middle of the Sahara Desert, this is just an example :)

Actually, this is not the final appereance of the marker, this is work in progress. We will add some buttons in the bubble to perform some actions related to the location. GNOME designers had crafted some mockups some time ago related to the markers and bubbles

Also, I only ported the current user location marker, others markers present in Maps need to be refactored as well.

You can get more information in Bugzilla ticket #722871.

Some progress in GOA Foursquare provider

Now we have an official GNOME application in Foursquare and the review of the GOA Foursquare provider is happening.

You can get more information in Bugzilla ticket #729837.

What's next?

While I wait for more reviews from Gnomers, I'm going to make more progress in the new markers and bubbles, adding the missing new markers and helping Dario and Rishi to port their respective markers to the new code.

If you have any suggestion or criticism on the current progress, this is perfect moment to speak! :D

viernes, 16 de mayo de 2014

GSoC Report 2: Foursquare in GNOME

I know, I know, you just can not wait to read another wonderful post from this blog (sorry, bad joke). Either way, here I am, with another GSoC 2014 progress report.

If you have read my previous post, you'll remember that the next step for this project is to start working with the Foursquare API to implement its backend in GNOME Online Accounts and then, code some examples to perform check-ins in Foursquare.

What was done?

New Foursquare backend in GNOME Online Accounts

As you can see, we have now the Foursquare backend working in GNOME Online Accounts. Fortunately and unexpectedly for me (since I am a ignorant in GObject in C and even more in Autotools), was relatively easy, through existent backend codebase like Facebook and Pocket backends.

This progress is in review process at GNOME Bugzilla and I hope this should be part of GNOME in a matter of days. You can check the ticket #729847 to get more information.

Foursquare Check-In examples

A lot of progress has been made in the check-in code examples, now the code is more service-agnostic and the service-specific code is well separated. During the development of these examples, I've been able to get a more suitable code to be used directly in GNOME Maps

As I hope you remember, this code is available here

Check-In GUI Discussion

Mattias Bengtsson, Andreas Nilsson and I were discussing at IRC about the future GUI in GNOME Maps, we benefit a lot from this discussion since there were certain aspects of social services that should be taken into account during the design.

Broadly, the Check-In will work as follows:

  1. User selects a Point Of Interest (POI) or maybe his/her current location in the Map.
  2. A popover shows with information about POI, a "Check-In" button is showed in that popover
  3. User press the button
  4. An account selector dialog is showed so the user can select the account under which to perform the check-in. If the user has only one account, this dialog is ommited.
  5. Based on the POI information, Maps search a related place page in the social service (Facebook or Foursquare) so we can perform the check-in in that place.
  6. If the social service return to us results with ambiguity (i.e. the POI has more than one related page in Facebook), a place selector dialog is showed so the user can select the correct place. If there is not ambiguity, that dialog is ommited
  7. A dialog is showed to inform the user where he/she is going to perform the check-in and with which account, and also a text entry to associate a message to the check-in. We don't have discussed this yet, but maybe we can add some check-in privacy configuration or other extra options.

Hacking libgfbgraph

During the development of the example code, I've detected some issues in the libgfbgraph library (the glib based library to use Facebook API) related to the OAuth2 Access Token handling. Basically, the library does not use the Access Token provided by GOA, so the applications are forced to reload the Access Token at startup regardless of whether or not the token is expired.

I've discussed this with the library author, Álvaro Peña and we agreed that this must be changed.

What's next?

The next step is to start to code the Check-In GUI that will be used in Maps, so I hope to show you some screenshots for the next report :) .

Stay tuned!