GopherCon India 2015

gophercon-con-logoGopherCon India happened from 19th to 21st February 2015 in Bangalore and it was an amazing experience for me. It started with workshop on first day followed by 2 days of main conference presented by speakers coming from different corners of globe. Slides from the conference are available on github and pictures on flickr

Go Workshop

I am totally new to coding in Go, so I thought it will be a good idea to attend the workshop. I hoped that it will help me in understanding the conference talks better. The topics covered by  William Kennedy during the workshop were very good. He covered all the basic and important topics like variables, pointers, functions, types, slices, methods, interface, goroutines, channels, etc very well with hands-on examples.  Goroutines are very interesting topic as all of them can run concurrently and leads to no block in your application. It took me some time to digest variable declaration in Go.

For example, for declaring an int variable in C/C++ or Python we do “int foo” while in Go we write “foo int”.

Same applies to function definitions. Function declaration in C, C++ looks like-

return_type function1(int *var1)

while in Go we write,

func function1(var1 *int) (return_type1, return_type2, …)

But from whole conference, I observed lot of speakers saying that while learning any new language you should forget whatever you learnt before and learn as if you are learning a new language.  I personally liked this idea and I would suggest everyone should follow this while learning new concepts.

       

Conference

Day 1

After usual registration work, everyone went to conference room to attend talks and keynotes. It was quite surprising to see cute little gophers sitting on chairs for everyone 😀

Conference started with Opening Keynote by Francesc Campoy Flores where he nicely explained various types of people who uses Go. He categorized Go users as

  • Newcomers – who are very new to Go and want to learn
  • Explorers – who are familiar with basic coding in Go and are now trying to make useful applications using Go to understand it more
  • Builders – who know Go very well and have developed Go applications
  • Experts – who understand specs and knows all details of Go

It was interesting to know about these tools:

  • gofmt – Formats your code according to Go standard (yay, you don’t have to worry about formatting anymore)
  • goimport – Adds missing import packages in your code and also removes unnecessary imports.
  • goreturns – The best one as it will run both gofmt and goimport for you, in addition to that it will auto add return variables in case your functions don’t have any.

Talks from Aaron Cruz and Gabriel Aszalos provided multiple tips on how one should be working on a Go project and how code should be written. Couple of tips were:

  • Use good editor of your choice which has support for Go like sublime, vim, etc to write code faster.
  • While contributing to new project, first go through README and documentation in order to understand overview.
  • To understand a new codebase, it is really important to follow the flow in which code is written and best way is to first look for entry point in project.
  • Every now and then you should look into components of project which you haven’t looked into from long time and refactor them in case needed.
  • Use gofmt, goimport and goreturn tools to keep code clean, formatted and less error prone
  • In order to get source code from Github, we can use “go get <source name>” instead of git clone.
  • Code should be well documented, tested for keeping code maintainable for long run. At least exported functions from libraries must be documented so that user can use them without hassle.
  • Code written in Go should be readable – not in english language but in terms of Go. For example if you are creating an empty struct in Go, no need to to create a new empty struct like type struct empty {} instead of it whenever you need an empty struct just write struct {} there
  • Try to use features available in Go libraries instead of writing your own. For that one should explore Go functionalities and should go through its specs.

Regardless of what language you are coding, I would say these tips are useful for everyone.
     

The next talk was about Mike Gehard’s journey from being a Rubyist to a Gopher. One of the things he suggested was to read the Go language specification to understand why certain design decisions were made. For the builder, he suggested to understand Go’s common idioms as it helps in producing effective code. The major difference he discovered between Go and Ruby was OO support. He suggested to use small structs and methods that operate on them instead of classes/objects. Learning to program to the interface is something he emphasized as well. For understanding concurrency, he asked people to watch the Concurrency Patterns talk by Rob Pike. For experimenting, he suggests using http://play.golang.org/ . Finally, he said that the golden rule is to forget old idioms from Ruby and not fight Go.

Julia Poladsky shared her experience on how she is using Go now in her work with Java Script. Being a web  front-end developer, she compared very well how Go is a better designed language than JS. She feels Go as one of language which is going to be used in future as well by developers due to features like providing async behaviour, concurrent, Garbage collection, enforcing error handling in code which makes code more robust and I too agree with her.

A Physicist at day and Android app developer at night, Verónica explained how easy it was for her to code in Go being a Physicist. While she was excited by the possibility of writing Android apps in Go, she mentioned that the current support is crude and very painful to setup with the Android SDK.

       

While I haven’t written Go packages myself, this talk about principles of designing packages gave a good insight in Go practices. Alan Shreve explained that usually Go packages should do everything synchronously and let the called handle the async. However, he also showed situations where the opposite was desirable.

Rajesh Ramachandran shared his experience with using Go at Qube cinemas where they do high performance digital media. Due to performance requirements, the actual processing happens in C and Go is used to do post processing with the results. He explained with code how to call Go methods from C and the other way round. He listed the caveats that one should be aware of when using Cgo to do this.

    

First day ended with closing keynote by Baishampayan Ghose. He told in a very beautiful way that Go is not a 6 year old programming language but it is more than 40 years old. He explained how Go used different useful concepts from various old programming languages like BCPL, Modula2, Newsqueak, SmallTalk, Pascal, C, etc and evolved as a powerful modern programming language.

It was interesting to see that lot of people have migrated from Ruby/Python to Go and are very happy with it. It was funny to hear everyone saying evil Java during conference. I was very happy with talks covered on first day and surprised to see Go solving multiple real world problems in fast way. I was eager to attend talks which were lined up for the next day.

Day 2

As Go is a high performance language which comes very close to C, it was not surprising to see people using it for embedded programming. Kunal powar  from SoStronk presented the EMBD package which lets people write embedded code which interacts with sensors and various communication protocols. The cool thing about EMBD was that it can work on a variety of boards like Raspberry Pi, BeagleBone etc. Kunal showed a demo of an accelerometer controlling an airplane model in a desktop application.

Martin Schoch talked about bleve which is a text indexing and search library for Go where you can index text based documents and later query for terms. You can have exact matches by keyword or a complete phrase. Martin demoed bleve by querying the Gophercon India talk schedule he had indexed earlier. He also showed that there is Unicode support by searching for the Hindi terms in Wikipedia pages he had indexed.
EDIT : In demo, taking Hindi Analyzer as example Martin showed Indic and Hindi character normalization, Hindi stemming, and Hindi stop word removal. Analyzers are what improve search recall when you customize the mapping to indicate data is in a particular language.

   

The next talk by Jyotiska NK was particularly interesting because I personally found Image Processing quite difficult in my college days. Jyotiska explained that their system extracts dominant colors from images in e-commerce websites such as Amazon. The earlier system was implemented in Python but was very CPU intensive and memory consumption was high. They later implemented the same in Go and got reduced CPU usage, reduced memory and could serve more requests thanks to Go’s easy concurrency. The only pain point was interfacing with C code for OpenCV which was complex even with tools like SWIG. The other limitation was that there weren’t that many libraries in Go which supported scientific computing like SciPy and NumPy in Python.

Dave Cheney ended the conference with his closing keynote in which he talked about why Go is simple by design. He explained that to the Go creators it was more important to be simple than to being complete.

     

There was also a FAQ session where panel members and speakers gave answers to questions asked by conference attendees as well as asked online

  • One of question was first Go experience of panelist members and kinds of problem they faced. Answers were quite mixed like for Julia, in Denver there is already active Go community while for Verónica in Mexico people are very repellent for learning new language.
  • Support for embedded system like Raspberry Pi – currently embd is there with few functionality. In future support for embedded devices will be added.
  • Can Go be recommend as first programming language to learn like C, C++, Python? The panel agreed it can be.

I must say that GopherCon 2015 was awesome with variety of talks on Go. For beginners in Go like me, this conference was the right place. Thanks to my employer Red Hat for sponsoring my workshop and conference ticket. Organizers had done very good job in arranging everything including venue, speakers, food, quality of talks and keeping conference on time. Being a C/C++ programmer, I must say that I am impressed by Go. Looking forward to learn it in more detail and also start with writing few applications using Go to get feel of its power. I would recommend others as well to give it a try.

Advertisements

Fedora 21 Release Party, Bangalore

Fedora 21 got released on 9th December 2014 targeting desktops, servers, and cloud. To celebrate this release, Fedora Release Party was organized at Red Hat, Bangalore on 10th Jan, 2015.

This was my first Fedora event which I attended and no doubt it was very nice experience. Around 40 people appeared for this event which included students from local colleges, employees from local Companies and few from Red Hat as well. Among them few were already using Fedora while some of them were using Ubunutu/Windows as primary desktop. It was good to see different people who came to celebrate Fedora 21 release party!

All talks were lined up in a very well fashion. It started with  introduction to Fedora by Archit ,  followed by what all new cool features Fedora has by Ratandeep . Fedora 21 has new flavour i.e cloud and this was covered in more detail by Neependra Khare who talked about Project Atomic. Now, its time for talk about how you can contribute to Fedora like as a Packager, Content Writer, Designer, Translator, Administrator, etc and it was well covered by Sayan .

              

I also got an opportunity to give a talk on Basic RPM packaging in Fedora. Now a days, I am learning Fedora packaging and wanted to contribute to Fedora as a Packager. I thought this is a great place to talk about it because most of attendee would be new to packaging. I enjoyed giving talk because everyone was quite interested in knowing about how packaging is done. It was well taken by audience and I hope they will learn more in details from awesome Fedora wiki pages.

In between, to make Release Party more awesome there was a beautiful and delicious Fedora cake. Everyone participated in cake cutting and had lots of fun 😀

     

(Copyright Ratnadeep Debnath)

At the end, there was Open House session where everyone participated and did fruitful discussion. All attendees also got Fedora 21 live CD which they will try at home.

      

Overall, event was great, organizers did very good job, everyone enjoyed Fedora 21 release party. Looking forward to be part of other Fedora events in future.

During Akademy 2014

I came back from Akademy last week and would love to share my experience with you all 🙂 This year also Akademy was great with lots of fun, shared/gained information, met old  friends and made some new.

Pre-registration

This year, pre-registration was at the shiny new Red Hat office in Brno on 5th September. Most of my friends whom I know and going to attend Akademy were present there. It was very pleasant and happy feeling to meet everyone after an year.

       

The Talks

Akademy was two days of main conference which were on 6th and 7th september.  This year our keynotes speakers were Sascha Meinrath and Cornelius Schumacher .

    

Sascha Meinrath                                                        Cornelius Schumacher

This year there were lot of fast track (10 minutes) talks on different areas around KDE. All of them were quite interesting, some of them are:

  •  Bruno Coudoin talked about how and why GCompris moved to QtQuick with the support of KDE. What all challenges project faced while moving from GTK to Qt.
  •  Paniel Vrátil talked about his one year journey with Akonadi
  •  Martin Gräßlin gave  an overview of current state of Kwin in adding Wayland support and future plans.
  •  Kevin Ottens talked about KDE craftsmen where analysis was on the way we handle our software production, how can we make our software even better.
  •  Kai Uwe Broulik  talked about current status of  Qt port on Android and iOS. Currently, 3 iOS apps in Apple store and 8 Android apps in Google play since December 2013.

Among all long duration talks, an interesting talk which I attended was A Tale on ELFs and DWARFs by Volker Krause . He explained about:

  •  How to understand linker errors which we come across while compiling an application
  •  How to debug weird runtime behaviours which may occur while running application
  •  Way symbols are mangled for C++ created binaries on different platforms like windows, iOS, linux
  •  Tools which can help us to read and understand binaries file like readelf, objdump, nm from binutils on Linux, otool on Mac and Dependency walker on Windows
  •  gcc options like -g[0-3] to add level of  debug information into binaries which can be further used to solve program issues using tools like gdb.

Akademy conference ended with sponsors presentation followed by Akademy 2014 awards

   

GCompris talk by Bruno Coudoin                           Akademy awards

Workshops

I loved attending workshop on visual design and QML by Andrew Lake .  I have already seen awesome mockup design which Andrew created for Plasma Media Center. It was fun to be in his workshop and learning the way mockups can be created using QML. You can also try that by following this wiki.

I say “send email” and kmail opens mail compose for me, interesting right? This is what  Peter Grasch did in speech recognition workshop. He showed how easily you can configure rules in simon to make your application voice controlled.

BoFs

BoF is one of the the main part of every Akademy which continues for  5 days after main conference gets over. Anything which needs discussion, help or feedback gets sorted out by scheduling a BoF for that particular topic.

     

Plasma Media Center BoF                                          KDE edu BoF

(Image CC by Sujith Haridasan)                                  (Image CC by Sujith Haridasan)

  •  Plasma Media Center BoF:  Every year PMC team schedules a  BoF which helps us to get feedback on how application looks currently, what should be done next to make it more better.  This year we discussed on
    •  Vision of Plasma Media Center which we finalized to “To offer an immersive, rich and easy-to-use media experience crafted by KDE for you”.
    •  We discussed on PMC integration workflow with plasma 5
    •  Repository structure i.e whether to split  PMC into libs and backends as two separate repository or keep it in same repo. Finally, we agreed on keeping into single repository.
  •  KDE Edu use in India : This BoF was about FOSS community in Hyderabad, India which  have started to use KDE Edu apps for teaching children in government schools with the help of ThoughtWorks. They are creating an interesting app called Human-atlas which will help children to learn about body parts in interesting way and can take Quiz to test what they already know.
    •  KDE India Future Plans: This BoF was to give an overview of  what all KDE events happened in India, what problems organizers faced, what all fruitful results came out of various events. Suggestions on how we can improve to attract more people to attend conference and bringing them to FOSS world.
  •  KDE Windows: This BoF was for asking questions and help regarding KDE on windows. I attended this because I was curious to know what all KDE apps work on KDE windows and if Plasma Media Center could be run on windows. It was great to see efforts KDE Windows team have done to compile various KF5 modules. Kudos to them from my side!

Fun!

Being around with KDE  people is always fun. I also find fun in collecting different FOSS related goodies. Oh, yes! This year too I collected some of them from different sponsors booth including Red Hat.

        

Lots of goodies                                                  KDE logo by 3D printer @ Red Hat booth

Akademy day trip is always fun intended. This year we went to see Brno Reservoir. We explored surrounding for sometime and further we went for Ferry ride which was amazing. Through Ferry, we reached to Veveří Castle . After seeing castle, to re-energize we took some rest and light snack/drink. After that we returned back to reservoir via bus and further headed to restaurant for dinner.

    

While writing this blog, I felt like I revisited Akademy. These are awesome moments which will get remembered throughout life. You can find some awesome pictures taken during Akademy here . Thanks to KDE eV for sponsoring my travel and accommodation. Also many thanks to all sponsors and volunteers with the help of which this year also  Akademy was superb.

Cheers!

I am going to Akademy 2014

Akademy is one of the awesome conference which I always love to attend. This year, it will take place in Brno, Czech Republic from 6th to 12th of September. Schedule for conference is already available, which consists of 2 days of talks followed by workshops and BoFs.

Similar to previous years Akademy, I am pretty sure it will be rocking this year as well.  It gives us chance to meet lots of kool, awesome, geeky, friendly and lovely people. You will find folks from different countries from all over continents with experience in different areas like development, usability, testing, user interface, marketing and yes users who love using KDE.

Akademy is always very useful for Plasma Media Center project as we organize BoF and discuss about project status, take feedback and discuss about its future. This year also, we have scheduled PMC BoF on 9th September. Usability discussion thread for PMC next UI is already in progress on KDE usability forum . Be there for BoF, if you have  feedback and want to help us in making Plasma Media Center more awesome and reachable to more larger mass.
Looking forward to meet you all awesome people during Akademy!

Plasma Media Center 1.3 beta release!

We are pleased to announce Plasma Media Center 1.3 beta release!
Whats new?
  • Support for fetching media from Baloo. As a result, your media will load almost instantly!
  •  A conflict between GStreamer0.10 and GStreamer1.0 in some distros will no longer break playback (Launchpad Bug)
  • More details in All Music mode
  • MPRIS support – so that you can control PMC from your favorite MPRIS controller
  • (Experimental) support for a simple filesystem based media scanner – when you don’t have Nepomuk or Baloo installed
  • Replaced side panel with full-screen panel
  • For the source code, we now have tests for the PMC core libs
  • Numerous bug fixes and UI polish
Screenshots
              
      MPRIS in action                                                        Videos time duration
https://lh3.googleusercontent.com/-XX4kr5PPUMA/U4y67P0KyzI/AAAAAAAACKQ/ySlucC5x61A/s800/YnLYH9W.jpg      https://lh6.googleusercontent.com/-TCA4EhZQUXU/U6COGfrIpFI/AAAAAAAACO4/OWxD6qQV8U8/s800/All_music.jpg
       Picasa login screen                                              Detailed Music information
Install
Follow instructions to install Plasma Media Center on your machine.
Wiki
To know more about Plasma Media Center, check out the wiki http://community.kde.org/Plasma/Plasma_Media_Center
Bugs
 Found any bug in PMC or want to have your favourite feature included in future release? file a bug to  https://bugs.kde.org/enter_bug.cgi?product=plasma-mediacenter&format=guided
Cheers!

Rocking conf.kde.in 2014!

conf.kde.in happened 2nd time in India after huge success in 2011.  conf.kde.in 2014 was a 3-day conference held in DA-IICT college was even more successful, rocking, inspiring and motivational for all attendees. Attendees were very active and enthusiastic throughout the conference which was proved by asking as well as answering different questions with speakers.

One of best things was that there were  no parallel talks, all talks including Qt workshop  were scheduled in one conference room. This way all attendees were able to attend all talks without any rush for switching places.

tl;dr: If you missed the talks, you can find some slides here http://conf.kde.in/accepted-talks and photos

       

Day 1

Conference started at 2 pm with opening talk by Pradeepto with warm welcome to everyone to KDE family! Later, Qt workshop started by Prashanth Udupa (from our sponsor VCreate Logic ). He taught basic Qt programming to attendees, followed by Shantanu  who taught some cool stuff with QML. Other speakers and volunteers were helping attendees in solving  their doubts and weird errors. This workshop helped students with getting familiar with how Qt and QML code look like and proved useful for next two days talks.

Day 2 and 3

Day 2 started with keynote by Smit Shah on KDE unlike a Coconut. It was very interesting listen his story from college till now. At the end of his talk he got questions that were very interesting, curious and quite innocent – pretty much expected from college students.

Later different KDE related talks started. There were variety of talks from different KDE projects like Mer, Baloo, Artikulate, Localization, Simon, Plasma Workspace 2, Digikam, Kstars, Khipu etc. Some talks were also which gave generic idea of what KDE is and how to contribute to KDE.  There were also a great talk on C++11 explaining what all nice features new C++11 has.

And yes, this year I also gave a talk on my most favourite KDE project  Plasma Media Center to which I contribute to. This was first time when I was giving talk to a large conference. It was very amazing experience talking about what this project is and what all features it has, how easy to contribute into this project. Shantanu already showed demo of Plasma Media center many times in between different talks, so people were already familiar with it which increased their interest in listening to my talk too 🙂

Result of this conference was amazingly more than what we expected. Attendees were listening to each and every talk with great interest and feel of learning new stuff. They had so many curious questions at the end of talk. Sometime, we had to request them to take questions offline due to time limit. More than 30 people (dunno exact count) built Plasma Media Center during conference itself and we helped them with errors and issues. Some people came with useful feedback and ideas as well. It was great talking and seeing interest in different KDE project from newbies. Many people also join kde-india Mailing List and posted questions.

        

This conference was one of the awesome and productive KDE conference which we had in past!

Thanks to everyone who attended, volunteered, gave talk, sponsored, etc. I am pretty sure, we get few awesome new KDE kontributors from this conference 🙂
Cheers!

conf.kde.in is going to be amazing!

I am very happy to share the news that after huge success in 2011, conf.kde.in is going to happen again from 21st – 23rd February, 2014. This year, the conference will be in the splendid campus of DA-IICT which was also venue for KDE-meetup, 2013.

indexI have submitted a talk on my favourite KDE project which I work on – Plasma Media Center. It is exciting to share what the project is, and welcome new contributors. I am sure that there are many more people who would be interested in giving talks and share their stories about KDE projects and community.

If you are one of them, submit your awesome talk before the CFP deadline which is 16th December, 2013.

See you all at conf.kde.in 2014!