Saturday, February 25, 2017

C++ User Group Sofia first year

Some time in November 2015 we decided that it is a shame that we do not have a C++ User Group in Sofia, Bulgaria, and we decided that instead of waiting to just make it. This is a retro and an overview of what happened in our first year. I hope you find it helpful and inspirational.

A year or two earlier I began to realize that I'm a dark matter developer and I started to read more articles, created dedicated dev twitter account, started listening to podcasts (thank you, CppCast!) - it was kind of waking up experience. When you plug into the C++ news stream you begin to realize that our community is currently flourishing and expanding. As the community grows there is need for more face to face communication -  nothing replaces face to face communication. Probably realizing that Jens Weller, a.k.a. Meeting C++, started to encourage and help creating C++ User Groups.

After we decided to create our C++ User Group we first read his two very good guides: Founding local C++ User Groups and 6 topics on starting and running a User Group. Creating all the needed infrastructure meetup page, twitter account, facebook group, etc took like fifteen minutes - the stuff you can do by only clicking and pasting these days... The GitHub page where we upload slides came later. I also emailed Jens to keep him in the loop and ask for some advice. He was very cool and basically said: Do it! And here is my advice to all of you who are thinking of creating a C++ User Group - Do it! Its easy!

We found a place and set up our first meeting. I volunteered to do the first talk and we were good to go.

In the mean time I began to research other user groups in order to see what topics they cover, how often they meet, what participation do they get. We knew that there are not that many C++ developers in Sofia (it is a 1.2 million town and my estimate based on LinkedIn is that there are between 200 and 1000 C++ developers here excluding C and embedded C. 1000 is a very high upper bound but dark matter is hart to quantify) and participation will probably not going to be very high. Also with small pool finding different lecturers with diverse topics with will be difficult too. Realizing that we set the expectations for participation low and figured that if we decide to not get stressed about participation we better focus on a firm one meetup per month schedule. We decided to hold meetups every month regardless and we achieved that goal.

Knowing that we'll probably wont be able to find some one to present every time we decided to include news discussions in every meetup. And if there is someone to prepare a talk - Great! - otherwise we discuss news. This idea I got from CppCast (thanks again!) where they do a quick news roundup at the start of each episode. Organizers bonus: we actually had to read and explain all articles that we discussed. You can find them here.

Looking back I think we made the right decision. Sticking to a firm schedule and setting a one-meetup-per-mounth rhythm gave us stability and predictability. I hope that now people know that we will hold meetups every month.

At first we tried to find a lecturer for the next meetup after we finished the last one. That quickly turned out to be very unproductive and stressing - people do not respond well to: "We don't have anything for the next time. Can you prepare something in 2-3 weeks?". Will you?

So we decided that we should be more long term and never ask people to prepare something for the next meetup (if its less than one month away) and always give them at least one full month preparation. "We have a slot two-tree months from now. Are you interested in preparing something?" sounds much better. Now we try to have at least two planned meetups in the future and it works much better.

If we did not have a someone to do a talk when we finished one meetup we just did news roundup next time. Although we anticipated the participation hits this actually turned out quite fine. We had very interesting discussions on the news-only meetups.

Our biggest problem so far is the organizers group bias - because we are all in our thirties most of us with kids we prefer to organize the meetups Saturday morning because commuting, taking kids from kindergarten/school, etc, makes it hard to do it in the week. We probably lost our younger audience because of that. It is on our to-resolve list and we'll address it soon by probably rotating the meetups - one at weekends and one on workdays. Don't know yet. But we definitely realize that we loose audience because of that.

Finding a place turned out very easy. We can always pay for a hall but we never had to - we were invited first by Eleven where we had several meetups but they had to move to another building so we where hosted by SoftUni for a while. They appeared to be too busy so we finally settled at FMI faculty of Sofia University. Also our October meeting was held at the CG2 conference organized by Chaos Group. Big thank you for the help to everyone that hosted us!

In the past year we had various people coming. Here is the list of the people who gave a talk at our meetups:
  1. Special member functions by Dimitar Mirchev
  2. Rvalue References by Alexander Cheshmedjiev (but I'm still(!) waiting for slides)
  3. Why should you consider intrusive reference counting by Dimitar Trendafilov (Again waiting for slides and those two are organizers :) )
  4. Using and expanding STL containers and algorithms by Dimitar Mirchev (this probably is full with errors)
  5. doctest - the newest addition to the testing scene in C++ by Victor Kirilov. About the unit testing library doctest
  6. Dynamic composing of objects in  ะก++ with DynaMix by Borislav Stanimirov and Design by contract with C++, Daniel Georgiev 
  7. C++ Syntactic Sugars by Dimitar Mirchev (I made this one into an article) and Constexpr details by Alexander Cheshmedjiev
  8. How to use variadic templates properly by Petko Padevski and Coroutines by Ivan Bobev (both talks were great)
  9. Deadlocks, Leaks and RaceConditions by Mihail Mihailov (also very good). This meetup was recorded but it is in Bulgarian. You can watch it here
  10. News roundup only and great discussions
  11. News roundup only too (it was on Dec 17 so we had a cozy five people meetup but it was fun)
  12. Using C++ with R for statistical analysis by Assen Tchorbadjieff

That's pretty much it. Remember - Schedule. Content. Place. People. Thanks for reading.