<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.datasparked.com//feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.datasparked.com//" rel="alternate" type="text/html" /><updated>2026-07-15T11:51:03-04:00</updated><id>https://www.datasparked.com//feed.xml</id><title type="html">Data Sparked</title><subtitle>A blog on applied machine learning and data science.</subtitle><author><name>Pierre Aumjaud</name></author><entry><title type="html">The Ultimate Tech Stack Guide 2026</title><link href="https://www.datasparked.com//tech/Tech-stack-guide/" rel="alternate" type="text/html" title="The Ultimate Tech Stack Guide 2026" /><published>2025-11-14T00:00:00-05:00</published><updated>2025-11-14T00:00:00-05:00</updated><id>https://www.datasparked.com//tech/Tech-stack-guide</id><content type="html" xml:base="https://www.datasparked.com//tech/Tech-stack-guide/"><![CDATA[<p>In today’s rapidly evolving technology landscape, choosing the right tools can make or break your project’s success. With over 200 powerful tools across 13 categories, developers and teams face an overwhelming array of options. This comprehensive guide analyzes the entire tech ecosystem to help you make informed decisions, optimize workflows, and build scalable, maintainable solutions.</p>

<p><strong>Why This Guide Matters</strong></p>

<ul>
  <li><strong>Time Savings</strong>: Eliminate 100+ hours of research and trial-and-error</li>
  <li><strong>Strategic Decisions</strong>: Choose tools that scale with your growth</li>
  <li><strong>Cost Optimization</strong>: Balance open-source vs commercial solutions</li>
  <li><strong>Future-Proofing</strong>: Select technologies with strong community momentum</li>
  <li><strong>Integration Success</strong>: Build cohesive ecosystems rather than tool silos</li>
</ul>

<h2 id="1-programming-languages">1. Programming Languages</h2>

<p>Programming languages form the foundation of your entire tech stack. The right choice impacts everything from development speed to performance to hiring capabilities.</p>

<h3 id="key-trends">Key Trends</h3>

<ul>
  <li><strong>Rust</strong> and <strong>TypeScript</strong> show strongest growth momentum</li>
  <li><strong>Python</strong> dominates data science and ML ecosystems</li>
  <li><strong>JavaScript</strong> ecosystem continues fragmenting (Node.js, Deno, Bun)</li>
  <li><strong>Go</strong> increasingly preferred for cloud-native applications</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://go.dev">Go</a></td>
      <td>Google</td>
      <td>Compiled</td>
      <td>Yes</td>
      <td>Statically typed, compiled language designed for scalability and performance</td>
    </tr>
    <tr>
      <td><a href="https://www.rust-lang.org">Rust</a></td>
      <td>Mozilla</td>
      <td>Compiled</td>
      <td>Yes</td>
      <td>Systems programming language focused on memory safety and concurrency</td>
    </tr>
    <tr>
      <td><a href="https://en.cppreference.com">C</a></td>
      <td>Dennis Ritchie</td>
      <td>Compiled</td>
      <td>Yes</td>
      <td>Low-level systems programming language foundation for many modern languages</td>
    </tr>
    <tr>
      <td><a href="https://en.cppreference.com/w/cpp">C++</a></td>
      <td>Bjarne Stroustrup</td>
      <td>Compiled</td>
      <td>Yes</td>
      <td>Extension of C with object-oriented and generic programming features</td>
    </tr>
    <tr>
      <td><a href="https://kotlinlang.org">Kotlin</a></td>
      <td>JetBrains</td>
      <td>Compiled</td>
      <td>Yes</td>
      <td>Modern language targeting JVM, Android, and native compilation</td>
    </tr>
    <tr>
      <td><a href="https://www.swift.org">Swift</a></td>
      <td>Apple</td>
      <td>Compiled</td>
      <td>Yes</td>
      <td>Powerful and intuitive programming language for iOS, macOS, and other Apple platforms</td>
    </tr>
    <tr>
      <td><a href="https://julialang.org">Julia</a></td>
      <td>Jeff Bezanson et al.</td>
      <td>Compiled</td>
      <td>Yes</td>
      <td>High-level, high-performance language for technical computing</td>
    </tr>
    <tr>
      <td><a href="https://www.scala-lang.org">Scala</a></td>
      <td>Martin Odersky</td>
      <td>Compiled</td>
      <td>Yes</td>
      <td>Hybrid functional and object-oriented language running on JVM</td>
    </tr>
    <tr>
      <td><a href="https://dart.dev">Dart</a></td>
      <td>Google</td>
      <td>Compiled</td>
      <td>Yes</td>
      <td>Client-optimized language for web and mobile app development</td>
    </tr>
    <tr>
      <td><a href="https://www.oracle.com/java">Java</a></td>
      <td>James Gosling (Sun/Oracle)</td>
      <td>Compiled</td>
      <td>No</td>
      <td>Platform-independent object-oriented language with massive ecosystem</td>
    </tr>
    <tr>
      <td><a href="https://learn.microsoft.com/dotnet/csharp">C#</a></td>
      <td>Microsoft</td>
      <td>Compiled</td>
      <td>No</td>
      <td>Modern, object-oriented language for .NET ecosystem</td>
    </tr>
    <tr>
      <td><a href="https://www.php.net">PHP</a></td>
      <td>Rasmus Lerdorf</td>
      <td>Interpreted</td>
      <td>Yes</td>
      <td>Server-side scripting language primarily for web development</td>
    </tr>
    <tr>
      <td><a href="https://www.ruby-lang.org">Ruby</a></td>
      <td>Yukihiro Matsumoto</td>
      <td>Interpreted</td>
      <td>Yes</td>
      <td>Dynamic, object-oriented language focused on simplicity and productivity</td>
    </tr>
    <tr>
      <td><a href="https://www.python.org">Python</a></td>
      <td>Guido van Rossum</td>
      <td>Interpreted</td>
      <td>Yes</td>
      <td>High-level, general-purpose programming language known for simplicity and extensive libraries</td>
    </tr>
    <tr>
      <td><a href="https://www.r-project.org">R</a></td>
      <td>Ross Ihaka &amp; Robert Gentleman</td>
      <td>Interpreted</td>
      <td>Yes</td>
      <td>Programming language and environment for statistical computing and graphics</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/docs/Web/JavaScript">JavaScript</a></td>
      <td>Brendan Eich</td>
      <td>Interpreted</td>
      <td>Yes</td>
      <td>Core language of the web for interactive client-side functionality</td>
    </tr>
    <tr>
      <td><a href="https://www.typescriptlang.org">TypeScript</a></td>
      <td>Microsoft</td>
      <td>Interpreted</td>
      <td>Yes</td>
      <td>JavaScript superset adding static types and modern features</td>
    </tr>
  </tbody>
</table>

<h3 id="recommendations">Recommendations</h3>

<ul>
  <li><strong>Web Development</strong>: TypeScript, JavaScript, Go</li>
  <li><strong>Data Science</strong>: Python, R, Julia</li>
  <li><strong>Mobile</strong>: Swift (iOS), Kotlin (Android), Dart (Flutter)</li>
  <li><strong>Systems Programming</strong>: Rust, C++, Go</li>
  <li><strong>Enterprise</strong>: Java, C#, TypeScript</li>
</ul>

<hr />

<h2 id="2-front-end-development">2. Front End Development</h2>

<p>Front-end development has evolved dramatically from simple HTML/CSS to complex component-based architectures with build tools, state management, and optimization requirements.</p>

<h3 id="key-trends-1">Key Trends</h3>

<ul>
  <li><strong>React</strong> maintains dominance but faces competition from <strong>Vue.js</strong> and <strong>Svelte</strong></li>
  <li><strong>TypeScript</strong> adoption exceeds 80% for new enterprise projects</li>
  <li><strong>Build tools</strong>: <strong>Vite</strong> rapidly displaces Webpack for new projects</li>
  <li><strong>CSS frameworks</strong>: Utility-first approach (Tailwind) beats component libraries</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://developer.mozilla.org/docs/Web/HTML">HTML</a></td>
      <td>W3C</td>
      <td>Markup language</td>
      <td>Yes</td>
      <td>Standard markup language for structuring web content</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/docs/Web/CSS">CSS</a></td>
      <td>W3C</td>
      <td>Stylesheet language</td>
      <td>Yes</td>
      <td>Stylesheet language for styling web content</td>
    </tr>
    <tr>
      <td><a href="https://sass-lang.com">Sass</a></td>
      <td>Hampton Catlin</td>
      <td>CSS preprocessor</td>
      <td>Yes</td>
      <td>CSS preprocessor with variables, mixins, and functions</td>
    </tr>
    <tr>
      <td><a href="https://tailwindcss.com">Tailwind CSS</a></td>
      <td>Tailwind Labs</td>
      <td>CSS framework</td>
      <td>Yes</td>
      <td>Utility-first CSS framework for rapid UI development</td>
    </tr>
    <tr>
      <td><a href="https://getbootstrap.com">Bootstrap</a></td>
      <td>Bootstrap Team</td>
      <td>CSS framework</td>
      <td>Yes</td>
      <td>Popular responsive CSS framework with pre-built components</td>
    </tr>
    <tr>
      <td><a href="https://react.dev">React</a></td>
      <td>Meta</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Most popular component-based library for building user interfaces</td>
    </tr>
    <tr>
      <td><a href="https://angular.dev">Angular</a></td>
      <td>Google</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Comprehensive framework for building large-scale applications</td>
    </tr>
    <tr>
      <td><a href="https://vuejs.org">Vue.js</a></td>
      <td>Evan You</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Progressive framework known for gentle learning curve</td>
    </tr>
    <tr>
      <td><a href="https://nextjs.org">Next.js</a></td>
      <td>Vercel</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>React framework with server-side rendering and routing</td>
    </tr>
    <tr>
      <td><a href="https://www.solidjs.com">solid.js</a></td>
      <td>Ryan Carniato</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Performant reactive library with fine-grained reactivity</td>
    </tr>
    <tr>
      <td><a href="https://astro.build">Astro</a></td>
      <td>Astro Team</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Multi-framework site builder focused on performance</td>
    </tr>
    <tr>
      <td><a href="https://qwik.builder.io">Qwik</a></td>
      <td>Builder.io</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Resumable framework with instant-on applications</td>
    </tr>
    <tr>
      <td><a href="https://alpinejs.dev">Alpine.js</a></td>
      <td>Caleb Porzio</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Lightweight framework for adding interactivity to markup</td>
    </tr>
    <tr>
      <td><a href="https://stenciljs.com">Stencil.js</a></td>
      <td>Ionic Team</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Compiler for building reusable, scalable component libraries</td>
    </tr>
    <tr>
      <td><a href="https://remix.run">Remix</a></td>
      <td>Shopify</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Full-stack web framework focused on web fundamentals</td>
    </tr>
    <tr>
      <td><a href="https://waku.dev">Waku</a></td>
      <td>Dai Shi</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Minimal React framework for building websites</td>
    </tr>
    <tr>
      <td><a href="https://svelte.dev/">svelte</a></td>
      <td>Rich Harris</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Compiler that turns components into efficient JavaScript</td>
    </tr>
    <tr>
      <td><a href="https://htmx.org/">htmx</a></td>
      <td>Carson Gross</td>
      <td>Front-end framework</td>
      <td>Yes</td>
      <td>Library that allows access to browser features directly from HTML</td>
    </tr>
    <tr>
      <td><a href="https://redux.js.org">Redux</a></td>
      <td>Dan Abramov</td>
      <td>State management</td>
      <td>Yes</td>
      <td>Predictable state container for JavaScript apps</td>
    </tr>
    <tr>
      <td><a href="https://vite.dev/">Vite</a></td>
      <td>Evan You</td>
      <td>Build tool</td>
      <td>Yes</td>
      <td>Fast build tool and development server</td>
    </tr>
    <tr>
      <td><a href="https://playwright.dev/">Playwright</a></td>
      <td>Microsoft</td>
      <td>Testing framework</td>
      <td>Yes</td>
      <td>End-to-end testing framework for modern web apps</td>
    </tr>
  </tbody>
</table>

<h3 id="recommendations-1">Recommendations</h3>

<ul>
  <li><strong>Large Enterprise</strong>: Angular, React + TypeScript</li>
  <li><strong>Startups/SMEs</strong>: Vue.js, Svelte, React</li>
  <li><strong>Performance Critical</strong>: Svelte, Solid.js, Qwik</li>
  <li><strong>SEO-Focused</strong>: Next.js, Astro, Remix</li>
  <li><strong>Rapid Prototyping</strong>: Alpine.js, htmx</li>
</ul>

<hr />

<h2 id="3-back-end-development">3. Back End Development</h2>

<p>Backend technologies power your application logic, data processing, and API integrations. The choice impacts scalability, security, and development speed.</p>

<h3 id="key-trends-2">Key Trends</h3>

<ul>
  <li><strong>APIs</strong>: GraphQL gaining ground but REST remains dominant</li>
  <li><strong>Runtimes</strong>: <strong>Bun</strong> challenging Node.js for performance</li>
  <li><strong>Python</strong>: Django vs FastAPI decision for new projects</li>
  <li><strong>JavaScript</strong>: Express.js vs Nest.js architectural preferences</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://developer.mozilla.org/docs/Web/JavaScript">JavaScript</a></td>
      <td>Brendan Eich</td>
      <td>Programming language</td>
      <td>Yes</td>
      <td>Core language of the web for server and client-side development</td>
    </tr>
    <tr>
      <td><a href="https://www.typescriptlang.org">TypeScript</a></td>
      <td>Microsoft</td>
      <td>JavaScript superset</td>
      <td>Yes</td>
      <td>JavaScript with static typing and modern features</td>
    </tr>
    <tr>
      <td><a href="https://nodejs.org">Node.js</a></td>
      <td>OpenJS Foundation</td>
      <td>JavaScript runtime</td>
      <td>Yes</td>
      <td>Server-side JavaScript runtime for building scalable network applications</td>
    </tr>
    <tr>
      <td><a href="https://bun.sh">Bun</a></td>
      <td>Jarred Sumner</td>
      <td>JavaScript runtime</td>
      <td>Yes</td>
      <td>All-in-one JavaScript runtime, bundler, test runner, and package manager</td>
    </tr>
    <tr>
      <td><a href="https://deno.com/">Deno</a></td>
      <td>Deno Land (Ryan Dahl)</td>
      <td>JavaScript runtime</td>
      <td>Yes</td>
      <td>Secure JavaScript and TypeScript runtime with built-in tooling</td>
    </tr>
    <tr>
      <td><a href="https://webassembly.org/">WebAssembly</a></td>
      <td>W3C</td>
      <td>Compilation target</td>
      <td>Yes</td>
      <td>Binary instruction format for high-performance web applications</td>
    </tr>
    <tr>
      <td><a href="https://www.djangoproject.com">Django</a></td>
      <td>Django Software Foundation</td>
      <td>Python backend framework</td>
      <td>Yes</td>
      <td>High-level Python framework encouraging rapid development and clean design</td>
    </tr>
    <tr>
      <td><a href="https://flask.palletsprojects.com">Flask</a></td>
      <td>Armin Ronacher</td>
      <td>Python backend framework</td>
      <td>Yes</td>
      <td>Lightweight Python framework for building web applications</td>
    </tr>
    <tr>
      <td><a href="https://fastapi.tiangolo.com">FastAPI</a></td>
      <td>Sebastián Ramírez</td>
      <td>Python backend framework</td>
      <td>Yes</td>
      <td>Modern, fast web framework for building APIs with Python</td>
    </tr>
    <tr>
      <td><a href="https://www.starlette.io">Starlette</a></td>
      <td>Tom Christie</td>
      <td>Python backend framework</td>
      <td>Yes</td>
      <td>ASGI framework for building high-performance async services</td>
    </tr>
    <tr>
      <td><a href="https://rubyonrails.org">Ruby on Rails</a></td>
      <td>David Heinemeier Hansson</td>
      <td>Ruby backend framework</td>
      <td>Yes</td>
      <td>Convention-over-configuration web framework with batteries included</td>
    </tr>
    <tr>
      <td><a href="https://expressjs.com">Express.js</a></td>
      <td>TJ Holowaychuk</td>
      <td>Node.js backend framework</td>
      <td>Yes</td>
      <td>Fast, unopinionated, minimalist web framework for Node.js</td>
    </tr>
    <tr>
      <td><a href="https://nestjs.com/">NestJS</a></td>
      <td>Kamil Myśliwiec</td>
      <td>Node.js backend framework</td>
      <td>Yes</td>
      <td>Progressive Node.js framework for building efficient server-side apps</td>
    </tr>
    <tr>
      <td><a href="https://www.fastify.io">Fastify</a></td>
      <td>Matteo Collina</td>
      <td>Node.js backend framework</td>
      <td>Yes</td>
      <td>Fast and low-overhead web framework for Node.js</td>
    </tr>
    <tr>
      <td><a href="https://laravel.com">Laravel</a></td>
      <td>Taylor Otwell</td>
      <td>PHP backend framework</td>
      <td>Yes</td>
      <td>Elegant PHP web framework with expressive syntax</td>
    </tr>
    <tr>
      <td><a href="https://trpc.io">tRPC</a></td>
      <td>Prisma Labs</td>
      <td>API framework</td>
      <td>Yes</td>
      <td>End-to-end typesafe APIs for TypeScript and JavaScript</td>
    </tr>
    <tr>
      <td><a href="https://jquery.com">jQuery</a></td>
      <td>John Resig</td>
      <td>JavaScript library</td>
      <td>Yes</td>
      <td>Fast, small, and feature-rich JavaScript library (legacy)</td>
    </tr>
    <tr>
      <td><a href="https://firebase.google.com">Firebase</a></td>
      <td>Google</td>
      <td>Backend service</td>
      <td>No</td>
      <td>Comprehensive app development platform with real-time database</td>
    </tr>
    <tr>
      <td><a href="https://supabase.com">Supabase</a></td>
      <td>Supabase</td>
      <td>Backend service</td>
      <td>Freemium</td>
      <td>Open-source Firebase alternative with PostgreSQL</td>
    </tr>
    <tr>
      <td><a href="https://nginx.org">Nginx</a></td>
      <td>Igor Sysoev</td>
      <td>Web server</td>
      <td>Yes</td>
      <td>High-performance HTTP server and reverse proxy</td>
    </tr>
  </tbody>
</table>

<h3 id="recommendations-2">Recommendations</h3>

<ul>
  <li><strong>REST APIs</strong>: Express.js, FastAPI, Django REST Framework</li>
  <li><strong>GraphQL</strong>: Apollo Server, tRPC, NestJS GraphQL</li>
  <li><strong>Microservices</strong>: Fastify, Starlette, Go-based services</li>
  <li><strong>Real-time</strong>: Firebase, Socket.io, WebSockets</li>
  <li><strong>Serverless</strong>: Vercel Functions, AWS Lambda, Firebase Functions</li>
</ul>

<hr />

<h2 id="4-full-stack-solutions">4. Full Stack Solutions</h2>

<p>Full-stack solutions provide end-to-end development capabilities, from database to deployment, often with integrated tooling and reduced complexity.</p>

<h3 id="key-trends-3">Key Trends</h3>

<ul>
  <li><strong>Headless CMS</strong>: Gaining momentum over traditional CMS</li>
  <li><strong>Website Builders</strong>: No-code solutions competing with custom development</li>
  <li><strong>E-commerce</strong>: Shopify dominance vs custom solutions</li>
  <li><strong>API-first</strong>: Separation of frontend/backend concerns</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://wikitia.com/wiki/MERN_(solution_stack)">MERN</a></td>
      <td>Community</td>
      <td>Solution stack</td>
      <td>Yes</td>
      <td>MongoDB, Express.js, React.js, Node.js JavaScript stack</td>
    </tr>
    <tr>
      <td><a href="https://en.wikipedia.org/wiki/MEAN_(solution_stack)">MEAN</a></td>
      <td>Community</td>
      <td>Solution stack</td>
      <td>Yes</td>
      <td>MongoDB, Express.js, Angular.js, Node.js JavaScript stack</td>
    </tr>
    <tr>
      <td><a href="https://www.geeksforgeeks.org/node-js/what-is-mevn-stack/">MEVN</a></td>
      <td>Community</td>
      <td>Solution stack</td>
      <td>Yes</td>
      <td>MongoDB, Express.js, Vue.js, Node.js JavaScript stack</td>
    </tr>
    <tr>
      <td><a href="https://restfulapi.net/">RESTful</a></td>
      <td>Roy Fielding</td>
      <td>API architecture</td>
      <td>Yes</td>
      <td>Architectural style for designing networked applications</td>
    </tr>
    <tr>
      <td><a href="https://graphql.org">GraphQL</a></td>
      <td>Meta</td>
      <td>API architecture</td>
      <td>Yes</td>
      <td>Query language and runtime for APIs with flexible data fetching</td>
    </tr>
    <tr>
      <td><a href="https://grpc.io">gRPC</a></td>
      <td>Google</td>
      <td>API architecture</td>
      <td>Yes</td>
      <td>High-performance RPC framework for connecting services</td>
    </tr>
    <tr>
      <td><a href="https://www.w3.org/TR/soap/">SOAP</a></td>
      <td>W3C</td>
      <td>API Protocol</td>
      <td>Yes</td>
      <td>API Protocol for exchanging structured information in web services</td>
    </tr>
    <tr>
      <td><a href="https://developer.mozilla.org/docs/Web/API/WebSockets_API">WebSocket</a></td>
      <td>W3C</td>
      <td>API protocol</td>
      <td>Yes</td>
      <td>Communication protocol providing full-duplex communication channels</td>
    </tr>
    <tr>
      <td><a href="https://www.redhat.com/en/topics/automation/what-is-a-webhook">Webhook</a></td>
      <td>Jeff Lindsay</td>
      <td>Integration method</td>
      <td>Yes</td>
      <td>Automated message sent from one app to another via HTTP POST</td>
    </tr>
    <tr>
      <td><a href="https://webflow.com">Webflow</a></td>
      <td>Vlad Magdalin</td>
      <td>Website builder</td>
      <td>No</td>
      <td>Visual website builder with CMS and hosting capabilities</td>
    </tr>
    <tr>
      <td><a href="https://wordpress.org">WordPress</a></td>
      <td>Matt Mullenweg</td>
      <td>Content Management System</td>
      <td>Yes</td>
      <td>Open-source content management system for websites and blogs</td>
    </tr>
    <tr>
      <td><a href="https://elementor.com">Elementor</a></td>
      <td>Yoni Wieselmann</td>
      <td>Website builder</td>
      <td>Freemium</td>
      <td>WordPress page builder with drag-and-drop interface</td>
    </tr>
    <tr>
      <td><a href="https://teleporthq.io">TeleportHQ</a></td>
      <td>TeleportHQ</td>
      <td>Website builder</td>
      <td>Freemium</td>
      <td>Open-source low-code platform for web development</td>
    </tr>
    <tr>
      <td><a href="https://bootstrapstudio.io">Bootstrap Studio</a></td>
      <td>Zine Ecosystem</td>
      <td>Website builder</td>
      <td>No</td>
      <td>Desktop app for creating Bootstrap-based websites</td>
    </tr>
    <tr>
      <td><a href="https://builder.io">Builder.io</a></td>
      <td>Builder.io</td>
      <td>Website builder</td>
      <td>Freemium</td>
      <td>Headless CMS for visual content creation across platforms</td>
    </tr>
    <tr>
      <td><a href="https://www.wix.com">Wix</a></td>
      <td>Avishai Abrahami</td>
      <td>Website builder</td>
      <td>No</td>
      <td>Cloud-based website development platform for businesses</td>
    </tr>
    <tr>
      <td><a href="https://www.squarespace.com">Squarespace</a></td>
      <td>Anthony Casalena</td>
      <td>Website builder</td>
      <td>No</td>
      <td>Website builder focused on design and e-commerce</td>
    </tr>
    <tr>
      <td><a href="https://shuffle.dev">Shuffle.dev</a></td>
      <td>Shuffle Labs</td>
      <td>Website builder</td>
      <td>Freemium</td>
      <td>Open-source low-code tool for building web applications</td>
    </tr>
    <tr>
      <td><a href="https://www.shopify.com">Shopify</a></td>
      <td>Tobi Lütke</td>
      <td>E-commerce platform</td>
      <td>No</td>
      <td>Complete e-commerce platform for online stores</td>
    </tr>
  </tbody>
</table>

<h3 id="recommendations-3">Recommendations</h3>

<ul>
  <li><strong>JavaScript Ecosystem</strong>: MERN, MEVN, MEAN (choose based on frontend preference)</li>
  <li><strong>Content-Heavy</strong>: WordPress, Webflow, headless CMS with frontend frameworks</li>
  <li><strong>E-commerce</strong>: Shopify (rapid) vs custom (flexible)</li>
  <li><strong>API Design</strong>: REST (simple) vs GraphQL (flexible) vs gRPC (performance)</li>
  <li><strong>Rapid Development</strong>: No-code builders vs custom development</li>
</ul>

<hr />

<h2 id="5-mobile-development">5. Mobile Development</h2>

<p>Mobile development encompasses native platforms, cross-platform solutions, and progressive web apps. The choice affects reach, performance, and development complexity.</p>

<h3 id="key-trends-4">Key Trends</h3>

<ul>
  <li><strong>React Native</strong> vs <strong>Flutter</strong>: Major cross-platform battle continues</li>
  <li><strong>Progressive Web Apps</strong>: Gaining capabilities, closing gap with native</li>
  <li><strong>Native Development</strong>: Still preferred for performance-critical apps</li>
  <li><strong>Low-code Mobile</strong>: Emerging category for simple applications</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://developer.android.com">Android</a></td>
      <td>Google</td>
      <td>Mobile OS</td>
      <td>Yes</td>
      <td>Open-source operating system for mobile devices</td>
    </tr>
    <tr>
      <td><a href="https://kotlinlang.org">Kotlin</a></td>
      <td>JetBrains</td>
      <td>Android</td>
      <td>Yes</td>
      <td>Modern programming language for Android development</td>
    </tr>
    <tr>
      <td><a href="https://en.wikipedia.org/wiki/IOS">iOS</a></td>
      <td>Apple</td>
      <td>Mobile OS</td>
      <td>No</td>
      <td>Operating system for Apple mobile devices</td>
    </tr>
    <tr>
      <td><a href="https://www.swift.org">Swift</a></td>
      <td>Apple</td>
      <td>iOS</td>
      <td>Yes</td>
      <td>Powerful programming language for iOS, macOS, and Apple platforms</td>
    </tr>
    <tr>
      <td><a href="https://reactnative.dev">React Native</a></td>
      <td>Meta</td>
      <td>Cross-platform framework</td>
      <td>Yes</td>
      <td>Build native mobile apps using React</td>
    </tr>
    <tr>
      <td><a href="https://flutter.dev">Flutter</a></td>
      <td>Google</td>
      <td>Cross-platform framework</td>
      <td>Yes</td>
      <td>UI toolkit for building beautiful, natively compiled applications</td>
    </tr>
    <tr>
      <td><a href="https://expo.dev">Expo</a></td>
      <td>Expo Team</td>
      <td>Cross-platform framework</td>
      <td>Freemium</td>
      <td>Platform and framework for universal React applications</td>
    </tr>
    <tr>
      <td><a href="https://ionicframework.com">Ionic</a></td>
      <td>Ionic Team</td>
      <td>Cross-platform framework</td>
      <td>Yes</td>
      <td>Build cross-platform mobile apps with web technologies</td>
    </tr>
    <tr>
      <td><a href="https://dotnet.microsoft.com/en-us/apps/maui">.NET MAUI</a></td>
      <td>Microsoft</td>
      <td>Cross-platform framework</td>
      <td>Yes</td>
      <td>Multi-platform app UI framework for building Android, iOS, and desktop apps with C#</td>
    </tr>
    <tr>
      <td><a href="https://dotnet.microsoft.com/en-us/">.NET</a></td>
      <td>Microsoft</td>
      <td>Cross-platform framework</td>
      <td>Yes</td>
      <td>Cross-platform development platform for building various types of applications</td>
    </tr>
  </tbody>
</table>

<h3 id="mobile-development-recommendations">Mobile development recommendations</h3>

<ul>
  <li><strong>Native Performance</strong>: Swift (iOS), Kotlin (Android)</li>
  <li><strong>Code Reuse</strong>: React Native (JavaScript), Flutter (Dart)</li>
  <li><strong>Rapid Development</strong>: Expo (React Native), Ionic (Web tech)</li>
  <li><strong>Enterprise</strong>: Native development + .NET MAUI (C# / .NET)</li>
  <li><strong>Simple Apps</strong>: Progressive Web Apps + React Native</li>
</ul>

<hr />

<h2 id="6-databases">6. Databases</h2>

<p>Database selection impacts performance, scalability, data modeling, and development complexity. The landscape now includes traditional relational, NoSQL, and vector databases for AI applications.</p>

<h3 id="key-trends-5">Key Trends</h3>

<ul>
  <li><strong>Vector Databases</strong>: Essential for AI/ML applications</li>
  <li><strong>Serverless</strong>: PlanetScale, Neon leading the shift</li>
  <li><strong>Multi-model</strong>: Databases supporting multiple query patterns</li>
  <li><strong>PostgreSQL</strong>: Becoming the default choice for new projects</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://en.wikipedia.org/wiki/SQL">SQL</a></td>
      <td>IBM</td>
      <td>Query language</td>
      <td>Yes</td>
      <td>Standard language for managing relational databases</td>
    </tr>
    <tr>
      <td><a href="https://www.postgresql.org">PostgreSQL</a></td>
      <td>PostgreSQL Global Development Group</td>
      <td>Relational database</td>
      <td>Yes</td>
      <td>Advanced open-source relational database with extensive features</td>
    </tr>
    <tr>
      <td><a href="https://www.mysql.com">MySQL</a></td>
      <td>Oracle</td>
      <td>Relational database</td>
      <td>Yes</td>
      <td>Popular open-source relational database for web applications</td>
    </tr>
    <tr>
      <td><a href="https://mariadb.org">MariaDB</a></td>
      <td>MariaDB Foundation</td>
      <td>Relational database</td>
      <td>Yes</td>
      <td>Community-developed fork of MySQL with enhanced features and performance</td>
    </tr>
    <tr>
      <td><a href="https://www.sqlite.org">SQLite</a></td>
      <td>D. Richard Hipp</td>
      <td>Relational database</td>
      <td>Yes</td>
      <td>Serverless, self-contained relational database engine</td>
    </tr>
    <tr>
      <td><a href="https://duckdb.org">DuckDB</a></td>
      <td>DuckDB Labs</td>
      <td>Relational database</td>
      <td>Yes</td>
      <td>In-process SQL OLAP database management system</td>
    </tr>
    <tr>
      <td><a href="https://clickhouse.com/">ClickHouse</a></td>
      <td>ClickHouse Inc.</td>
      <td>Relational database</td>
      <td>Yes</td>
      <td>Columnar database management system for online analytical processing (OLAP) with real-time query performance</td>
    </tr>
    <tr>
      <td><a href="https://www.cockroachlabs.com/">CockroachDB</a></td>
      <td>Cockroach Labs</td>
      <td>Relational database</td>
      <td>Yes</td>
      <td>Distributed SQL database designed for cloud applications</td>
    </tr>
    <tr>
      <td><a href="https://www.microsoft.com/sql-server">Microsoft SQL Server</a></td>
      <td>Microsoft</td>
      <td>Relational database</td>
      <td>No</td>
      <td>Enterprise-grade relational database management system</td>
    </tr>
    <tr>
      <td><a href="https://www.sqlalchemy.org">SQLAlchemy</a></td>
      <td>Michael Bayer</td>
      <td>ORM</td>
      <td>Yes</td>
      <td>Python SQL toolkit and Object Relational Mapper</td>
    </tr>
    <tr>
      <td><a href="https://www.oracle.com/database/">Oracle Database</a></td>
      <td>Oracle</td>
      <td>Relational database</td>
      <td>No</td>
      <td>Enterprise relational database management system</td>
    </tr>
    <tr>
      <td><a href="https://planetscale.com">PlanetScale</a></td>
      <td>PlanetScale</td>
      <td>Relational database</td>
      <td>Freemium</td>
      <td>MySQL-compatible serverless database platform</td>
    </tr>
    <tr>
      <td><a href="https://neon.tech">Neon</a></td>
      <td>Neon</td>
      <td>Relational database</td>
      <td>Freemium</td>
      <td>Serverless PostgreSQL platform for modern applications</td>
    </tr>
    <tr>
      <td><a href="https://www.mongodb.com">MongoDB</a></td>
      <td>MongoDB Inc.</td>
      <td>NoSQL document database</td>
      <td>Yes</td>
      <td>NoSQL document database with flexible schema</td>
    </tr>
    <tr>
      <td><a href="https://www.elastic.co/elasticsearch">Elasticsearch</a></td>
      <td>Elastic</td>
      <td>NoSQL search engine</td>
      <td>Yes</td>
      <td>Distributed search and analytics engine</td>
    </tr>
    <tr>
      <td><a href="https://cassandra.apache.org">Cassandra</a></td>
      <td>Apache</td>
      <td>Wide-column NoSQL database</td>
      <td>Yes</td>
      <td>Distributed NoSQL database for large-scale data</td>
    </tr>
    <tr>
      <td><a href="https://www.pinecone.io">Pinecone</a></td>
      <td>Pinecone Systems</td>
      <td>Vector database</td>
      <td>No</td>
      <td>Managed vector database for AI applications</td>
    </tr>
    <tr>
      <td><a href="https://weaviate.io">Weaviate</a></td>
      <td>Weaviate</td>
      <td>Vector database</td>
      <td>Yes</td>
      <td>Open-source vector database for semantic search</td>
    </tr>
    <tr>
      <td><a href="https://upstash.com">Upstash</a></td>
      <td>Upstash</td>
      <td>Vector database</td>
      <td>Freemium</td>
      <td>Serverless vector database with Redis compatibility</td>
    </tr>
    <tr>
      <td><a href="https://www.prisma.io">Prisma</a></td>
      <td>Prisma</td>
      <td>Database tooling</td>
      <td>Freemium</td>
      <td>Next-generation ORM for Node.js and TypeScript</td>
    </tr>
  </tbody>
</table>

<h3 id="databases-recommendations">Databases recommendations</h3>

<ul>
  <li><strong>Traditional Applications</strong>: PostgreSQL, MySQL, SQLite</li>
  <li><strong>AI/ML Applications</strong>: Pinecone, Weaviate, PostgreSQL with pgvector</li>
  <li><strong>Real-time Analytics</strong>: Elasticsearch, DuckDB, ClickHouse</li>
  <li><strong>Distributed Systems</strong>: CockroachDB, Cassandra</li>
  <li><strong>Mobile/IoT</strong>: SQLite, DuckDB</li>
  <li><strong>Rapid Development</strong>: Supabase, PlanetScale, Neon</li>
  <li><strong>Object Mapping</strong>: Prisma (TypeScript), SQLAlchemy (Python)</li>
</ul>

<hr />

<h2 id="7-data-formats">7. Data Formats</h2>

<p>Data formats determine how information is stored, transmitted, and processed. The right choice impacts performance, compatibility, and development complexity.</p>

<h3 id="format-selection-criteria">Format selection criteria</h3>

<ul>
  <li><strong>Human Readability</strong>: JSON, YAML, CSV vs binary formats</li>
  <li><strong>Performance</strong>: Binary formats (Parquet, Avro) vs text-based</li>
  <li><strong>Schema Evolution</strong>: Protocol Buffers, Avro vs static schemas</li>
  <li><strong>Ecosystem Support</strong>: Community adoption and tool compatibility</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://en.wikipedia.org/wiki/Comma-separated_values">CSV</a></td>
      <td>Community</td>
      <td>Text-based</td>
      <td>Yes</td>
      <td>Comma-separated values format for tabular data</td>
    </tr>
    <tr>
      <td><a href="https://www.json.org">JSON</a></td>
      <td>Douglas Crockford</td>
      <td>Text-based</td>
      <td>Yes</td>
      <td>Lightweight data-interchange format for humans and machines</td>
    </tr>
    <tr>
      <td><a href="https://www.w3.org/XML">XML</a></td>
      <td>W3C</td>
      <td>Text-based</td>
      <td>Yes</td>
      <td>Extensible markup language for structured documents</td>
    </tr>
    <tr>
      <td><a href="https://yaml.org">YAML</a></td>
      <td>Clark Evans &amp; Ingy döt Net</td>
      <td>Text-based</td>
      <td>Yes</td>
      <td>Human-readable data serialization standard</td>
    </tr>
    <tr>
      <td><a href="https://toml.io/en/">TOML</a></td>
      <td>Tom Preston-Werner</td>
      <td>Text-based</td>
      <td>Yes</td>
      <td>Human-readable configuration file format designed to be unambiguous and easy to parse</td>
    </tr>
    <tr>
      <td><a href="https://parquet.apache.org">Parquet</a></td>
      <td>Apache</td>
      <td>Binary</td>
      <td>Yes</td>
      <td>Columnar storage format for efficient data processing</td>
    </tr>
    <tr>
      <td><a href="https://orc.apache.org">ORC</a></td>
      <td>Apache</td>
      <td>Binary</td>
      <td>Yes</td>
      <td>Self-describing columnar file format for Hadoop ecosystems</td>
    </tr>
    <tr>
      <td><a href="https://avro.apache.org">Avro</a></td>
      <td>Apache</td>
      <td>Binary</td>
      <td>Yes</td>
      <td>Data serialization system with schema evolution support</td>
    </tr>
    <tr>
      <td><a href="https://iceberg.apache.org">Iceberg</a></td>
      <td>Apache</td>
      <td>Binary</td>
      <td>Yes</td>
      <td>Open table format for huge analytic datasets</td>
    </tr>
    <tr>
      <td><a href="https://developers.google.com/protocol-buffers">Protocol Buffers</a></td>
      <td>Google</td>
      <td>Binary</td>
      <td>Yes</td>
      <td>Language-neutral serialization for structured data</td>
    </tr>
    <tr>
      <td><a href="https://docs.python.org/3/library/pickle.html">Pickle</a></td>
      <td>Python Software Foundation</td>
      <td>Binary</td>
      <td>Yes</td>
      <td>Python object serialization format</td>
    </tr>
  </tbody>
</table>

<h3 id="format-recommendations">Format recommendations</h3>

<ul>
  <li><strong>API Communication</strong>: JSON (web), Protocol Buffers (microservices)</li>
  <li><strong>Big Data Processing</strong>: Parquet, ORC, Avro</li>
  <li><strong>Configuration Files</strong>: YAML, TOML, JSON</li>
  <li><strong>Data Exchange</strong>: CSV (simple), JSON (structured), XML (enterprise)</li>
  <li><strong>Python Serialization</strong>: Pickle (internal), JSON (external), Parquet (analytics)</li>
</ul>

<hr />

<h2 id="8-devops">8. DevOps</h2>

<p>DevOps encompasses development workflows, infrastructure management, testing, and deployment automation. The right tools dramatically impact team productivity and system reliability.</p>

<h3 id="key-trends-6">Key Trends</h3>

<ul>
  <li><strong>AI-Enhanced Development</strong>: GitHub Copilot, Cursor, Windsurf</li>
  <li><strong>Git Platforms</strong>: GitHub dominates, but GitLab and self-hosted options growing</li>
  <li><strong>Testing</strong>: Shift-left testing and AI-powered test generation</li>
  <li><strong>Infrastructure</strong>: Terraform vs PaaS solutions</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://www.docker.com">Docker</a></td>
      <td>Solomon Hykes</td>
      <td>Containerization</td>
      <td>Yes</td>
      <td>Platform for developing, shipping, and running applications in containers</td>
    </tr>
    <tr>
      <td><a href="https://kubernetes.io">Kubernetes</a></td>
      <td>Google</td>
      <td>Container orchestration</td>
      <td>Yes</td>
      <td>Open-source system for automating deployment, scaling, and management of containerized applications</td>
    </tr>
    <tr>
      <td><a href="https://www.jenkins.io">Jenkins</a></td>
      <td>Kohsuke Kawaguchi</td>
      <td>CI/CD</td>
      <td>Yes</td>
      <td>Open-source automation server for building, deploying, and automating projects</td>
    </tr>
    <tr>
      <td><a href="https://docs.gitlab.com/ee/ci/">GitLab CI/CD</a></td>
      <td>GitLab Inc.</td>
      <td>CI/CD</td>
      <td>Yes</td>
      <td>Built-in continuous integration, delivery, and deployment platform</td>
    </tr>
    <tr>
      <td><a href="https://github.com/features/actions">GitHub Actions</a></td>
      <td>GitHub</td>
      <td>CI/CD</td>
      <td>Freemium</td>
      <td>CI/CD platform for automating software workflows directly in GitHub</td>
    </tr>
    <tr>
      <td><a href="https://circleci.com">CircleCI</a></td>
      <td>CircleCI</td>
      <td>CI/CD</td>
      <td>Freemium</td>
      <td>Continuous integration and delivery platform for development teams</td>
    </tr>
    <tr>
      <td><a href="https://git-scm.com">Git</a></td>
      <td>Linus Torvalds</td>
      <td>Version control</td>
      <td>Yes</td>
      <td>Distributed version control system for tracking changes in source code</td>
    </tr>
    <tr>
      <td><a href="https://github.com">GitHub</a></td>
      <td>Microsoft</td>
      <td>Git hosting</td>
      <td>Freemium</td>
      <td>Web-based platform for hosting and collaborating on Git repositories</td>
    </tr>
    <tr>
      <td><a href="https://gitlab.com">GitLab</a></td>
      <td>GitLab Inc.</td>
      <td>Git hosting</td>
      <td>Freemium</td>
      <td>Web-based DevOps platform with Git repository management</td>
    </tr>
    <tr>
      <td><a href="https://bitbucket.org">Bitbucket</a></td>
      <td>Atlassian</td>
      <td>Git hosting</td>
      <td>Freemium</td>
      <td>Git-based code collaboration and CI/CD platform</td>
    </tr>
    <tr>
      <td><a href="https://codeberg.org">Codeberg</a></td>
      <td>Codeberg e.V.</td>
      <td>Git hosting</td>
      <td>Yes</td>
      <td>Non-profit, community-driven alternative to commercial code hosting platforms</td>
    </tr>
    <tr>
      <td><a href="https://pytest.org">pytest</a></td>
      <td>Holger Krekel</td>
      <td>Testing framework</td>
      <td>Yes</td>
      <td>Testing framework for Python that makes it easy to write simple and scalable tests</td>
    </tr>
    <tr>
      <td><a href="https://www.selenium.dev">Selenium</a></td>
      <td>Selenium Team</td>
      <td>Testing framework</td>
      <td>Yes</td>
      <td>Browser automation framework for web application testing</td>
    </tr>
    <tr>
      <td><a href="https://jestjs.io/">Jest</a></td>
      <td>Meta</td>
      <td>Testing framework</td>
      <td>Yes</td>
      <td>Delightful JavaScript Testing Framework with a focus on simplicity</td>
    </tr>
    <tr>
      <td><a href="https://github.com/pytest-dev/pytest-cov">pytest-cov</a></td>
      <td>pytest team</td>
      <td>Testing coverage</td>
      <td>Yes</td>
      <td>Plugin for pytest that produces coverage reports</td>
    </tr>
    <tr>
      <td><a href="https://tox.wiki">tox</a></td>
      <td>Holger Krekel</td>
      <td>Testing tool</td>
      <td>Yes</td>
      <td>Generic virtualenv management and test command line tool</td>
    </tr>
    <tr>
      <td><a href="https://flake8.pycqa.org">flake8</a></td>
      <td>Python community</td>
      <td>Linting</td>
      <td>Yes</td>
      <td>Tool for style guide enforcement and error checking in Python code</td>
    </tr>
    <tr>
      <td><a href="https://github.com/astral-sh/ruff">ruff</a></td>
      <td>Astral</td>
      <td>Linting</td>
      <td>Yes</td>
      <td>Extremely fast Python linter and code formatter written in Rust</td>
    </tr>
    <tr>
      <td><a href="https://pylint.org">pylint</a></td>
      <td>Logilab</td>
      <td>Linting</td>
      <td>Yes</td>
      <td>Static code analysis tool for Python programming language</td>
    </tr>
    <tr>
      <td><a href="https://eslint.org/">ESLint</a></td>
      <td>ESLint Team</td>
      <td>Linting</td>
      <td>Yes</td>
      <td>Pluggable JavaScript linter for finding and fixing problems in code</td>
    </tr>
    <tr>
      <td><a href="https://prettier.io">Prettier</a></td>
      <td>James Long</td>
      <td>Code formatter</td>
      <td>Yes</td>
      <td>Opinionated code formatter supporting many languages</td>
    </tr>
    <tr>
      <td><a href="https://black.readthedocs.io">black</a></td>
      <td>Python Software Foundation</td>
      <td>Code formatter</td>
      <td>Yes</td>
      <td>Uncompromising Python code formatter</td>
    </tr>
    <tr>
      <td><a href="https://code.visualstudio.com">VS Code</a></td>
      <td>Microsoft</td>
      <td>IDE</td>
      <td>Freemium</td>
      <td>Free source-code editor with extensive extension ecosystem</td>
    </tr>
    <tr>
      <td><a href="https://github.com/features/copilot">GitHub Copilot</a></td>
      <td>GitHub/OpenAI</td>
      <td>AI coding assistant</td>
      <td>Freemium</td>
      <td>AI pair programmer that suggests code completions</td>
    </tr>
    <tr>
      <td><a href="https://kiro.dev/">Kiro</a></td>
      <td>Amazon</td>
      <td>GenAI IDE</td>
      <td>No</td>
      <td>AI-powered development environment for building applications</td>
    </tr>
    <tr>
      <td><a href="https://www.cursor.com">Cursor</a></td>
      <td>Cursor Team</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>AI-powered code editor with advanced code generation</td>
    </tr>
    <tr>
      <td><a href="https://replit.com">Replit</a></td>
      <td>Amjad Masad</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>Online IDE with AI-powered development features</td>
    </tr>
    <tr>
      <td><a href="https://www.anthropic.com/claude/code">Claude Code</a></td>
      <td>Anthropic</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>AI-powered development environment with Claude integration</td>
    </tr>
    <tr>
      <td><a href="https://openai.com/codex/">Codex</a></td>
      <td>OpenAI</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>AI model that translates natural language to code</td>
    </tr>
    <tr>
      <td><a href="https://bolt.new">Bolt</a></td>
      <td>StackBlitz</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>AI-powered web development environment</td>
    </tr>
    <tr>
      <td><a href="https://www.codeium.com/windsurf">Windsurf</a></td>
      <td>Codeium</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>AI-powered development environment with advanced code understanding</td>
    </tr>
    <tr>
      <td><a href="https://www.augmentcode.com/">Augment Code</a></td>
      <td>Augment Code</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>AI-powered development environment for modern coding</td>
    </tr>
    <tr>
      <td><a href="https://www.warp.dev">Warp</a></td>
      <td>Warp Team</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>AI-powered terminal for developers</td>
    </tr>
    <tr>
      <td><a href="https://firebase.studio/">Firebase Studio</a></td>
      <td>Google</td>
      <td>GenAI IDE</td>
      <td>No</td>
      <td>Development environment for Firebase applications with AI features</td>
    </tr>
    <tr>
      <td><a href="https://marketplace.visualstudio.com/items?itemName=RooVet.roo-cline">Roo Code</a></td>
      <td>RooVet</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>AI coding assistant extension for VS Code</td>
    </tr>
    <tr>
      <td><a href="https://kilocode.ai/">Kilo</a></td>
      <td>Kilo Team</td>
      <td>GenAI IDE</td>
      <td>Freemium</td>
      <td>AI-powered development environment</td>
    </tr>
    <tr>
      <td><a href="https://github.com/cline/cline">Cline</a></td>
      <td>Cline Team</td>
      <td>GenAI IDE</td>
      <td>Yes</td>
      <td>AI coding assistant that can use tools and edit files</td>
    </tr>
  </tbody>
</table>

<h3 id="devops-stack-recommendations">DevOps stack recommendations</h3>

<ul>
  <li><strong>Version Control</strong>: Git + GitHub (most common) or GitLab (integrated CI/CD)</li>
  <li><strong>Containerization</strong>: Docker + Kubernetes for production</li>
  <li><strong>CI/CD</strong>: GitHub Actions (simple), GitLab CI/CD (integrated), Jenkins (custom)</li>
  <li><strong>Testing</strong>: pytest + pytest-cov (Python), Jest (JavaScript), Selenium (E2E)</li>
  <li><strong>Code Quality</strong>: Prettier + ESLint (JavaScript), Black + Ruff (Python)</li>
  <li><strong>AI Development</strong>: GitHub Copilot (VS Code), Cursor (standalone), Windsurf (advanced)</li>
</ul>

<hr />

<h2 id="9-data-engineering">9. Data Engineering</h2>

<p>Data engineering encompasses data pipelines, orchestration, processing, storage, and infrastructure. This field has exploded with the growth of big data and machine learning.</p>

<h3 id="key-trends-7">Key Trends</h3>

<ul>
  <li><strong>Cloud-Native</strong>: Shift from on-premise to managed services</li>
  <li><strong>Real-time Processing</strong>: Streaming platforms replacing batch processing</li>
  <li><strong>ML Operations</strong>: Integration of data pipelines with model lifecycle</li>
  <li><strong>Data Mesh</strong>: Decentralized data ownership architecture</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://aws.amazon.com">AWS</a></td>
      <td>Amazon</td>
      <td>Cloud platform</td>
      <td>No</td>
      <td>Comprehensive cloud computing platform</td>
    </tr>
    <tr>
      <td><a href="https://azure.microsoft.com">Azure</a></td>
      <td>Microsoft</td>
      <td>Cloud platform</td>
      <td>No</td>
      <td>Cloud computing platform for building and deploying applications</td>
    </tr>
    <tr>
      <td><a href="https://cloud.google.com">Google Cloud Platform (GCP)</a></td>
      <td>Google</td>
      <td>Cloud platform</td>
      <td>Freemium</td>
      <td>Suite of cloud computing services</td>
    </tr>
    <tr>
      <td><a href="https://aws.amazon.com/redshift/">Redshift</a></td>
      <td>Amazon</td>
      <td>Data warehouse</td>
      <td>No</td>
      <td>Fast, fully managed data warehouse service</td>
    </tr>
    <tr>
      <td><a href="https://cloud.google.com/bigquery">BigQuery</a></td>
      <td>Google</td>
      <td>Data warehouse</td>
      <td>Freemium</td>
      <td>Serverless data warehouse with built-in ML</td>
    </tr>
    <tr>
      <td><a href="https://www.snowflake.com">Snowflake</a></td>
      <td>Snowflake Inc.</td>
      <td>Data warehouse</td>
      <td>Freemium</td>
      <td>Cloud data platform for data warehousing and lakes</td>
    </tr>
    <tr>
      <td><a href="https://www.databricks.com">Databricks</a></td>
      <td>Databricks</td>
      <td>Data warehouse</td>
      <td>Freemium</td>
      <td>Unified analytics platform for big data and ML</td>
    </tr>
    <tr>
      <td><a href="https://www.heroku.com">Heroku</a></td>
      <td>Salesforce</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Platform as a service for application deployment</td>
    </tr>
    <tr>
      <td><a href="https://cloud.google.com/appengine">Google App Engine</a></td>
      <td>Google</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Serverless application platform and hosting</td>
    </tr>
    <tr>
      <td><a href="https://railway.app">Railway</a></td>
      <td>Railway</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Modern deployment platform for applications</td>
    </tr>
    <tr>
      <td><a href="https://render.com">Render</a></td>
      <td>Render</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Unified platform to build and deploy applications</td>
    </tr>
    <tr>
      <td><a href="http://Fly.io">Fly.io</a></td>
      <td>Fly.io</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Platform for running full-stack apps close to users</td>
    </tr>
    <tr>
      <td><a href="https://coolify.io">Coolify</a></td>
      <td>Coolify</td>
      <td>PaaS</td>
      <td>Yes</td>
      <td>Self-hostable PaaS alternative to Heroku</td>
    </tr>
    <tr>
      <td><a href="https://ploomber.io/">Ploomber</a></td>
      <td>Ploomber</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Data engineering platform for building data products</td>
    </tr>
    <tr>
      <td><a href="https://aws.amazon.com/elasticbeanstalk/">AWS Elastic Beanstalk</a></td>
      <td>Amazon</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Orchestrated deployment service for web applications</td>
    </tr>
    <tr>
      <td><a href="https://sevalla.com/">Sevalla</a></td>
      <td>Sevalla</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Hosting platform for WordPress and static sites</td>
    </tr>
    <tr>
      <td><a href="https://kinsta.com">Kinsta</a></td>
      <td>Kinsta</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Managed WordPress hosting and application platform</td>
    </tr>
    <tr>
      <td><a href="https://scalingo.com">Scalingo</a></td>
      <td>Scalingo</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Platform-as-a-Service for web applications</td>
    </tr>
    <tr>
      <td><a href="https://www.digitalocean.com/products/app-platform">DigitalOcean App Platform</a></td>
      <td>DigitalOcean</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Platform for building, deploying, and scaling apps</td>
    </tr>
    <tr>
      <td><a href="https://dokploy.com">Dokploy</a></td>
      <td>Dokploy</td>
      <td>PaaS</td>
      <td>Yes</td>
      <td>Self-hosted PaaS with Docker management</td>
    </tr>
    <tr>
      <td><a href="https://dokku.com">Dokku</a></td>
      <td>Dokku</td>
      <td>PaaS</td>
      <td>Yes</td>
      <td>Docker-powered PaaS for single-server deployments</td>
    </tr>
    <tr>
      <td><a href="https://caprover.com">CapRover</a></td>
      <td>CapRover</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>PaaS with self-hosting and container management</td>
    </tr>
    <tr>
      <td><a href="https://docs.docker.com/engine/swarm/">Docker Swarm</a></td>
      <td>Docker</td>
      <td>PaaS</td>
      <td>Yes</td>
      <td>Container orchestration and clustering solution</td>
    </tr>
    <tr>
      <td><a href="https://northflank.com">Northflank</a></td>
      <td>Northflank</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Developer platform for building and deploying applications</td>
    </tr>
    <tr>
      <td><a href="http://Platform.sh">Platform.sh</a></td>
      <td>Platform.sh</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Continuous deployment platform for PHP, Node.js, and Python</td>
    </tr>
    <tr>
      <td><a href="https://vercel.com">Vercel</a></td>
      <td>Vercel</td>
      <td>PaaS</td>
      <td>Freemium</td>
      <td>Frontend deployment and optimization platform</td>
    </tr>
    <tr>
      <td><a href="https://www.fivetran.com">Fivetran</a></td>
      <td>Fivetran</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Automated data integration platform</td>
    </tr>
    <tr>
      <td><a href="https://www.stitchdata.com">Stitch</a></td>
      <td>Stitch</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>ETL service for data warehouse integration</td>
    </tr>
    <tr>
      <td><a href="https://www.matillion.com">Matillion</a></td>
      <td>Matillion</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Cloud-native data transformation platform</td>
    </tr>
    <tr>
      <td><a href="https://airbyte.com">Airbyte</a></td>
      <td>Airbyte</td>
      <td>Data integration</td>
      <td>Yes</td>
      <td>Open-source data integration platform</td>
    </tr>
    <tr>
      <td><a href="https://www.informatica.com/">Informatica</a></td>
      <td>Informatica</td>
      <td>Data integration</td>
      <td>No</td>
      <td>Enterprise data integration and management platform</td>
    </tr>
    <tr>
      <td><a href="https://www.talend.com">Talend Open Studio</a></td>
      <td>Talend</td>
      <td>Data integration</td>
      <td>Yes</td>
      <td>Open-source data integration platform</td>
    </tr>
    <tr>
      <td><a href="https://learn.microsoft.com/sql/integration-services/sql-server-integration-services">Microsoft SSIS</a></td>
      <td>Microsoft</td>
      <td>Data integration</td>
      <td>No</td>
      <td>Enterprise data integration and transformation service</td>
    </tr>
    <tr>
      <td><a href="https://www.ibm.com/products/infosphere-datastage">IBM DataStage</a></td>
      <td>IBM</td>
      <td>Data integration</td>
      <td>No</td>
      <td>Enterprise ETL platform for data integration and transformation</td>
    </tr>
    <tr>
      <td><a href="https://www.oracle.com/middleware/technologies/data-integrator.html">Oracle Data Integrator</a></td>
      <td>Oracle</td>
      <td>Data integration</td>
      <td>No</td>
      <td>Comprehensive data integration and data quality platform</td>
    </tr>
    <tr>
      <td><a href="https://aws.amazon.com/glue/">AWS Glue</a></td>
      <td>Amazon</td>
      <td>Data integration</td>
      <td>No</td>
      <td>Serverless data integration service for ETL workflows</td>
    </tr>
    <tr>
      <td><a href="https://aws.amazon.com/datapipeline/">AWS Data Pipeline</a></td>
      <td>Amazon</td>
      <td>Data integration</td>
      <td>No</td>
      <td>Cloud-based data workflow service for data processing</td>
    </tr>
    <tr>
      <td><a href="https://azure.microsoft.com/products/data-factory">Azure Data Factory</a></td>
      <td>Microsoft</td>
      <td>Data integration</td>
      <td>No</td>
      <td>Hybrid data integration and ETL service</td>
    </tr>
    <tr>
      <td><a href="https://cloud.google.com/dataflow">Google Cloud Dataflow</a></td>
      <td>Google</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Unified stream and batch data processing service</td>
    </tr>
    <tr>
      <td><a href="https://cloud.google.com/data-fusion">Google Cloud Data Fusion</a></td>
      <td>Google</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Fully managed data integration service</td>
    </tr>
    <tr>
      <td><a href="https://www.qlik.com/us/products/qlik-compose">Qlik Compose</a></td>
      <td>Qlik</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Data warehouse automation platform</td>
    </tr>
    <tr>
      <td><a href="http://Integrate.io">Integrate.io</a></td>
      <td>Integrate.io</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Customer data platform and ETL service</td>
    </tr>
    <tr>
      <td><a href="http://Portable.io">Portable.io</a></td>
      <td>Portable</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>No-code data integration platform</td>
    </tr>
    <tr>
      <td><a href="https://learn.microsoft.com/en-us/power-query/power-query-what-is-power-query">Power Query</a></td>
      <td>Microsoft</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Data connectivity and data transformation tool</td>
    </tr>
    <tr>
      <td><a href="https://cloud.google.com/composer">Google Cloud Composer</a></td>
      <td>Google</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Fully managed workflow orchestration service</td>
    </tr>
    <tr>
      <td><a href="https://www.getcensus.com/">Census</a></td>
      <td>Census</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Reverse ETL platform for data activation</td>
    </tr>
    <tr>
      <td><a href="https://coalesce.io/">Coalesce</a></td>
      <td>Coalesce</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Data warehouse automation and development platform</td>
    </tr>
    <tr>
      <td><a href="https://etleap.com/">ETLeap</a></td>
      <td>ETLeap</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>ETL platform for data warehousing</td>
    </tr>
    <tr>
      <td><a href="https://hevodata.com/">Hevo Data</a></td>
      <td>Hevo</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Automated data integration and ETL platform</td>
    </tr>
    <tr>
      <td><a href="https://hightouch.com/">Hightouch</a></td>
      <td>Hightouch</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Reverse ETL platform for data activation</td>
    </tr>
    <tr>
      <td><a href="https://www.keboola.com/">Keboola</a></td>
      <td>Keboola</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Data operations platform with ETL capabilities</td>
    </tr>
    <tr>
      <td><a href="https://www.snaplogic.com/">Snaplogic</a></td>
      <td>SnapLogic</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Enterprise integration platform as a service</td>
    </tr>
    <tr>
      <td><a href="https://www.alteryx.com/">Alteryx</a></td>
      <td>Alteryx</td>
      <td>Data integration</td>
      <td>Freemium</td>
      <td>Analytics automation platform with data preparation</td>
    </tr>
    <tr>
      <td><a href="https://pentaho.hitachivantara.com">Pentaho</a></td>
      <td>Hitachi Vantara</td>
      <td>Data integration</td>
      <td>Yes</td>
      <td>Open-source data integration and business analytics platform</td>
    </tr>
    <tr>
      <td><a href="https://nifi.apache.org">NiFi</a></td>
      <td>Apache</td>
      <td>Data integration</td>
      <td>Yes</td>
      <td>Easy-to-use, powerful, and reliable system to process and distribute data</td>
    </tr>
    <tr>
      <td><a href="https://meltano.com">Meltano</a></td>
      <td>Meltano</td>
      <td>Data integration</td>
      <td>Yes</td>
      <td>Open-source data integration and ELT platform</td>
    </tr>
    <tr>
      <td><a href="https://hadoop.apache.org">Hadoop</a></td>
      <td>Apache</td>
      <td>Data integration</td>
      <td>Yes</td>
      <td>Framework that allows for the distributed processing of large data sets</td>
    </tr>
    <tr>
      <td><a href="https://aws.amazon.com/s3/">AWS S3</a></td>
      <td>Amazon</td>
      <td>Data storage</td>
      <td>No</td>
      <td>Scalable object storage service for data lakes and backup</td>
    </tr>
    <tr>
      <td><a href="https://azure.microsoft.com/en-us/products/storage/blobs/">Azure Blob Storage</a></td>
      <td>Microsoft</td>
      <td>Data storage</td>
      <td>No</td>
      <td>Massively scalable object storage for unstructured data</td>
    </tr>
    <tr>
      <td><a href="https://cloud.google.com/storage">Google Cloud Storage</a></td>
      <td>Google</td>
      <td>Data storage</td>
      <td>Freemium</td>
      <td>Unified object storage for data lakes and applications</td>
    </tr>
    <tr>
      <td><a href="https://cron-job.org/">Cron Job</a></td>
      <td>Various</td>
      <td>Data orchestration</td>
      <td>Yes</td>
      <td>Time-based job scheduler in Unix-like operating systems for automated task execution</td>
    </tr>
    <tr>
      <td><a href="https://airflow.apache.org">Airflow</a></td>
      <td>Apache</td>
      <td>Data orchestration</td>
      <td>Yes</td>
      <td>Platform for programmatically authoring and monitoring workflows</td>
    </tr>
    <tr>
      <td><a href="https://dagster.io/">Dagster</a></td>
      <td>Dagster Labs</td>
      <td>Data orchestration</td>
      <td>Yes</td>
      <td>Data orchestration platform with asset-based approach</td>
    </tr>
    <tr>
      <td><a href="https://www.prefect.io/">Prefect</a></td>
      <td>Prefect</td>
      <td>Data orchestration</td>
      <td>Yes</td>
      <td>Modern workflow orchestration platform for data pipelines and infrastructure</td>
    </tr>
    <tr>
      <td><a href="https://spark.apache.org">Spark</a></td>
      <td>Apache</td>
      <td>Data processing</td>
      <td>Yes</td>
      <td>Unified analytics engine for large-scale data processing</td>
    </tr>
    <tr>
      <td><a href="https://hive.apache.org">Hive</a></td>
      <td>Apache</td>
      <td>Data processing</td>
      <td>Yes</td>
      <td>Data warehouse software for reading, writing, and managing large datasets in distributed storage</td>
    </tr>
    <tr>
      <td><a href="https://www.getdbt.com">dbt</a></td>
      <td>dbt Labs</td>
      <td>Data transformation</td>
      <td>Freemium</td>
      <td>Data transformation tool for analytics engineering</td>
    </tr>
    <tr>
      <td><a href="https://dvc.org">DVC</a></td>
      <td>Iterative</td>
      <td>Data versioning</td>
      <td>Yes</td>
      <td>Data version control and ML experiment management</td>
    </tr>
    <tr>
      <td><a href="https://mlflow.org">MLflow</a></td>
      <td>Databricks</td>
      <td>Model versioning</td>
      <td>Yes</td>
      <td>Open-source platform for managing machine learning lifecycle</td>
    </tr>
    <tr>
      <td><a href="https://wandb.ai">Weights &amp; Biases</a></td>
      <td>WandB</td>
      <td>Model versioning</td>
      <td>Freemium</td>
      <td>Experiment tracking platform for machine learning projects</td>
    </tr>
    <tr>
      <td><a href="https://www.kubeflow.org">Kubeflow</a></td>
      <td>Google/Kubeflow community</td>
      <td>ML orchestration</td>
      <td>Yes</td>
      <td>Open-source toolkit for making ML workflows scalable</td>
    </tr>
    <tr>
      <td><a href="https://www.microsoft.com/en-us/microsoft-fabric">MS Fabric</a></td>
      <td>Microsoft</td>
      <td>Data platform</td>
      <td>No</td>
      <td>End-to-end analytics and data platform</td>
    </tr>
    <tr>
      <td><a href="https://greatexpectations.io/">Great Expectations</a></td>
      <td>Great Expectations community</td>
      <td>Data validation</td>
      <td>Yes</td>
      <td>Data validation and documentation for ML pipelines</td>
    </tr>
    <tr>
      <td><a href="https://www.terraform.io">Terraform</a></td>
      <td>HashiCorp</td>
      <td>Infrastructure as code</td>
      <td>Yes</td>
      <td>Infrastructure provisioning and management tool</td>
    </tr>
    <tr>
      <td><a href="https://www.ansible.com">Ansible</a></td>
      <td>Red Hat</td>
      <td>Configuration management</td>
      <td>Yes</td>
      <td>Automation tool for application deployment and configuration</td>
    </tr>
    <tr>
      <td><a href="https://www.bentoml.com/">BentoML</a></td>
      <td>BentoML Team</td>
      <td>Model serving</td>
      <td>Yes</td>
      <td>Framework for building production-ready ML services</td>
    </tr>
    <tr>
      <td><a href="https://docs.ray.io/en/latest/serve/index.html">Ray Serve</a></td>
      <td>Ray Project</td>
      <td>Model serving</td>
      <td>Yes</td>
      <td>Scalable model serving framework built on Ray</td>
    </tr>
    <tr>
      <td><a href="https://debezium.io/">Debezium</a></td>
      <td>Debezium community</td>
      <td>Streaming</td>
      <td>Yes</td>
      <td>Change data capture platform for databases</td>
    </tr>
    <tr>
      <td><a href="https://aws.amazon.com/kinesis">AWS Kinesis</a></td>
      <td>Amazon</td>
      <td>Streaming</td>
      <td>No</td>
      <td>Scalable real-time data streaming service</td>
    </tr>
    <tr>
      <td><a href="https://cloud.google.com/pubsub">Google Pub/Sub</a></td>
      <td>Google</td>
      <td>Streaming</td>
      <td>Freemium</td>
      <td>Globally managed messaging service for event-driven systems</td>
    </tr>
    <tr>
      <td><a href="https://www.striim.com/">Striim</a></td>
      <td>Striim</td>
      <td>Streaming</td>
      <td>Freemium</td>
      <td>Real-time data integration and streaming platform</td>
    </tr>
    <tr>
      <td><a href="https://kafka.apache.org">Kafka</a></td>
      <td>Apache</td>
      <td>Streaming</td>
      <td>Yes</td>
      <td>Distributed streaming platform for real-time data feeds</td>
    </tr>
    <tr>
      <td><a href="https://www.datadoghq.com">Datadog</a></td>
      <td>Datadog</td>
      <td>Monitoring</td>
      <td>Freemium</td>
      <td>Cloud monitoring and security platform for applications</td>
    </tr>
    <tr>
      <td><a href="https://prometheus.io">Prometheus</a></td>
      <td>CNCF</td>
      <td>Monitoring</td>
      <td>Yes</td>
      <td>Open-source monitoring and alerting toolkit</td>
    </tr>
    <tr>
      <td><a href="https://grafana.com">Grafana</a></td>
      <td>Grafana Labs</td>
      <td>Monitoring</td>
      <td>Yes</td>
      <td>Open-source visualization and monitoring platform</td>
    </tr>
    <tr>
      <td><a href="https://opentelemetry.io/">OpenTelemetry</a></td>
      <td>CNCF</td>
      <td>Monitoring</td>
      <td>Yes</td>
      <td>Observability framework for cloud-native software</td>
    </tr>
    <tr>
      <td><a href="https://www.dynatrace.com/">Dynatrace</a></td>
      <td>Dynatrace</td>
      <td>Monitoring</td>
      <td>Freemium</td>
      <td>AI-powered full-stack monitoring platform</td>
    </tr>
    <tr>
      <td><a href="https://www.splunk.com/">Splunk</a></td>
      <td>Splunk Inc.</td>
      <td>Monitoring</td>
      <td>Freemium</td>
      <td>Platform for searching, monitoring, and analyzing data</td>
    </tr>
    <tr>
      <td><a href="https://www.elastic.co/elasticsearch">Elasticsearch</a></td>
      <td>Elastic</td>
      <td>Monitoring</td>
      <td>Yes</td>
      <td>Distributed search and analytics engine</td>
    </tr>
    <tr>
      <td><a href="https://www.elastic.co/kibana">Kibana</a></td>
      <td>Elastic</td>
      <td>Monitoring</td>
      <td>Yes</td>
      <td>Data visualization and exploration tool for Elasticsearch</td>
    </tr>
    <tr>
      <td><a href="https://www.elastic.co/logstash">Logstash</a></td>
      <td>Elastic</td>
      <td>Monitoring</td>
      <td>Yes</td>
      <td>Data collection pipeline with real-time processing</td>
    </tr>
    <tr>
      <td><a href="https://www.anaconda.com/">Anaconda</a></td>
      <td>Anaconda Inc.</td>
      <td>Environment manager</td>
      <td>Freemium</td>
      <td>Python/R data science distribution and package manager</td>
    </tr>
    <tr>
      <td><a href="https://github.com/astral-sh/uv">uv</a></td>
      <td>Astral</td>
      <td>Environment manager</td>
      <td>Yes</td>
      <td>Fast Python package and project manager</td>
    </tr>
    <tr>
      <td><a href="https://python-poetry.org/">Poetry</a></td>
      <td>Python Poetry</td>
      <td>Environment manager</td>
      <td>Yes</td>
      <td>Tool for dependency management and packaging in Python</td>
    </tr>
  </tbody>
</table>

<h3 id="data-engineering-stack-recommendations">Data engineering stack recommendations</h3>

<ul>
  <li><strong>Orchestration</strong>: Apache Airflow (open-source), Dagster (asset-based)</li>
  <li><strong>Processing</strong>: Apache Spark (big data), dbt (analytics engineering)</li>
  <li><strong>Streaming</strong>: Apache Kafka (self-hosted), Google Pub/Sub (managed)</li>
  <li><strong>Monitoring</strong>: Prometheus + Grafana (open-source), Datadog (managed)</li>
  <li><strong>Cloud Platform</strong>: AWS (comprehensive), GCP (ML-focused), Azure (enterprise)</li>
  <li><strong>Deployment</strong>: Vercel (frontend), Railway (full-stack), Render (multi-platform)</li>
</ul>

<hr />

<h2 id="10-data-visualization">10. Data Visualization</h2>

<p>Data visualization tools transform raw data into actionable insights. The choice impacts audience understanding, interactivity, and development complexity.</p>

<h3 id="key-trends-8">Key Trends</h3>

<ul>
  <li><strong>Self-Service BI</strong>: Business users increasingly create their own dashboards</li>
  <li><strong>Python Visualization</strong>: Matplotlib/Seaborn vs Plotly ecosystem competition</li>
  <li><strong>Real-time Dashboards</strong>: Growing demand for live data updates</li>
  <li><strong>No-Code Solutions</strong>: Closing gap with custom development</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://streamlit.io">Streamlit</a></td>
      <td>Streamlit</td>
      <td>Dashboard framework</td>
      <td>Yes</td>
      <td>Open-source app framework for data science and machine learning</td>
    </tr>
    <tr>
      <td><a href="https://www.gradio.app">Gradio</a></td>
      <td>Gradio Team</td>
      <td>Dashboard framework</td>
      <td>Yes</td>
      <td>Python library for creating customizable UI components</td>
    </tr>
    <tr>
      <td><a href="https://dash.plotly.com">Dash</a></td>
      <td>Plotly</td>
      <td>Dashboard framework</td>
      <td>Yes</td>
      <td>Productive Python framework for building analytical web applications</td>
    </tr>
    <tr>
      <td><a href="https://powerbi.microsoft.com">Power BI</a></td>
      <td>Microsoft</td>
      <td>No-code dashboard</td>
      <td>Freemium</td>
      <td>Business analytics and visualization platform</td>
    </tr>
    <tr>
      <td><a href="https://www.tableau.com">Tableau</a></td>
      <td>Tableau Software</td>
      <td>No-code dashboard</td>
      <td>Freemium</td>
      <td>Data visualization and business intelligence platform</td>
    </tr>
    <tr>
      <td><a href="https://looker.com">Looker</a></td>
      <td>Looker</td>
      <td>No-code dashboard</td>
      <td>Freemium</td>
      <td>Data platform for business intelligence and analytics</td>
    </tr>
    <tr>
      <td><a href="https://www.qlik.com">Qlik</a></td>
      <td>Qlik</td>
      <td>No-code dashboard</td>
      <td>Freemium</td>
      <td>Business intelligence and data visualization platform</td>
    </tr>
    <tr>
      <td><a href="https://www.metabase.com">Metabase</a></td>
      <td>Metabase</td>
      <td>No-code dashboard</td>
      <td>Yes</td>
      <td>Open-source business intelligence tool</td>
    </tr>
    <tr>
      <td><a href="https://superset.apache.org">Superset</a></td>
      <td>Apache</td>
      <td>No-code dashboard</td>
      <td>Yes</td>
      <td>Modern data visualization and data exploration platform with rich interactive dashboards</td>
    </tr>
    <tr>
      <td><a href="https://matplotlib.org">Matplotlib</a></td>
      <td>John Hunter</td>
      <td>Python library</td>
      <td>Yes</td>
      <td>Comprehensive 2D plotting library for Python</td>
    </tr>
    <tr>
      <td><a href="https://seaborn.pydata.org">Seaborn</a></td>
      <td>Michael Waskom</td>
      <td>Python library</td>
      <td>Yes</td>
      <td>Statistical data visualization library based on matplotlib</td>
    </tr>
    <tr>
      <td><a href="https://bokeh.org">Bokeh</a></td>
      <td>Bokeh Team</td>
      <td>Python library</td>
      <td>Yes</td>
      <td>Interactive visualization library for modern web browsers</td>
    </tr>
    <tr>
      <td><a href="https://plotly.com/python/">Plotly</a></td>
      <td>Plotly</td>
      <td>Python library</td>
      <td>Freemium</td>
      <td>Interactive graphing library for statistical and scientific data</td>
    </tr>
    <tr>
      <td><a href="https://github.com/fbdesignpro/sweetviz">Sweetviz</a></td>
      <td>François Berrier</td>
      <td>Python library</td>
      <td>Yes</td>
      <td>Automated exploratory data analysis visualization tool</td>
    </tr>
    <tr>
      <td><a href="https://github.com/Kanaries/pygwalker">PyGWalker</a></td>
      <td>Kanaries</td>
      <td>Python library</td>
      <td>Yes</td>
      <td>Table-based data exploration with minimal code</td>
    </tr>
    <tr>
      <td><a href="https://d3js.org">D3.js</a></td>
      <td>Mike Bostock</td>
      <td>JavaScript library</td>
      <td>Yes</td>
      <td>JavaScript library for manipulating documents based on data</td>
    </tr>
  </tbody>
</table>

<h3 id="visualization-tool-recommendations">Visualization tool recommendations</h3>

<ul>
  <li><strong>Business Users</strong>: Power BI, Tableau, Looker (enterprise), Metabase (open-source), Apache Superset (open-source)</li>
  <li><strong>Data Scientists</strong>: Streamlit (rapid), Dash (complex), Gradio (ML interfaces)</li>
  <li><strong>Python Development</strong>: Matplotlib (basic), Seaborn (statistical), Plotly (interactive)</li>
  <li><strong>Exploratory Analysis</strong>: Sweetviz, PyGWalker, Jupyter + standard libraries</li>
  <li><strong>Custom Dashboards</strong>: Dash, Streamlit, or custom React/Vue + D3.js</li>
</ul>

<hr />

<h2 id="11-machine-learning">11. Machine Learning</h2>

<p>Machine learning encompasses frameworks, libraries, and platforms for building and deploying predictive models. The field continues evolving rapidly with new architectures and automation tools.</p>

<h3 id="key-trends-9">Key Trends</h3>

<ul>
  <li><strong>Deep Learning</strong>: TensorFlow vs PyTorch competition continues</li>
  <li><strong>AutoML</strong>: Democratizing ML for non-experts</li>
  <li><strong>LLM Integration</strong>: Traditional ML evolving with language models</li>
  <li><strong>MLOps</strong>: Focus on model lifecycle and deployment</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://www.tensorflow.org">TensorFlow</a></td>
      <td>Google</td>
      <td>Deep Learning framework</td>
      <td>Yes</td>
      <td>Open-source platform for machine learning and deep learning</td>
    </tr>
    <tr>
      <td><a href="https://keras.io">Keras</a></td>
      <td>François Chollet</td>
      <td>Deep Learning framework</td>
      <td>Yes</td>
      <td>High-level neural networks API for deep learning</td>
    </tr>
    <tr>
      <td><a href="https://pytorch.org">PyTorch</a></td>
      <td>Meta</td>
      <td>Deep Learning framework</td>
      <td>Yes</td>
      <td>Open-source machine learning framework for computer vision and NLP</td>
    </tr>
    <tr>
      <td><a href="https://jax.readthedocs.io">JAX</a></td>
      <td>Google/DeepMind</td>
      <td>Deep Learning framework</td>
      <td>Yes</td>
      <td>High-performance numerical computing and machine learning</td>
    </tr>
    <tr>
      <td><a href="https://stable-baselines3.readthedocs.io">Stable Baselines3</a></td>
      <td>Stable Baselines Team</td>
      <td>Reinforcement learning</td>
      <td>Yes</td>
      <td>Reliable implementations of reinforcement learning algorithms</td>
    </tr>
    <tr>
      <td><a href="https://docs.ray.io/en/latest/rllib/index.html">RLlib</a></td>
      <td>Ray Project</td>
      <td>Reinforcement learning</td>
      <td>Yes</td>
      <td>Scalable reinforcement learning library built on Ray for distributed training and serving</td>
    </tr>
    <tr>
      <td><a href="https://www.ray.io/">Ray</a></td>
      <td>Ray Project</td>
      <td>Distributed computing framework</td>
      <td>Yes</td>
      <td>Unified framework for scaling AI and Python workloads from laptops to clusters</td>
    </tr>
    <tr>
      <td><a href="https://aws.amazon.com/sagemaker/">Amazon SageMaker</a></td>
      <td>Amazon</td>
      <td>ML platform</td>
      <td>No</td>
      <td>Fully managed service for building, training, and deploying machine learning models</td>
    </tr>
    <tr>
      <td><a href="https://cloud.google.com/vertex-ai">Vertex AI</a></td>
      <td>Google</td>
      <td>ML platform</td>
      <td>No</td>
      <td>Unified ML platform for building and deploying models</td>
    </tr>
    <tr>
      <td><a href="https://www.anyscale.com/">Anyscale</a></td>
      <td>Anyscale</td>
      <td>ML platform</td>
      <td>Freemium</td>
      <td>Platform for building and scaling ML applications</td>
    </tr>
    <tr>
      <td><a href="https://www.dataiku.com/">Dataiku</a></td>
      <td>Dataiku</td>
      <td>AutoML</td>
      <td>Freemium</td>
      <td>Enterprise AI and machine learning platform</td>
    </tr>
    <tr>
      <td><a href="https://pycaret.org">PyCaret</a></td>
      <td>PyCaret Team</td>
      <td>AutoML</td>
      <td>Yes</td>
      <td>Low-code machine learning library in Python</td>
    </tr>
    <tr>
      <td><a href="https://scikit-learn.org">scikit-learn</a></td>
      <td>scikit-learn community</td>
      <td>ML library</td>
      <td>Yes</td>
      <td>Simple and efficient tools for data mining and analysis</td>
    </tr>
    <tr>
      <td><a href="https://xgboost.readthedocs.io/en/stable/">XGBoost</a></td>
      <td>Tianqi Chen</td>
      <td>ML library</td>
      <td>Yes</td>
      <td>Optimized distributed gradient boosting library</td>
    </tr>
    <tr>
      <td><a href="https://lightgbm.readthedocs.io/en/stable/">LightGBM</a></td>
      <td>Microsoft</td>
      <td>ML library</td>
      <td>Yes</td>
      <td>Gradient boosting framework that uses tree-based learning</td>
    </tr>
    <tr>
      <td><a href="https://catboost.ai/">CatBoost</a></td>
      <td>Yandex</td>
      <td>ML library</td>
      <td>Yes</td>
      <td>High-performance gradient boosting library</td>
    </tr>
    <tr>
      <td><a href="https://pandas.pydata.org">pandas</a></td>
      <td>Wes McKinney</td>
      <td>Data analysis</td>
      <td>Yes</td>
      <td>Fast, powerful, flexible data analysis and manipulation tools</td>
    </tr>
    <tr>
      <td><a href="https://numpy.org">NumPy</a></td>
      <td>NumPy community</td>
      <td>Data analysis</td>
      <td>Yes</td>
      <td>Fundamental package for scientific computing with Python</td>
    </tr>
    <tr>
      <td><a href="https://scipy.org">SciPy</a></td>
      <td>SciPy community</td>
      <td>Data analysis</td>
      <td>Yes</td>
      <td>Library for mathematics, science, and engineering</td>
    </tr>
    <tr>
      <td><a href="https://www.statsmodels.org">statsmodels</a></td>
      <td>statsmodels community</td>
      <td>Data analysis</td>
      <td>Yes</td>
      <td>Statistical modeling and econometrics in Python</td>
    </tr>
    <tr>
      <td><a href="https://www.nltk.org">NLTK</a></td>
      <td>NLTK Team</td>
      <td>Natural language processing</td>
      <td>Yes</td>
      <td>Platform for building Python programs for human language data</td>
    </tr>
    <tr>
      <td><a href="https://tsfresh.readthedocs.io">tsfresh</a></td>
      <td>tsfresh contributors</td>
      <td>Time series</td>
      <td>Yes</td>
      <td>Automatic extraction of relevant features from time series</td>
    </tr>
    <tr>
      <td><a href="https://facebook.github.io/prophet">Prophet</a></td>
      <td>Meta</td>
      <td>Time series</td>
      <td>Yes</td>
      <td>Procedure for forecasting time series data</td>
    </tr>
    <tr>
      <td><a href="https://www.sktime.net">sktime</a></td>
      <td>sktime contributors</td>
      <td>Time series</td>
      <td>Yes</td>
      <td>Unified framework for machine learning with time series</td>
    </tr>
    <tr>
      <td><a href="https://jupyterlab.readthedocs.io">JupyterLab</a></td>
      <td>Project Jupyter</td>
      <td>Notebook environment</td>
      <td>Yes</td>
      <td>Web-based interface for Jupyter notebooks with file browser, terminal, and text editor</td>
    </tr>
    <tr>
      <td><a href="https://colab.research.google.com">Google Colab</a></td>
      <td>Google</td>
      <td>Notebook environment</td>
      <td>Freemium</td>
      <td>Cloud-based Jupyter environment with free GPU/TPU access and pre-installed ML libraries</td>
    </tr>
    <tr>
      <td><a href="https://www.kaggle.com/kernels">Kaggle Kernels</a></td>
      <td>Kaggle</td>
      <td>Notebook environment</td>
      <td>Freemium</td>
      <td>Cloud-based notebooks with access to Kaggle datasets and competitions</td>
    </tr>
    <tr>
      <td><a href="https://mybinder.org">Binder</a></td>
      <td>Project Binder</td>
      <td>Notebook environment</td>
      <td>Yes</td>
      <td>Service for creating shareable, reproducible computational environments from Git repositories</td>
    </tr>
  </tbody>
</table>

<h3 id="ml-framework-recommendations">ML framework recommendations</h3>

<ul>
  <li><strong>Deep Learning</strong>: PyTorch (research), TensorFlow (production), JAX (performance)</li>
  <li><strong>Traditional ML</strong>: scikit-learn (general), XGBoost/LightGBM (tabular data)</li>
  <li><strong>AutoML</strong>: PyCaret (open-source), Dataiku (enterprise)</li>
  <li><strong>Time Series</strong>: Prophet (forecasting), sktime (advanced)</li>
  <li><strong>NLP</strong>: NLTK (traditional), Transformers (modern)</li>
  <li><strong>Reinforcement Learning</strong>: Stable Baselines3, RLlib</li>
  <li><strong>Data Analysis</strong>: pandas + NumPy + SciPy (foundational)</li>
  <li><strong>Notebook Environments</strong>: JupyterLab (local development), Google Colab (cloud GPU), Kaggle Kernels (competitions), Binder (reproducible environments)</li>
</ul>

<hr />

<h2 id="12-large-language-models">12. Large Language Models</h2>

<p>The LLM ecosystem encompasses frameworks for building AI applications, model serving platforms, and orchestration tools. This field is rapidly evolving with new architectures and capabilities.</p>

<h3 id="key-trends-10">Key Trends</h3>

<ul>
  <li><strong>Agent-Based AI</strong>: Multi-agent systems becoming mainstream</li>
  <li><strong>Open Models</strong>: Hugging Face leading democratization</li>
  <li><strong>Serving Infrastructure</strong>: vLLM, Ollama for local deployment</li>
  <li><strong>Observability</strong>: Langfuse, Guardrails for production monitoring</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://en.wikipedia.org/wiki/Retrieval-augmented_generation">RAG</a></td>
      <td>Various</td>
      <td>LLM framework</td>
      <td>Yes</td>
      <td>Pipeline retrieval and re-ranking framework</td>
    </tr>
    <tr>
      <td><a href="https://www.langchain.com">LangChain</a></td>
      <td>LangChain</td>
      <td>LLM framework</td>
      <td>Yes</td>
      <td>Framework for developing applications powered by language models</td>
    </tr>
    <tr>
      <td><a href="https://www.llamaindex.ai/">LLamaIndex</a></td>
      <td>LlamaIndex</td>
      <td>LLM framework</td>
      <td>Yes</td>
      <td>Data framework for LLM applications with index capabilities</td>
    </tr>
    <tr>
      <td><a href="https://docs.vllm.ai/en/latest/">vLLM</a></td>
      <td>vLLM Team</td>
      <td>LLM serving</td>
      <td>Yes</td>
      <td>High-performance LLM inference and serving engine</td>
    </tr>
    <tr>
      <td><a href="https://ollama.com/">Ollama</a></td>
      <td>Ollama</td>
      <td>LLM serving</td>
      <td>Yes</td>
      <td>Platform for running and managing LLMs locally</td>
    </tr>
    <tr>
      <td><a href="https://langfuse.com/">Langfuse</a></td>
      <td>Langfuse</td>
      <td>LLM observability</td>
      <td>Freemium</td>
      <td>Open-source LLM engineering platform</td>
    </tr>
    <tr>
      <td><a href="https://www.guardrailsai.com">Guardrails</a></td>
      <td>Guardrails</td>
      <td>LLM safety</td>
      <td>Freemium</td>
      <td>Framework for building reliable and safe AI applications</td>
    </tr>
    <tr>
      <td><a href="https://www.crewai.com/">Crew.ai</a></td>
      <td>Crew AI</td>
      <td>Multi-agent framework</td>
      <td>Yes</td>
      <td>Framework for orchestrating multi-agent AI teams</td>
    </tr>
    <tr>
      <td><a href="https://microsoft.github.io/autogen/">AutoGen</a></td>
      <td>Microsoft</td>
      <td>Multi-agent framework</td>
      <td>Yes</td>
      <td>Multi-agent conversation framework</td>
    </tr>
    <tr>
      <td><a href="https://modelcontextprotocol.io">MCP</a></td>
      <td>Anthropic</td>
      <td>Protocol</td>
      <td>Yes</td>
      <td>Model Context Protocol - for connecting AI models to data sources</td>
    </tr>
    <tr>
      <td><a href="https://openrouter.ai">OpenRouter</a></td>
      <td>OpenRouter</td>
      <td>LLM platform</td>
      <td>Freemium</td>
      <td>Unified API for accessing multiple LLM providers</td>
    </tr>
    <tr>
      <td><a href="https://huggingface.co">Hugging Face</a></td>
      <td>Hugging Face</td>
      <td>LLM platform</td>
      <td>Freemium</td>
      <td>Platform for sharing and discovering ML models</td>
    </tr>
    <tr>
      <td><a href="https://replicate.com">Replicate</a></td>
      <td>Replicate</td>
      <td>LLM platform</td>
      <td>Freemium</td>
      <td>Platform for running and deploying ML models</td>
    </tr>
    <tr>
      <td><a href="https://agno.com">Agno</a></td>
      <td>Agno</td>
      <td>LLM platform</td>
      <td>Freemium</td>
      <td>LLM platform for building AI applications</td>
    </tr>
  </tbody>
</table>

<h3 id="llm-stack-recommendations">LLM stack recommendations</h3>

<ul>
  <li><strong>Application Development</strong>: LangChain (comprehensive), LlamaIndex (data-focused)</li>
  <li><strong>Multi-Agent Systems</strong>: AutoGen, Crew.ai, AutoGen Studio (visual)</li>
  <li><strong>Model Serving</strong>: vLLM (performance), Ollama (local), Agno (managed)</li>
  <li><strong>Observability</strong>: Langfuse (open-source), Guardrails (safety)</li>
  <li><strong>Model Discovery</strong>: Hugging Face (open models), OpenRouter (API aggregation)</li>
  <li><strong>Data Integration</strong>: MCP (protocol standardization)</li>
</ul>

<hr />

<h2 id="13-other-essential-tools">13. Other Essential Tools</h2>

<p>These tools support development workflows, design processes, project management, and productivity. While not directly programming-related, they’re essential for efficient development.</p>

<h3 id="key-trends-11">Key Trends</h3>

<ul>
  <li><strong>Knowledge Management</strong>: Notion vs Obsidian vs Logseq competition</li>
  <li><strong>Design Tools</strong>: Figma dominance in collaborative design</li>
  <li><strong>Automation</strong>: n8n vs Zapier vs Make for workflow automation</li>
  <li><strong>Security</strong>: Password managers and VPNs becoming standard</li>
</ul>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Author</th>
      <th>Category</th>
      <th>Open Source</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="https://en.wikipedia.org/wiki/Search_engine_optimization">SEO</a></td>
      <td>Various</td>
      <td>Digital marketing</td>
      <td>Yes</td>
      <td>Search Engine Optimization - optimizing website ranking in search engines</td>
    </tr>
    <tr>
      <td><a href="https://developer.nvidia.com/cuda-toolkit">CUDA</a></td>
      <td>NVIDIA</td>
      <td>Computing platform</td>
      <td>No</td>
      <td>Parallel computing platform and programming model for GPUs</td>
    </tr>
    <tr>
      <td><a href="https://en.wikipedia.org/wiki/Bash_(Unix_shell)">Linux Bash</a></td>
      <td>Brian Fox</td>
      <td>Shell</td>
      <td>Yes</td>
      <td>Command-line shell for Unix-like operating systems</td>
    </tr>
    <tr>
      <td><a href="https://en.wikipedia.org/wiki/Blockchain">Blockchain</a></td>
      <td>Satoshi Nakamoto</td>
      <td>Distributed ledger technology</td>
      <td>Yes</td>
      <td>Decentralized digital ledger technology for cryptocurrencies and Web3 applications</td>
    </tr>
    <tr>
      <td><a href="https://jinja.palletsprojects.com/">Jinja</a></td>
      <td>Armin Ronacher</td>
      <td>Templating engine</td>
      <td>Yes</td>
      <td>Fast, expressive, extensible templating engine for Python</td>
    </tr>
    <tr>
      <td><a href="https://n8n.io">n8n</a></td>
      <td>n8n</td>
      <td>Low-code automation</td>
      <td>Yes</td>
      <td>Fair-code source workflow automation tool</td>
    </tr>
    <tr>
      <td><a href="https://zapier.com">Zapier</a></td>
      <td>Zapier</td>
      <td>Low-code automation</td>
      <td>Freemium</td>
      <td>Online automation tool for connecting apps and workflows</td>
    </tr>
    <tr>
      <td><a href="https://www.make.com">Make</a></td>
      <td>Make</td>
      <td>Low-code automation</td>
      <td>Freemium</td>
      <td>Visual platform for building automated workflows</td>
    </tr>
    <tr>
      <td><a href="https://gumloop.com/">Gumloop</a></td>
      <td>Gumloop</td>
      <td>Low-code automation</td>
      <td>Freemium</td>
      <td>No-code automation platform for business processes</td>
    </tr>
    <tr>
      <td><a href="https://www.ssh.com/">SSH</a></td>
      <td>Various</td>
      <td>Remote desktop</td>
      <td>Yes</td>
      <td>Secure protocol for encrypted remote system administration</td>
    </tr>
    <tr>
      <td><a href="https://www.realvnc.com/">VNC</a></td>
      <td>RealVNC</td>
      <td>Remote desktop</td>
      <td>Yes</td>
      <td>Remote desktop sharing and control protocol for graphical user interfaces</td>
    </tr>
    <tr>
      <td><a href="https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/rdp/">RDP</a></td>
      <td>Microsoft</td>
      <td>Remote desktop</td>
      <td>No</td>
      <td>Remote Desktop Protocol from Microsoft for Windows system administration</td>
    </tr>
    <tr>
      <td><a href="https://auth0.com">Auth0</a></td>
      <td>Okta</td>
      <td>Authentication</td>
      <td>Freemium</td>
      <td>Platform for authentication and identity management</td>
    </tr>
    <tr>
      <td><a href="https://clerk.dev/">Clerk</a></td>
      <td>Clerk</td>
      <td>Authentication</td>
      <td>Freemium</td>
      <td>Complete user management platform for modern applications</td>
    </tr>
    <tr>
      <td><a href="https://oauth.net/2/">OAuth2</a></td>
      <td>IETF</td>
      <td>Authorization protocol</td>
      <td>Yes</td>
      <td>Open standard for access delegation commonly used for authorization</td>
    </tr>
    <tr>
      <td><a href="https://www.crummy.com/software/BeautifulSoup/">Beautiful Soup</a></td>
      <td>Leonard Richardson</td>
      <td>Web scraping</td>
      <td>Yes</td>
      <td>Python library for parsing HTML and XML documents</td>
    </tr>
    <tr>
      <td><a href="https://scrapy.org">Scrapy</a></td>
      <td>Scrapy</td>
      <td>Web scraping</td>
      <td>Yes</td>
      <td>Fast high-level web crawling and scraping framework</td>
    </tr>
    <tr>
      <td><a href="https://firecrawl.dev">Firecrawl</a></td>
      <td>Firecrawl</td>
      <td>Web scraping</td>
      <td>Freemium</td>
      <td>API for crawling and converting websites to markdown</td>
    </tr>
    <tr>
      <td><a href="https://www.figma.com">Figma</a></td>
      <td>Figma</td>
      <td>Design tool</td>
      <td>Freemium</td>
      <td>Collaborative interface design tool for teams</td>
    </tr>
    <tr>
      <td><a href="https://www.adobe.com/creativecloud">Adobe Creative Cloud</a></td>
      <td>Adobe</td>
      <td>Design tool</td>
      <td>No</td>
      <td>Suite of creative software for design and multimedia</td>
    </tr>
    <tr>
      <td><a href="https://www.canva.com">Canva</a></td>
      <td>Canva</td>
      <td>Design tool</td>
      <td>Freemium</td>
      <td>Online graphic design platform for non-designers</td>
    </tr>
    <tr>
      <td><a href="https://www.sketch.com">Sketch</a></td>
      <td>Sketch</td>
      <td>Design tool</td>
      <td>No</td>
      <td>Digital design platform for UI/UX designers</td>
    </tr>
    <tr>
      <td><a href="https://www.unrealengine.com">Unreal engine</a></td>
      <td>Epic Games</td>
      <td>Game engine</td>
      <td>Freemium</td>
      <td>3D creation suite for games and simulations</td>
    </tr>
    <tr>
      <td><a href="https://unity.com">Unity</a></td>
      <td>Unity Technologies</td>
      <td>Game engine</td>
      <td>Freemium</td>
      <td>Cross-platform game engine for creating 2D and 3D games</td>
    </tr>
    <tr>
      <td><a href="https://www.atlassian.com/software/jira">Jira</a></td>
      <td>Atlassian</td>
      <td>Project management</td>
      <td>Freemium</td>
      <td>Issue tracking and project management software</td>
    </tr>
    <tr>
      <td><a href="https://trello.com">Trello</a></td>
      <td>Trello</td>
      <td>Project management</td>
      <td>Freemium</td>
      <td>Visual collaboration tool for project management</td>
    </tr>
    <tr>
      <td><a href="https://asana.com">Asana</a></td>
      <td>Asana</td>
      <td>Project management</td>
      <td>Freemium</td>
      <td>Work management platform for teams</td>
    </tr>
    <tr>
      <td><a href="https://linear.app">Linear</a></td>
      <td>Linear</td>
      <td>Project management</td>
      <td>Freemium</td>
      <td>Modern issue tracking and project management tool</td>
    </tr>
    <tr>
      <td><a href="https://www.notion.so">Notion</a></td>
      <td>Notion</td>
      <td>Personal knowledge management</td>
      <td>Freemium</td>
      <td>All-in-one workspace for notes, docs, and collaboration</td>
    </tr>
    <tr>
      <td><a href="https://obsidian.md">Obsidian</a></td>
      <td>Obsidian</td>
      <td>Personal knowledge management</td>
      <td>Freemium</td>
      <td>Knowledge base that works on local Markdown files</td>
    </tr>
    <tr>
      <td><a href="https://evernote.com">Evernote</a></td>
      <td>Evernote</td>
      <td>Personal knowledge management</td>
      <td>Freemium</td>
      <td>Note-taking and organization application</td>
    </tr>
    <tr>
      <td><a href="https://logseq.com">Logseq</a></td>
      <td>Logseq</td>
      <td>Personal knowledge management</td>
      <td>Yes</td>
      <td>Privacy-focused, open-source knowledge management</td>
    </tr>
    <tr>
      <td><a href="https://orgmode.org/">Org mode</a></td>
      <td>Carsten Dominik</td>
      <td>Personal knowledge management</td>
      <td>Yes</td>
      <td>Major mode for Emacs for organizing projects</td>
    </tr>
    <tr>
      <td><a href="https://bitwarden.com">Bitwarden</a></td>
      <td>Bitwarden</td>
      <td>Password manager</td>
      <td>Freemium</td>
      <td>Open-source password management solution</td>
    </tr>
    <tr>
      <td><a href="https://www.lastpass.com">LastPass</a></td>
      <td>LastPass</td>
      <td>Password manager</td>
      <td>Freemium</td>
      <td>Password manager and secure digital wallet</td>
    </tr>
    <tr>
      <td><a href="https://1password.com">1Password</a></td>
      <td>AgileBits</td>
      <td>Password manager</td>
      <td>Freemium</td>
      <td>Password manager with secure sharing capabilities</td>
    </tr>
    <tr>
      <td><a href="https://keepass.info">Keepass</a></td>
      <td>Dominik Reichl</td>
      <td>Password manager</td>
      <td>Yes</td>
      <td>Free, open-source password manager</td>
    </tr>
    <tr>
      <td><a href="https://protonvpn.com">Proton VPN</a></td>
      <td>Proton</td>
      <td>VPN</td>
      <td>Freemium</td>
      <td>Secure VPN service focused on privacy</td>
    </tr>
    <tr>
      <td><a href="https://nordvpn.com">NordVPN</a></td>
      <td>NordVPN</td>
      <td>VPN</td>
      <td>Freemium</td>
      <td>VPN service with enhanced security features</td>
    </tr>
    <tr>
      <td><a href="https://www.expressvpn.com">ExpressVPN</a></td>
      <td>ExpressVPN</td>
      <td>VPN</td>
      <td>Freemium</td>
      <td>Fast VPN service for secure browsing</td>
    </tr>
  </tbody>
</table>

<h3 id="essential-tools-recommendations">Essential tools recommendations</h3>

<ul>
  <li><strong>Knowledge Management</strong>: Obsidian (privacy), Notion (collaboration), Logseq (open-source)</li>
  <li><strong>Design</strong>: Figma (collaborative), Canva (non-designers), Adobe (professionals)</li>
  <li><strong>Automation</strong>: n8n (self-hosted), Zapier (integrations), Make (visual)</li>
  <li><strong>Project Management</strong>: Linear (modern), Jira (enterprise), Trello (simple)</li>
  <li><strong>Security</strong>: Bitwarden (open-source), 1Password (features), NordVPN (privacy)</li>
</ul>

<hr />

<h2 id="2026-technology-trends">2026 Technology Trends</h2>

<h3 id="rising-technologies">Rising Technologies</h3>

<ul>
  <li><strong>Rust</strong>: Systems programming with memory safety</li>
  <li><strong>TypeScript</strong>: Default for enterprise JavaScript projects</li>
  <li><strong>Vector Databases</strong>: Essential for AI applications</li>
  <li><strong>AI-Enhanced Development</strong>: GitHub Copilot, Cursor, Windsurf</li>
  <li><strong>Serverless Platforms</strong>: Vercel, Railway, Neon, PlanetScale</li>
  <li><strong>Low-Code Automation</strong>: n8n, Zapier, Make</li>
</ul>

<h3 id="declining-tools">Declining Tools</h3>

<ul>
  <li><strong>jQuery</strong>: Legacy in modern web development</li>
  <li><strong>Traditional CMS</strong>: Replaced by headless CMS and frontend frameworks</li>
  <li><strong>Monolithic Architectures</strong>: Microservices and serverless preferred</li>
  <li><strong>Manual Deployments</strong>: CI/CD automation now standard</li>
</ul>

<h3 id="integration-trends">Integration Trends</h3>

<ul>
  <li><strong>API-First Design</strong>: Frontend and backend separation</li>
  <li><strong>Microservices</strong>: Domain-driven service architecture</li>
  <li><strong>Event-Driven</strong>: Kafka, event sourcing, CQRS patterns</li>
  <li><strong>Observability</strong>: OpenTelemetry standardization</li>
  <li><strong>GitOps</strong>: Infrastructure as code with automated deployment</li>
</ul>

<hr />

<h2 id="conclusion">Conclusion</h2>

<p>The technology landscape in 2026 offers unprecedented choice and power, but also complexity. Success comes from strategic tool selection, integration planning, and continuous learning. The technology choices you make today will impact your success tomorrow. Use this guide to make informed decisions, build robust systems, and develop sustainable development practices.</p>

<h3 id="key-takeaways">Key Takeaways</h3>

<ol>
  <li>
    <p><strong>Ecosystem Matters More Than Individual Tools</strong>: Choose technologies that work well together rather than isolated “best-of-breed” solutions.</p>
  </li>
  <li>
    <p><strong>Balance Current Needs with Future Growth</strong>: Select tools that scale with your success and adapt to changing requirements.</p>
  </li>
  <li>
    <p><strong>Invest in Learning</strong>: The most valuable asset is team knowledge and ability to adapt to new technologies.</p>
  </li>
  <li>
    <p><strong>Monitor Trends, Don’t Chase</strong>: Be aware of emerging technologies but adopt based on actual needs, not hype.</p>
  </li>
  <li>
    <p><strong>Build Observability In</strong>: Choose tools with strong monitoring and debugging capabilities from the start.</p>
  </li>
</ol>

<hr />

<p><em>This guide represents comprehensive analysis of 200+ tools across 13 categories.</em></p>

<p><em>Last Updated: November 2025</em></p>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;tech&quot;]" /><summary type="html"><![CDATA[A list of popular tools used in tech, organised by categories. Updated in Nov 2025.]]></summary></entry><entry><title type="html">Vim cheat sheet</title><link href="https://www.datasparked.com//cheat%20sheet/Vim-cheat-sheet/" rel="alternate" type="text/html" title="Vim cheat sheet" /><published>2022-07-21T00:00:00-04:00</published><updated>2022-07-21T00:00:00-04:00</updated><id>https://www.datasparked.com//cheat%20sheet/Vim-cheat-sheet</id><content type="html" xml:base="https://www.datasparked.com//cheat%20sheet/Vim-cheat-sheet/"><![CDATA[<p><img src="https://www.datasparked.com//assets/images/vim_logo.png" alt="vim_logo" /></p>

<h2 id="definition">Definition</h2>

<p><strong>Vim</strong> is a free and open-source text editor program, popular on UNIX systems.</p>

<h2 id="cheat-sheet">Cheat sheet</h2>

<p>You can download a printable Vim command line cheat sheet <a href="https://www.datasparked.com//assets/downloads/Vim_Cheat_Sheet.jpg">here</a>.</p>

<table>
  <thead>
    <tr>
      <th>Command</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>ESC</td>
      <td>Command mode</td>
    </tr>
    <tr>
      <td>i</td>
      <td>insert mode (write)</td>
    </tr>
    <tr>
      <td>v</td>
      <td>visual mode (search in document)</td>
    </tr>
    <tr>
      <td>:shell</td>
      <td>open command line prompt</td>
    </tr>
    <tr>
      <td>:e filename</td>
      <td>open a new file</td>
    </tr>
    <tr>
      <td>:w</td>
      <td>save changes</td>
    </tr>
    <tr>
      <td>:q</td>
      <td>exit vim</td>
    </tr>
    <tr>
      <td>:q!</td>
      <td>exit vim without changing changes</td>
    </tr>
    <tr>
      <td>:wq</td>
      <td>save changes and exit vim</td>
    </tr>
    <tr>
      <td>:u</td>
      <td>undo last action</td>
    </tr>
    <tr>
      <td>CTRL + r</td>
      <td>redo</td>
    </tr>
    <tr>
      <td>o</td>
      <td>open new line BELOW the cursor + insert mode</td>
    </tr>
    <tr>
      <td>O</td>
      <td>open new line ABOVE the cursor + insert mode</td>
    </tr>
    <tr>
      <td>A</td>
      <td>go to the end of the line + insert mode</td>
    </tr>
    <tr>
      <td>yy</td>
      <td>yank the current line</td>
    </tr>
    <tr>
      <td>y</td>
      <td>yank the highlighted text</td>
    </tr>
    <tr>
      <td>dd</td>
      <td>delete the current line</td>
    </tr>
    <tr>
      <td>D</td>
      <td>delete to the end of the line</td>
    </tr>
    <tr>
      <td>d</td>
      <td>delete the highlighted text</td>
    </tr>
    <tr>
      <td>dw</td>
      <td>delete word</td>
    </tr>
    <tr>
      <td>p</td>
      <td>paste text after cursor position, paste line below the current line</td>
    </tr>
    <tr>
      <td>x</td>
      <td>delete current character</td>
    </tr>
    <tr>
      <td>:vs</td>
      <td>split the current window vertically</td>
    </tr>
    <tr>
      <td>:split file</td>
      <td>opens file in second window</td>
    </tr>
    <tr>
      <td>CTRL + l</td>
      <td>move to the right window</td>
    </tr>
    <tr>
      <td>CTRL + h</td>
      <td>move to the left window</td>
    </tr>
    <tr>
      <td>:q</td>
      <td>close window</td>
    </tr>
    <tr>
      <td>h</td>
      <td>move LEFT</td>
    </tr>
    <tr>
      <td>j</td>
      <td>move DOWN</td>
    </tr>
    <tr>
      <td>k</td>
      <td>move UP</td>
    </tr>
    <tr>
      <td>l</td>
      <td>move RIGHT</td>
    </tr>
    <tr>
      <td>gg</td>
      <td>go to the beginning of the document</td>
    </tr>
    <tr>
      <td>G</td>
      <td>go to the end of the document</td>
    </tr>
    <tr>
      <td>w</td>
      <td>move to the NEXT word</td>
    </tr>
    <tr>
      <td>:n [line_nb]</td>
      <td>jump to line number [line_nb]</td>
    </tr>
    <tr>
      <td>qf&lt;commands recorded&gt;q</td>
      <td>record macro and associate it to the character “f”</td>
    </tr>
    <tr>
      <td>@f</td>
      <td>execute macro associated to the character “f”</td>
    </tr>
    <tr>
      <td>:%s/foo/bar/g</td>
      <td>find each occurrence of ‘foo’ and replace it with ‘bar’</td>
    </tr>
    <tr>
      <td>:%s/foo/bar/gc</td>
      <td>change each ‘foo’ to ‘bar’, but ask for confirmation first</td>
    </tr>
  </tbody>
</table>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;cheat sheet&quot;]" /><summary type="html"><![CDATA[Some useful commands and shortcuts for the Vim text editor]]></summary></entry><entry><title type="html">ROS cheat sheet</title><link href="https://www.datasparked.com//cheat%20sheet/ROS-cheat-sheet/" rel="alternate" type="text/html" title="ROS cheat sheet" /><published>2022-07-20T00:00:00-04:00</published><updated>2022-07-20T00:00:00-04:00</updated><id>https://www.datasparked.com//cheat%20sheet/ROS-cheat-sheet</id><content type="html" xml:base="https://www.datasparked.com//cheat%20sheet/ROS-cheat-sheet/"><![CDATA[<p><img src="https://www.datasparked.com//assets/images/ros-logo.png" alt="ROS_logo" /></p>

<h2 id="some-definitions">Some definitions</h2>

<p>The <strong>Robot Operating System (ROS)</strong> is a collection of tools and libraries that helps you build complex and robust robot applications. There are various distributions of ROS, for example ROS Hydro, ROS Indigo, ROS Kinetic, ROS Melodic. ROS 2 was released in 2021.</p>

<p>A <a href="http://wiki.ros.org/Nodes">Node</a> is process that performs computation and that can communicate with other nodes.</p>

<p><a href="http://wiki.ros.org/Topics">Topics</a> are buses over which nodes exchange <strong>messages</strong>. Nodes can publish messages to a topic and/or subscribe to a topic to receive messages.</p>

<p>A <a href="http://wiki.ros.org/Messages">Message</a> is a data structure (supporting integer, floats, boolean, arrays, etc…) that is used by nodes to communicate with each other.</p>

<p>A <strong>Publisher</strong> is a Node that writes information TO a Topic.</p>

<p>A <strong>Subscriber</strong> is a node that writes information FROM a Topic.</p>

<p>A <a href="http://wiki.ros.org/Services">Service</a> is a client/server system that allows Nodes to communicate data to each other. Its an alternative to Topics.</p>

<p><a href="https://gazebosim.org/home">Gazebo</a> is an open-source physics simulator integrated in ROS. It can set up a world and run robotics simulations.</p>

<p><a href="http://wiki.ros.org/rviz">Rviz</a> is a visualization software, that allows you to view Gazebo data (if you are simulating) or real world data (if you are using the real robot).</p>

<p>A <a href="http://wiki.ros.org/Packages">Package</a> is a directory where a ROS program is stored.</p>

<p><a href="http://wiki.ros.org/catkin">Catkin</a> is the official build system of ROS.</p>

<h2 id="cheat-sheet">Cheat sheet</h2>

<p>You can download a printable ROS cheat sheet <a href="https://www.datasparked.com//assets/downloads/ROS_cheat_sheet.pdf">here</a> (<a href="http://air.imag.fr/images/f/f7/ROScheatsheet.pdf">Source</a>).</p>

<h3 id="ros-packages">ROS Packages</h3>

<ul>
  <li>Launch a ROS package</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roslaunch &lt;package_name&gt; &lt;launch_file&gt;
</code></pre></div></div>

<p>For example:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># PACKAGE</span>
roslaunch turtlebot_teleop keyboard_teleop.launch
roslaunch bb_8_teleop keyboard_teleop.launch

<span class="c"># PUBLISHER</span>
roslaunch publisher_example move.launch
roslaunch publisher_example stop.launch

<span class="c"># SERVICE</span>
roslaunch service_demo service_launch.launch
rosservice call /service_demo <span class="s2">"{}"</span>

<span class="c"># ACTION</span>
roslaunch action_demo action_launch.launch
roslaunch action_demo_client client_launch.launch
</code></pre></div></div>

<ul>
  <li>List ROS packages</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rospack list
rospack list | <span class="nb">grep</span> &lt;package_name&gt;
</code></pre></div></div>

<ul>
  <li>Refresh the package list</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rospack profile
</code></pre></div></div>

<ul>
  <li>List first order dependencies</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rospack depends &lt;package_name&gt;
</code></pre></div></div>

<ul>
  <li>List all dependencies</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rospack depends &lt;package_name&gt;
</code></pre></div></div>

<ul>
  <li>Create a package</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roscd
<span class="nb">cd</span> ..
<span class="nb">cd </span>src/
catkin_create_pkg &lt;pkg_name&gt; &lt;pkg_dependencies&gt;
<span class="nb">cd</span> ..
catkin_make
</code></pre></div></div>
<p>For example,</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>catkin_create_pkg my_package rospy
</code></pre></div></div>

<ul>
  <li>Install a package from a Github repository</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/catkin_ws/src

<span class="c"># clone repo</span>
git clone https://github.com/&lt;...&gt;.git

<span class="c"># check for missing dependencies</span>
rosdep update
rosdep check <span class="nt">--from-paths</span> <span class="nb">.</span> <span class="nt">--ignore-src</span> <span class="nt">--rosdistro</span> melodic

<span class="c"># install missing dependencies (if needed)</span>
rosdep <span class="nb">install</span> <span class="nt">--from-paths</span> <span class="nb">.</span> <span class="nt">--ignore-src</span> <span class="nt">--rosdistro</span> melodic <span class="nt">-y</span>

<span class="c"># build package</span>
<span class="nb">cd</span> ~/catkin_ws/
catkin_make
</code></pre></div></div>

<ul>
  <li>Create a Python programme inside a ROS package</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roscd &lt;package_name&gt;
<span class="nb">cd </span>src/
vim &lt;python_file_name.py&gt;
<span class="nb">chmod</span> +x &lt;python_file_name.py&gt;
roscd &lt;package_name&gt;
<span class="nb">mkdir </span>launch
vim launch/&lt;launch_file.launch&gt;
</code></pre></div></div>

<ul>
  <li>Compile all packages in catkin directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roscd
catkin_make
<span class="nb">.</span> ~/catkin_ws/devel/setup.bash      <span class="c"># Source the setup file</span>
<span class="nb">source</span> /opt/ros/melodic/setup.bash  <span class="c"># Source environment setup file</span>
<span class="nb">echo</span> <span class="nv">$ROS_PACKAGE_PATH</span>              <span class="c"># Print the package path</span>
</code></pre></div></div>

<ul>
  <li>Compile only one package</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roscd
catkin_make <span class="nt">--only-pkg-with-deps</span> &lt;package_name&gt;
</code></pre></div></div>

<h3 id="ros-nodes">ROS nodes</h3>

<ul>
  <li>List all the nodes currently running</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosnode list
</code></pre></div></div>

<p>For example,</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roscore
rosrun turtlesim turtlesim_node <span class="c"># in another terminal</span>
rosnode list                    <span class="c"># in another terminal  </span>
</code></pre></div></div>

<ul>
  <li>Run a node within a package</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosrun &lt;package_name&gt; &lt;node_name&gt;
</code></pre></div></div>

<p>For example:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosrun turtlesim turtlesim_node
rosrun rviz rviz                   <span class="c"># Run Rviz (debugging)</span>
rosrun rqt_plot rqt_plot
rosrun rqt_graph rqt_graph         <span class="c"># Visualise graph (node connections)</span>
</code></pre></div></div>

<ul>
  <li>Print info about a node</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosnode info /&lt;node_name&gt;
</code></pre></div></div>

<ul>
  <li>Test connectivity to node</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosnode ping
</code></pre></div></div>

<ul>
  <li>List nodes running on a particular machine or list machines</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosnode machine
</code></pre></div></div>

<ul>
  <li>Kill a running node</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosnode <span class="nb">kill</span>
</code></pre></div></div>

<ul>
  <li>Purge registration information of unreachable nodes</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosnode cleanup
</code></pre></div></div>

<h3 id="ros-parameters">ROS parameters</h3>

<ul>
  <li>List ROS parameters</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosparam list
</code></pre></div></div>

<ul>
  <li>Get parameter value</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosparam get &lt;parameter_name&gt;
</code></pre></div></div>

<ul>
  <li>Assign a value to a parameter</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosparam <span class="nb">set</span> &lt;parameter_name&gt; &lt;value&gt;
</code></pre></div></div>

<ul>
  <li>Load parameters from files</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosparam load
</code></pre></div></div>

<ul>
  <li>Dump parameters to file</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosparam dump
</code></pre></div></div>

<ul>
  <li>Delete parameter</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosparam delete
</code></pre></div></div>

<h3 id="ros-topics">ROS Topics</h3>

<ul>
  <li>List active topics (with verbose option)</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rostopic list
rostopic list <span class="nt">-v</span>
</code></pre></div></div>

<ul>
  <li>Print the output messages of a topic to the screen in real time</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rostopic <span class="nb">echo</span> /&lt;topic_name&gt;
</code></pre></div></div>

<ul>
  <li>Publish message with specified value to a topic</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rostopic pub &lt;topic_name&gt; &lt;message_type&gt; &lt;value&gt;
</code></pre></div></div>

<ul>
  <li>Display bandwidth used by topic</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rostopic bw
</code></pre></div></div>

<ul>
  <li>Display delay of topic from timestamp in header</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rostopic delay
</code></pre></div></div>

<ul>
  <li>Find topics by type</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rostopic find
</code></pre></div></div>

<ul>
  <li>Display publishing rate of topic</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rostopic hz
</code></pre></div></div>

<ul>
  <li>Print topic or field type</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rostopic <span class="nb">type</span> &lt;topic_name&gt;
</code></pre></div></div>

<h3 id="ros-messages">ROS messages</h3>

<ul>
  <li>Show message description (and its structure)</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosmsg show &lt;message&gt;
rosmsg info &lt;message&gt;
</code></pre></div></div>

<ul>
  <li>This is useful to check the structure of the messages</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roscd std_msgs/msg/
roscd geometry_msgs/msg/
roscd nav_msgs/msg/
</code></pre></div></div>

<ul>
  <li>List all messages</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosmsg list
</code></pre></div></div>

<ul>
  <li>Display message called md5sum</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosmsg md5
</code></pre></div></div>

<ul>
  <li>List messages in a package</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosmsg package
</code></pre></div></div>

<ul>
  <li>List packages that contain messages</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rosmsg packages
</code></pre></div></div>

<h3 id="gazebo">Gazebo</h3>

<ul>
  <li>start Gazebo</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gazebo
</code></pre></div></div>

<ul>
  <li>run Gazebo server</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gzserver
</code></pre></div></div>

<ul>
  <li>run Gazebo client</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gzclient
</code></pre></div></div>

<ul>
  <li>kill Gazebo server</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>killall gzserver
</code></pre></div></div>

<h3 id="other-commands">Other commands</h3>

<ul>
  <li>Start ROS core</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roscore
</code></pre></div></div>

<ul>
  <li>List ROS environment variables</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">export</span> | <span class="nb">grep </span>ROS
</code></pre></div></div>

<ul>
  <li>Go to the Catkin workspace</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roscd
</code></pre></div></div>

<ul>
  <li>Go to “package_name”</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>roscd &lt;package_name&gt;
</code></pre></div></div>

<h3 id="launch-file-structure">Launch file structure</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;launch&gt;
&lt;<span class="o">!</span><span class="nt">--</span> My Package launch file <span class="nt">--</span><span class="o">&gt;</span>
&lt;node <span class="nv">pkg</span><span class="o">=</span><span class="s2">"&lt;package_name&gt;"</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"&lt;python_file_name.py&gt;"</span> <span class="nv">name</span><span class="o">=</span><span class="s2">"&lt;node_name&gt;"</span> <span class="nv">output</span><span class="o">=</span><span class="s2">"screen"</span><span class="o">&gt;</span>
&lt;/node&gt;
&lt;/launch&gt;
</code></pre></div></div>

<h3 id="example-of-publisher-node-that-write-messages-to-a-ros-topic">Example of publisher node that write messages to a ROS topic</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#! /usr/bin/env python
</span>
<span class="kn">import</span> <span class="nn">rospy</span>          <span class="c1"># Import the Python library for ROS
</span><span class="kn">from</span> <span class="nn">std_msgs.msg</span> <span class="kn">import</span> <span class="n">Int32</span> <span class="c1"># Import the Int32 message from the std_msgs package   
</span>
<span class="n">rospy</span><span class="p">.</span><span class="n">init_node</span><span class="p">(</span><span class="s">'topic_publisher'</span><span class="p">)</span> <span class="c1"># Initiate a Node named 'topic_publisher'
</span><span class="n">pub</span> <span class="o">=</span> <span class="n">rospy</span><span class="p">.</span><span class="n">Publisher</span><span class="p">(</span><span class="s">'/counter'</span><span class="p">,</span> <span class="n">Int32</span><span class="p">,</span> <span class="n">queue_size</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># Create a Publisher object, that will publish on the /counter topic + messages of type Int32
</span>
<span class="n">rate</span> <span class="o">=</span> <span class="n">rospy</span><span class="p">.</span><span class="n">Rate</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># Set a publish rate of 2 Hz
</span><span class="n">count</span> <span class="o">=</span> <span class="n">Int32</span><span class="p">()</span> <span class="c1"># Create a var of type Int32
</span><span class="n">count</span><span class="p">.</span><span class="n">data</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># Initialize 'count' variable
</span>
<span class="k">while</span> <span class="ow">not</span> <span class="n">rospy</span><span class="p">.</span><span class="n">is_shutdown</span><span class="p">():</span> <span class="c1"># Create a loop that will go until someone stops the program execution
</span>    <span class="n">pub</span><span class="p">.</span><span class="n">publish</span><span class="p">(</span><span class="n">count</span><span class="p">)</span> <span class="c1"># Publish the message within the 'count' variable
</span>    <span class="n">count</span><span class="p">.</span><span class="n">data</span> <span class="o">+=</span> <span class="mi">1</span> <span class="c1"># Increment 'count' variable
</span>    <span class="n">rate</span><span class="p">.</span><span class="n">sleep</span><span class="p">()</span> <span class="c1"># Make sure the publish rate maintains at 2 Hz
</span></code></pre></div></div>

<h3 id="example-of-subscriber-node-that-read-messages-to-a-ros-topic">Example of subscriber node that read messages to a ROS topic</h3>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#! /usr/bin/env python
</span>
<span class="kn">import</span> <span class="nn">rospy</span>
<span class="kn">from</span> <span class="nn">std_msgs.msg</span> <span class="kn">import</span> <span class="n">Int32</span>

<span class="k">def</span> <span class="nf">callback</span><span class="p">(</span><span class="n">msg</span><span class="p">):</span> <span class="c1"># Define a function called 'callback' that receives a parameter named 'msg'
</span>    <span class="k">print</span> <span class="n">msg</span><span class="p">.</span><span class="n">data</span> <span class="c1"># Print the value 'data' inside the 'msg' parameter
</span>
<span class="n">rospy</span><span class="p">.</span><span class="n">init_node</span><span class="p">(</span><span class="s">'topic_subscriber'</span><span class="p">)</span> <span class="c1"># Initiate a Node called 'topic_subscriber'
</span>
<span class="c1"># Create a Subscriber object that will listen
# to the /counter topic and will call the
# 'callback' function each time it reads
# something from the topic
</span><span class="n">sub</span> <span class="o">=</span> <span class="n">rospy</span><span class="p">.</span><span class="n">Subscriber</span><span class="p">(</span><span class="s">'/counter'</span><span class="p">,</span> <span class="n">Int32</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span> 

<span class="n">rospy</span><span class="p">.</span><span class="n">spin</span><span class="p">()</span>
</code></pre></div></div>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;cheat sheet&quot;]" /><summary type="html"><![CDATA[Some useful commands and shortcuts for ROS]]></summary></entry><entry><title type="html">Markdown cheat sheet</title><link href="https://www.datasparked.com//cheat%20sheet/Markdown-cheat-sheet/" rel="alternate" type="text/html" title="Markdown cheat sheet" /><published>2022-07-19T00:00:00-04:00</published><updated>2022-07-19T00:00:00-04:00</updated><id>https://www.datasparked.com//cheat%20sheet/Markdown-cheat-sheet</id><content type="html" xml:base="https://www.datasparked.com//cheat%20sheet/Markdown-cheat-sheet/"><![CDATA[<p><img src="https://www.datasparked.com//assets/images/markdown_logo.png" alt="markdown_logo" /></p>

<h2 id="definition">Definition</h2>

<p><strong>Markdown</strong> is an easy-to-read, easy-to-write syntax for formatting plain text into HTML code. It is commonly used to write README.md files in Git repositories.</p>

<p>Here are some comprehensive Markdown reference guides for <a href="https://www.markdownguide.org/basic-syntax/">basic syntax</a> and <a href="https://www.markdownguide.org/extended-syntax/">advanced features</a>.</p>

<h2 id="heading">Heading</h2>

<h1 id="h1">H1</h1>
<h2 id="h2">H2</h2>
<h3 id="h3">H3</h3>

<h2 id="bold">Bold</h2>

<p><strong>bold text</strong></p>

<h2 id="italic">Italic</h2>

<p><em>italicized text</em></p>

<h2 id="blockquote">Blockquote</h2>

<blockquote>
  <p>blockquote</p>
</blockquote>

<h2 id="ordered-list">Ordered List</h2>

<ol>
  <li>First item</li>
  <li>Second item</li>
  <li>Third item</li>
</ol>

<h2 id="unordered-list">Unordered List</h2>

<ul>
  <li>First item</li>
  <li>Second item</li>
  <li>Third item</li>
</ul>

<h2 id="code">Code</h2>

<p><code class="language-plaintext highlighter-rouge">code</code></p>

<h2 id="horizontal-rule">Horizontal Rule</h2>

<hr />

<h2 id="link">Link</h2>

<p><a href="https://www.markdownguide.org">Markdown Guide</a></p>

<h2 id="image">Image</h2>

<p><img src="https://www.markdownguide.org/assets/images/tux.png" alt="alt text" /></p>

<h2 id="table">Table</h2>

<table>
  <thead>
    <tr>
      <th>Syntax</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Header</td>
      <td>Title</td>
    </tr>
    <tr>
      <td>Paragraph</td>
      <td>Text</td>
    </tr>
  </tbody>
</table>

<h2 id="fenced-code-block">Fenced Code Block</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{
  "firstName": "John",
  "lastName": "Smith",
  "age": 25
}
</code></pre></div></div>

<h2 id="footnote">Footnote</h2>

<p>Here’s a sentence with a footnote. <sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup></p>

<h2 id="definition-list">Definition List</h2>

<dl>
  <dt>term</dt>
  <dd>definition</dd>
</dl>

<h2 id="strikethrough">Strikethrough</h2>

<p><del>The world is flat.</del></p>

<h2 id="task-list">Task List</h2>

<ul class="task-list">
  <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" checked="checked" />Write the press release</li>
  <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />Update the website</li>
  <li class="task-list-item"><input type="checkbox" class="task-list-item-checkbox" disabled="disabled" />Contact the media</li>
</ul>
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>This is the footnote. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;cheat sheet&quot;]" /><summary type="html"><![CDATA[Some useful syntax for the Markdown format]]></summary></entry><entry><title type="html">Linux bash cheat sheet</title><link href="https://www.datasparked.com//cheat%20sheet/Linux-bash-cheat-sheet/" rel="alternate" type="text/html" title="Linux bash cheat sheet" /><published>2022-07-18T00:00:00-04:00</published><updated>2022-07-18T00:00:00-04:00</updated><id>https://www.datasparked.com//cheat%20sheet/Linux-bash-cheat-sheet</id><content type="html" xml:base="https://www.datasparked.com//cheat%20sheet/Linux-bash-cheat-sheet/"><![CDATA[<p><img src="https://www.datasparked.com//assets/images/linux_logo.png" alt="linux-logo" /></p>

<h2 id="some-definitions">Some definitions</h2>

<ul>
  <li><strong>Linux</strong> is an open-source operating system. It comes under different “flavours” or <strong>distributions</strong> such as Ubuntu, Arch Linux, Fedora, etc…</li>
  <li><strong>Bash</strong> - for Bourne Again SHell - is Linux’ command line interpreter (or <strong>shell</strong>) that provides a command line interface inside a terminal emulator.</li>
</ul>

<h2 id="cheat-sheet">Cheat sheet</h2>

<p>You can download a printable Linux command line cheat sheet <a href="https://www.datasparked.com//assets/downloads/Linux-bash-cheat-sheet.pdf">here</a> from <a href="https://cheatography.com/davechild/cheat-sheets/linux-command-line/">Cheatography</a>.</p>

<h2 id="1-find-files">1. Find files</h2>

<ul>
  <li>Find files match a pattern</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nt">-name</span> <span class="s2">"query"</span>
</code></pre></div></div>

<ul>
  <li>Find files match a pattern, case insensitive</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nt">-iname</span> <span class="s2">"query"</span> 
</code></pre></div></div>

<ul>
  <li>Find all files that don’t contain the pattern</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nt">-not</span> <span class="nt">-name</span> <span class="s2">"query_to_avoid"</span>
</code></pre></div></div>

<ul>
  <li>Find all files in current directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nb">.</span> <span class="nt">-type</span> f
</code></pre></div></div>

<ul>
  <li>Find all directories in current directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nb">.</span> <span class="nt">-type</span> d
</code></pre></div></div>

<ul>
  <li>Find all symbolic links in current directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nb">.</span> <span class="nt">-type</span> l 
</code></pre></div></div>

<ul>
  <li>Find all items ending in “.conf” in current directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nb">.</span> <span class="nt">-name</span> <span class="k">*</span>.conf
</code></pre></div></div>

<ul>
  <li>Find all files in the current directory starting with “pro”</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nb">.</span> <span class="nt">-name</span> pro<span class="k">*</span> 
</code></pre></div></div>

<ul>
  <li>Find all items containing “yolo” in current directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nb">.</span> <span class="nt">-name</span> <span class="k">*</span>yolo<span class="k">*</span>
</code></pre></div></div>

<ul>
  <li>Find pattern ‘tensorflow’ in python files in the current directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find <span class="nb">.</span> <span class="nt">-name</span> <span class="k">*</span>.py | <span class="nb">grep</span> <span class="nt">-rnw</span> tensorflow 
</code></pre></div></div>

<p>Option explained:</p>
<ul>
  <li>-r or -R : recursive</li>
  <li>-n : show line number</li>
  <li>-w : match the whole word</li>
  <li>
    <p>-l (lower-case L) : give the file name of matching files (optional).</p>
  </li>
  <li>Find pattern in file recursively</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">grep</span> <span class="nt">-rnw</span> <span class="s1">'/path/to/somewhere/'</span> <span class="nt">-e</span> <span class="s1">'pattern'</span>
</code></pre></div></div>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">grep</span> <span class="nt">-r</span> <span class="s1">'pattern'</span>
</code></pre></div></div>

<ul>
  <li>Move file with extension recursively to a directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find /thisdir <span class="nt">-type</span> f <span class="nt">-name</span> <span class="s1">'*.ogg'</span> <span class="nt">-exec</span> <span class="nb">mv</span> <span class="nt">-i</span> <span class="o">{}</span> /somedir <span class="se">\;</span>
</code></pre></div></div>

<h2 id="2-backup-installed-packages">2. Backup installed packages</h2>

<ul>
  <li>Write list of packages</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>dpkg <span class="nt">--get-selections</span> <span class="s2">"*"</span> <span class="o">&gt;</span> my_packages.txt
</code></pre></div></div>

<ul>
  <li>Install list of packages from txt file</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>dpkg <span class="nt">--set-selections</span> &lt; my_packages.txt
<span class="nb">sudo </span>apt-get <span class="nt">-u</span> dselect-upgrade
</code></pre></div></div>

<h2 id="3-command-line-history">3. Command line history</h2>

<ul>
  <li>Search command line history (shortcut)</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CTRL + r
</code></pre></div></div>

<ul>
  <li>View command line history</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">history</span>
</code></pre></div></div>

<h2 id="4-copy-tofrom-ssh-server">4. Copy to/from SSH server</h2>

<ul>
  <li>When logged in locally, copy from local to remote</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>scp /file/to/send username@remote:/where/to/put
<span class="c"># OR</span>
rsync <span class="nt">-avzh</span> /file/to/send username@remote:/where/to/put
</code></pre></div></div>
<p>where the rsync options are:</p>

<ul>
  <li>-a : archive mode, which preserves permissions, ownership, and modification times</li>
  <li>-v : enables verbose</li>
  <li>-z : enables compression during transfer</li>
  <li>
    <p>-h : outputs numbers in human-readable format</p>
  </li>
  <li>When logged in locally, from remote to local</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>scp username@remote:/file/to/send /where/to/put
<span class="c"># OR</span>
rsync <span class="nt">-avzh</span> username@remote:/file/to/send /where/to/put
</code></pre></div></div>

<ul>
  <li>When logged in remotely, copy from remote to local</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sftp username@remote
get <span class="nt">-r</span> <span class="s2">"remote/dir/path"</span> <span class="s2">"local/dir/path"</span>
</code></pre></div></div>

<ul>
  <li>When logged in remotely, copy from local to remote</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sftp username@remote
put <span class="nt">-r</span> <span class="s2">"local/dir/path"</span> <span class="s2">"remote/dir/path"</span>
</code></pre></div></div>

<p>(note: in Ubuntu, you may encounter this error: “Couldn’t canonicalise: No such file or directory”. Solution: create a directory on the remote first using mkdir)</p>

<ul>
  <li>Launch a job on an SSH server and be able to log off without killing the job</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">nohup </span>python my_script.py &amp;gt<span class="p">;</span>&amp;amp<span class="p">;</span> log.run &amp;amp<span class="p">;</span>
</code></pre></div></div>

<h2 id="5-file-ownership--make-executable">5. File ownership / make executable</h2>

<ul>
  <li>Change directory ownership</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chown</span> <span class="nt">-R</span> user:group /directory/of/interest
</code></pre></div></div>

<ul>
  <li>Make script executable for all users</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod </span>a+x <span class="s2">"file name"</span>
</code></pre></div></div>

<h2 id="6-system-specs">6. System specs</h2>

<ul>
  <li>Disk usage of the entire filesystem</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">df</span> <span class="nt">-h</span> <span class="nt">--total</span>
<span class="nb">df</span> <span class="nt">-h</span>
</code></pre></div></div>

<ul>
  <li>Disk usage of current directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> <span class="nt">-sh</span> <span class="nb">.</span>
</code></pre></div></div>

<ul>
  <li>Show disk usage of the 40 biggest subfolders in the current directory (ranked)</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> <span class="nt">-hsx</span> <span class="k">*</span> | <span class="nb">sort</span> <span class="nt">-rh</span> | <span class="nb">head</span> <span class="nt">-n</span> 40
</code></pre></div></div>

<ul>
  <li>Show disk usage of all the subfolders in the current directory one by one</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> <span class="nt">-hsx</span> <span class="k">*</span>
</code></pre></div></div>

<ul>
  <li>Show disk usage of the biggest subfolders in the current directory (ranked), with hidden directories</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> <span class="nt">-sch</span> .[!.]<span class="k">*</span> <span class="k">*</span> | <span class="nb">sort</span> <span class="nt">-rh</span>
</code></pre></div></div>

<ul>
  <li>In Ubuntu, this nice tool can explore the disk usage of your entire system quickly</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>apt-get <span class="nb">install </span>ncdu
ncdu
</code></pre></div></div>

<ul>
  <li>View system specs (and export them to a html file)</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>lshw
<span class="nb">sudo </span>lshw <span class="nt">-html</span> <span class="o">&gt;</span> specs.html
</code></pre></div></div>

<ul>
  <li>Check Linux Kernel</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">uname</span> <span class="nt">-a</span>
</code></pre></div></div>

<ul>
  <li>Check Ubuntu version</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lsb_release <span class="nt">-a</span>
</code></pre></div></div>

<ul>
  <li>Print total, free and used RAM memory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>free <span class="nt">-h</span>
</code></pre></div></div>

<ul>
  <li>List CPU and processor info</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lscpu
</code></pre></div></div>

<ul>
  <li>Print generic hardware information</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>hwinfo
</code></pre></div></div>

<ul>
  <li>Print PCI buses, including graphics card, network adapter</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lspci
</code></pre></div></div>

<ul>
  <li>List block devices (storage and partitions)</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lsblk
</code></pre></div></div>

<ul>
  <li>List devices connected via USB</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">ls</span> /dev
</code></pre></div></div>

<ul>
  <li>View running processes</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>top  
htop
</code></pre></div></div>

<ul>
  <li>Print the process ID of a running task</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pidof firefox
</code></pre></div></div>

<h2 id="7-kill-a-running-job">7. Kill a running job</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">kill</span> <span class="s1">'process ID'</span>
</code></pre></div></div>

<p>Note, you can find process ID using the ‘top’ command or using pidof.</p>

<h2 id="8-use-slurm-job-scheduler-for-computing-clusters">8. Use SLURM (job scheduler for computing clusters)</h2>

<ul>
  <li>Submit job</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sbatch job.sh
</code></pre></div></div>

<ul>
  <li>View queue</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>squeue <span class="nt">-u</span> <span class="s2">"user name"</span>  
squeue
</code></pre></div></div>

<h2 id="9-synchronize-files">9. Synchronize files</h2>

<p>This removes files from destination that don’t exist in source.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rsync <span class="nt">-azvh</span> <span class="nb">source</span>/ destination/ <span class="nt">--delete</span>
</code></pre></div></div>

<h2 id="10-manipulate-pdf-documents-with-pdftk">10. Manipulate PDF documents with pdftk</h2>

<ul>
  <li>Cut pdf pages</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pdftk full-pdf.pdf <span class="nb">cat </span>12-15 output outfile_p12-15.pdf
</code></pre></div></div>

<ul>
  <li>Merge pdf pages</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pdftk file1.pdf file2.pdf file3.pdf <span class="nb">cat </span>output newfile.pdf
</code></pre></div></div>

<h2 id="11-make-gifs-and-videos-from-images-using-ffmpeg">11. Make Gifs and videos from images using ffmpeg</h2>

<ul>
  <li>Create video from images</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ffmpeg <span class="nt">-i</span> input_0%d.png <span class="nt">-vcodec</span> libx264 ouput.mp4
ffmpeg <span class="nt">-i</span> input_%d.png <span class="nt">-filter</span>:v <span class="s2">"setpts=10.0*PTS"</span> <span class="nt">-vcodec</span> libx264 ouput.mp4
ffmpeg <span class="nt">-start_number</span> 1 <span class="nt">-i</span> input%d.png <span class="nt">-filter</span>:v <span class="s2">"setpts=2*PTS"</span> <span class="nt">-filter</span>:v <span class="s2">"crop=490:360:15:15"</span> <span class="nt">-r</span> 48 <span class="nt">-c</span>:v libx264 <span class="nt">-crf</span> 0 <span class="nt">-profile</span>:v high444 <span class="nt">-preset</span> slow <span class="nt">-b</span>:v 15M ouput.mp4
</code></pre></div></div>

<ul>
  <li>Create gif from video</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ffmpeg <span class="nt">-t</span> 30 <span class="nt">-i</span> input.mp4 <span class="nt">-vf</span> <span class="s2">"fps=10,scale=1280:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse"</span> <span class="nt">-loop</span> 0 output.gif
ffmpeg <span class="nt">-t</span> 30 <span class="nt">-i</span> input.mp4 <span class="nt">-vf</span> <span class="s2">"fps=24,scale=300:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse"</span> <span class="nt">-loop</span> 0 output.gif
</code></pre></div></div>

<p>Create gif from images using Convert (from ImageMagik)</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>convert <span class="nt">-resize</span> 50% <span class="nt">-delay</span> 20 <span class="nt">-loop</span> 0 input_<span class="o">{</span>0..99<span class="o">}</span>.jpg output.gif
convert <span class="nt">-resize</span> 50% <span class="nt">-delay</span> 20 <span class="nt">-loop</span> 0 <span class="k">*</span>.jpg output.gif
convert <span class="nt">-resize</span> 50% <span class="nt">-delay</span> 20 <span class="nt">-loop</span> 0 <span class="sb">`</span><span class="nb">ls</span> <span class="nt">-v</span><span class="sb">`</span> output.gif
</code></pre></div></div>

<p>Create gif from images using Gimp (GUI, potentially more robust than Convert)</p>
<ol>
  <li>
    <p>Select File 
Menu &gt; Open as Layers &gt; Select all images you want to be in the GIF &gt; Open</p>
  </li>
  <li>
    <p>Select Filters from main 
Menu &gt; Animation &gt; Click Optimize for GIF</p>
  </li>
  <li>
    <p>Save GIF
Select File &gt; click Export as &gt; Select File Type as gif &gt; Select ‘As Animation’ &gt; Select ‘Loop Forever’</p>
  </li>
</ol>

<h2 id="12-useful-shortcuts">12. Useful shortcuts</h2>

<ul>
  <li>Open a terminal new widow</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CTRL + ALT + T
</code></pre></div></div>

<ul>
  <li>Open a new terminal tab</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CTRL + SHIFT + T
</code></pre></div></div>

<ul>
  <li>Close the current terminal tab</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CTRL + SHIFT + W
</code></pre></div></div>

<ul>
  <li>Kill the current running process</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CTRL + C
</code></pre></div></div>

<ul>
  <li>Exit Python interpreter / log out from SSH</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CTRL + D 
</code></pre></div></div>

<ul>
  <li>Copy-paste in terminal with a mouse
    <ol>
      <li>select text</li>
      <li>move cursor where you want to paste</li>
      <li>paste with a middle mouse click</li>
    </ol>
  </li>
  <li>Insert the euro sign (€)</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CTRL+SHIFT+u
20ac
<span class="s2">"enter"</span>
</code></pre></div></div>

<ul>
  <li>Put task in background</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CTRL + C 
</code></pre></div></div>

<ul>
  <li>Bring it back to the foreground</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">fg</span>
</code></pre></div></div>

<ul>
  <li>Nicely formated ls command</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">ls</span> <span class="nt">-lrt</span>
</code></pre></div></div>

<ul>
  <li>Download from website</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wget http://www.website-name.com
curl http://www.website-name.com
</code></pre></div></div>

<ul>
  <li>Execute the previous command with sudo
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo</span> <span class="o">!!</span>
</code></pre></div>    </div>
  </li>
  <li>Login as root
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo</span> <span class="nt">-i</span>
</code></pre></div>    </div>
  </li>
  <li>Logout as root (exit)
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CTRL + D
</code></pre></div>    </div>
  </li>
</ul>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;cheat sheet&quot;]" /><summary type="html"><![CDATA[Some useful commands and shortcuts for the Linux Bash command line interpreter]]></summary></entry><entry><title type="html">Git cheat sheet</title><link href="https://www.datasparked.com//cheat%20sheet/Git-cheat-sheet/" rel="alternate" type="text/html" title="Git cheat sheet" /><published>2022-07-17T00:00:00-04:00</published><updated>2022-07-17T00:00:00-04:00</updated><id>https://www.datasparked.com//cheat%20sheet/Git-cheat-sheet</id><content type="html" xml:base="https://www.datasparked.com//cheat%20sheet/Git-cheat-sheet/"><![CDATA[<p><img src="https://www.datasparked.com//assets/images/git_logo.png" alt="git_logo" /></p>

<h2 id="some-definitions">Some definitions</h2>

<p><strong>Git</strong> is a version-control tool for tracking changes in source code during software development.</p>

<p>A <strong>commit</strong> records a snapshot of your changes and associate it with a message and a commit id.</p>

<p>A <strong>branch</strong> is a separate version of the main repository that allows the developper to test a new feature for example without affecting the main repository.</p>

<p><strong>Staging</strong> means adding a file to the Git index before commiting it.</p>

<p><strong>Remote repositories</strong> are versions of your source code that are hosted on the Internet, mainly to share the code or collaborate with others. Examples of Git-based source code repository hosting service include <a href="https://github.com/">Github</a>, <a href="https://bitbucket.org/product/">Bitbucket</a> or <a href="https://about.gitlab.com/">Gitlab</a>.</p>

<p>You can download a printable Git command line cheat sheet <a href="https://www.datasparked.com//assets/downloads/git-cheat-sheet.pdf">here</a> (<a href="https://www.jrebel.com/blog/git-cheat-sheet">Source</a>).</p>

<p><img src="https://www.datasparked.com//assets/images/git_flow.png" alt="git workflow" />
<sub><sup><em><a href="https://www.jrebel.com/blog/git-cheat-sheet">Source</a></em></sup></sub></p>

<h2 id="create-a-repository">Create a repository</h2>

<ul>
  <li>create a new local repository</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git init my_project_name
</code></pre></div></div>

<ul>
  <li>Download from an existing repository</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone my_url
</code></pre></div></div>

<h2 id="observe-the-repository">Observe the repository</h2>

<ul>
  <li>list files not yet commited</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git status
</code></pre></div></div>

<ul>
  <li>Show full change history</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git log
</code></pre></div></div>

<ul>
  <li>Show change history for file/directory including diffs</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git log <span class="nt">-p</span> <span class="o">[</span>file/directory]
</code></pre></div></div>

<ul>
  <li>Show the changes to files not yet staged</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git diff
</code></pre></div></div>

<ul>
  <li>Show the changes between two commit ids</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git diff commit1 commit2
</code></pre></div></div>

<h2 id="working-with-branches">Working with branches</h2>

<ul>
  <li>List all local branches</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git branch
</code></pre></div></div>

<ul>
  <li>Create a new branch</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git branch new_branch
</code></pre></div></div>

<ul>
  <li>Switch to a branch and update working directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git checkout my_branch
</code></pre></div></div>

<ul>
  <li>Create a new branch and switch to this branch</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git checkout <span class="nt">-b</span> new_branch
</code></pre></div></div>

<ul>
  <li>Delete a branch</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git branch <span class="nt">-d</span> my_branch
</code></pre></div></div>

<ul>
  <li>Merge branch_a into branch_b</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git checkout branch_b
git merge branch_a
</code></pre></div></div>

<h2 id="resolve-merging-conflicts">Resolve merging conflicts</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git mergetool <span class="nt">--tool</span><span class="o">=</span>emerge
</code></pre></div></div>

<p>It will open 3 windows: version a on top left, version b on top right and final version at the bottom.</p>
<ul>
  <li>press n for next change</li>
  <li>press a or b to choose which version I want to keep</li>
  <li>press q to quit and save</li>
</ul>

<h2 id="make-a-change">Make a change</h2>

<ul>
  <li>Stage all changed files in current directory</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git add <span class="nb">.</span>
</code></pre></div></div>

<ul>
  <li>Commit all your tracked files to versioned history</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git commit <span class="nt">-am</span> <span class="s2">"commit message"</span>
</code></pre></div></div>

<ul>
  <li>Unstages file, keeping the file changes</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git reset <span class="o">[</span>file]
</code></pre></div></div>

<ul>
  <li>Revert everything to the last commit</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git reset <span class="nt">--hard</span>
</code></pre></div></div>

<h2 id="synchronize-with-remote-repository">Synchronize with remote repository</h2>

<ul>
  <li>Get the latest changes from origin (no merge)</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git fetch
</code></pre></div></div>

<ul>
  <li>Fetch the latest changes from origin and merge</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git pull
</code></pre></div></div>

<ul>
  <li>Push local changes to the origin</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git push
</code></pre></div></div>

<h2 id="add-an-existing-ssh-key-to-the-agent">Add an existing SSH key to the agent</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">eval</span> <span class="s2">"</span><span class="si">$(</span>ssh-agent <span class="nt">-s</span><span class="si">)</span><span class="s2">"</span>
ssh-add ~/.ssh/id_ed25519
</code></pre></div></div>

<h2 id="fix-remote-repo-not-empty">Fix remote repo not empty</h2>

<p>When I want to push to a remote repository that is not empty (for example if it was initialised with a license or readme file).</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git fetch origin main:tmp
git rebase tmp
git push origin HEAD:main
git branch <span class="nt">-D</span> tmp
</code></pre></div></div>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;cheat sheet&quot;]" /><summary type="html"><![CDATA[Some useful commands and shortcuts for the Git version-control system]]></summary></entry><entry><title type="html">Docker cheat sheet</title><link href="https://www.datasparked.com//cheat%20sheet/Docker-cheat-sheet/" rel="alternate" type="text/html" title="Docker cheat sheet" /><published>2022-07-16T00:00:00-04:00</published><updated>2022-07-16T00:00:00-04:00</updated><id>https://www.datasparked.com//cheat%20sheet/Docker-cheat-sheet</id><content type="html" xml:base="https://www.datasparked.com//cheat%20sheet/Docker-cheat-sheet/"><![CDATA[<p><img src="https://www.datasparked.com//assets/images/docker_logo.png" alt="docker_logo" /></p>

<h2 id="what-is-docker">What is Docker?</h2>

<p><a href="https://www.docker.com/">Docker</a> is a tool used to deploy software across different platform without running into compatibility issues.</p>

<p>A Docker <strong>image</strong> is a lightweight, standalone, executable package of software that includes everything needed to run an application (code, libraries, settings, etc…).  On a Linux system, Docker images are stored in /var/lib/docker.</p>

<p>A running instance of an image is called a <strong>container</strong>. A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.</p>

<h2 id="cheat-sheet">Cheat sheet</h2>

<p>You can download a printable Linux command line cheat sheet <a href="https://www.datasparked.com//assets/downloads/docker-cheat-sheet.pdf">here</a> from <a href="https://cheatography.com/gambit/cheat-sheets/docker/">Cheatography</a>.</p>

<p>Another handy cheat sheet can be found <a href="https://github.com/wsargent/docker-cheat-sheet">here</a>.</p>

<ul>
  <li>Check Docker installation</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker version
docker run hello-world
</code></pre></div></div>

<ul>
  <li>List docker images</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker images
</code></pre></div></div>

<ul>
  <li>List dangling Docker images</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker images <span class="nt">-f</span> <span class="nv">dangling</span><span class="o">=</span><span class="nb">true</span>
</code></pre></div></div>

<ul>
  <li>Remove dangling images and build caches, all stopped containers and all networks not used by at least 1 container (useful to free some space).</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker system prune
</code></pre></div></div>

<ul>
  <li>Remove docker image by ID</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker rmi <span class="nt">-f</span> IMAGE_ID
</code></pre></div></div>

<ul>
  <li>Download a Docker image</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker pull IMAGE_NAME
</code></pre></div></div>

<ul>
  <li>List running containers</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker ps
docker container <span class="nb">ls</span>
</code></pre></div></div>

<ul>
  <li>List all containers</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker ps <span class="nt">-a</span>
</code></pre></div></div>

<ul>
  <li>Stop a container</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker stop CONTAINER_ID
</code></pre></div></div>

<ul>
  <li>Remove a container</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker <span class="nb">rm </span>CONTAINER_ID
</code></pre></div></div>

<ul>
  <li>Stop all the containers</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker stop <span class="si">$(</span>docker ps <span class="nt">-a</span> <span class="nt">-q</span><span class="si">)</span>
</code></pre></div></div>

<ul>
  <li>Remove all the containers</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker <span class="nb">rm</span> <span class="si">$(</span>docker ps <span class="nt">-a</span> <span class="nt">-q</span><span class="si">)</span>
</code></pre></div></div>

<ul>
  <li>Run a docker image</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker run <span class="nt">-it</span> <span class="nt">--rm</span> IMAGE_ID
</code></pre></div></div>

<ul>
  <li>Options of the run command:</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">-u</span> <span class="si">$(</span><span class="nb">id</span> <span class="nt">-u</span><span class="si">)</span>:<span class="si">$(</span><span class="nb">id</span> <span class="nt">-g</span><span class="si">)</span>       <span class="c"># assign a user and a group ID</span>
<span class="nt">--gpus</span> all                 <span class="c"># allow GPU support</span>
<span class="nt">-it</span>                        <span class="c"># run an interactive container inside a terminal</span>
<span class="nt">--rm</span>                        <span class="c"># automatically remove the container after exiting</span>
<span class="nt">--name</span> my_container        <span class="c"># give it a friendly name</span>
<span class="nt">-v</span> ~/docker_ws:/notebooks  <span class="c"># share a directory between the host and the container</span>
<span class="nt">-p</span> 8888:8888               <span class="c"># define port 8888 to connect to the container (for Jupyter notebooks)</span>
</code></pre></div></div>

<ul>
  <li>Open a new terminal in a running container</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker <span class="nb">exec</span> <span class="nt">-it</span> CONTAINER_ID bash
</code></pre></div></div>

<h2 id="create-a-new-docker-image">Create a new Docker image</h2>

<p>There are 2 main methods.</p>

<h4 id="method-1--using-a-dockerfile">Method 1 : Using a Dockerfile</h4>

<ol>
  <li>
    <p>Create a file called <code class="language-plaintext highlighter-rouge">Dockerfile</code> on your host machine.</p>

    <div class="language-dockerfile highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="c"># getting base Ubuntu image</span>
 FROM ubuntu

 <span class="c"># file author / maintainer</span>
 LABEL maintainer="your_email_address"

 # update the repository sources list
 RUN apt-get update

 <span class="c"># print Hello World</span>
 CMD ["echo", "Hello World"]
</code></pre></div>    </div>
  </li>
  <li>
    <p>Build the image.</p>

    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> docker build <span class="nt">-t</span> myimage:0.1 <span class="nb">.</span>
</code></pre></div>    </div>
  </li>
  <li>
    <p>Run the image.</p>

    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> docker run myimage:0.1
</code></pre></div>    </div>
  </li>
</ol>

<h4 id="method-2--commit-a-docker-image-from-a-running-container">Method 2 : Commit a Docker image from a running container</h4>

<p>Modify a running container and run this in another terminal.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker commit CONTAINER_ID my_new_image
</code></pre></div></div>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;cheat sheet&quot;]" /><summary type="html"><![CDATA[Some useful commands and shortcuts for Docker]]></summary></entry><entry><title type="html">Conda cheat sheet</title><link href="https://www.datasparked.com//cheat%20sheet/Conda-cheat-sheet/" rel="alternate" type="text/html" title="Conda cheat sheet" /><published>2022-07-15T00:00:00-04:00</published><updated>2022-07-15T00:00:00-04:00</updated><id>https://www.datasparked.com//cheat%20sheet/Conda-cheat-sheet</id><content type="html" xml:base="https://www.datasparked.com//cheat%20sheet/Conda-cheat-sheet/"><![CDATA[<p><img src="https://www.datasparked.com//assets/images/conda_logo.png" alt="conda_logo" /></p>

<h2 id="some-definitions">Some definitions</h2>

<p><strong>Conda</strong> is an open source package manager tool and environment management system. It is mostly used for created isolated Python environments but it can package and distribute software for any language.</p>

<p><strong>Anaconda</strong> is a free and open-source Python distribution for scientific computing. It includes conda and plus hundreds of popular Python packages such as numpy, scipy, matplotlib, pandas, etc…</p>

<p><strong>Miniconda</strong> is a lighter alternative to Anaconda that just include conda and its dependencies but no Python packages.</p>

<p>A <strong>virtual environment</strong> is a named, isolated, working copy of Python that that maintains its own files, directories, and paths so that you can work with specific versions of libraries or Python itself without affecting other Python projects. Virtual environments make it easy to cleanly separate different projects and avoid problems with different dependencies and version requirements across components.</p>

<p>Please see the <a href="https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html">official page</a> for more information.</p>

<p>You can download the official Conda cheat sheet <a href="https://www.datasparked.com//assets/downloads/conda-cheatsheet.pdf">here</a>.</p>

<h2 id="other-environment-managers">Other environment managers</h2>

<p><strong>virtualenv</strong> is a tool to create isolated environments for Python only.</p>

<p><strong>venv</strong> is a tool to create isolated environments for Python 3 only.</p>

<h2 id="cheat-sheet">Cheat sheet</h2>

<ul>
  <li>Create environment</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>conda create <span class="nt">-n</span> myenv
conda create <span class="nt">-n</span> myenv <span class="nv">python</span><span class="o">=</span>3.6      <span class="c"># with a specific python version</span>
conda create <span class="nt">-n</span> myenv scipy           <span class="c"># with a specific python package</span>
conda <span class="nb">env </span>create <span class="nt">-f</span> environment.yml   <span class="c"># from a .yml file</span>
</code></pre></div></div>

<ul>
  <li>List environments</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>conda <span class="nb">env </span>list
</code></pre></div></div>

<ul>
  <li>Activate environment</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>conda activate myenv
</code></pre></div></div>

<ul>
  <li>Deactivate environment</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>conda deactivate
</code></pre></div></div>

<ul>
  <li>View a list of the packages in an environment</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>conda list
conda list <span class="nt">-n</span> myenv
</code></pre></div></div>

<ul>
  <li>Export a YML environment file</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>conda <span class="nb">env export</span> <span class="o">&gt;</span> environment.yml
</code></pre></div></div>

<ul>
  <li>Remove an environment</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>conda <span class="nb">env </span>remove <span class="nt">--name</span> myenv
</code></pre></div></div>

<ul>
  <li>Check conda version</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>conda info
</code></pre></div></div>

<ul>
  <li>Update conda</li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>conda update conda
</code></pre></div></div>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;cheat sheet&quot;]" /><summary type="html"><![CDATA[Some useful commands and shortcuts for Conda]]></summary></entry><entry><title type="html">Part 3 - Optimisation libraries</title><link href="https://www.datasparked.com//optimisation/Optimisation_libraries/" rel="alternate" type="text/html" title="Part 3 - Optimisation libraries" /><published>2022-07-14T00:00:00-04:00</published><updated>2022-07-14T00:00:00-04:00</updated><id>https://www.datasparked.com//optimisation/Optimisation_libraries</id><content type="html" xml:base="https://www.datasparked.com//optimisation/Optimisation_libraries/"><![CDATA[<p>In this article, we will compare the following optimisation frameworks:</p>
<ul>
  <li><a href="https://github.com/Project-Platypus/Platypus">Platypus</a></li>
  <li><a href="https://github.com/MOEAFramework/MOEAFramework">MOEA</a></li>
  <li><a href="https://github.com/esa/pygmo2">PyGMO</a></li>
  <li><a href="https://github.com/esa/pagmo2">PaGMO</a></li>
  <li><a href="https://github.com/aarongarrett/inspyred">Inspyred</a></li>
  <li><a href="https://github.com/DEAP/deap">DEAP</a></li>
  <li><a href="https://projects.g-node.org/emoo/">EMOO</a></li>
  <li><a href="https://github.com/jMetal/jMetalPy">jMetal</a></li>
  <li><a href="https://github.com/anyoptimization/pymoo">PYMOO</a></li>
</ul>

<h2 id="features-comparison">Features comparison</h2>

<table>
  <thead>
    <tr>
      <th>Features</th>
      <th>Platypus</th>
      <th>MOEA</th>
      <th>PyGMO</th>
      <th>PaGMO</th>
      <th>Inspyred</th>
      <th>DEAP</th>
      <th>EMOO</th>
      <th>jMetalPy</th>
      <th>PYMOO</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Language</td>
      <td>Python</td>
      <td>Java</td>
      <td>Python</td>
      <td>C++</td>
      <td>Python</td>
      <td>Python</td>
      <td>Python</td>
      <td>Python</td>
      <td>Python</td>
    </tr>
    <tr>
      <td>Open source</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
    </tr>
    <tr>
      <td>Parallelisation</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Documentation</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td>X</td>
      <td>X</td>
    </tr>
    <tr>
      <td>Constrained PB</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Unconstrained PB</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Multi-objective PB</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Single-objective PB</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Continuous PB</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Integer PB</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Stochastic PB</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Deterministic PB</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
  </tbody>
</table>

<h2 id="algorithms-comparison">Algorithms comparison</h2>

<table>
  <thead>
    <tr>
      <th>Algorithm</th>
      <th>Platypus / MOEA</th>
      <th>PyGMO / PaGMO</th>
      <th>Inspyred</th>
      <th>DEAP</th>
      <th>EMOO</th>
      <th>jMetalPy / jMetal</th>
      <th>PYMOO</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>NSGA-II</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td>X</td>
      <td>X</td>
    </tr>
    <tr>
      <td>NSGA-III</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td>X</td>
      <td>X</td>
    </tr>
    <tr>
      <td>R-NSGA-III</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>U-NSGA-III</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>G-NSGA-II</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>R-NSGA-II</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>MOEA/D</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td>X</td>
    </tr>
    <tr>
      <td>MOEA/D-DRA</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>IBEA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>ε-MOEA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>SPEA2</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>G-SPEA2</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>GDE3</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>G-GDE3</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>OMOPSO</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>SMPSO</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>G-SMPSO</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>ε-NSGA II</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>CMA-ES</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>PESA2</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>SMS-EMOA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>PAES</td>
      <td>X</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>AbySS</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Borg MOEA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>CellDE</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>DBEA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>DE</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>DENSEA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>ECEA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>ES</td>
      <td>X</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>FastPGA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>FEMO</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>GA</td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>HypE</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
    </tr>
    <tr>
      <td>MoCell</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>MOCHC</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>MSOPS</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Random</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>RSO</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>RVEA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>SEMO2</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>SHV</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>SIBEA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>SMPSO</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>VEGA</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>GACO</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>jDE</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>iDE</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>pDE</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>DE</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>GWO</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>IHS</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>PSO</td>
      <td> </td>
      <td>X</td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>GPSO</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>(N+1)ES</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>ABC</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>SA</td>
      <td> </td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>xNES</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>MHACO</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>NSPSO</td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>DEA</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>EDA</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>ACO</td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>GP</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>MO-CMA-ES</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>STGP</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>BI-POP CMA-ES</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Multiswarm PSO</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
      <td> </td>
      <td> </td>
      <td> </td>
    </tr>
    <tr>
      <td>Nelder-Mead</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>Pattern search</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>BRK-GA</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
    <tr>
      <td>C-TAEA</td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td> </td>
      <td>X</td>
    </tr>
  </tbody>
</table>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;optimisation&quot;]" /><summary type="html"><![CDATA[A comparison of some popular optimisation frameworks]]></summary></entry><entry><title type="html">Part 2 - A simple genetic algorithm in Python</title><link href="https://www.datasparked.com//optimisation/Simple-genetic-algorithm-in-python/" rel="alternate" type="text/html" title="Part 2 - A simple genetic algorithm in Python" /><published>2022-07-13T00:00:00-04:00</published><updated>2022-07-13T00:00:00-04:00</updated><id>https://www.datasparked.com//optimisation/Simple-genetic-algorithm-in-python</id><content type="html" xml:base="https://www.datasparked.com//optimisation/Simple-genetic-algorithm-in-python/"><![CDATA[<p><img src="https://www.datasparked.com//assets/images/frame49.png" alt="generation_GA" /></p>

<p>We will look at how a genetic algorithm can be used to find the minimum of a function and implement it in Python.</p>

<h2 id="some-definitions">Some definitions</h2>

<p>A <strong>genetic algorithm</strong> is an optimisation heuristic inspired from the mechanism of Darwin’s natural evolution. It leverages the process of natural selection to select individuals that are fittest to survive to the next generation.</p>

<ul>
  <li><strong>Individual (= chromosome)</strong>: one possible solution to the problem</li>
  <li><strong>Design parameters (= genes)</strong>: the parameters to optimise. Each individual is defined by a list of its design parameters.</li>
  <li><strong>Population</strong>: a group of individuals or designs to be optimised</li>
  <li><strong>Generation</strong>: a population at a specific interation</li>
  <li><strong>Objective function (= fitness function)</strong>: the function to minimise</li>
  <li><strong>Design space</strong>: set of all the possible design parameters values</li>
  <li><strong>Objective space</strong>: set of all the objective function value</li>
  <li><strong>Parents</strong>: individuals belonging to an older generation</li>
  <li><strong>Offspring</strong>: individual belonging to a younger generation</li>
  <li><strong>Crossover</strong>: it consists in combining the genes of two parents to create an offspring.</li>
  <li><strong>Mutation</strong>: it consists in altering a few genes of a parent to create an offspring.</li>
</ul>

<p>In its most basic form, a genetic algorithm comprises the following stages:</p>
<ol>
  <li>Initialisation of the population</li>
  <li>Selection of the best parents</li>
  <li>Reproduction (by mutation and/or by crossover) to generate offsprings</li>
  <li>Evaluation of the population</li>
  <li>Termination according to criterion</li>
</ol>

<p><img src="https://www.datasparked.com//assets/images/GA.png" alt="GA" /></p>

<h2 id="implementation">Implementation</h2>

<p>We will implement a simple genetic algorithm in Python. The objective is to find the minimum of this objective function with 2 design parameters: \(Z(x, y) = x\sin(x)*y\cos(y)\).
The source code can be found <a href="https://github.com/PierreExeter/simple_GA">here</a>.</p>

<p><img src="https://www.datasparked.com//assets/images/animation_GA.gif" alt="animation_GA" /></p>]]></content><author><name>Pierre Aumjaud</name></author><category term="[&quot;optimisation&quot;]" /><summary type="html"><![CDATA[Understand how genetic algorithms work and implement a simple one in Python]]></summary></entry></feed>