<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title>SysAdmin Journal · DevFest</title>
        <link>https://sysadmin-journal.com/tag/devfest</link>
        <description>Posts tagged with DevFest</description>
        <language>en</language>
        <lastBuildDate>Mon, 30 Oct 2023 19:24:00 +0000</lastBuildDate>
        <atom:link href="https://sysadmin-journal.com/tag/devfest/rss" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        <item>
            <title>A summary of my presentation at DevFest Mauritius 2023, on PHP, SUSE Base Container Image and Google Kubernetes Engine</title>
            <link>https://sysadmin-journal.com/gdg-devfest2023-mauritius</link>
            <guid isPermaLink="true">https://sysadmin-journal.com/gdg-devfest2023-mauritius</guid>
            <pubDate>Mon, 30 Oct 2023 19:24:00 +0000</pubDate>
            <dc:creator>Ish Sookun</dc:creator>
            <category>DevFest</category>
            <category>Conference</category>
            <category>Kubernetes</category>
            <category>Laravel</category>
            <category>Linux</category>
            <description>GDG DevFest Mauritius is the annual, community-led “Developers Festival” organized by GDG Mauritius (Google Developer Group). It’s a one‑day, multi-track event designed for developers and tech enthusiasts to dive into Google’s technology stack while connecting with peers in the local ecosystem.</description>
            <content:encoded><![CDATA[
<!--kg-card-begin: html-->
<div class="p-4 bg-teal-600 text-white text-md">
  This article is a re-production from my <a href="https://www.linkedin.com/pulse/summary-my-presentation-devfest-mauritius-2023-php-suse-ish-sookun-txc9f/" class="underline text-white hover:text-gray-200" target="_blank">LinkedIn article</a> with the same title.
</div>
<!--kg-card-end: html-->
<p>After many years, I participated in an event organised in collaboration with the University of Mauritius. Ten years ago, around this time of the year the Linux User Group of Mauritius and the UoM Computer Club (2013) organised a <a href="https://legacy.hacklog.in/post/linuxfest-2013-highlights/" rel="noopener noreferrer">Linux Festival</a> at the Paul Octave Wiehe Auditorium. Last Saturday's Google Developers Festival (DevFest) 2023, being held on the campus of the University of Mauritius, brought back memories of those days. It also reminded me that it's been a decade since I am actively contributing to the tech community. 🎊🤓</p><p><em>Some happy tears flow down the cheek. Sniff!</em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2025/07/1698604861977.jpeg" class="kg-image" alt="Presenting Laravel/PHP, SUSE Base Container Image and Google Kubernetes Engine at DevFest 2023. Photo courtesy of Arwin Neil Baichoo." loading="lazy" width="960" height="720" srcset="/content/images/size/w600/2025/07/1698604861977.jpeg 600w, /content/images/2025/07/1698604861977.jpeg 960w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Presenting Laravel/PHP, SUSE Base Container Image and Google Kubernetes Engine at DevFest 2023. Photo courtesy of Arwin Neil Baichoo.</span></figcaption></figure><p>Okay, let's talk about DevFest 2023. DevFest is an annual tech conference organised globally by the Google Developer Groups (GDG) community. This year marked the 5th edition of DevFest Mauritius. It was hosted by GDG Mauritius and the University of Mauritius (UoM). The Google Student Developer Clubs of UoM, University of Technology, Polytechnics Mauritius and the African Leadership College helped in spreading the word.</p><p>Registration for the event was done through the <a href="https://gdg.community.dev/gdg-mauritius/" rel="noopener noreferrer">GDG Mauritius</a> chapter page on the Google Developer Groups Bevy platform, while information about the event, the agenda and the speakers was also available at <a href="http://devfest.mscc.mu/" rel="noopener noreferrer">devfest.mscc.mu</a>.</p><p>We had 20 speakers from different tech backgrounds — web development, mobile application development and systems/cloud engineering.</p><p>My presentation was scheduled at 11:30 a.m. in the G2 room of the Faculty of Law &amp; Management. I started the presentation sharp on time to be able to stay both on track and on time, as for the next 45 mins, I had planned a whole journey of writing code to deploying the same on a cluster of servers.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698603509640.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698603509640.png 600w, /content/images/size/w1000/2025/07/1698603509640.png 1000w, /content/images/2025/07/1698603509640.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>PHP is still relevant in 2023. It still powers a lot of websites on the Internet. Even Facebook started on PHP and later created the <a href="https://hhvm.com/" rel="noopener noreferrer">HipHop Virtual Machine (HHVM)</a> to compile PHP source code to HipHop bytecode for faster execution and then they created the <a href="https://hacklang.org/" rel="noopener noreferrer">Hack programming language</a>.</p><p>I started the presentation by talking about PHP.</p><p>If you are just starting with PHP development, I suggest that you closely follow the works of a PHP framework, like Laravel or Symfony. I use Laravel a lot — in fact most of my web related work is now on <a href="https://laravel.com/" rel="noopener noreferrer">Laravel</a>. During the presentation I mentioned how <a href="http://lexpress.mu/" rel="noopener noreferrer">lexpress.mu</a> moved from Drupal to Laravel.</p><p>My next slide had a few commands needed to create a Laravel project and to run it locally (assuming that PHP and composer are already installed on that machine).</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698604459198.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698604459198.png 600w, /content/images/size/w1000/2025/07/1698604459198.png 1000w, /content/images/2025/07/1698604459198.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>Now, that we had a codebase and we made our desired modifications to the Laravel code, it was time that we thought about packaging it and shipping it to the cloud. The easy way — containers!</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698605629685.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698605629685.png 600w, /content/images/size/w1000/2025/07/1698605629685.png 1000w, /content/images/2025/07/1698605629685.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>SUSE Base Container Image (SUSE BCI) enters the scene. We can of course find plenty of PHP based containers to ship the code, then why SUSE BCI? The short anwser is compliance. Very often if you are working for a big company, there are rules to use software that have enterprise support. SUSE BCIs are enterprise-ready container images based on the SUSE Linux Enterprise Server (SLES). One can purchase a support subscription for the container or inherit an existing subscription from a host SUSE Linux Enterprise Server.</p><p>I talked about the Base Images and the Language Container Images. For our need to ship the Laravel codebase, we looked at the three SUSE BCIs that support PHP.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698605796663.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698605796663.png 600w, /content/images/size/w1000/2025/07/1698605796663.png 1000w, /content/images/2025/07/1698605796663.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>The ideal candidate was the SUSE BCI PHP-Apache 8 image. Our Laravel code is actually this year's DevFest Mauritius website. We do not require a database. The conference schedule and speakers details are pulled from a <a href="http://sessionize.com/" rel="noopener noreferrer">Sessionize.com</a> API and kept as JSON locally. Therefore, a single container to run the PHP code and serve the HTTP content would be fine.</p><p>I spoke about the three SUSE BCIs for PHP and possible use cases on different types of PHP scripts or applications we may run.</p><p>Okay, it's good that we have a container to run PHP code but it's not great, yet — because it cannot run "our" PHP code. Laravel 10 requires PHP version 8.2 to run whereas the SUSE BCI has PHP version 8.0.30 as latest version.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698606527692.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698606527692.png 600w, /content/images/size/w1000/2025/07/1698606527692.png 1000w, /content/images/2025/07/1698606527692.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>Most Enterprise Linux distributions support packages for as long as security fixes remain available for the package. That is the case with SLES and PHP 8 here. The latest version of PHP available from the official SLE_BCI repo is PHP version 8.0.30 which will continue to receive security fixes until the end of November this year, then the package will be upgraded to version 8.1.x which will receive security fixes until November 2024.</p><p>Then, how can we use the SUSE Linux Enterprise container but with PHP version 8.2?</p><p>Comes into the scene, SUSE's own <a href="https://openbuildservice.org/" rel="noopener noreferrer">Open Build Service</a>.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/obs.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/obs.png 600w, /content/images/size/w1000/2025/07/obs.png 1000w, /content/images/2025/07/obs.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>I explained how Open Build Service (OBS) allows one to compile software and package the latter for different Linux distributions and different CPU architectures. Then, I mentioned <a href="http://build.opensuse.org/" rel="noopener noreferrer">build.opensuse.org</a> where SUSE upstream projects reside. Recently, the Linux Foundation decided to <a href="https://www.suse.com/c/suse-open-build-service-now-adopted-by-the-kubernetes-to-generate-its-official-packages/" rel="noopener noreferrer">build Kubernetes packages using OBS</a> too. I talked about how openSUSE Leap and SUSE Linux Enterprise share a 1:1 binary compatible codebase.</p><p>One could build PHP v8.2.12 packages using <a href="http://build.opensuse.org/" rel="noopener noreferrer">build.opensuse.org</a> but... there is actually no need — because v8.2.12 is already built for SLE 15 SP5. 😎 We can simply add the OBS repo to our SLE BCI Apache-PHP container and install the latest version of PHP.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698612144212.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698612144212.png 600w, /content/images/size/w1000/2025/07/1698612144212.png 1000w, /content/images/2025/07/1698612144212.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>Huh! So, by this time we have a codebase, we have chosen a BCI and we know how to get the latest version of PHP running which is required for our application (i.e the website of DevFest Mauritius 2023). What's next? We need to build a container image that will hold our codebase and be ready for shipping.</p><p>So... Let's build it!</p><p>Before talking about building containers though, I mentioned that I don't like the idea of simply copying Dockerfiles from the Internet and start using. Writing a Dockerfile is not difficult and a lot of times it requires just a few lines. It also helps us keep things clean and we know what we are doing.</p><p>Let's write a Dockerfile then.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/dockerfile.gif" class="kg-image" alt="" loading="lazy" width="1080" height="608" srcset="/content/images/size/w600/2025/07/dockerfile.gif 600w, /content/images/size/w1000/2025/07/dockerfile.gif 1000w, /content/images/2025/07/dockerfile.gif 1080w" sizes="(min-width: 720px) 720px"></figure><p>During the presentation, I explained what each line does. Especially, why I chained the RUN commands in one line instead of multiple RUN commands. Each RUN command creates an OverlayFS layer and takes up a little more space. In this example, it would have taken an additional 8MB if we had used multiple RUN commands for every CLI command specified.</p><pre><code>FROM registry.suse.com/bci/php-apache:8</code></pre><p>In the first line, we pull the SUSE BCI PHP-Apache 8 image. Then, we copy our project directory inside the container image at a specific path which we have specified in an Apache configuration. I talked briefly about Apache VirtualHosts.</p><pre><code>COPY ./devfest2023 /srv/www/vhosts/devfest2023
COPY ./devfest2023.conf /etc/apache2/vhosts.d/devfest2023.conf</code></pre><p>Next, we copy a "repo" configuration file that contains information about the OBS repository.</p><pre><code>COPY ./obs_php.repo /etc/zypp/repos.d</code></pre><p>The content of the .repo file is available from the PHP package project on <a href="http://build.opensuse.org/" rel="noopener noreferrer">build.opensuse.org</a>.</p><p>We run the zypper ref command to update the repo database. We update the packages with the --allow-vendor-change option. Without this option, it will not upgrade PHP because the currently installed PHP package by vendor SUSE is the highest version available. By allowing vendor change, the package will be upgraded using newer packages from the OBS repository.</p><pre><code>RUN zypper ref; zypper up -y --allow-vendor-change; \
zypper in -y php8-tokenizer php8-iconv php8-intl php8-bcmath \
php8-bz2 php8-ctype php8-gd php8-posix php8-readline</code></pre><p>We install a few other PHP libraries that will be required by our Laravel application.</p><p>Laravel writes to a log file stored at the storage/laravel.log path. Therefore, ownership of the directory is changed to the user wwwrun which is the user that owns the Apache child processes.</p><pre><code>chown -R wwwrun:wwwrun /srv/www/vhosts/devfest2023; \</code></pre><p>We enable the mod_rewrite module in Apache because we have a Rewrite Rule in our Apache configuration that forwards all requests to the index.php file.</p><pre><code>a2enmod rewrite</code></pre><p>Lastly, we make the container reachable on port 80.</p><pre><code>EXPOSE 80</code></pre><p>Our Dockerfile is ready. We can build the container image.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698608690191.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698608690191.png 600w, /content/images/size/w1000/2025/07/1698608690191.png 1000w, /content/images/2025/07/1698608690191.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>I explained what each of the options does in the docker build command. After building the image, we can run a container locally to test the application.</p><pre><code>docker run —-rm -p 8080:80 devfest:2023</code></pre><p>Once again, I explained what each of the option in the above command does.</p><p>So, we've built a container image successfully, we've tested our application running inside a container, what do we do next? Deploy to Google Kubernetes Engine (GKE)? Not, yet. We need to push this container image to a registry, from which GKE will be able to pull and deploy.</p><p>Hereon, we started talking about the <a href="https://cloud.google.com/" rel="noopener noreferrer">Google Cloud Platform</a>. We needed to enable two services on GCP before we can ship a container and deploy our application. The services are:</p><ul><li>Artifact Registry API</li><li>Kubernetes Engine API</li></ul><p>I explained that previously we would use the Container Registry API but that was only limited to Docker container images. The Artifact Registry can hold repos for container images, npm packages, python, etc.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698609219546.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698609219546.png 600w, /content/images/size/w1000/2025/07/1698609219546.png 1000w, /content/images/2025/07/1698609219546.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>We created a repository in the Artifact Registry, we specified the format as Docker and we selected a region. We discussed about this choice (i.e region) for a while. My usual trick for obtaining the best latency to a "region" is to understand how our submarine fiber cables connect us to the rest of the world. Since, the SAFE/SAT-3/WASC submarine cable connects us to the west side of the European continent, for this example we chose the europe-west1 region, which is in Belgium. Not too far from the landing point in Portugal? 🤔 Anyway, let's continue...</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698609615679.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698609615679.png 600w, /content/images/size/w1000/2025/07/1698609615679.png 1000w, /content/images/2025/07/1698609615679.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>After creating the repository, the GCP console redirects to the repository details page. I encircled the path which we need when pushing the container image to the registry.</p><p>Oh... wait. Before pushing our container image to the Google Artifact Registry we need to setup authentication for Docker. Read the instructions <a href="https://cloud.google.com/artifact-registry/docs/docker/authentication" rel="noopener noreferrer">here</a>. During the presentation I did not elaborate on the Docker/GCP authentication part as it is purely textbook instruction.</p><p>We're almost there. We have built our container, we have set up our repository on Google Cloud, so now let's do the next step.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698609983709.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698609983709.png 600w, /content/images/size/w1000/2025/07/1698609983709.png 1000w, /content/images/2025/07/1698609983709.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>We tag the local image devfest:2023 (which we built earlier) using the path we saw on the repository page. I explained each item in the command for clarity.</p><p>Then, we run:</p><pre><code>docker push europe-west1-docker.pkg.dev/devfest2023-403313/mscc/devfest:2023</code></pre><p>You can see the progress as each layer is being copied to the registry. When completed, refresh the registry page on the cloud console.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698610296926.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698610296926.png 600w, /content/images/size/w1000/2025/07/1698610296926.png 1000w, /content/images/2025/07/1698610296926.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>Hereon, we started talking about Kubernetes and its complexity. However, Google (and other cloud providers) offer a Managed Kubernetes Service. Managed meaning — the implementation and related complexities are obsfuscated. Thus, as a developer you should be able to deploy your application in a cluster with minimal effort. That's exactly what Google Kubernetes Engine is about.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698610486453.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698610486453.png 600w, /content/images/size/w1000/2025/07/1698610486453.png 1000w, /content/images/2025/07/1698610486453.png 1488w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698610501133.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698610501133.png 600w, /content/images/size/w1000/2025/07/1698610501133.png 1000w, /content/images/2025/07/1698610501133.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>You click on the three dots and select "Deploy to GKE".</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698610551496.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698610551496.png 600w, /content/images/size/w1000/2025/07/1698610551496.png 1000w, /content/images/2025/07/1698610551496.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>The first option is to select a container, but here the devfest:2023 container is pre-selected. You can add environment variables which you usually do through the .env file of a Laravel application. Since, we are not using a database or require any other specific info to pass on, we can skip this part.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698610679358.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698610679358.png 600w, /content/images/size/w1000/2025/07/1698610679358.png 1000w, /content/images/2025/07/1698610679358.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>GKE creates a deployment configuration which defines the state of the cluster. It uses defaults here, e.g the replicas (i.e no. of nodes in the cluster) to 3. All of this information can viewed in the YAML file which is accessible from the page.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698610816292.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698610816292.png 600w, /content/images/size/w1000/2025/07/1698610816292.png 1000w, /content/images/2025/07/1698610816292.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>The YAML file is read-only at this point. We cannot edit the deployment configuration but we can do so once the cluster is created. Then, we can edit the YAML config to adjust it to our needs or use other "buttons" in the console to scale the cluster up/down, horizontally or vertically.</p><p>After the configuration part, the last step is to select whether we want to create a service to expose the cluster. Since, we want our application to be available on the Internet, we expose the cluster on port 80.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698611005292.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698611005292.png 600w, /content/images/size/w1000/2025/07/1698611005292.png 1000w, /content/images/2025/07/1698611005292.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>After we hit "DEPLOY", GKE starts building the cluster.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698611048564.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698611048564.png 600w, /content/images/size/w1000/2025/07/1698611048564.png 1000w, /content/images/2025/07/1698611048564.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>For this example, the cluster was ready in less than 5 mins.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698611089697.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698611089697.png 600w, /content/images/size/w1000/2025/07/1698611089697.png 1000w, /content/images/2025/07/1698611089697.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>Once the cluster is ready, the deployment details page will display information regarding the availability and health of the cluster nodes. At the bottom of the page, the <strong>endpoint</strong> in the Expose services show the Public IP Address for the deployment. Click on that and you can access your application. In our case, we were able to see the DevFest Mauritius 2023 site hosted on the IP address.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2025/07/1698611292237.png" class="kg-image" alt="" loading="lazy" width="1488" height="837" srcset="/content/images/size/w600/2025/07/1698611292237.png 600w, /content/images/size/w1000/2025/07/1698611292237.png 1000w, /content/images/2025/07/1698611292237.png 1488w" sizes="(min-width: 720px) 720px"></figure><p>That was my share of contribution to DevFest Mauritius 2023, as speaker this year. I hope everybody who attended the session enjoyed it and learned at least a thing or two. 😊</p>]]></content:encoded>
        </item>
        <item>
            <title>Google DevFest 2022</title>
            <link>https://sysadmin-journal.com/google-devfest-2022-mauritius</link>
            <guid isPermaLink="true">https://sysadmin-journal.com/google-devfest-2022-mauritius</guid>
            <pubDate>Fri, 16 Dec 2022 16:19:27 +0000</pubDate>
            <dc:creator>Ish Sookun</dc:creator>
            <category>DevFest</category>
            <category>Conference</category>
            <category>Kubernetes</category>
            <description>What is DevFest? DevFests are local tech conferences hosted by Google Developer Groups (GDG) around the world. Each DevFest event is crafted by its local organisers to fit the needs and interests of its local developer community.</description>
            <content:encoded><![CDATA[<p>Last Saturday, the <a href="https://gdg.community.dev/events/details/google-gdg-mauritius-presents-devfest-mauritius-2022/">Google DevFest 2022</a> was held at the <a href="https://alc.alueducation.com/">African Leadership College</a> (ALC) in Pamplemousses. There were two simultaneous tracks with 12 sessions in total from 15 speakers. </p><p>The day started similar to <a href="https://sysadmin-journal.com/developers-conference-2022-as-it-happened/">DevCon 2022</a> days... waking up at 04h00 and hitting the road by 06h30. Shelly &amp; I picked up Pritvi, Girish and Vidush along the way. We reached the ALC campus by 08h00. As we arrived at the campus' security checkpoint, Shelly got down from the car and explained the security personnel about the event and handed her the list of attendees. This was a security requirement by ALC — they needed the names of all attendees in order to allow them to access the college premise. Totally understandable, it's a college and they have rules.</p><p>As we moved to the parking area I noticed JoKi's Mitsubishi SUV. Seconds later I saw JoKi walk by and we waved. Mary Jane was already at the cafeteria's entrance where the registration desk was meant to be. In fact, they had started setting up that area — with the tables and roll-up banners. The DevFest 2022 backdrop was yet to be set up. Pritvi gave a helping hand with that.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-backdrop-setup.jpeg" class="kg-image" alt="JoKi and Privi setting up the DevFest 2022 backdrop" loading="lazy" width="1280" height="719" srcset="/content/images/size/w600/2022/12/devfest-2022-backdrop-setup.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-backdrop-setup.jpeg 1000w, /content/images/2022/12/devfest-2022-backdrop-setup.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">JoKi and Privi setting up the DevFest 2022 backdrop</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-backdrop-pritvi-joki.jpeg" class="kg-image" alt="" loading="lazy" width="1280" height="719" srcset="/content/images/size/w600/2022/12/devfest-2022-backdrop-pritvi-joki.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-backdrop-pritvi-joki.jpeg 1000w, /content/images/2022/12/devfest-2022-backdrop-pritvi-joki.jpeg 1280w" sizes="(min-width: 1200px) 1200px"></figure><p>The opening ceremony was held in the cafeteria. Few minutes before it started, JoKi checked the sound equipment and tested his laptop display on the TV. Meanwhile, registration was in full swing.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-registration.jpeg" class="kg-image" alt="" loading="lazy" width="1280" height="719" srcset="/content/images/size/w600/2022/12/devfest-2022-registration.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-registration.jpeg 1000w, /content/images/2022/12/devfest-2022-registration.jpeg 1280w" sizes="(min-width: 1200px) 1200px"></figure><p>Registration was faster and smoother with the QR verification. Once checked-in, attendees received their DevFest attendee badge, a t-shirt, stickers and a 50% discount voucher by <a href="https://cloud.mu">cloud.mu</a>.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-stickers.jpeg" class="kg-image" alt="DevFest stickers and cloud.mu discount voucher" loading="lazy" width="1280" height="719" srcset="/content/images/size/w600/2022/12/devfest-2022-stickers.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-stickers.jpeg 1000w, /content/images/2022/12/devfest-2022-stickers.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">DevFest stickers and cloud.mu discount voucher</span></figcaption></figure><p>Attendees spread around the campus checking the presentation rooms, sponsors area, meeting people, etc.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-attendees-1.jpeg" class="kg-image" alt="Photo by Kevin Langat" loading="lazy" width="1280" height="853" srcset="/content/images/size/w600/2022/12/devfest-2022-attendees-1.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-attendees-1.jpeg 1000w, /content/images/2022/12/devfest-2022-attendees-1.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Photo by Kevin Langat</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-attendees-2.jpeg" class="kg-image" alt="Photo by Kevin Langat" loading="lazy" width="1280" height="853" srcset="/content/images/size/w600/2022/12/devfest-2022-attendees-2.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-attendees-2.jpeg 1000w, /content/images/2022/12/devfest-2022-attendees-2.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Photo by Kevin Langat</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-attendees-3.jpeg" class="kg-image" alt="Photo by Kevin Langat" loading="lazy" width="1280" height="853" srcset="/content/images/size/w600/2022/12/devfest-2022-attendees-3.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-attendees-3.jpeg 1000w, /content/images/2022/12/devfest-2022-attendees-3.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Photo by Kevin Langat</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-attendees-4.jpeg" class="kg-image" alt="Photo by Kevin Langat" loading="lazy" width="1280" height="853" srcset="/content/images/size/w600/2022/12/devfest-2022-attendees-4.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-attendees-4.jpeg 1000w, /content/images/2022/12/devfest-2022-attendees-4.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Photo by Kevin Langat</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-attendees-5.jpeg" class="kg-image" alt="Photo by Kevin Langat" loading="lazy" width="1280" height="853" srcset="/content/images/size/w600/2022/12/devfest-2022-attendees-5.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-attendees-5.jpeg 1000w, /content/images/2022/12/devfest-2022-attendees-5.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Photo by Kevin Langat</span></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-attendees-6.jpeg" class="kg-image" alt="Photo by Kevin Langat" loading="lazy" width="1280" height="853" srcset="/content/images/size/w600/2022/12/devfest-2022-attendees-6.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-attendees-6.jpeg 1000w, /content/images/2022/12/devfest-2022-attendees-6.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Photo by Kevin Langat</span></figcaption></figure><p>At 09h00, everyone came to the cafeteria for the opening ceremony. DevFest 2022 kicked-off! JoKi welcomed everyone and explained about the Google Developer Groups around the world and what is DevFest. He invited Yovin Poorun, Computing Degree Program Lead at the African Leadership College, to address a few words.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-yovin-poorun.jpeg" class="kg-image" alt="Yovin Poorun, Computing Degree Program Lead at the ALC Mauritius Campus" loading="lazy" width="1280" height="719" srcset="/content/images/size/w600/2022/12/devfest-2022-yovin-poorun.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-yovin-poorun.jpeg 1000w, /content/images/2022/12/devfest-2022-yovin-poorun.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Yovin Poorun, Computing Degree Program Lead at the ALC Mauritius Campus</span></figcaption></figure><p>Yovin's support and assistance in making the DevFest 2022 happen at the African Leadership College was greatly appreciated.</p><p>Then, Didier Béphage, Technology Director at SD Worx addressed a few words. SD Worx was one of the sponsors of DevFest 2022 and they have continuously supported local dev activities in Mauritius.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-didier-bephage.jpeg" class="kg-image" alt="Didier Béphage, Technology Director at SD Worx" loading="lazy" width="1280" height="719" srcset="/content/images/size/w600/2022/12/devfest-2022-didier-bephage.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-didier-bephage.jpeg 1000w, /content/images/2022/12/devfest-2022-didier-bephage.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Didier Béphage, Technology Director at SD Worx</span></figcaption></figure><p>Didier spoke about SD Worx and the company's culture. He went through some details as JoKi displayed the company's website on the TV.</p><p>The first presentations in Rooms 1 and 2 were started at 10h00.</p><p>My talk was scheduled at 11h00 in Room 1. I reached there a few mins before, as Dhanesh was concluding his presentation on CI/CD in Google Cloud. My talk was about deploying a Laravel application on the Google Kubernetes Engine.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/DevFest_2022_Laravel_9_on_GKE.001.jpeg" class="kg-image" alt="" loading="lazy" width="1920" height="1080" srcset="/content/images/size/w600/2022/12/DevFest_2022_Laravel_9_on_GKE.001.jpeg 600w, /content/images/size/w1000/2022/12/DevFest_2022_Laravel_9_on_GKE.001.jpeg 1000w, /content/images/size/w1600/2022/12/DevFest_2022_Laravel_9_on_GKE.001.jpeg 1600w, /content/images/2022/12/DevFest_2022_Laravel_9_on_GKE.001.jpeg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>I started with explaining about Laravel. It is an open-source project, it has great documentation, it follows the MVC principle, it has several first-party packages and deployment is a piece of cake (like most PHP applications).</p><p>I spoke about the Laravel ecosystem, tools such as <a href="https://forge.laravel.com/">Forge</a> and <a href="https://vapor.laravel.com/">Vapor</a>, starter-kits like <a href="https://breeze.laravel.com/">Breeze</a> and <a href="https://jetstream.laravel.com/">Jetstream</a> — how they all make development less of a struggle.</p><p>I touched on the Model-View-Controller subject and explained how the data, the design and the logic are kept separate, giving the developer better control over the code.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-laravel-mvc.jpeg" class="kg-image" alt="Laravel MVC Architecture" loading="lazy" width="1920" height="1080" srcset="/content/images/size/w600/2022/12/devfest-2022-laravel-mvc.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-laravel-mvc.jpeg 1000w, /content/images/size/w1600/2022/12/devfest-2022-laravel-mvc.jpeg 1600w, /content/images/2022/12/devfest-2022-laravel-mvc.jpeg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Then, I mentioned <a href="https://bootcamp.laravel.com/">Laravel Bootcamp</a>, for anyone wishing to start Laravel development. Bootcamp is ideal for somebody who is just starting a career in webdev to get an idea on how full-stack development is possible with Laravel. One may choose to write all the backend logic in PHP and design fancy pages using either Blade templates, Vue.js or React.</p><p>A Laravel project can be created with just a few commands. Adding Breeze to that, we can have an authentication feature built into the app instantly.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-laravel-commands.001.jpeg" class="kg-image" alt="" loading="lazy" width="1920" height="1080" srcset="/content/images/size/w600/2022/12/devfest-2022-laravel-commands.001.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-laravel-commands.001.jpeg 1000w, /content/images/size/w1600/2022/12/devfest-2022-laravel-commands.001.jpeg 1600w, /content/images/2022/12/devfest-2022-laravel-commands.001.jpeg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Say we have a working Laravel project... how do we deploy that on Kubernetes. Not just, yet. We need to break down the application components such that the code can run on as many instances while the application data resides on a centralised location which every instance can access.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/DevFest-2022---Laravel-9-on-GKE.009.jpeg" class="kg-image" alt="" loading="lazy" width="1920" height="1080" srcset="/content/images/size/w600/2022/12/DevFest-2022---Laravel-9-on-GKE.009.jpeg 600w, /content/images/size/w1000/2022/12/DevFest-2022---Laravel-9-on-GKE.009.jpeg 1000w, /content/images/size/w1600/2022/12/DevFest-2022---Laravel-9-on-GKE.009.jpeg 1600w, /content/images/2022/12/DevFest-2022---Laravel-9-on-GKE.009.jpeg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Thus, we can move the database to Google Cloud SQL and the file storage to Google Cloud Storage. We are then left with just the application code and some binaries required to run the application — which can now be multiplied on as many virtual machines as we need or deploy them in containers in a Kubernetes cluster.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/DevFest-2022---Laravel-9-on-GKE.010.jpeg" class="kg-image" alt="" loading="lazy" width="1920" height="1080" srcset="/content/images/size/w600/2022/12/DevFest-2022---Laravel-9-on-GKE.010.jpeg 600w, /content/images/size/w1000/2022/12/DevFest-2022---Laravel-9-on-GKE.010.jpeg 1000w, /content/images/size/w1600/2022/12/DevFest-2022---Laravel-9-on-GKE.010.jpeg 1600w, /content/images/2022/12/DevFest-2022---Laravel-9-on-GKE.010.jpeg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>I spoke about the advantages of using a managed Kubernetes platform such as the <a href="https://cloud.google.com/kubernetes-engine">Google Kubernetes Engine</a> (GKE).</p><p>Kubernetes is being actively developed. A one-man army cannot simply develop applications and manage Kubernetes clusters on his own. GKE provides plenty of options for a DevOps to configure how the cluster must run, scale and be cost effective.</p><p>GKE provides two types of clusters — standard and autopilot. In the former, you can choose the number of nodes you want in the cluster and provision those nodes according to your needs. You are billed a management fee and also billed for every running node (a Google Compute instance) irrespective of whether there are any workloads running on the node or not.</p><p>However, in the autopilot mode, GKE decides what is best. Thus, upon creation there are no running nodes at all in the cluster. Nodes are provisioned when workloads are deployed. You cannot add/remove nodes in the autopilot cluster. Those are done automatically by GKE when the workloads require additional resources or nodes can be scaled down if no more required.</p><p>The autopilot cluster is more cost effective because they are not billed per node (i.e per Compute instance) but instead they are billed per pods (calculated as per the amount of resources required by the pods).</p><p>During the demo part of the presentation, I created two clusters, one standard and the other as autopilot. I showed that the cost using the default settings in a standard cluster would result in a monthly bill of above $300 even if nothing is deployed. In the autopilot mode, a flat fee of $0.10/hour is applied which results in a $72/month flat amount and each pod is billed individually for the vCPU, memory and ephemeral storage used.</p><p>I also explained how pricing changes across different regions while explaining the difference between regions and zones.</p><p>Coming back on the discussion on containers, I showed how I containerised a Laravel application and mentioned a peculiar issue that I encountered on my Apple M1 Macbook. The M1 processor is ARM64 and thus the container is built for ARM64. Pushing that container to the Google Artifacts Registry and then deploying it on GKE throws an <strong>"exec format error"</strong>.</p><p>It took me a while to realise my mistake — being a relatively new "M1 user".</p><p>I should have built the container for the <code>linux/amd64</code> architecture before pushing it to the Google Artifacts Registry.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/DevFest-2022---Laravel-9-on-GKE.021.jpeg" class="kg-image" alt="" loading="lazy" width="1920" height="1080" srcset="/content/images/size/w600/2022/12/DevFest-2022---Laravel-9-on-GKE.021.jpeg 600w, /content/images/size/w1000/2022/12/DevFest-2022---Laravel-9-on-GKE.021.jpeg 1000w, /content/images/size/w1600/2022/12/DevFest-2022---Laravel-9-on-GKE.021.jpeg 1600w, /content/images/2022/12/DevFest-2022---Laravel-9-on-GKE.021.jpeg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>JoKi from the audience commented whether the <code>--platform</code> flag couldn't have been specified in the Dockerfile. Yes, that could be done too.</p><p>However, in my case, I was building and testing the container on ARM64. Then, for deployment on GKE, I would build the container for linux/amd64 and push it to the Google Artifacts Registry. Therefore, it was easier to specify the architecture at build time instead of hardcoding it in the file.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/DevFest-2022---Laravel-9-on-GKE.025.jpeg" class="kg-image" alt="" loading="lazy" width="1920" height="1080" srcset="/content/images/size/w600/2022/12/DevFest-2022---Laravel-9-on-GKE.025.jpeg 600w, /content/images/size/w1000/2022/12/DevFest-2022---Laravel-9-on-GKE.025.jpeg 1000w, /content/images/size/w1600/2022/12/DevFest-2022---Laravel-9-on-GKE.025.jpeg 1600w, /content/images/2022/12/DevFest-2022---Laravel-9-on-GKE.025.jpeg 1920w" sizes="(min-width: 1200px) 1200px"></figure><p>Lastly, I talked about the <code>gcloud</code> and <code>kubectl</code> CLI tools which I used to interact with the cluster. Using <code>kubectl</code> I obtained information about the pods and I could also investigate the pods individually.</p><p><a href="https://twitter.com/arwinneil">Neil</a> asked whether one could choose the container engine to use by GKE. I answered that GKE would most probably use the CRI-O engine rather than docker-runc. During my experiments I did not find whether GKE could be configured to use a different container engine or a different architecture like ARM64.</p><p>That's it! I was able to cram everything in 45 mins.</p><p>After my session, I went back to the cafeteria for lunch. Luckily, there was vegetarian food. 🫑🍅🥬</p><p>Next, I attended Pritvi's session about improving your exposure as a local guide on Google Maps using Google Lens. I am glad I attended the session. It was very helpful to understand how Google Maps behaves as a social network for "local guides". There is a point system and local guides gain more points for correcting and improving the accuracy of Google Maps — e.g adding a missing place, uploading pictures of a restaurant, the restaurant's menu, uploading building signage etc.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-pritvi-jheengut-google-maps-prez.jpeg" class="kg-image" alt="" loading="lazy" width="1280" height="719" srcset="/content/images/size/w600/2022/12/devfest-2022-pritvi-jheengut-google-maps-prez.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-pritvi-jheengut-google-maps-prez.jpeg 1000w, /content/images/2022/12/devfest-2022-pritvi-jheengut-google-maps-prez.jpeg 1280w" sizes="(min-width: 1200px) 1200px"></figure><p>You can follow other local guides and of course others can follow you. You can write reviews about places you visit and people finding those reviews helpful may... well... like the reviews. 😉</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-pritvi-jheengut-google-lens-demo.jpeg" class="kg-image" alt="Pritvi Jheengut — Google Lens demo" loading="lazy" width="1280" height="719" srcset="/content/images/size/w600/2022/12/devfest-2022-pritvi-jheengut-google-lens-demo.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-pritvi-jheengut-google-lens-demo.jpeg 1000w, /content/images/2022/12/devfest-2022-pritvi-jheengut-google-lens-demo.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Pritvi Jheengut — Google Lens demo</span></figcaption></figure><p>Like I said earlier, it was very helpful, educational and an interactive session. In fact, during the session I intervened and explained how I have been trying to remove a wrong pin dropped over my home for some "organic product business" which is nowhere around my place (at least not that I know of). Both Shelly and I tried several times to remove it but nothing happened. Then, during the talk, Chittesh and Aditya requested the removal of that place on Google Maps. It was immediately removed! 😊</p><p>After Pritvi's presentation, I remained in the same room to attend <a href="https://twitter.com/osdotsystem">Abdur-Rahmaan's</a> presentation about SQLite internals. I very much liked the presentation — digging a piece software to understand how it works internally. Abdur-Rahmaan did just that.</p><p>He started with some history about SQLite and its creator Dwayne Richard Hipp. Then, minutes later the discussion changed from story to practicals. He talked about the compiler having a parser and a code generator. The latter produces a bytecode which is then run in a VM — which in turns can be broken into several components to understand each one's functionality — like the role of a pager, btree, shim etc.</p><p>He then explained about recovery, how does SQLite avoid data corruption if there is a power outage while some write operation was still happening.</p><p>Time was short for this talk but before he completely ran out of time, Abdur-Rahmaan spoke about some alternatives/forks to SQLite — libSQL and LumoSQL.</p><p>For me, right there, it was a fruitful day and a very successful DevFest. I shared some knowledge and I learned some.</p><p>I briefly attended the last session of the day in Room 2 by Dr. Amreesh Phokeer, a Data Expert at the Internet Society.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2022/12/devfest-2022-dr-amreesh-phokeer.jpeg" class="kg-image" alt="Dr. Amreesh Phokeer explaining the Data Pipeline" loading="lazy" width="1280" height="960" srcset="/content/images/size/w600/2022/12/devfest-2022-dr-amreesh-phokeer.jpeg 600w, /content/images/size/w1000/2022/12/devfest-2022-dr-amreesh-phokeer.jpeg 1000w, /content/images/2022/12/devfest-2022-dr-amreesh-phokeer.jpeg 1280w" sizes="(min-width: 1200px) 1200px"><figcaption><span style="white-space: pre-wrap;">Dr. Amreesh Phokeer explaining the Data Pipeline</span></figcaption></figure><p>He explained about a <a href="https://pulse.internetsociety.org/wp-content/uploads/2021/07/Measuring-Internet-Resilience-in-Africa-EN-May2021.pdf">project</a> he is working on at the Internet Society — Measuring Internet Resilience in Africa (MIRA). He described how he used Google Cloud products such as BigQuery and Looker Studio to create a Data Pipeline.</p><p>Lastly, the closing ceremony happened in the cafeteria. There was the list of thank you's, mentioning all sponsors, partners, attendees, volunteers and JoKi thanked the three Google Developer Student Clubs (GDSC) on the island — African Leadership College, Polytechnics Mauritius and the University of Mauritius — while also encouraging them to take the lead in organising future DevFests.</p>
<!--kg-card-begin: html-->
<center>
    <blockquote class="twitter-tweet"><p lang="en" dir="ltr">Google Developer Student Clubs of <a href="https://twitter.com/hashtag/Mauritius?src=hash&amp;ref_src=twsrc%5Etfw">#Mauritius</a> at <a href="https://twitter.com/hashtag/DevFest2022?src=hash&amp;ref_src=twsrc%5Etfw">#DevFest2022</a>. <a href="https://t.co/jHVRmaUGc6">pic.twitter.com/jHVRmaUGc6</a></p>&mdash; Ish Sookun (@IshSookun) <a href="https://twitter.com/IshSookun/status/1602013252292001793?ref_src=twsrc%5Etfw">December 11, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</center>
<!--kg-card-end: html-->
<p>There were some prize giveaways following questions put by JoKi and some of the GDSC Leads.</p><p>A fruitful day with lots of learning and sharing! Thank you Google for endorsing and encouraging such activities.</p>]]></content:encoded>
        </item>
        <item>
            <title>DevFest 2020 at Uniciti Mauritius</title>
            <link>https://sysadmin-journal.com/devfest-2020</link>
            <guid isPermaLink="true">https://sysadmin-journal.com/devfest-2020</guid>
            <pubDate>Thu, 26 Nov 2020 08:43:32 +0000</pubDate>
            <dc:creator>Ish Sookun</dc:creator>
            <category>DevFest</category>
            <category>Conference</category>
            <description>The GDG DevFest 2020 happened on the Saturday 21st November in Mauritius. It was the first physical tech event after the confinement. We hope that the pandemic situation improves and that we have more of such events on the island.</description>
            <media:content url="https://sysadmin-journal.com/content/images/2020/11/devfest-2020-booth-1.jpg" medium="image" />
            <content:encoded><![CDATA[<p>Under the strict rules of controlled gathering, the DevFest 2020 happened last Saturday at the <a href="https://www.uniciti.mu/en/learn/uniciti-education-hub">Uniciti Education Hub</a> in Pierrefonds. Although the registration was high, only the first hundred attendees were to be allowed entrance, sadly (la pandémie oblige 😔).</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://sysadmin-journal.com/content/images/2020/11/devfest-house-rules.png" class="kg-image" alt="" loading="lazy"><figcaption><span style="white-space: pre-wrap;">Email by JoKi reminding the House Rules</span></figcaption></figure><p>I could not attend the event. However, my friend Sandeep, has written an <a href="https://sandeep.ramgolam.com/blog/mauritius-google-devfest-2020">extensive blog post on the event</a> as it happened.</p><p>I arrived at Uniciti in the afternoon when the last sessions where happening. I took a few pictures and attended the closing ceremony.</p><figure class="kg-card kg-image-card"><img src="https://sysadmin-journal.com/content/images/2020/11/gdg-devfest-2020-mauritius.jpg" class="kg-image" alt="" loading="lazy"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2020/11/devfest-2020-attendees.jpg" class="kg-image" alt="" loading="lazy"></figure><figure class="kg-card kg-image-card kg-width-wide"><img src="https://sysadmin-journal.com/content/images/2020/11/devfest-2020-prize-giveaway.jpg" class="kg-image" alt="" loading="lazy"></figure><p>Kudos to all speakers, attendees, partners, and of course the organising team! 👏</p>]]></content:encoded>
        </item>
        <item>
            <title>DevFest 2020 Mauritius</title>
            <link>https://sysadmin-journal.com/devfest-2020-mauritius</link>
            <guid isPermaLink="true">https://sysadmin-journal.com/devfest-2020-mauritius</guid>
            <pubDate>Mon, 02 Nov 2020 08:17:22 +0000</pubDate>
            <dc:creator>Ish Sookun</dc:creator>
            <category>DevFest</category>
            <category>Conference</category>
            <description>The GDG Mauritius and the Mauritius Software Craftsmanship Community (MSCC) are bringing the DevFest 2020 this November. The previous DevFests have been successful and no doubt this year&#039;s event will be great too, despite the challenges brought by the pandemic.</description>
            <media:content url="https://sysadmin-journal.com/content/images/2020/11/devfest-2020-mauritius.png" medium="image" />
            <content:encoded><![CDATA[<p>After a long wait on the island, post-confinement, we are going to have a first physical tech conference happening this month. It is the DevFest 2020 scheduled for 21 November at the Uniciti Education Hub at <a href="https://goo.gl/maps/r9RjwfpW3nu2Kpzh8">Pierrefonds</a>.</p><p>The call for speakers was announced last month and the deadline for submission is today. 😉</p>
<!--kg-card-begin: html-->
<center>
    <blockquote class="twitter-tweet"><p lang="en" dir="ltr">Are you ready for this new challenge? Google DevFest 2020 is happening and we would love to have you on board! Don&#39;t forget to submit your session on: <a href="https://t.co/unKHRUmyvm">https://t.co/unKHRUmyvm</a> <a href="https://twitter.com/hashtag/DevFestMu?src=hash&amp;ref_src=twsrc%5Etfw">#DevFestMu</a> <a href="https://twitter.com/hashtag/developers?src=hash&amp;ref_src=twsrc%5Etfw">#developers</a> <a href="https://twitter.com/hashtag/conference?src=hash&amp;ref_src=twsrc%5Etfw">#conference</a> <a href="https://twitter.com/hashtag/Mauritius?src=hash&amp;ref_src=twsrc%5Etfw">#Mauritius</a> <a href="https://t.co/vlyhdzwtL4">pic.twitter.com/vlyhdzwtL4</a></p>&mdash; MSCC (@MSCraftsman) <a href="https://twitter.com/MSCraftsman/status/1316325376872919041?ref_src=twsrc%5Etfw">October 14, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</center>
<br>
<!--kg-card-end: html-->
<p>Further details about the event will be published soon. However, let's anticipate the COVID-19 restrictions such as compulsory face mask and social distancing during the event this year. I am pretty sure this must be a great challenge for the organisers and volunteers. Therefore, all the best to folks at <a href="https://www.mscc.mu/">MSCC</a> and <a href="https://www.meetup.com/GDG-Mauritius/">GDG Mauritius</a>.</p>]]></content:encoded>
        </item>
    </channel>
</rss>
