• Trip reports on CppCon 2019

    Druide Informatique inc.

    DETAILS This is the occasion for various members of C++ Montréal to tell you about their experience at CppCon, share their favorite presentations (which you will be able to watch on YouTube) and share advice for those trying to get their employers to send them to CppCon 2020. Multiple speakers will be presenting, in English or in French (expect a mix of both). LOGISTICS This meetup will be held at Druide Informatique inc's salle Antidote at 1435 rue Saint-Alexandre, suite 1040. The doors are open between 5:45 pm and 6:30 pm. It is important to arrive before 6:30 pm as the main entrance is going to be locked between 6:30 pm and 6:45 pm. The room has a maximum capacity of 30 attendees, please update your RSVP in case you cannot make it in order to free up a spot for another attendee! AGENDA 6:00 pm Doors open. Time to arrive, eat, discuss and network. 6:30 to 7:00 pm Short announcements and presentations start 8:00 to 8:30 pm End of presentations, discussions and networking 8:50 to 8:55 pm Regroup outside and walk to a nearby bar

    2
  • Lightning Talks

    Microsoft Montreal Office

    FRANÇAIS Les Lightning Talks sont de courtes présentation d'environ 5 à 7 minutes sur un sujet de votre choix (tout en gardant en tête que ça doit s'adresser à un public qui vient entendre parler de C++). Il s'agit d'un excellent format pour tenter une première présentation. Il n'est pas nécessaire de confirmer à l'avance si vous avez l'intention de proposer une présentation. Voici quelques idées de sujets à aborder : 1- Une fonctionnalité peu-connue de C++ que vous avez découverte 2- Une enquête difficile que vous avez menée avec succès 3- Un extrait de C++ que vous aimez 4- Un extrait de C++ que vous détestez, et comment faire mieux 5- Un projet sur lequel vous travaillez en C++ 6- Défi: Trouvez le bogue 7- Quelque chose que j'aurais aimé apprendre plus tôt 8- Astuces pour le débogage 9- Autres idées? Étant donné le format de la rencontre, il se peut qu'il y ait un mélange de présentations en anglais et en français selon la préférence des présentateurs. De plus, si les présentateurs sont nombreux, il est possible que nous commencions à 18h30 plutôt qu'à 19h. LOGISTIQUE La rencontre aura lieu dans les locaux de Microsoft à Montréal, dans le local 550 situé au 5e étage. 18h00 Ouverture des portes. De la pizza sera servie, gracieuseté de notre commanditaire Druide Informatique inc. C'est le bon moment pour arriver, manger et réseauter. 18h30 à 19h00 Début des annonces du groupe C++ Montréal et début des présentations. 20h00 à 20h30 Discussions et réseautage. 21h00 Libération des lieux et après-rencontre dans un bar à distance de marche. ENGLISH Lightning Talks are short presentations ranging from 5 to 7 minutes on a subject of your choice (keeping in mind that the audience is looking to hear about C++). It is an excellent occasion for first time presenters. It isn't mandatory to commit in advance to present. Here are some topic ideas: 1- Little-known C++ feature you learned about 2- Difficult investigation you have successfully completed 3- A C++ snippet that you love 4- A C++ snippet that you hate, and how to do it better 5- A project you're working on with C++ 6- Find the bug challenge 7- Something I wish I had learned earlier 8- Cool debugging tricks 9- Other ideas? Because of this Lightning Talks format, there might be a mix of English and French presentations, according to the speaker's preference. Also, if volunteers are many, we may start early at 6:30 pm rather than 7 pm. LOGISTICS This meetup will be held in Microsoft's Montreal office, on the 5th floor in suite 550. The doors open at 6 pm. Pizza will be served, thanks to our sponsor Druide Informatique inc. 6:00 pm Doors open. Time to arrive, eat, discuss and network. 6:30 to 7:00 pm Short announcements and presentations 8:00 to 8:30 pm Discussions and networking 9:00 pm Regroup outside and walk to a nearby bar

  • La place des gestionnaires de paquets dans CMake

    UQAM — PK1320

    RÉSUMÉ Bien que la communauté de C++ n’est pas unanime sur le gestionnaire de paquet à utiliser, nous nous approchons d’un standard en matière de build-system avec CMake. Dans cette présentation, nous allons discuter du CMake moderne, la place que devrait occuper un gestionnaire de paquet dans un monde CMake et une preuve de concept de celui-ci. PRÉSENTATEUR Guillaume Racicot travaille chez Druide informatique comme programmeur frontend et backend sur Antidote Web. Il est l'auteur de la librairie kangaru: un conteneur d'injection de dépendance en C++11 ainsi que de subgine-pkg: une preuve de concept de gestionnaire de paquet en CMake. LOGISTIQUE Cette rencontre aura lieu au pavillon Président Kennedy de l'UQAM dans la salle PK-1320. Merci de mettre à jour votre RSVP si vous êtes dans l'impossibilité de vous présenter. Voici un horaire détaillé de la soirée: 18h00 Ouverture des portes. De la pizza sera servie, gracieuseté de notre commanditaire Druide Informatique inc. C'est le bon moment pour arriver, manger et réseauter. 18h50 Début des annonces du groupe C++ Montréal. 19h00 Début de la présentation. 20h00 Période de questions et réseautage. 21h00 Libération des lieux et après-rencontre dans un bar à distance de marche.

    1
  • Some Programing Myths Revisited

    Location visible to members

    IMPORTANT Bien que le titre, les diapos et le résumé ci-dessous soient en anglais, la présentation sera donnée en français. Even if the slides and the abstract below are written in English, the presentation WILL BE GIVEN IN FRENCH. The presenter can handle English questions without problems. RÉSUMÉ We have been taught, or we ourselves have taught, things that we took for granted as being "good practice" in programming. Such things often stem from the "wisdom of the ancients" (although computer science being young as sciences come, some of the "ancients" are still among us and thriving today, and we're so lucky to have them!), and are in effect part of our "myths". However, being as grounded in the science-that-there-was as these recommendations are, our ideas have evolved, so have our programming languages, and it can be interesting to revisit some of these taken-for-granted ideas. In C++, particularly in what some call "modern C++", we find a language that is different enough from its forebears to make revisiting our "myths" interesting. How do such things as "goto considered harmful" or "only one return per function", for example, hold as "wisdom" with respect to modern C++? Do they still help us write better programs or should be rethink them under the light of modern languages and practice? The aim of this talk is to examine what some commonly heard recommendations or advices with respect to programming practice mean in the context of "modern" C++. We will take a small set of such advices, present them in context, show how well (or how badly) they suit today's C++, and try to rephrase them if this seems advantageous. PRÉSENTATEUR Patrice Roy LOGISTIQUE La rencontre aura lieu dans les locaux de Microsoft à Montréal, dans le local 550 situé au 5e étage. 18h00 Ouverture des portes. De la pizza sera servie, gracieuseté de notre commanditaire Druide Informatique inc. C'est le bon moment pour arriver, manger et réseauter. 19h00 Début des annonces du groupe C++ Montréal et début de la présentation. 20h00 Période de questions et réseautage. 21h00 Libération des lieux et après-rencontre dans un bar à distance de marche.

    3
  • A Tour of Ranges in C++

    Location visible to members

    ABSTRACT Ranges, in particular the range-v3 library, bring beautiful and functional, LINQ-style list transformations to C++. We'll discuss their usage, implementation, and drawbacks. SPEAKER Thomas D. Peters. LOGISTICS This meetup will be held at UQAM's Pavillon Kennedy in room PK-1320. The doors open at 6 pm. Presentation starts around 7 pm. Thanks for updating your RSVP in case you cannot make it. FRANÇAIS La présentation sera donnée en anglais. Veuillez vous référer à la description anglaise qui se trouve ci-dessus pour les détails sur l'événement.

  • Dockerization for C++ Workshop

    Microsoft Montreal Office

    IMPORTANT This meetup is a workshop. EVERYONE MUST BRING THEIR OWN LAPTOP (team up with a friend, or a stranger who has one). Power outlets and WiFi will be available. PLEASE download and install Docker before the event to avoid overloading the available bandwidth. Instructions can be found a few paragraphs below. Gabriel Aubut-Lussier, assisted by Richard Savoie, will be running this workshop, answering questions and helping attendees troubleshoot in case of problems. Of course, interactions between the attendees is strongly encouraged. LOGISTICS This meetup will be held in Microsoft's Montreal office, on the 5th floor in suite 550. The doors open at 6 pm. Pizza will be served, thanks to our sponsor Druide Informatique inc. The workshop starts as soon as you are ready to get to work or to exchange with other participants, after the doors have opened. INSTRUCTIONS This workshop is intended to help you learn how to leverage Docker to run dockerized applications, dockerize your own application and dockerize your build toolchain. This document is a step by step guide meant to help you discover Docker progressively. It is accompanied by sample code that has a non-trivial structure in order to help progress further than what a classic Hello-World example would allow. At any point, feel free to explore something more in depth or to skip exercices. Good luck! 1. Getting started (~40 minutes) By the end of this section, you will have installed Docker and learned how to use it through basic examples that leverage existing containers. This section can be completed prior to the workshop in order to maximize how far you can get during the activity. 1.1. Install Docker WINDOWS Windows Pro/Enterprise : https://hub.docker.com/editions/community/docker-ce-desktop-windows Windows Home : Install a Ubuntu virtual machine and follow the Ubuntu instructions below; you can also experiment installing Docker on your own, but you might run into unforeseen problems doing so; here are some useful URLs to run a Ubuntu VM : Virtual Box: https://www.virtualbox.org/ Enable virtualization : https://www.tactig.com/enable-intel-vt-x-amd-virtualization-pc-vmware-virtualbox/?fbclid=IwAR3OGdNJXyp4GAL7jlSnbT0cWpjkh72pWEzuU3aaV0xvMrs4NiRKppd-T_c UNIX macOS : https://hub.docker.com/editions/community/docker-ce-desktop-mac Ubuntu : https://docs.docker.com/install/linux/docker-ce/ubuntu/ Fedora : https://docs.docker.com/install/linux/docker-ce/fedora/ CentOS : https://docs.docker.com/install/linux/docker-ce/centos/ Debian : https://docs.docker.com/install/linux/docker-ce/debian/ 1.2. Run the official hello-world container `docker run --rm hello-world` Hint : Take a few moments to read the container's output. 1.3. Run the official bash container `docker run --rm -it bash` 1.4. Find out the meaning of the arguments supplied to the `docker run` command `docker help run` 1.5. Look up the online reference to find out more about the `docker run` command https://docs.docker.com/engine/reference/commandline/run/ 1.6. Follow the "Docker For Beginners - Linux" tutorial https://training.play-with-docker.com/beginner-linux/ 1.7. Conclusion By now, you should have a basic understanding of how to use Docker to run applications by leveraging existing containers. You have also had a quick introduction to deriving new containers from existing ones. Now is a good time to explore the official Docker library and look for software you are already using without Docker. You can also explore unofficial images for a wider array of services. Official images : https://hub.docker.com/search?image_filter=official&type=image Programming languages images : https://hub.docker.com/search?type=image&category=languages All images : https://hub.docker.com/search?type=image 2. Guided tour and sample code will be provided on the day of the workshop. Both will be published on github after the event.

    2
  • Automatisation de tests asynchrones

    UQAM — PK-R610

    RÉSUMÉ L'adoption de pratiques de développement dirigés par les tests est une stratégie qui, bien qu'elle ne soit pas appliquée universellement, est néanmoins considérée comme une saine pratique qui a avantage à être appliquée rigoureusement. De nombreuses barrières peuvent freiner l'écriture systématique de tests et l'une d'entre eux provient de la nature asynchrone de certains éléments devant être testés. Cette présentation inspirée d'expériences vécues lors du développement d'Antidote Web a pour objectif de mettre en lumière certains problèmes typiques au contexte des tests asynchrones ainsi que des éléments de solution adoptés. Un protocole WebSocket minimaliste et fictif sera utilisé à titre d'exemple. Cela dit, l'utilité des éléments de solution qui seront proposés sont également valables pour d'autres contextes asynchrones ayant un consommateur unique (Single Producer, Single Consumer; Multiple Producers, Single Consumer). PRÉSENTATEUR Gabriel Aubut-Lussier est chef de projet logiciel chez Druide Informatique où il dirige une équipe en charge de la création d'Antidote Web. LOGISTIQUE La présentation sera donnée en français. Elle a lieu dans le local PK-R610 du pavillon Président-Kennedy de l'UQAM. Les portes seront ouvertes à 18h. La présentation commence vers 19h. ENGLISH The presentation will be given in French. Please refer to the French description of this event for more details.

  • Using pytorch models in c++ projects

    6650 Rue Saint-Urbain

    Deep learning provides solutions for many hard problems in game development, such as AI, animation, speech recognition and synthesis. However, many engines are written in C++ and this won't change in the forseeable future. This talk gives a glimpse at integration of deep learning models, trained in python into an engine written in C++. The framework used in this talk is pytorch/libtorch, the game engine we use is Godot. About the speaker: Georgy Derevyanko, PostDoc at Concordia/MILA, working on applications of deep learning in molecular biology (protein folding and interaction). He did his PhD at Universite Joseph Fourier (Grenoble, France) in computational predictions of protein interactions.

    4
  • Turing Completeness and Template Metaprogramming

    Druide Informatique inc.

    Thomas D. Peters va donner une présentation intitulée _Turing Completeness and Template Metaprogramming_. La présentation sera donnée en anglais. Je vous invite à consulter la description complète ci-dessous. La rencontre a lieu dans la salle Antidote chez Druide Informatique inc, au 1435 rue Saint-Alexandre, suite 1040. Les portes seront ouvertes de 17h45 à 18h30. Il est important d'arriver avant 18h30, puisque la porte principale du bâtiment est généralement barrée entre 18h30 et 18h45. La salle a une capacité maximale de 30 personnes, nous vous remercions de mettre à jour votre RSVP en cas d'absence afin de libérer la place pour un autre participant! ===== It is perhaps a bit of folklore in the C++ community that template metaprogramming (ie, programming with types at compile time) is Turing complete. We'll give an argument why this is the case. No knowledge of metaprogramming, and very little of C++, will be assumed. Thomas D. Peters will be giving this talk in English. This meetup will be held at Druide Informatique inc's salle Antidote at 1435 rue Saint-Alexandre, suite 1040. The doors are open between 5:45 pm and 6:30 pm. It is important to arrive before 6:30 pm as the main entrance is going to be locked somewhere between 6:30 pm and 6:45 pm. The room has a maximum capacity of 30 attendees, please update your RSVP in case you cannot make it in order to free up a spot for another attendee!

    6
  • A Case Study in Retro Emulation: The Nintendo Game Boy

    Behaviour Interactive

    Speaker : Frédéric Hamel – Programming Technical Director at Behaviour A Case Study in Retro Emulation: The Nintendo Game Boy We will review Game Boy hardware and study a C++ Game Boy emulator written by the speaker. In doing so, we will cover the basics of how real-time interactive software works and how emulators are structured. (This presentation will be in English.) Étude de cas d'émulation rétro: le Game Boy de Nintendo Nous étudierons le fonctionnement matériel du Game Boy ainsi qu'un émulateur de Game Boy développé en C++ par le présentateur. Par ce biais, nous réviserons les bases du fonctionnement de logiciels interactifs en temps réel ainsi que la structure générale de logiciels d'émulation. (La présentation sera en anglais.) LOGISTICS This meetup will be held at Behaviour Interactive's Office at 6666 rue Saint-Urbain, suite 500. The doors open at 6 pm. Thanks for updating your RSVP in case you cannot make it. *Important* : This location is not downtown.

    1