<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yves Jacolin</title>
    <description>The latest articles on DEV Community by Yves Jacolin (@yjacolin).</description>
    <link>https://dev.to/yjacolin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F442846%2F7b6ee3a4-9e04-4b65-a918-0058d5e49cd0.png</url>
      <title>DEV Community: Yves Jacolin</title>
      <link>https://dev.to/yjacolin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yjacolin"/>
    <language>en</language>
    <item>
      <title>Rencontres QGIS 2026 à Brest : IA, innovation et communauté</title>
      <dc:creator>Yves Jacolin</dc:creator>
      <pubDate>Mon, 02 Feb 2026 14:24:47 +0000</pubDate>
      <link>https://dev.to/yjacolin/rencontres-qgis-2026-a-brest-ia-innovation-et-communaute-o6i</link>
      <guid>https://dev.to/yjacolin/rencontres-qgis-2026-a-brest-ia-innovation-et-communaute-o6i</guid>
      <description>&lt;p&gt;Nous sommes ravis de vous donner rendez-vous en mars prochain à Brest pour l'édition 2026 des Rencontres Utilisateurs QGIS. Fidèles à cet événement depuis ses débuts, nous avons le plaisir de renouveler notre soutien à la communauté en tant que mécène Or.&lt;/p&gt;

&lt;p&gt;Cette année, notre équipe souhaite partager son expertise sur un sujet qui transforme nos pratiques : l'intégration de l'Intelligence Artificielle dans les workflows géomatiques. Loin du "buzz", nous voulons montrer comment ces outils peuvent devenir des assistants concrets et pragmatiques pour les utilisateurs de QGIS.&lt;/p&gt;

&lt;p&gt;Voici les deux temps forts que nous animerons :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚡ Conférence : L'IA comme assistant QGIS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Par Florent GRAVIN&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;L’arrivée des LLM (Large Language Models) modifie notre interaction avec les outils SIG. Cette présentation "éclair" a pour but de démystifier l'usage de l'IA au quotidien. Nous y aborderons comment rédiger des expressions, générer des scripts Python, déboguer des traitements ou documenter des projets plus rapidement. Nous évoquerons également l'écosystème émergent (serveurs MCP, assistants contextuels) qui permet de connecter localement et de manière sécurisée des IA à QGIS.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📅 Date : 25 mars&lt;/li&gt;
&lt;li&gt;🕒 Horaire : 15:10 – 15:15&lt;/li&gt;
&lt;li&gt;📍 Lieu : Amphi Archipel des Glénan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🛠️ Atelier : Exploitez les LLM comme assistants QGIS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Par Arnaud MORVAN&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Pour ceux qui souhaitent passer de la théorie à la pratique, cet atelier fait suite à la conférence. Que vous soyez géomaticien, développeur ou utilisateur régulier, nous explorerons ensemble comment l'IA peut vous décharger des tâches répétitives et faciliter l'automatisation. Au programme : recherche documentaire assistée, nettoyage de données, génération de styles et développement de plugins sans partir de zéro. Venez avec votre ordinateur (QGIS LTR installé) et vos cas d'usage !&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📅 Date : 26 mars&lt;/li&gt;
&lt;li&gt;🕒 Horaire : 09:00 – 11:45&lt;/li&gt;
&lt;li&gt;📍 Lieu : Salle "Phare de l'Île vierge"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Échangeons sur nos contributions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Au-delà de l'IA, notre présence est aussi l'occasion d'échanger sur le cœur de QGIS. Nous serons disponibles pour discuter de vos besoins, mais aussi pour faire le point sur nos contributions au code source ("Core"), notamment nos travaux récents sur le modeleur graphique.&lt;/p&gt;

&lt;p&gt;Pour retrouver l'intégralité du programme et préparer votre venue, consultez le site officiel de l'événement : 👉 &lt;a href="https://conf.qgis.osgeo.fr/z20_programme.html" rel="noopener noreferrer"&gt;Programme des Rencontres QGIS 2026&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;À très bientôt à &lt;a href="https://conf.qgis.osgeo.fr/z10_localisation.html" rel="noopener noreferrer"&gt;Brest&lt;/a&gt; !&lt;/p&gt;

</description>
      <category>qgis</category>
      <category>ai</category>
    </item>
    <item>
      <title>IoT for smarter infrastructure: Transforming airports, cities and communities</title>
      <dc:creator>Yves Jacolin</dc:creator>
      <pubDate>Thu, 10 Oct 2024 09:23:47 +0000</pubDate>
      <link>https://dev.to/camptocamp-geo/iot-for-smarter-infrastructure-transforming-airports-cities-and-communities-18ph</link>
      <guid>https://dev.to/camptocamp-geo/iot-for-smarter-infrastructure-transforming-airports-cities-and-communities-18ph</guid>
      <description>&lt;p&gt;The Internet of Things (IoT) is revolutionising many sectors, but airports, local authorities and urban areas are particularly prominent examples. These complex infrastructures have to manage large amounts of data and flows in real time, and IoT is enabling them to optimise their operations while improving the quality of decisions and services offered to users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj0x2b6pkf5g1u6o2aetv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj0x2b6pkf5g1u6o2aetv.png" alt="Smart cities illustration" width="591" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Airport example: optimising operations and the passenger experience
&lt;/h2&gt;

&lt;p&gt;In an airport, fluidity and efficiency are key issues. IoT makes it possible to monitor passenger flows, baggage and even maintenance equipment in real time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Baggage tracking: Thanks to IoT sensors placed on luggage, passengers and staff can track the whereabouts of suitcases, reducing the risk of loss and improving passenger satisfaction.&lt;/li&gt;
&lt;li&gt;Runway and vehicle management: Vehicles used for runway maintenance or passenger transport can be fitted with sensors, enabling managers to optimise their use, prevent breakdowns and ensure safety.&lt;/li&gt;
&lt;li&gt;Energy management and infrastructure monitoring: Sensors can be used to monitor the energy consumption of buildings, adjusting lighting and air conditioning to actual demand, while monitoring the condition of infrastructure to anticipate maintenance needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resource management and smart cities
&lt;/h2&gt;

&lt;p&gt;For local and regional authorities, IoT is an invaluable tool for creating smart cities, where the management of resources and services is optimised in real time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Intelligent parking management: IoT sensors can be installed in car parks to inform drivers in real time of available spaces, reducing congestion and CO2 emissions caused by searching for a space.&lt;/li&gt;
&lt;li&gt;Air quality monitoring: IoT sensors installed in cities can be used to monitor air quality and make decisions about traffic or restrictions when pollution levels are high. This helps protect the health of citizens.&lt;/li&gt;
&lt;li&gt;Waste management: thanks to IoT, bins can be fitted with sensors to indicate when they are full, optimising collection rounds and reducing costs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Traffic and infrastructure management
&lt;/h2&gt;

&lt;p&gt;Urban areas face constant challenges in managing traffic, infrastructure and public services.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Optimising public transport: IoT enables the collection of real-time data on the use of public transport (buses, trams, etc.). This information is used to adjust timetables, improve connections and provide live information to users.&lt;/li&gt;
&lt;li&gt;Infrastructure management: Bridges, tunnels and roads can be fitted with sensors to monitor their structural condition in real time, detect anomalies and prevent the risk of accidents in the event of failure.&lt;/li&gt;
&lt;li&gt;Intelligent lighting: In large cities, street lighting can be optimised using sensors that adjust intensity according to the presence of pedestrians or vehicles, thereby reducing energy consumption.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Improving the quality of decision making
&lt;/h2&gt;

&lt;p&gt;One of the main strengths of the IoT is its ability to provide real-time data, enabling airport, community and conurbation managers to make better and faster decisions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prediction and prevention: Thanks to continuous data collection, managers can predict events such as equipment failures or peaks in demand. This enables them to anticipate problems and avoid service interruptions.&lt;/li&gt;
&lt;li&gt;Resource optimisation: By understanding how resources (energy, water, transport) are used, managers can adapt infrastructure accordingly, improving efficiency and reducing costs.&lt;/li&gt;
&lt;li&gt;Personalised services: IoT also makes it possible to personalise services based on observed behaviour, whether for an airport passenger, a public transport user or a citizen. This improves the user experience and encourages more proactive management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;IoT is emerging as a key lever for improving the management of the complex infrastructures of airports, local authorities and metropolitan areas. By providing accurate, real-time data, it helps to optimise resources, improve safety and deliver more efficient services. The benefits include better decision-making, smoother service and reduced costs, while enabling decision-makers to be proactive in the face of tomorrow's challenges.&lt;/p&gt;

&lt;p&gt;Thanks to IoT, infrastructures are evolving towards greater intelligence and optimised management at the service of citizens and users.&lt;/p&gt;

</description>
      <category>iot</category>
      <category>smartcities</category>
    </item>
    <item>
      <title>Enhancing PostgreSQL Security with the Credcheck Extension</title>
      <dc:creator>Yves Jacolin</dc:creator>
      <pubDate>Fri, 12 Jul 2024 07:20:20 +0000</pubDate>
      <link>https://dev.to/camptocamp-geo/enhancing-postgresql-security-with-the-credcheck-extension-k8a</link>
      <guid>https://dev.to/camptocamp-geo/enhancing-postgresql-security-with-the-credcheck-extension-k8a</guid>
      <description>&lt;p&gt;The &lt;code&gt;credcheck&lt;/code&gt; PostgreSQL extension offers a range of credential checks to enhance security during user creation, password changes, and user renaming. By implementing this extension, you can define a comprehensive set of rules to manage credentials more effectively:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Allow a specific set of credentials:&lt;/strong&gt; Specify which credentials are permissible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reject certain types of credentials:&lt;/strong&gt; Define rules to disallow certain credentials.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deny easily cracked passwords:&lt;/strong&gt; Prevent the use of weak passwords that can be easily compromised.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enforce password expiration:&lt;/strong&gt; Require passwords to expire after a minimum number of days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define a password reuse policy:&lt;/strong&gt; Set rules to prevent the reuse of previous passwords.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limit authentication failures:&lt;/strong&gt; Specify the number of failed authentication attempts allowed before a user is banned.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All these checks are provided as configurable parameters within the extension. By default, the extension's settings do not enforce complex checks, allowing most credentials to be used. However, you can customize the settings to enforce stricter rules by using the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;credcheck&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;check&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These settings can only be modified by a superuser, ensuring that only authorized personnel can change the credential policies.&lt;/p&gt;

&lt;p&gt;For more information and to access the extension, visit the &lt;a href="https://github.com/MigOpsRepos/credcheck" rel="noopener noreferrer"&gt;credcheck GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;By utilizing the &lt;code&gt;credcheck&lt;/code&gt; extension, you can significantly enhance the security of your PostgreSQL environment, ensuring that only strong, compliant credentials are used.&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>gis</category>
      <category>security</category>
    </item>
    <item>
      <title>Understanding the GENERATED ALWAYS Column Option in PostgreSQL</title>
      <dc:creator>Yves Jacolin</dc:creator>
      <pubDate>Fri, 12 Jul 2024 07:12:06 +0000</pubDate>
      <link>https://dev.to/camptocamp-geo/understanding-the-generated-always-column-option-in-postgresql-oo4</link>
      <guid>https://dev.to/camptocamp-geo/understanding-the-generated-always-column-option-in-postgresql-oo4</guid>
      <description>&lt;h3&gt;
  
  
  Understanding the GENERATED ALWAYS Column Option in PostgreSQL
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;GENERATED ALWAYS&lt;/code&gt; column option in PostgreSQL functions similarly to a view for a table, allowing for on-the-fly calculation of the column's content. This feature is useful for generating computed columns based on expressions.&lt;/p&gt;

&lt;p&gt;The syntax is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;column_name&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;datatype&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;GENERATED&lt;/span&gt; &lt;span class="n"&gt;ALWAYS&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expression&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;STORED&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You define a column name and its datatype, then use the &lt;code&gt;GENERATED ALWAYS AS&lt;/code&gt; option to specify the expression PostgreSQL should use to generate the column's content. Here’s a geospatial example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;geom&lt;/span&gt; &lt;span class="n"&gt;geometry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;point&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2154&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;GENERATED&lt;/span&gt; &lt;span class="n"&gt;ALWAYS&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt;
      &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ST_Transform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ST_Point&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;longitude&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;latitude&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4326&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;2154&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;STORED&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, a column named &lt;code&gt;geom&lt;/code&gt; is created with the datatype &lt;code&gt;geometry&lt;/code&gt;, representing a point with a projection number 2154 (French projection). The &lt;code&gt;GENERATED ALWAYS AS&lt;/code&gt; option specifies that this point is generated from two other columns, &lt;code&gt;longitude&lt;/code&gt; and &lt;code&gt;latitude&lt;/code&gt;, initially in the "GPS" projection (SRID 4326), and then reprojected to the French projection using &lt;code&gt;ST_Transform&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here’s another example, tailored for a business scenario:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;totalPrice&lt;/span&gt; &lt;span class="nb"&gt;numeric&lt;/span&gt; &lt;span class="k"&gt;GENERATED&lt;/span&gt; &lt;span class="n"&gt;ALWAYS&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;unitPrice&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;quantity&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;STORED&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, the &lt;code&gt;totalPrice&lt;/code&gt; column is generated based on the &lt;code&gt;unitPrice&lt;/code&gt; and &lt;code&gt;quantity&lt;/code&gt; columns, calculating the total price of items by multiplying the unit price by the quantity.&lt;/p&gt;

&lt;p&gt;According to PostgreSQL documentation, there are specific rules for using the &lt;code&gt;GENERATED ALWAYS&lt;/code&gt; option:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The generation expression can reference other columns in the table but not other generated columns.&lt;/li&gt;
&lt;li&gt;Functions and operators used in the expression must be immutable.&lt;/li&gt;
&lt;li&gt;References to other tables are not allowed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The keyword &lt;code&gt;STORED&lt;/code&gt; is essential, indicating that the column's value is computed on write and stored on disk. This ensures that the generated values are persistent and do not need to be recalculated on every read, enhancing performance.&lt;/p&gt;

&lt;p&gt;By using the &lt;code&gt;GENERATED ALWAYS&lt;/code&gt; option, you can streamline calculations and maintain consistency within your tables, making it a powerful tool for database management in PostgreSQL.&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>gis</category>
    </item>
  </channel>
</rss>
