<?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>Forem: Chris</title>
    <description>The latest articles on Forem by Chris (@al-chris).</description>
    <link>https://forem.com/al-chris</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%2F303175%2Ffbca5ef7-09e7-4468-af5e-eccf6948f6d5.jpeg</url>
      <title>Forem: Chris</title>
      <link>https://forem.com/al-chris</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/al-chris"/>
    <language>en</language>
    <item>
      <title>How to Fully Integrate CoppeliaSim in Ubuntu (Command Line &amp; Desktop)</title>
      <dc:creator>Chris</dc:creator>
      <pubDate>Tue, 11 Nov 2025 04:31:21 +0000</pubDate>
      <link>https://forem.com/al-chris/how-to-fully-integrate-coppeliasim-in-ubuntu-command-line-desktop-mdl</link>
      <guid>https://forem.com/al-chris/how-to-fully-integrate-coppeliasim-in-ubuntu-command-line-desktop-mdl</guid>
      <description>&lt;p&gt;This guide provides a complete workflow for integrating a manually downloaded &lt;strong&gt;CoppeliaSim&lt;/strong&gt; package into your Ubuntu system.&lt;br&gt;&lt;br&gt;
It covers moving it to a system-wide directory, making it runnable from the terminal, and adding a proper application launcher to your dock (taskbar).&lt;/p&gt;

&lt;p&gt;We will assume you have already downloaded and extracted the CoppeliaSim folder, for example, to&lt;br&gt;&lt;br&gt;
&lt;code&gt;~/Downloads/CoppeliaSim_Edu_V4_x_x_Ubuntu...&lt;/code&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Part 1: Move CoppeliaSim to a System-wide Location
&lt;/h2&gt;

&lt;p&gt;Using a standard location like &lt;code&gt;/usr/local&lt;/code&gt; keeps your home directory clean and is a common practice for manually installed software.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Move the Folder&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Open a terminal and move the extracted folder to &lt;code&gt;/usr/local/CoppeliaSim&lt;/code&gt;. You will need &lt;code&gt;sudo&lt;/code&gt; permissions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="c"&gt;# Adjust the source path to match your downloaded folder name&lt;/span&gt;
   &lt;span class="nb"&gt;sudo mv&lt;/span&gt; ~/Downloads/CoppeliaSim_Edu_V4_x_x_Ubuntu... /usr/local/CoppeliaSim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
`&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Adjust Ownership&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Change the ownership of the folder to your user. This allows you to run it without &lt;code&gt;sudo&lt;/code&gt; and makes it easier to manage.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   # Replace $USER with your username (or just use the $USER variable)&lt;br&gt;
   sudo chown -R $USER:$USER /usr/local/CoppeliaSim&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 2: Set Up Command-Line Access
&lt;/h2&gt;

&lt;p&gt;This allows you to type &lt;code&gt;coppeliasim&lt;/code&gt; in your terminal to launch the application from any directory.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create a Symbolic Link&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Link the executable script to a location in your system's PATH.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   sudo ln -s /usr/local/CoppeliaSim/coppeliaSim.sh /usr/local/bin/coppeliasim&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can now test this by typing:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   coppeliasim&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;(Optional) Set Environment Variable&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some integrations (like ROS or Python APIs) expect a &lt;code&gt;COPPELIASIM_ROOT&lt;/code&gt; environment variable.&lt;br&gt;
   Add this to your shell configuration file (e.g., &lt;code&gt;~/.bashrc&lt;/code&gt; or &lt;code&gt;~/.zshrc&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   echo 'export COPPELIASIM_ROOT=/usr/local/CoppeliaSim' &amp;gt;&amp;gt; ~/.bashrc&lt;br&gt;
   # Apply the changes to your current terminal session&lt;br&gt;
   source ~/.bashrc&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 3: Create a Desktop Launcher (Dock Icon)
&lt;/h2&gt;

&lt;p&gt;This creates a clickable icon in your &lt;strong&gt;Show Applications&lt;/strong&gt; menu, which you can then pin to your dock.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3.1: Download and Place a Logo
&lt;/h3&gt;

&lt;p&gt;The default &lt;code&gt;.desktop&lt;/code&gt; file may not have a high-quality icon. We can download one and place it in the installation directory.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Download the Logo&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   wget -O ~/Downloads/logo.png https://user-images.githubusercontent.com/8070210/114549467-5793d900-9c61-11eb-88f2-24996a6c03e6.png&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create the Icon Folder&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We'll place the logo inside the &lt;code&gt;helpFiles&lt;/code&gt; directory. The &lt;code&gt;-p&lt;/code&gt; flag creates parent directories if needed.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   sudo mkdir -p /usr/local/CoppeliaSim/helpFiles&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Move and Secure the Logo&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   sudo mv ~/Downloads/logo.png /usr/local/CoppeliaSim/helpFiles/logo.png&lt;br&gt;
   sudo chown $USER:$USER /usr/local/CoppeliaSim/helpFiles/logo.png&lt;br&gt;
   sudo chmod 644 /usr/local/CoppeliaSim/helpFiles/logo.png&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3.2: Create the &lt;code&gt;.desktop&lt;/code&gt; File
&lt;/h3&gt;

&lt;p&gt;Application launchers are defined by &lt;code&gt;.desktop&lt;/code&gt; files. We will create one for the current user.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
nano ~/.local/share/applications/CoppeliaSim.desktop&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3.3: Edit the &lt;code&gt;.desktop&lt;/code&gt; File Content
&lt;/h3&gt;

&lt;p&gt;Paste the following into the editor:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;ini&lt;br&gt;
[Desktop Entry]&lt;br&gt;
Name=CoppeliaSim&lt;br&gt;
Comment=Robotics simulation software&lt;br&gt;
Exec=/usr/local/CoppeliaSim/coppeliaSim.sh&lt;br&gt;
Icon=/usr/local/CoppeliaSim/helpFiles/logo.png&lt;br&gt;
Terminal=false&lt;br&gt;
Type=Application&lt;br&gt;
Categories=Science;Education;Robotics;&lt;br&gt;
StartupWMClass=CoppeliaSim&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Field Explanations
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; The name that appears in the applications menu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exec:&lt;/strong&gt; The absolute path to the launch script.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Icon:&lt;/strong&gt; The absolute path to the icon file we just moved.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal:&lt;/strong&gt; &lt;code&gt;false&lt;/code&gt; because this is a GUI application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Categories:&lt;/strong&gt; Helps the app show up in the correct menu categories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;StartupWMClass:&lt;/strong&gt; Ensures the dock recognizes the app window correctly (prevents duplicate icons).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Save and exit nano:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;text&lt;br&gt;
Ctrl + O, Enter, Ctrl + X&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3.4: Find the Correct &lt;code&gt;StartupWMClass&lt;/code&gt; (Optional but Recommended)
&lt;/h3&gt;

&lt;p&gt;The value &lt;code&gt;CoppeliaSim&lt;/code&gt; is often correct, but this can vary.&lt;br&gt;
If you get a duplicate icon on your dock, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch CoppeliaSim:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   coppeliasim&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In another terminal, run:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   xprop | grep WM_CLASS&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Click on the running CoppeliaSim window.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The terminal will output something like:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
   WM_CLASS(STRING) = "some-string", "CoppeliaSim"&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The second value (e.g., &lt;code&gt;"CoppeliaSim"&lt;/code&gt;) is what you should use for &lt;code&gt;StartupWMClass&lt;/code&gt; in your &lt;code&gt;.desktop&lt;/code&gt; file.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Step 3.5: Make Executable and Add to Dock
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;(Optional) Make Executable&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some systems require the &lt;code&gt;.desktop&lt;/code&gt; file to be executable.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;bash&lt;br&gt;
   chmod +x ~/.local/share/applications/CoppeliaSim.desktop&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Add to Favorites (Pin to Dock)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Open the &lt;strong&gt;Show Applications&lt;/strong&gt; menu (the grid icon).&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;CoppeliaSim&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Right-click it and select &lt;strong&gt;Add to Favorites&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;You’re all set!&lt;/strong&gt;&lt;br&gt;
CoppeliaSim is now fully integrated into your Ubuntu system.&lt;/p&gt;

</description>
      <category>robotics</category>
      <category>simulation</category>
      <category>tutorial</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Managing Alembic Migrations Across Multiple Environments</title>
      <dc:creator>Chris</dc:creator>
      <pubDate>Sat, 14 Jun 2025 10:54:42 +0000</pubDate>
      <link>https://forem.com/al-chris/managing-alembic-migrations-across-multiple-environments-247m</link>
      <guid>https://forem.com/al-chris/managing-alembic-migrations-across-multiple-environments-247m</guid>
      <description>&lt;p&gt;&lt;strong&gt;Alembic&lt;/strong&gt; is a powerful tool for handling SQLAlchemy schema migrations. In real-world projects, you often need to manage separate databases for &lt;code&gt;local&lt;/code&gt;, &lt;code&gt;staging&lt;/code&gt;, and &lt;code&gt;production&lt;/code&gt; environments — each with their own migration history and configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  📁 Why Separate Environments?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local&lt;/strong&gt;: For development and testing on your machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Staging&lt;/strong&gt;: For testing production-like deployments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production&lt;/strong&gt;: The live environment serving real users.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔧 Step 1: Extend &lt;code&gt;alembic.ini&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Update your &lt;code&gt;alembic.ini&lt;/code&gt; file to define multiple environments:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="nn"&gt;[DEFAULT]&lt;/span&gt;
&lt;span class="py"&gt;prepend_sys_path&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
&lt;span class="py"&gt;version_path_separator&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;os&lt;/span&gt;

&lt;span class="nn"&gt;[alembic]&lt;/span&gt;
&lt;span class="py"&gt;script_location&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;alembic/local&lt;/span&gt;
&lt;span class="py"&gt;sqlalchemy.url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;driver://user:pass@localhost/localdb&lt;/span&gt;

&lt;span class="nn"&gt;[staging]&lt;/span&gt;
&lt;span class="py"&gt;script_location&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;alembic/staging&lt;/span&gt;
&lt;span class="py"&gt;sqlalchemy.url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;driver://user:pass@staging-server/stagingdb&lt;/span&gt;

&lt;span class="nn"&gt;[production]&lt;/span&gt;
&lt;span class="py"&gt;script_location&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;alembic/production&lt;/span&gt;
&lt;span class="py"&gt;sqlalchemy.url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;driver://user:pass@prod-server/proddb&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
`&lt;/p&gt;




&lt;h2&gt;
  
  
  📂 Step 2: Initialize Alembic Environments
&lt;/h2&gt;

&lt;p&gt;Run the following commands to create migration folders for each environment:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`bash&lt;/p&gt;

&lt;h1&gt;
  
  
  Local environment
&lt;/h1&gt;

&lt;p&gt;alembic init alembic/local&lt;/p&gt;

&lt;h1&gt;
  
  
  Staging environment
&lt;/h1&gt;

&lt;p&gt;alembic -n staging init alembic/staging&lt;/p&gt;

&lt;h1&gt;
  
  
  Production environment
&lt;/h1&gt;

&lt;p&gt;alembic -n production init alembic/production&lt;br&gt;
`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This creates a separate &lt;code&gt;env.py&lt;/code&gt; and &lt;code&gt;versions/&lt;/code&gt; directory for each environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Step 3: Create Migrations
&lt;/h2&gt;

&lt;p&gt;Autogenerate or write new migration scripts for a specific environment:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`bash&lt;/p&gt;

&lt;h1&gt;
  
  
  Local development
&lt;/h1&gt;

&lt;p&gt;alembic revision --autogenerate -m "add users table"&lt;/p&gt;

&lt;h1&gt;
  
  
  Staging
&lt;/h1&gt;

&lt;p&gt;alembic -n staging revision --autogenerate -m "add users table"&lt;/p&gt;

&lt;h1&gt;
  
  
  Production
&lt;/h1&gt;

&lt;p&gt;alembic -n production revision --autogenerate -m "add users table"&lt;br&gt;
`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⬆️ Step 4: Apply Migrations
&lt;/h2&gt;

&lt;p&gt;Apply your changes to the appropriate database:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`bash&lt;/p&gt;

&lt;h1&gt;
  
  
  Local
&lt;/h1&gt;

&lt;p&gt;alembic upgrade head&lt;/p&gt;

&lt;h1&gt;
  
  
  Staging
&lt;/h1&gt;

&lt;p&gt;alembic -n staging upgrade head&lt;/p&gt;

&lt;h1&gt;
  
  
  Production
&lt;/h1&gt;

&lt;p&gt;alembic -n production upgrade head&lt;br&gt;
`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Step 5: Check Current Revision
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`bash&lt;/p&gt;

&lt;h1&gt;
  
  
  Local
&lt;/h1&gt;

&lt;p&gt;alembic current&lt;/p&gt;

&lt;h1&gt;
  
  
  Staging
&lt;/h1&gt;

&lt;p&gt;alembic -n staging current&lt;/p&gt;

&lt;h1&gt;
  
  
  Production
&lt;/h1&gt;

&lt;p&gt;alembic -n production current&lt;br&gt;
`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Note&lt;/strong&gt;&lt;br&gt;
Ensure that each environment's &lt;code&gt;env.py&lt;/code&gt; loads the correct SQLAlchemy metadata (i.e. your models) to detect changes.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  📌 Folder Structure
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
alembic/&lt;br&gt;
├── local/&lt;br&gt;
│   ├── env.py&lt;br&gt;
│   └── versions/&lt;br&gt;
├── staging/&lt;br&gt;
│   ├── env.py&lt;br&gt;
│   └── versions/&lt;br&gt;
└── production/&lt;br&gt;
    ├── env.py&lt;br&gt;
    └── versions/&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use the &lt;code&gt;-n&lt;/code&gt; flag to isolate environments.&lt;/li&gt;
&lt;li&gt;Keep migrations separate to avoid cross-environment issues.&lt;/li&gt;
&lt;li&gt;Always test in local and staging before applying to production.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>alembic</category>
      <category>migrations</category>
    </item>
  </channel>
</rss>
