WebAssembly in Action

Author of the book "WebAssembly in Action"
Save 40% with the code: ggallantbl
The book's original source code can be downloaded from the Manning website and GitHub. The GitHub repository includes an updated-code branch that has been adjusted to work with the latest version of Emscripten (currently version 3.1.44).
Showing posts with label ConFoo. Show all posts
Showing posts with label ConFoo. Show all posts

Wednesday, March 5, 2025

Presenting at ConFoo 2025

With 191 presentations chosen out of 895 proposals, being accepted to speak at ConFoo is not something I take for granted. This year, my first talk was "Local-First Web Development With the Help of WebAssembly" where I walked the attendees through how SQLite and PGLite compare and work in the browser. My second demo extended the PGLite database to showcase ElectricSQL's approach to synchronizing your data with a server in a local-first architecture. My second talk, "Using WebAssembly in a Web Component as a Polyfill", explored using WebAssembly as a polyfill to extend a feature that might not be in all browsers yet. I showed the attendees how to compile the libjxl library to WebAssembly and I used the module in a web component to decode and render a JPEG XL image. A picture of this year's ConFoo program booklet
With 191 presentations chosen out of 895 proposals, being accepted to speak at ConFoo is not something I take for granted. I invest a lot of time into getting the code ready for the demos, preparing slides, and practicing to ensure each talk goes as smoothly as possible while providing the latest cutting-edge information to attendees.

This year, my first talk was "Local-First Web Development With the Help of WebAssembly" where I first walked the attendees through how SQLite and PGLite compare and work in the browser. These products enable web developers to interact with their data in a familiar way by being able to run SQL statements against the database. My second demo extended the PGLite database to showcase ElectricSQL's approach to synchronizing your data with a server in a local-first architecture.

My second talk, "Using WebAssembly in a Web Component as a Polyfill", explored using WebAssembly as a polyfill to extend a feature that might not be in all browsers yet. For this talk, I showed the audience how to go about compiling a library to WebAssembly, in this case libjxl, and then making use of the module in a web component to decode and render a JPEG XL image.

Because my second talk was before lunch on the second day of the conference, no more practicing was needed so I was able to take it easy for the rest of the conference. That evening, I decided to do some sightseeing. Not knowing Montreal very well, I did a quick online search and found that some people recommended checking out the Saint-Laurent area so I jumped on the subway and then did some exploring.

The following are some of the pictures I took that evening. The left image is from inside the Lionel-Groulx Metro station, the middle image is the Place des Arts building when looking at it from the Saint-Laurent Metro station, and the right image is from my walk down Saint-Catherine Street near the Place des Arts building.
In 2022, I met a couple guys at ConFoo who were from Fredericton, a city that’s close to where I live. We stayed in contact and would joke about how we had to go all the way to Montreal to meet fellow developers from near us.

This year, the guy who used to lead the developer user group in my city posted on Facebook that he was at the Montreal Canadiens game. I gave his post a like and thought it was neat that he was in Montreal at the same time as me. Much to my surprise, the next morning when I was grabbing breakfast at ConFoo, I heard my name! It turns out that he was in town for ConFoo and we got to hang out a bit.

At the end of each conference, there's a time for lighting talks by anyone who would like to present. If you're ever at ConFoo, I recommend it. This year, one of the volunteers gave a presentation talking about Postgres and he kept flipping to a slide promoting an upcoming conference... in Montreal... in May. It was quite humorous and I was glad he was able to join the group of us later that evening for supper. The conference he was talking about is PGConf if you're interested. I mentioned to my friends that speaking, especially at ConFoo, is a high. Weeks of work go into preparing and practicing my talks. Then, as the time draws near to give the talk, the nerves hit. Thankfully, the internet stays up, the demos work, and all the practicing pays off as the talk goes well. As soon as the first talk is over, the mind shifts to the next talk I need to give and I practice more to ensure I'm as ready as possible for the next one. In between the stress and nerves leading up to the talk, and then the relief that the talk went well, there's the networking and meeting of friends from previous years and the making of new friends. It's a rollercoaster of emotions but, as soon as it's over, I can't wait to do it all over again.

Speaking of wanting to do it all over again, if you have a conference and want someone to speak about WebAssembly, something WebAssembly related, or building a Slack bot, I'm your guy. If you'd like to reach out, you can find me on LinkedIn: linkedin.com/in/gerard-gallant

If there's interest, I'd also like to put together a pre-conference workshop related to WebAssembly at ConFoo next year. If you'd be interested in attending and, if there's anything in particular that you'd like to learn, please fill out the following form: https://forms.gle/GSkU923A1k8fdYCG8

Tuesday, February 28, 2023

ConFoo 2023 in Review

My experience at ConFoo 2023
On Tuesday, February 21st, I started my journey to Montreal to speak at the ConFoo developer conference for my third time.

Usually, when I travel to the big cities, I try to use public transportation to get to and from the airport. The city I live in isn't very big but I decided to give our transportation system a try anyway.

Unfortunately, for me to get to the airport using this approach, I needed to take two city buses and then a coach bus. It's doable but it takes time and the coach bus only goes to the airport twice a day so the timing didn't allow me to use this approach when I returned.

One highlight of my trip to the airport, however, was a pheasant that graced me with his presence.
The conference was held at the Hotel Bonaventure where we were greeted by over 700 attendees and over 150 sessions in 3 days! Being in Montreal, it was fitting that some of the sessions were also available in French.


The past two times that I spoke at this conference, I only spoke for one session each time. This year, I gave two presentations.

My first presentation was given on the second day of the conference. For this session, I talked about how we're using Docker at Dovico to prototype views, try out different UI frameworks, and help speed up the development of Timesheet.
The second presentation that I gave was on the final day of the conference. This time, I walked the audience though creating a Slack bot from start to finish by building a simple hot desk booking system!
My slides, notes, and links to the code from my talks can be found in the following GitHub repository: https://github.com/cggallant/confoo-2023

As my new friend, Andres Pineda, so correctly articulated in one of his sessions, there's more to a developer conference than just taking in the talks. There's also a networking component to these conferences. When I saw him at the opening party for the speakers, I recognized him but couldn't figure out where from. Later I realized that I had seen him talk online as part of UnoConf and he's one of the contributors to the open-source Uno Platform. We have something in common because I've been privileged to work with Uno and write them several articles for their blog. We were able to connect during the conference.

Speaking of the Uno Platform, while I was in Montreal, I had the opportunity to meet Matthew Mattei in person for lunch. I work with him when writing articles for their blog. I wasn't expecting it but I do appreciate that the Uno Platform sent me home with some swag: Over the course of the conference, I was fortunate to meet some great people and to take in a number of really good sessions. My only regret is not being able to take in all of the sessions because there are usually 8 other sessions happening at the same time as the session that you're in.

On Saturday, February 25th, I made the journey from the hotel back to the Montreal airport. I thought this was a neat idea as I was walking through the airport to my gate: It was a great conference and I already miss it. I hope to be able to attend next year's conference and I recommend ConFoo to everyone.

A huge shout out to Yann Larrivée for putting on another amazing event!


As a side note, if you happen to be putting on a developer conference, or know of one that's looking for speakers, let me know because I'd like to speak more. I've started setting up a Sessionize profile but you can also reach me on Twitter or on LinkedIn.

Wednesday, April 14, 2021

From ConFoo to deploying web applications with Docker

The story of how discovering Docker helped me create the demos for my ConFoo 2021 presentation about the WebAssembly System Interface (WASI). Then the continued learning about Windows containers resulting in my latest Uno Platform article about Deploying C# web applications with Docker.
In 2020, ConFoo opened a call for papers for their February 2021 conference. I submitted several proposals and was pleased to find out in January 2021 that one of them had been accepted.

The talk was going to be about the WebAssembly System Interface (WASI). I knew what I wanted to talk about but I wanted a couple demos that were more real-world than the typical 'hello world' style. I had an idea for the applications I wanted to write but, to write them, I needed to compile some C libraries. Unfortunately, I was having some difficulties getting things set up on Windows.

My first thought for a workaround was to set up a Linux virtual machine but I was curious if there was another way. One thought that crossed my mind was, can Docker help here?

Docker

I had seen Docker demonstrated at a couple user group events but I hadn't used it myself so I needed to get up to speed quickly. Thankfully, I found the following YouTube video that not only explained the Docker theory but also walked through several examples that I was able to follow along with: https://www.youtube.com/watch?v=3c-iBn73dDE

After watching the video, I started looking though the images on Docker Hub and discovered that there's a Docker image for the Emscripten SDK. This is useful to me for a couple of reasons:
     
  • I prefer to have Emscripten use the versions of the tools it installed rather than a different version on my machine just in case the changes impact things when compiling a module. Being in a container, all the tools Emscripten needs are in the container with it allowing me to adjust the tools on my machine as needed.
  • I often switch between versions of Emscripten to test different things. Having an image for each version I need makes things a lot easier. Sometimes I've had to uninstall a version of Emscripten before being able to install the next one. Now, I just need to pull and run the image with the version I need.

In the end, I created a Docker image derived from an Emscripten image and was able to build the demos I wanted for my ConFoo talk.

A few days before the ConFoo conference started, I was talking with the Uno Platform team about Docker. I thought Docker might be useful for C# developers for one-click deployment because I saw on Docker Hub that there was an image with IIS (Internet Information Services).

An article about Docker

After the conference was over, I started looking into Docker from a C# perspective. Unfortunately, every time I tried to build a Windows Docker image, I'd get errors. I spent a number of evenings reading about Windows containers and trying different things but kept spinning my wheels.

I learned a lot about Windows containers in the process but I felt a little dumb when I ran across an article that explained my problem. It turns out that you can't create Linux and Windows containers at the same time. You need to switch Docker Desktop to use one or the other and I was trying to create a Windows container while configured for Linux.

Today, I'm pleased to announce that my latest article "Deploying C# Web Applications with Docker" has been published on the Uno Platform's blog. The article walks you through building an image with IIS and .NET Core, publishing it to a private registry, pulling the image, and running the container.

Wednesday, January 13, 2021

ConFoo Online 2021

I am very pleased to announce that I'll be speaking at ConFoo Online 2021! To flow with the conference theme, I titled my talk "Joining forces to free WebAssembly from the browser".
I am very pleased to announce that I'll be speaking at ConFoo Online 2021!

As a fan of Star Wars, the organizer decided that this year's conference theme will be "a new hope" because of COVID-19 and the feeling that the world needs hope that things will improve. To flow with this theme, I titled my talk "Joining forces to free WebAssembly from the browser".

In this talk you'll learn about the WebAssembly System Interface proposal (WASI) that defines a standard for using WebAssembly outside the browser in a secure way. You'll see several examples including interacting with a WebAssembly module from your C# code and at the command line.

The conference will be virtual this year and will take place from February 22nd to 26th. You can find the full list of sessions here: https://confoo.ca/en/yul2021/sessions

Hope to see you there.

Monday, March 2, 2020

Presenting a WebAssembly Overview at ConFoo.ca

This was my first time attending a ConFoo.ca Developer conference. I also had the pleasure of being one of the speakers at this year's event so I thought I'd write about my experience.


ConFoo.ca Montreal celebrated its 18th anniversary this year with nearly 840 attendees! The following are some photos that I took while people were still arriving for the first day's keynote:


(click to view the image full size)

The conference brought speakers from around the world who presented 156 talks over three days! I was honored to be included among them by giving a WebAssembly Overview presentation.

I've written a book on WebAssembly so I know the subject matter quite well. I've also given public presentations a number of times at work and at local user groups but those audiences are smaller. This is a big conference and I was given one of the bigger rooms so I was a little nervous.

While I was traveling to the conference, and while I was there, a couple WebAssembly announcements were made about Firefox and Google Earth.

WebAssembly Announcements

The first announcement was from Mozilla. They've been working on porting their C and C++ code to Rust but there's a lot of code in Firefox so this will take time.

What they decided to do is leverage WebAssembly within Firefox itself by using RLBox. They started by sandboxing their font library and plan to sandbox other components in the future. For more details, you can visit the following site: https://www.zdnet.com/article/firefox-for-mac-and-linux-to-get-a-new-security-sandbox-system/

The announcement from Google Earth was that their WebAssembly version has come out of beta for the desktop version of Firefox, Edge, and Opera. More details on this announcement can be found here: https://9to5google.com/2020/02/26/google-earth-firefox-edge/

I updated my presentation with the latest WebAssembly news and spent every spare moment I could find going over my notes and slides. I even skipped lunch on the final day of the conference to give my presentation one more run though.

My turn

It was convenient being the first presenter in the room after lunch because it gave me time to set up my computer and adjust my slides.

The projector was pointing a bit too high and the titles on my slides were being cut off at the top so I had to bump the titles down on every slide. In hindsight, I should have just nudged the projector forward a tiny bit but my nerves got the best of me and I didn't see the simpler option.

There are a few things that I would change with my presentation but, overall, it went well. There were a decent number of attendees and some good questions afterwards.


I had been in contact with members of The Uno Platform for a while now. When I found out that I was going to be a speaker at ConFoo in Montreal, we arranged a meeting to say hello because their head office is in Montreal too.

The Uno Platform meeting


At the end of the first day's sessions, I rushed down the road to The Uno Platform's head office where I had a chance to sit down and chat with their CEO Francois Tanguay and CTO Jerome Laban where we talked about...you guessed it...WebAssembly!

They're very nice guys who are very passionate about C#, XMAL, and WebAssembly. If you want to do cross platform C# and XAML that targets iOS, Android, desktop, and the web, I recommend checking out The Uno Platform.

They're having a conference August 26-27, 2020 in Montreal called UnoConf. I copied the following from their website:

UnoConf is a gathering point for the complete Uno community – engineering team, influencers, code contributors as well as those wishing to learn more about the Platform.

UnoConf 2020 brings a full day conference followed by a full day hands on workshop lead by Uno Platform core team. By August WinUI 3.0 will be in market and you'll get a front seat in learning how to build cross-platform solutions and how to migrate your existing applications with it.

Summary

My visit to Montreal went very quick. It feels like it was just yesterday that I was getting on a plane for Montreal and now I'm writing about my experience on a plane heading home.

I want to send out a special thank you to Manning Publications for providing some free e-books for me to give way as well as a special discount code.

I also want to thank Yann Larrivée for giving me this opportunity to speak. He worked really hard and did an amazing job to put on a very professional conference.

ConFoo brought in speakers from around the world who are indeed world-class. If you can find a way to get to Montreal next February 24-26, 2021, I highly recommend attending this conference.