SlideShare a Scribd company logo
Containerized IDEs, and other
Local As Code techniques
Jan Van Bruggen
Developer Relations @ itopia
Let’s talk about coding, in general
● Defining my terms:
○ “Coding” == Editing lines of code in software and testing results
○ “Device” == Hardware used when coding (Ex: a Mac Mini, a Chromebook, an eGPU, etc.)
○ “Local” == Software running locally when coding (Ex: IDE, CLIs, compilers, web browsers, etc.)
○ “Project” == A team codebase with…
■ necessary dependencies (libraries, OS packages, OS, etc.)
■ recommended helpers (plugins, IDE settings, shell aliases, etc.)
● Some project dependencies & helpers have declarative config files.
○ .idea/ .vscode/ .editorconfig .eslintrc .gitignore .prettierrc.json go.mod package-lock.json
package.json pom.xml requirements.txt tsconfig.json yarn.lock …
● Some don’t.
○ “See README.md for step-by-step instructions on how to…”
Before you can start coding, you need… (on most projects)
Version-controlled? Setup process
📄 Project source ✅ Yes 👍 One command: git clone
📁 Third-party libraries ✅ Yes 👍 One command: npm install
(or pip / maven / cargo / etc.)
📦 OS packages ❌ No 🛠 Manually install & configure
(follow docs, maybe scripts)
🐧 OS ❌ No 🛠 Manually install & configure
(follow docs)
💻 Device N/A N/A
What is the source of truth for each layer?
Version-controlled? Setup process
📄 Project source ✅ Yes 👍 One command: git clone
📁 Third-party libraries ✅ Yes 👍 One command: npm install
(or pip / maven / cargo / etc.)
📦 OS packages ❌ No 🛠 Manually install & configure
(follow docs, maybe scripts)
🐧 OS ❌ No 🛠 Manually install & configure
(follow docs)
💻 Device N/A N/A
Local As Documentation
Local As Code

Recommended for you

Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017

This document discusses continuous delivery in an open source project. It begins with an introduction of the speaker and then discusses various tools used in the continuous delivery process like Travis CI for continuous integration. It outlines the build pipeline for the project including deploying to Bintray and updating GitHub pages. It also covers code quality tools like Codecov and promoting the project on the internet through blogs, conferences and other forums.

javaiceboaropen source
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a

Как быстро и легко настраивать/обновлять окружения для кросскомпиляции проектов под различные платформы(на основе docker), как быстро переключаться между ними, как используя эти кирпичики организовать CI и тестирование(на основе GitLab и Docker).

c++c++ corehard spring 2018docker
Life of a Chromium Developer
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developer

The document provides an overview of the typical workflow for a Chromium developer, including getting set up with the necessary development environment and tools, obtaining the source code, building and modifying the code, debugging, and submitting changes for review. It discusses using version control systems like Subversion and Git, the Depot Tools for managing the code checkout and uploads, building on different platforms like Linux, Mac and Windows, and common issues that may come up.

The point of this webinar
Version-controlled? Setup process
📄 Project source ✅ Yes 👍 One command: git clone
📁 Third-party libraries ✅ Yes 👍 One command: npm install
(or pip / maven / cargo / etc.)
📦 OS packages ❌ No 🛠 Manually install & configure
(follow docs, maybe scripts)
🐧 OS ❌ No 🛠 Manually install & configure
(follow docs)
💻 Device N/A N/A
by automating project setup.
Decrease project onboarding time
Let’s automate!
Version-controlled? Setup process Solutions
📄 Project source ✅ Yes 👍 One command: git clone N/A
📁 Third-party libraries ✅ Yes 👍 One command: npm install
(or pip / maven / cargo / etc.)
N/A
📦 OS packages ❌ No 🛠 Manually install & configure
(follow docs, maybe scripts)
?
🐧 OS ❌ No 🛠 Manually install & configure
(follow docs)
?
💻 Device N/A N/A N/A
OS Packages As Code is tricky but high-value
Version-controlled? Setup process Solutions
📄 Project source ✅ Yes 👍 One command: git clone N/A
📁 Third-party libraries ✅ Yes 👍 One command: npm install
(or pip / maven / cargo / etc.)
N/A
📦 OS packages ? ? ?
🐧 OS ❌ No 🛠 Manually install & configure
(follow docs)
?
💻 Device N/A N/A N/A
Nix is a great tool for most projects
Version-controlled? Setup process Solutions
📄 Project source ✅ Yes 👍 One command: git clone N/A
📁 Third-party libraries ✅ Yes 👍 One command: npm install
(or pip / maven / cargo / etc.)
N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 One command: nix-shell Nix
github.com/NixOS/nix
🐧 OS ❌ No 🛠 Manually install & configure
(follow docs)
?
💻 Device N/A N/A N/A

Recommended for you

Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024

This document discusses software quality assurance tooling, focusing on pre-commit. It introduces pre-commit as a tool for running code quality checks before code is committed. Pre-commit allows configuring hooks that run checks and fixers on files matching certain patterns. Hooks can be installed from repositories and support many languages including Python. The document provides examples of pre-commit checks such as disallowing improper capitalization in code comments and files. It also discusses how to configure, run, update and install pre-commit hooks.

pythonsqalinting
Introduction to Docker and Containers
Introduction to Docker and ContainersIntroduction to Docker and Containers
Introduction to Docker and Containers

This document introduces Docker and containers. It discusses that Docker provides a way to easily deploy applications by using lightweight virtualization to isolate applications into containers. These containers can then be easily shared between systems. The document outlines what problem containers solve, provides an overview of how Docker works, and discusses how to author Docker images using Dockerfiles or by committing changes to containers. It also discusses the Docker community and ecosystem and Docker's long term roadmap to further simplify deployment of applications.

MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift

How to write CLI apps for macOS using swift, which packages to use, common challenges to overcome, how to structure your CLI app code.

swiftmacoscli
OS As Code can be both liberating and restrictive
Version-controlled? Setup process Solutions
📄 Project source ✅ Yes 👍 One command: git clone N/A
📁 Third-party libraries ✅ Yes 👍 One command: npm install
(or pip / maven / cargo / etc.)
N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 One command: nix-shell Nix
github.com/NixOS/nix
🐧 OS ? ? ?
💻 Device N/A N/A N/A
Two orthogonal solutions
Version-controlled? Setup process Solutions
📄 Project source ✅ Yes 👍 One command: git clone N/A
📁 Third-party libraries ✅ Yes 👍 One command: npm install
(or pip / maven / cargo / etc.)
N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 One command: nix-shell Nix
github.com/NixOS/nix
🐧 OS ? ? Containerization
or NixOS (nixos.org)
💻 Device N/A N/A N/A
Containerization is accessible and popular, but NixOS isn’t
Version-controlled? Setup process Solutions
📄 Project source ✅ Yes 👍 One command: git clone N/A
📁 Third-party libraries ✅ Yes 👍 One command: npm install
(or pip / maven / cargo / etc.)
N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 One command: nix-shell Nix
github.com/NixOS/nix
🐧 OS ? ? Containerization
or NixOS (nixos.org)
💻 Device N/A N/A N/A
Containerization adds an OS and can install OS packages
Version-controlled? Setup process Solutions
📄 Project source ✅ Yes 👍 git clone N/A
📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional)
🐧 Project OS ✅ Yes: Dockerfile ? Docker
👁 IDE interface N/A ? ?
🍎 Device OS Unnecessary 👍 Bring your own device N/A
💻 Device N/A N/A N/A

Recommended for you

CodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labCodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering lab

This document provides an overview of the process for reverse engineering an Android application. It discusses various tools that can be used at each step, including apktool to decode application resources, dex2jar to convert .dex files to .jar files containing .class files, and JD-Project/jd-gui to decompile the .class files. It also discusses differences in applications built for older Android versions versus newer versions using ART, and how oat2dex tools can be used to extract DEX code from OAT files. The document demonstrates these concepts by walking through reversing a simple "Snake" application as an example. It concludes by noting there are multiple options for decompilation beyond just Eclipse.

reverse engineeringandroidart
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW

This document describes a GitLab CI/CD workflow using GitLab, Docker, GitLab Runner, and Ansible. Developers push code to a GitLab repo, which triggers a GitLab Runner job to build a Docker image. Ansible is then used to provision servers based on the environment. The benefits of using Ansible include managing everything from one playbook to clone code, build containers, deploy applications, and more. Examples of using shell scripts versus Ansible playbooks are provided.

devopsgitlab
groovy & grails - lecture 6
groovy & grails - lecture 6groovy & grails - lecture 6
groovy & grails - lecture 6

Eclipse tips Productive tip Two thoughts on code design Running a script standalone test case: build all isoforms & extract proteotypic peptides

grailsgroovy
Short tangent: Personalization matters, too
Version-controlled? Setup process Solutions
💅 Personalization ? ? ?
📄 Project source ✅ Yes 👍 git clone N/A
📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional)
🐧 Project OS ✅ Yes: Dockerfile ? Docker
👁 IDE interface N/A ? ?
🍎 Device OS Unnecessary 👍 Bring your own device N/A
💻 Device N/A N/A N/A
Personalization is about dotfiles (see github.com/webpro/awesome-dotfiles)
Version-controlled? Setup process Solutions
💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi (chezmoi.io)
📄 Project source ✅ Yes 👍 git clone N/A
📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional)
🐧 Project OS ✅ Yes: Dockerfile ? Docker
👁 IDE interface N/A ? ?
🍎 Device OS Unnecessary 👍 Bring your own device N/A
💻 Device N/A N/A N/A
Containerized OS approach #1: Offline (easy)
Version-controlled? Setup process Solutions
💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi
📄 Project source ✅ Yes 👍 git clone N/A
📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional)
🐧 Project OS (guest) ✅ Yes: Dockerfile 🛠 Manually install & configure Docker Desktop
👁 IDE interface N/A 🛠 Manually install IDE with… …guest OS support
🍎 Device OS (host) Unnecessary 👍 Bring your own device N/A
💻 Device N/A N/A N/A
Containerized OS approach #2: Hybrid (medium)
Version-controlled? Setup process Solutions
💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi
📄 Project source ✅ Yes 👍 git clone N/A
📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional)
🐧 Project OS (remote) ✅ Yes: Dockerfile 🛠 Manually deploy a server Docker on a server
👁 IDE interface N/A 🛠 Manually install IDE with… …remote OS support
🍎 Device OS (local) Unnecessary 👍 Bring your own device N/A
💻 Device N/A N/A N/A

Recommended for you

Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.

This document discusses improving WordPress theme development workflow. It recommends using Docker, Node Package Manager (NPM), Gulp, Sass/Less, Git, GitHub, and Travis CI. NPM can be used to install task runners like Gulp and Babel for compiling Sass/Scss/Less. Gulp is configured using a gulpfile.js and can be used with Sass. Git is used for version control. GitHub and Travis CI can be integrated for continuous integration, running tests on pushes and pull requests. WP-CLI and Gulp can automate development tasks like creating POT files, image compression, and browser reloading on file changes. The WPGulp plugin integrates these tools into

wordpresstheme developmentplugin development
Docker. Micro services for lazy developers
Docker. Micro services for lazy developersDocker. Micro services for lazy developers
Docker. Micro services for lazy developers

This document discusses using Docker and microservices to build applications. It introduces Docker and how containers work at the process level in an isolated and lightweight way. It demonstrates how to build Dockerfiles for Node.js and Python applications, use Docker Hub for images, and run multi-container apps with Docker Compose. Some challenges of Docker like learning curve, build time, and file refresh are also outlined.

devopsdocker-composedocker
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate

* What is boilerplate? * Common setup steps * Common build steps * Practices to ensure efficient development * Tools * Python demo

pythonboilerplatefastapi
Containerized OS approach #3: Online (medium)
Version-controlled? Setup process Solutions
💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi
📄 Project source ✅ Yes 👍 git clone N/A
📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional)
🐧 Project OS (remote) ✅ Yes: Dockerfile 🛠 Manually deploy a server code-server or
JetBrains Projector
👁 IDE interface N/A 👍 Bring your own web browser N/A
🍎 Device OS (local) Unnecessary 👍 Bring your own device N/A
💻 Device N/A N/A N/A
Containerized OS approach #4: Online & scalable (hard)
Version-controlled? Setup process Solutions
💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi
📄 Project source ✅ Yes 👍 git clone N/A
📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional)
🐧 Project OS (remote) ✅ Yes: Dockerfile 🛠 Manually deploy Kubernetes Selkies (selkies.io)
👁 IDE interface N/A 👍 Bring your own web browser N/A
🍎 Device OS (local) Unnecessary 👍 Bring your own device N/A
💻 Device N/A N/A N/A
Containerized OS approach #5: Online & managed (easy)
Version-controlled? Setup process Solutions
💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi
📄 Project source ✅ Yes 👍 git clone N/A
📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A
📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional)
🐧 Project OS (remote) ✅ Yes: Dockerfile 🤷 “Manually” sign up itopia Spaces or
GitHub Codespaces
👁 IDE interface N/A 👍 Bring your own web browser N/A
🍎 Device OS (local) Unnecessary 👍 Bring your own device N/A
💻 Device N/A N/A N/A
Thanks for watching!
👋
JVanBruggen@itopia.com
JanCVanB@ on GitHub & Twitter
⛅
itopiaSpaces.com
github.com/itopia-inc
🦭
github.com/selkies-project
discord.com/invite/wDNGDeSW5F

Recommended for you

Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013

This document provides instructions for customizing and building the Android Open Source Project (AOSP). It discusses tools for working with AOSP, building AOSP, output images, compatibility testing, and basic customizations like adding a new device. The document is intended to guide developers through setting up their environment, building AOSP, and making simple changes to AOSP components and devices.

JLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App DevelopmentJLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App Development

The document discusses optimization techniques for modern web app development. It recommends optimizing code development, operations, and production sites through techniques like image optimization, code minification, file concatenation, compression, and leveraging caching. It outlines a process of testing, measuring, optimizing, and repeating optimizations. The document also discusses preprocessing tools, automation tools, and global optimization services that can help with performance optimization.

websitesoftwaredevelopment
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies

The document provides an overview of strategies for software development including data structures, testing approaches, managing complexity, source code management, licenses, and algorithms. It discusses common data structures like arrays and lists. It outlines best practices for testing including unit testing, test-driven development, and continuous integration. It also covers techniques for managing complexity through abstraction, simplifying assumptions, and refactoring code. Source code management tools like Git and SVN are explained as well as hosting services like GitHub. Finally, it briefly introduces common open source licenses and algorithm efficiency measures.

More Related Content

Similar to Containerized IDEs.pdf

Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 
Drone CI
Drone CIDrone CI
Drone CI
Thomas Boerger
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
GR8Conf
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
MarcinStachniuk
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
corehard_by
 
Life of a Chromium Developer
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developer
mpaproductions
 
Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024
Henry Schreiner
 
Introduction to Docker and Containers
Introduction to Docker and ContainersIntroduction to Docker and Containers
Introduction to Docker and Containers
Docker, Inc.
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
Diego Freniche Brito
 
CodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labCodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering lab
Ron Munitz
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
AddWeb Solution Pvt. Ltd.
 
groovy & grails - lecture 6
groovy & grails - lecture 6groovy & grails - lecture 6
groovy & grails - lecture 6
Alexandre Masselot
 
Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.
Naveen Kharwar
 
Docker. Micro services for lazy developers
Docker. Micro services for lazy developersDocker. Micro services for lazy developers
Docker. Micro services for lazy developers
Eugene Krevenets
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
Stanislav Petrov
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
Opersys inc.
 
JLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App DevelopmentJLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App Development
JLP Community
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies
rahulbot
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
Jody Garnett
 
Deploying to DigitalOcean With GitHub Actions
Deploying to DigitalOcean With GitHub ActionsDeploying to DigitalOcean With GitHub Actions
Deploying to DigitalOcean With GitHub Actions
DigitalOcean
 

Similar to Containerized IDEs.pdf (20)

Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Drone CI
Drone CIDrone CI
Drone CI
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
Life of a Chromium Developer
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developer
 
Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024Software Quality Assurance Tooling - Wintersession 2024
Software Quality Assurance Tooling - Wintersession 2024
 
Introduction to Docker and Containers
Introduction to Docker and ContainersIntroduction to Docker and Containers
Introduction to Docker and Containers
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
 
CodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labCodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering lab
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
 
groovy & grails - lecture 6
groovy & grails - lecture 6groovy & grails - lecture 6
groovy & grails - lecture 6
 
Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.Improving WordPress Theme Development Workflow - Naveen Kharwar.
Improving WordPress Theme Development Workflow - Naveen Kharwar.
 
Docker. Micro services for lazy developers
Docker. Micro services for lazy developersDocker. Micro services for lazy developers
Docker. Micro services for lazy developers
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
 
JLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App DevelopmentJLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App Development
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Deploying to DigitalOcean With GitHub Actions
Deploying to DigitalOcean With GitHub ActionsDeploying to DigitalOcean With GitHub Actions
Deploying to DigitalOcean With GitHub Actions
 

More from LibbySchulze

Running distributed tests with k6.pdf
Running distributed tests with k6.pdfRunning distributed tests with k6.pdf
Running distributed tests with k6.pdf
LibbySchulze
 
Extending Kubectl.pptx
Extending Kubectl.pptxExtending Kubectl.pptx
Extending Kubectl.pptx
LibbySchulze
 
Enhancing Data Protection Workflows with Kanister And Argo Workflows
Enhancing Data Protection Workflows with Kanister And Argo WorkflowsEnhancing Data Protection Workflows with Kanister And Argo Workflows
Enhancing Data Protection Workflows with Kanister And Argo Workflows
LibbySchulze
 
Fallacies in Platform Engineering.pdf
Fallacies in Platform Engineering.pdfFallacies in Platform Engineering.pdf
Fallacies in Platform Engineering.pdf
LibbySchulze
 
Intro to Fluvio.pptx.pdf
Intro to Fluvio.pptx.pdfIntro to Fluvio.pptx.pdf
Intro to Fluvio.pptx.pdf
LibbySchulze
 
Enhance your Kafka Infrastructure with Fluvio.pptx
Enhance your Kafka Infrastructure with Fluvio.pptxEnhance your Kafka Infrastructure with Fluvio.pptx
Enhance your Kafka Infrastructure with Fluvio.pptx
LibbySchulze
 
CNCF On-Demand Webinar_ LitmusChaos Project Updates.pdf
CNCF On-Demand Webinar_ LitmusChaos Project Updates.pdfCNCF On-Demand Webinar_ LitmusChaos Project Updates.pdf
CNCF On-Demand Webinar_ LitmusChaos Project Updates.pdf
LibbySchulze
 
Oh The Places You'll Sign.pdf
Oh The Places You'll Sign.pdfOh The Places You'll Sign.pdf
Oh The Places You'll Sign.pdf
LibbySchulze
 
Rancher MasterClass - Avoiding-configuration-drift.pptx
Rancher  MasterClass - Avoiding-configuration-drift.pptxRancher  MasterClass - Avoiding-configuration-drift.pptx
Rancher MasterClass - Avoiding-configuration-drift.pptx
LibbySchulze
 
vFunction Konveyor Meetup - Why App Modernization Projects Fail - Aug 2022.pptx
vFunction Konveyor Meetup - Why App Modernization Projects Fail - Aug 2022.pptxvFunction Konveyor Meetup - Why App Modernization Projects Fail - Aug 2022.pptx
vFunction Konveyor Meetup - Why App Modernization Projects Fail - Aug 2022.pptx
LibbySchulze
 
CNCF Live Webinar: Low Footprint Java Containers with GraalVM
CNCF Live Webinar: Low Footprint Java Containers with GraalVMCNCF Live Webinar: Low Footprint Java Containers with GraalVM
CNCF Live Webinar: Low Footprint Java Containers with GraalVM
LibbySchulze
 
EnRoute-OPA-Integration.pdf
EnRoute-OPA-Integration.pdfEnRoute-OPA-Integration.pdf
EnRoute-OPA-Integration.pdf
LibbySchulze
 
AirGap_zusammen_neu.pdf
AirGap_zusammen_neu.pdfAirGap_zusammen_neu.pdf
AirGap_zusammen_neu.pdf
LibbySchulze
 
Copy of OTel Me All About OpenTelemetry The Current & Future State, Navigatin...
Copy of OTel Me All About OpenTelemetry The Current & Future State, Navigatin...Copy of OTel Me All About OpenTelemetry The Current & Future State, Navigatin...
Copy of OTel Me All About OpenTelemetry The Current & Future State, Navigatin...
LibbySchulze
 
OTel Me All About OpenTelemetry The Current & Future State, Navigating the Pr...
OTel Me All About OpenTelemetry The Current & Future State, Navigating the Pr...OTel Me All About OpenTelemetry The Current & Future State, Navigating the Pr...
OTel Me All About OpenTelemetry The Current & Future State, Navigating the Pr...
LibbySchulze
 
CNCF_ A step to step guide to platforming your delivery setup.pdf
CNCF_ A step to step guide to platforming your delivery setup.pdfCNCF_ A step to step guide to platforming your delivery setup.pdf
CNCF_ A step to step guide to platforming your delivery setup.pdf
LibbySchulze
 
CNCF Online - Data Protection Guardrails using Open Policy Agent (OPA).pdf
CNCF Online - Data Protection Guardrails using Open Policy Agent (OPA).pdfCNCF Online - Data Protection Guardrails using Open Policy Agent (OPA).pdf
CNCF Online - Data Protection Guardrails using Open Policy Agent (OPA).pdf
LibbySchulze
 
Securing Windows workloads.pdf
Securing Windows workloads.pdfSecuring Windows workloads.pdf
Securing Windows workloads.pdf
LibbySchulze
 
Securing Windows workloads.pdf
Securing Windows workloads.pdfSecuring Windows workloads.pdf
Securing Windows workloads.pdf
LibbySchulze
 
Advancements in Kubernetes Workload Identity for Azure
Advancements in Kubernetes Workload Identity for AzureAdvancements in Kubernetes Workload Identity for Azure
Advancements in Kubernetes Workload Identity for Azure
LibbySchulze
 

More from LibbySchulze (20)

Running distributed tests with k6.pdf
Running distributed tests with k6.pdfRunning distributed tests with k6.pdf
Running distributed tests with k6.pdf
 
Extending Kubectl.pptx
Extending Kubectl.pptxExtending Kubectl.pptx
Extending Kubectl.pptx
 
Enhancing Data Protection Workflows with Kanister And Argo Workflows
Enhancing Data Protection Workflows with Kanister And Argo WorkflowsEnhancing Data Protection Workflows with Kanister And Argo Workflows
Enhancing Data Protection Workflows with Kanister And Argo Workflows
 
Fallacies in Platform Engineering.pdf
Fallacies in Platform Engineering.pdfFallacies in Platform Engineering.pdf
Fallacies in Platform Engineering.pdf
 
Intro to Fluvio.pptx.pdf
Intro to Fluvio.pptx.pdfIntro to Fluvio.pptx.pdf
Intro to Fluvio.pptx.pdf
 
Enhance your Kafka Infrastructure with Fluvio.pptx
Enhance your Kafka Infrastructure with Fluvio.pptxEnhance your Kafka Infrastructure with Fluvio.pptx
Enhance your Kafka Infrastructure with Fluvio.pptx
 
CNCF On-Demand Webinar_ LitmusChaos Project Updates.pdf
CNCF On-Demand Webinar_ LitmusChaos Project Updates.pdfCNCF On-Demand Webinar_ LitmusChaos Project Updates.pdf
CNCF On-Demand Webinar_ LitmusChaos Project Updates.pdf
 
Oh The Places You'll Sign.pdf
Oh The Places You'll Sign.pdfOh The Places You'll Sign.pdf
Oh The Places You'll Sign.pdf
 
Rancher MasterClass - Avoiding-configuration-drift.pptx
Rancher  MasterClass - Avoiding-configuration-drift.pptxRancher  MasterClass - Avoiding-configuration-drift.pptx
Rancher MasterClass - Avoiding-configuration-drift.pptx
 
vFunction Konveyor Meetup - Why App Modernization Projects Fail - Aug 2022.pptx
vFunction Konveyor Meetup - Why App Modernization Projects Fail - Aug 2022.pptxvFunction Konveyor Meetup - Why App Modernization Projects Fail - Aug 2022.pptx
vFunction Konveyor Meetup - Why App Modernization Projects Fail - Aug 2022.pptx
 
CNCF Live Webinar: Low Footprint Java Containers with GraalVM
CNCF Live Webinar: Low Footprint Java Containers with GraalVMCNCF Live Webinar: Low Footprint Java Containers with GraalVM
CNCF Live Webinar: Low Footprint Java Containers with GraalVM
 
EnRoute-OPA-Integration.pdf
EnRoute-OPA-Integration.pdfEnRoute-OPA-Integration.pdf
EnRoute-OPA-Integration.pdf
 
AirGap_zusammen_neu.pdf
AirGap_zusammen_neu.pdfAirGap_zusammen_neu.pdf
AirGap_zusammen_neu.pdf
 
Copy of OTel Me All About OpenTelemetry The Current & Future State, Navigatin...
Copy of OTel Me All About OpenTelemetry The Current & Future State, Navigatin...Copy of OTel Me All About OpenTelemetry The Current & Future State, Navigatin...
Copy of OTel Me All About OpenTelemetry The Current & Future State, Navigatin...
 
OTel Me All About OpenTelemetry The Current & Future State, Navigating the Pr...
OTel Me All About OpenTelemetry The Current & Future State, Navigating the Pr...OTel Me All About OpenTelemetry The Current & Future State, Navigating the Pr...
OTel Me All About OpenTelemetry The Current & Future State, Navigating the Pr...
 
CNCF_ A step to step guide to platforming your delivery setup.pdf
CNCF_ A step to step guide to platforming your delivery setup.pdfCNCF_ A step to step guide to platforming your delivery setup.pdf
CNCF_ A step to step guide to platforming your delivery setup.pdf
 
CNCF Online - Data Protection Guardrails using Open Policy Agent (OPA).pdf
CNCF Online - Data Protection Guardrails using Open Policy Agent (OPA).pdfCNCF Online - Data Protection Guardrails using Open Policy Agent (OPA).pdf
CNCF Online - Data Protection Guardrails using Open Policy Agent (OPA).pdf
 
Securing Windows workloads.pdf
Securing Windows workloads.pdfSecuring Windows workloads.pdf
Securing Windows workloads.pdf
 
Securing Windows workloads.pdf
Securing Windows workloads.pdfSecuring Windows workloads.pdf
Securing Windows workloads.pdf
 
Advancements in Kubernetes Workload Identity for Azure
Advancements in Kubernetes Workload Identity for AzureAdvancements in Kubernetes Workload Identity for Azure
Advancements in Kubernetes Workload Identity for Azure
 

Recently uploaded

一比一原版美国休斯敦大学毕业证(uh毕业证书)如何办理
一比一原版美国休斯敦大学毕业证(uh毕业证书)如何办理一比一原版美国休斯敦大学毕业证(uh毕业证书)如何办理
一比一原版美国休斯敦大学毕业证(uh毕业证书)如何办理
taqyea
 
一比一原版(bu毕业证书)英国伯恩茅斯大学毕业证如何办理
一比一原版(bu毕业证书)英国伯恩茅斯大学毕业证如何办理一比一原版(bu毕业证书)英国伯恩茅斯大学毕业证如何办理
一比一原版(bu毕业证书)英国伯恩茅斯大学毕业证如何办理
taqyea
 
Founders Of Digital World Social Media..
Founders Of Digital World Social Media..Founders Of Digital World Social Media..
Founders Of Digital World Social Media..
jom pom
 
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirtsJarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
exgf28
 
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
taqyea
 
一比一原版(hull毕业证书)英国赫尔大学毕业证如何办理
一比一原版(hull毕业证书)英国赫尔大学毕业证如何办理一比一原版(hull毕业证书)英国赫尔大学毕业证如何办理
一比一原版(hull毕业证书)英国赫尔大学毕业证如何办理
taqyea
 
Future Trends What's Next for UI UX Design on Websites
Future Trends What's Next for UI UX Design on WebsitesFuture Trends What's Next for UI UX Design on Websites
Future Trends What's Next for UI UX Design on Websites
Serva AppLabs
 
University of Otago degree offer diploma Transcript
University of Otago degree offer diploma TranscriptUniversity of Otago degree offer diploma Transcript
University of Otago degree offer diploma Transcript
ubufe
 
Quiz Quiz Hota Hai (School Quiz 2018-19)
Quiz Quiz Hota Hai (School Quiz 2018-19)Quiz Quiz Hota Hai (School Quiz 2018-19)
Quiz Quiz Hota Hai (School Quiz 2018-19)
Kashyap J
 
very nice project on internet class 10.pptx
very nice project on internet class 10.pptxvery nice project on internet class 10.pptx
very nice project on internet class 10.pptx
bazukagaming6
 
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
taqyea
 
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptxSlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
NandakumarP24
 
一比一原版(aber毕业证)亚伯大学毕业证如何办理
一比一原版(aber毕业证)亚伯大学毕业证如何办理一比一原版(aber毕业证)亚伯大学毕业证如何办理
一比一原版(aber毕业证)亚伯大学毕业证如何办理
taqyea
 
Carrington degree offer diploma Transcript
Carrington degree offer diploma TranscriptCarrington degree offer diploma Transcript
Carrington degree offer diploma Transcript
ubufe
 
一比一原版(爱大毕业证书)英国爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)英国爱丁堡大学毕业证如何办理一比一原版(爱大毕业证书)英国爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)英国爱丁堡大学毕业证如何办理
taqyea
 
How to Choose the Right UIUX Design Service for Optimal Customer Experience
How to Choose the Right UIUX Design Service for Optimal Customer ExperienceHow to Choose the Right UIUX Design Service for Optimal Customer Experience
How to Choose the Right UIUX Design Service for Optimal Customer Experience
Serva AppLabs
 
一比一原版(city毕业证书)英国剑桥大学毕业证如何办理
一比一原版(city毕业证书)英国剑桥大学毕业证如何办理一比一原版(city毕业证书)英国剑桥大学毕业证如何办理
一比一原版(city毕业证书)英国剑桥大学毕业证如何办理
taqyea
 
一比一原版(ukc毕业证书)英国肯特大学毕业证如何办理
一比一原版(ukc毕业证书)英国肯特大学毕业证如何办理一比一原版(ukc毕业证书)英国肯特大学毕业证如何办理
一比一原版(ukc毕业证书)英国肯特大学毕业证如何办理
taqyea
 
Tarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur On Data Breaches and Privacy FearsTarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur
 
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
taqyea
 

Recently uploaded (20)

一比一原版美国休斯敦大学毕业证(uh毕业证书)如何办理
一比一原版美国休斯敦大学毕业证(uh毕业证书)如何办理一比一原版美国休斯敦大学毕业证(uh毕业证书)如何办理
一比一原版美国休斯敦大学毕业证(uh毕业证书)如何办理
 
一比一原版(bu毕业证书)英国伯恩茅斯大学毕业证如何办理
一比一原版(bu毕业证书)英国伯恩茅斯大学毕业证如何办理一比一原版(bu毕业证书)英国伯恩茅斯大学毕业证如何办理
一比一原版(bu毕业证书)英国伯恩茅斯大学毕业证如何办理
 
Founders Of Digital World Social Media..
Founders Of Digital World Social Media..Founders Of Digital World Social Media..
Founders Of Digital World Social Media..
 
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirtsJarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
Jarren Duran Fuck EM T shirts Jarren Duran Fuck EM T shirts
 
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
一比一原版(bristol毕业证书)英国布里斯托大学毕业证如何办理
 
一比一原版(hull毕业证书)英国赫尔大学毕业证如何办理
一比一原版(hull毕业证书)英国赫尔大学毕业证如何办理一比一原版(hull毕业证书)英国赫尔大学毕业证如何办理
一比一原版(hull毕业证书)英国赫尔大学毕业证如何办理
 
Future Trends What's Next for UI UX Design on Websites
Future Trends What's Next for UI UX Design on WebsitesFuture Trends What's Next for UI UX Design on Websites
Future Trends What's Next for UI UX Design on Websites
 
University of Otago degree offer diploma Transcript
University of Otago degree offer diploma TranscriptUniversity of Otago degree offer diploma Transcript
University of Otago degree offer diploma Transcript
 
Quiz Quiz Hota Hai (School Quiz 2018-19)
Quiz Quiz Hota Hai (School Quiz 2018-19)Quiz Quiz Hota Hai (School Quiz 2018-19)
Quiz Quiz Hota Hai (School Quiz 2018-19)
 
very nice project on internet class 10.pptx
very nice project on internet class 10.pptxvery nice project on internet class 10.pptx
very nice project on internet class 10.pptx
 
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
一比一原版(oregon毕业证书)俄勒冈大学毕业证如何办理
 
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptxSlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
SlideEgg_200767-ICC Mens T20 World Cup 2024.pptx
 
一比一原版(aber毕业证)亚伯大学毕业证如何办理
一比一原版(aber毕业证)亚伯大学毕业证如何办理一比一原版(aber毕业证)亚伯大学毕业证如何办理
一比一原版(aber毕业证)亚伯大学毕业证如何办理
 
Carrington degree offer diploma Transcript
Carrington degree offer diploma TranscriptCarrington degree offer diploma Transcript
Carrington degree offer diploma Transcript
 
一比一原版(爱大毕业证书)英国爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)英国爱丁堡大学毕业证如何办理一比一原版(爱大毕业证书)英国爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)英国爱丁堡大学毕业证如何办理
 
How to Choose the Right UIUX Design Service for Optimal Customer Experience
How to Choose the Right UIUX Design Service for Optimal Customer ExperienceHow to Choose the Right UIUX Design Service for Optimal Customer Experience
How to Choose the Right UIUX Design Service for Optimal Customer Experience
 
一比一原版(city毕业证书)英国剑桥大学毕业证如何办理
一比一原版(city毕业证书)英国剑桥大学毕业证如何办理一比一原版(city毕业证书)英国剑桥大学毕业证如何办理
一比一原版(city毕业证书)英国剑桥大学毕业证如何办理
 
一比一原版(ukc毕业证书)英国肯特大学毕业证如何办理
一比一原版(ukc毕业证书)英国肯特大学毕业证如何办理一比一原版(ukc毕业证书)英国肯特大学毕业证如何办理
一比一原版(ukc毕业证书)英国肯特大学毕业证如何办理
 
Tarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur On Data Breaches and Privacy FearsTarun Gaur On Data Breaches and Privacy Fears
Tarun Gaur On Data Breaches and Privacy Fears
 
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
一比一原版(heriotwatt毕业证书)英国赫瑞瓦特大学毕业证如何办理
 

Containerized IDEs.pdf

  • 1. Containerized IDEs, and other Local As Code techniques Jan Van Bruggen Developer Relations @ itopia
  • 2. Let’s talk about coding, in general ● Defining my terms: ○ “Coding” == Editing lines of code in software and testing results ○ “Device” == Hardware used when coding (Ex: a Mac Mini, a Chromebook, an eGPU, etc.) ○ “Local” == Software running locally when coding (Ex: IDE, CLIs, compilers, web browsers, etc.) ○ “Project” == A team codebase with… ■ necessary dependencies (libraries, OS packages, OS, etc.) ■ recommended helpers (plugins, IDE settings, shell aliases, etc.) ● Some project dependencies & helpers have declarative config files. ○ .idea/ .vscode/ .editorconfig .eslintrc .gitignore .prettierrc.json go.mod package-lock.json package.json pom.xml requirements.txt tsconfig.json yarn.lock … ● Some don’t. ○ “See README.md for step-by-step instructions on how to…”
  • 3. Before you can start coding, you need… (on most projects) Version-controlled? Setup process 📄 Project source ✅ Yes 👍 One command: git clone 📁 Third-party libraries ✅ Yes 👍 One command: npm install (or pip / maven / cargo / etc.) 📦 OS packages ❌ No 🛠 Manually install & configure (follow docs, maybe scripts) 🐧 OS ❌ No 🛠 Manually install & configure (follow docs) 💻 Device N/A N/A
  • 4. What is the source of truth for each layer? Version-controlled? Setup process 📄 Project source ✅ Yes 👍 One command: git clone 📁 Third-party libraries ✅ Yes 👍 One command: npm install (or pip / maven / cargo / etc.) 📦 OS packages ❌ No 🛠 Manually install & configure (follow docs, maybe scripts) 🐧 OS ❌ No 🛠 Manually install & configure (follow docs) 💻 Device N/A N/A Local As Documentation Local As Code
  • 5. The point of this webinar Version-controlled? Setup process 📄 Project source ✅ Yes 👍 One command: git clone 📁 Third-party libraries ✅ Yes 👍 One command: npm install (or pip / maven / cargo / etc.) 📦 OS packages ❌ No 🛠 Manually install & configure (follow docs, maybe scripts) 🐧 OS ❌ No 🛠 Manually install & configure (follow docs) 💻 Device N/A N/A by automating project setup. Decrease project onboarding time
  • 6. Let’s automate! Version-controlled? Setup process Solutions 📄 Project source ✅ Yes 👍 One command: git clone N/A 📁 Third-party libraries ✅ Yes 👍 One command: npm install (or pip / maven / cargo / etc.) N/A 📦 OS packages ❌ No 🛠 Manually install & configure (follow docs, maybe scripts) ? 🐧 OS ❌ No 🛠 Manually install & configure (follow docs) ? 💻 Device N/A N/A N/A
  • 7. OS Packages As Code is tricky but high-value Version-controlled? Setup process Solutions 📄 Project source ✅ Yes 👍 One command: git clone N/A 📁 Third-party libraries ✅ Yes 👍 One command: npm install (or pip / maven / cargo / etc.) N/A 📦 OS packages ? ? ? 🐧 OS ❌ No 🛠 Manually install & configure (follow docs) ? 💻 Device N/A N/A N/A
  • 8. Nix is a great tool for most projects Version-controlled? Setup process Solutions 📄 Project source ✅ Yes 👍 One command: git clone N/A 📁 Third-party libraries ✅ Yes 👍 One command: npm install (or pip / maven / cargo / etc.) N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 One command: nix-shell Nix github.com/NixOS/nix 🐧 OS ❌ No 🛠 Manually install & configure (follow docs) ? 💻 Device N/A N/A N/A
  • 9. OS As Code can be both liberating and restrictive Version-controlled? Setup process Solutions 📄 Project source ✅ Yes 👍 One command: git clone N/A 📁 Third-party libraries ✅ Yes 👍 One command: npm install (or pip / maven / cargo / etc.) N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 One command: nix-shell Nix github.com/NixOS/nix 🐧 OS ? ? ? 💻 Device N/A N/A N/A
  • 10. Two orthogonal solutions Version-controlled? Setup process Solutions 📄 Project source ✅ Yes 👍 One command: git clone N/A 📁 Third-party libraries ✅ Yes 👍 One command: npm install (or pip / maven / cargo / etc.) N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 One command: nix-shell Nix github.com/NixOS/nix 🐧 OS ? ? Containerization or NixOS (nixos.org) 💻 Device N/A N/A N/A
  • 11. Containerization is accessible and popular, but NixOS isn’t Version-controlled? Setup process Solutions 📄 Project source ✅ Yes 👍 One command: git clone N/A 📁 Third-party libraries ✅ Yes 👍 One command: npm install (or pip / maven / cargo / etc.) N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 One command: nix-shell Nix github.com/NixOS/nix 🐧 OS ? ? Containerization or NixOS (nixos.org) 💻 Device N/A N/A N/A
  • 12. Containerization adds an OS and can install OS packages Version-controlled? Setup process Solutions 📄 Project source ✅ Yes 👍 git clone N/A 📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional) 🐧 Project OS ✅ Yes: Dockerfile ? Docker 👁 IDE interface N/A ? ? 🍎 Device OS Unnecessary 👍 Bring your own device N/A 💻 Device N/A N/A N/A
  • 13. Short tangent: Personalization matters, too Version-controlled? Setup process Solutions 💅 Personalization ? ? ? 📄 Project source ✅ Yes 👍 git clone N/A 📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional) 🐧 Project OS ✅ Yes: Dockerfile ? Docker 👁 IDE interface N/A ? ? 🍎 Device OS Unnecessary 👍 Bring your own device N/A 💻 Device N/A N/A N/A
  • 14. Personalization is about dotfiles (see github.com/webpro/awesome-dotfiles) Version-controlled? Setup process Solutions 💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi (chezmoi.io) 📄 Project source ✅ Yes 👍 git clone N/A 📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional) 🐧 Project OS ✅ Yes: Dockerfile ? Docker 👁 IDE interface N/A ? ? 🍎 Device OS Unnecessary 👍 Bring your own device N/A 💻 Device N/A N/A N/A
  • 15. Containerized OS approach #1: Offline (easy) Version-controlled? Setup process Solutions 💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi 📄 Project source ✅ Yes 👍 git clone N/A 📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional) 🐧 Project OS (guest) ✅ Yes: Dockerfile 🛠 Manually install & configure Docker Desktop 👁 IDE interface N/A 🛠 Manually install IDE with… …guest OS support 🍎 Device OS (host) Unnecessary 👍 Bring your own device N/A 💻 Device N/A N/A N/A
  • 16. Containerized OS approach #2: Hybrid (medium) Version-controlled? Setup process Solutions 💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi 📄 Project source ✅ Yes 👍 git clone N/A 📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional) 🐧 Project OS (remote) ✅ Yes: Dockerfile 🛠 Manually deploy a server Docker on a server 👁 IDE interface N/A 🛠 Manually install IDE with… …remote OS support 🍎 Device OS (local) Unnecessary 👍 Bring your own device N/A 💻 Device N/A N/A N/A
  • 17. Containerized OS approach #3: Online (medium) Version-controlled? Setup process Solutions 💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi 📄 Project source ✅ Yes 👍 git clone N/A 📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional) 🐧 Project OS (remote) ✅ Yes: Dockerfile 🛠 Manually deploy a server code-server or JetBrains Projector 👁 IDE interface N/A 👍 Bring your own web browser N/A 🍎 Device OS (local) Unnecessary 👍 Bring your own device N/A 💻 Device N/A N/A N/A
  • 18. Containerized OS approach #4: Online & scalable (hard) Version-controlled? Setup process Solutions 💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi 📄 Project source ✅ Yes 👍 git clone N/A 📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional) 🐧 Project OS (remote) ✅ Yes: Dockerfile 🛠 Manually deploy Kubernetes Selkies (selkies.io) 👁 IDE interface N/A 👍 Bring your own web browser N/A 🍎 Device OS (local) Unnecessary 👍 Bring your own device N/A 💻 Device N/A N/A N/A
  • 19. Containerized OS approach #5: Online & managed (easy) Version-controlled? Setup process Solutions 💅 Personalization ✅ Yes: dotfiles 👍 chezmoi init myusername chezmoi 📄 Project source ✅ Yes 👍 git clone N/A 📁 Third-party libraries ✅ Yes 👍 npm install / pip / maven … N/A 📦 OS packages ✅ Yes: *.nix file(s) 👍 nix-shell Nix (optional) 🐧 Project OS (remote) ✅ Yes: Dockerfile 🤷 “Manually” sign up itopia Spaces or GitHub Codespaces 👁 IDE interface N/A 👍 Bring your own web browser N/A 🍎 Device OS (local) Unnecessary 👍 Bring your own device N/A 💻 Device N/A N/A N/A
  • 20. Thanks for watching! 👋 JVanBruggen@itopia.com JanCVanB@ on GitHub & Twitter ⛅ itopiaSpaces.com github.com/itopia-inc 🦭 github.com/selkies-project discord.com/invite/wDNGDeSW5F