{"id":3337,"date":"2023-12-14T12:38:22","date_gmt":"2023-12-14T12:38:22","guid":{"rendered":"https:\/\/enjoy-test.be\/?p=3337"},"modified":"2023-12-14T13:38:35","modified_gmt":"2023-12-14T13:38:35","slug":"dev-containers-for-improved-productivity-and-collaboration","status":"publish","type":"post","link":"https:\/\/nemeon.io\/nl\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/","title":{"rendered":"Dev Containers voor verbeterde productiviteit en samenwerking"},"content":{"rendered":"\n\n\n<p class=\"wp-block-paragraph\">Whenever you partake in a team code project, everyone needs to have all of the dependencies installed in order for the code to run. Generally, you share this in the form of a `requirements.txt` file (`pip freeze &gt; requirements.txt`) in the project\u2019s GIT. When you install the packages from the file on your local machine (`pip install -r requirements.txt`), it should in theory allow you to work on the project without issues. Except, in reality, there are often compatibility issues: e.g. you have a different version of the package already installed, a package version on your system gets overwritten with the version from the project\u2019s `requirements.txt` causing issues with dependencies in other projects, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One common way of solving this is by using a virtual environment, the most known being&nbsp;<a href=\"https:\/\/conda.io\/projects\/conda\/en\/latest\/user-guide\/tasks\/manage-environments.html\">conda<\/a>&nbsp;or the standard Python module&nbsp;<a href=\"https:\/\/docs.python.org\/3\/library\/venv.html\">venv<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Problem solved?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not entirely, in some cases, a specified package version based on which the code was written can have different releases depending on e.g. OS. Meaning that if e.g. your co-worker uses Windows while you use Linux, they might not have access to the exact same release as you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The next approach to solving this is the subject of this post: dev containers, more specifically we\u2019ll be looking at the&nbsp;<a href=\"https:\/\/code.visualstudio.com\/docs\/devcontainers\/containers\">Visual Studio Code Dev Containers extension<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What this does is create a full-featured development environment with a VS Code Server in the form of a docker container.<a href=\"https:\/\/nemeon.io\/dev-containers-and-their-benefit-to-productivity-and-collaboration\/\"><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" decoding=\"async\" data-src=\"https:\/\/i0.wp.com\/nemeon.io\/app\/uploads\/2023\/04\/devcontainers.png?w=1020&#038;ssl=1\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This allows your set-up to be nearly identical to your co-workers\u2019 set-up, with all packages install straight to an identical OS (container) system. Even the VS Code extensions used in the project (e.g. a specific code formatter like&nbsp;<a href=\"https:\/\/code.visualstudio.com\/docs\/devcontainers\/containers\">black<\/a>) can be automatically installed. All of this helps to eliminate all the time spent to set-up an environment, which should be straightforward, but often causes some headaches and lost productive time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It will also allow you to seamlessly switch your entire development environment just by connecting to a different container.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The extension handles all of the setup based on a few configuration files contained in a folder called&nbsp;`.devcontainer`, this is mainly the `devcontainer.json` file, which looks similar to this:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">`json\n\/\/ For format details, see https:\/\/aka.ms\/devcontainer.json. For config options, see the\n\/\/ README at: https:\/\/github.com\/devcontainers\/templates\/tree\/main\/src\/python\n\n{ \n\u201cname\u201d: \u201cmyproject\u201d,\n \/\/ Or use a Dockerfile or Docker Compose file. More info: https:\/\/containers.dev\/guide\/dockerfile\n\u201cimage\u201d: \u201cmcr.microsoft.com\/devcontainers\/python: 0-3.11\u201d,\n \/\/ Features to add to the dev container. More info: https:\/\/containers.dev\/features.\n \/\/ Use \u2018forwardPorts\u2019 to make a list of ports inside the container available locally.\n \/\/ \u201cforwardPorts\u201d: [],\n \/\/ Use \u2018postCreateCommand\u2019 to run commands after the container is created.\n\u201cpostCreateCommand\u201d: \u201cpip3 install \u2013user - r requirements.txt\u201d,\n \/\/ Configure tool-specific properties.\n\u201ccustomizations\u201d: {\n \/\/ Configure properties specific to VS Code.\n    \u201cvscode\u201d: {\n       \u201cextensions\u201d: [\n           \u201cms - vscode.live - server\u201d,\n           \u201cms - python.black - formatter\u201d\n          ]\n     }\n   }\n  \/\/ Uncomment to connect as root instead. More info: https:\/\/aka.ms\/dev-containers-non-root.\n  \/\/ \u201cremoteUser\u201d: \u201croot\u201d\n}\n`<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The VS Code extension has tools to help you build this, but you can also just Google the parts you need. E.g. the VS Code extensions are defined in the VS Code Marketplace, and can be found in the lower right, under \u201cMore Info &gt; Unique Identifier\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One issue you might encounter is generated files and plots being more difficult to access. There are multiple possible solutions for this:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>You mount a folder in your local filesystem to the docker container\u2019s filesystem and use this to export data.<\/li><li>A better solution, IMHO, is to use an extension such as e.g. the&nbsp;<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-toolsai.jupyter\">Jupyter extension<\/a>.<\/li><li>Yet another option would be to look at it as a headless server and to use some sort of file-server set-up or similar more definitive solution to share generated files.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, to make this tool even more useful, we can drive this problem-solution methodology one step further by hosting the dev container in the cloud. With&nbsp;<a href=\"https:\/\/github.com\/features\/codespaces\">GitHub Codespaces&nbsp;<\/a>being an obvious one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The added benefits are:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2013 Any potential hardware-related discrepancies are eliminated as the whole team works on exactly the same machine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2013 GitHub Codespaces offers a web interface for VS Code, next to the possibility to connect to your locally installed VS Code application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2013 You\u2019re also not limited to the computing power of the physical device you\u2019re working on.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2013 It\u2019s well-integrated into GitHub and can be created using an existing `devcontainer.json` file present in your GitHub repo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This means that in theory you could be coding and running hardware-intensive computations on a device as light as an iPad (as long as you have an active internet connection). It also means that you don\u2019t need to buy a beefy workstation for all your team members, as the heavy lifting is done in the cloud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The downside is that the service costs money, the GitHub Codespaces system is based on computing time and storage days. However, there is a free tier where you get x hours of CPU time and y storage days for free, more info&nbsp;<a href=\"https:\/\/docs.github.com\/en\/billing\/managing-billing-for-github-codespaces\/about-billing-for-github-codespaces\">here<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I hope this post was able to inspire some people to explore different possible solutions to a common problem.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Whenever you partake in a team code project, everyone needs to have all of the dependencies installed in order for the code to run. Generally, you share this in the form of a `requirements.txt` file (`pip freeze &gt; requirements.txt`) in the project\u2019s GIT. When you install the packages from the file on your local machine [&#8230;]\n","protected":false},"author":2,"featured_media":3331,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[14],"tags":[],"class_list":["post-3337","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-models"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dev Containers for Improved Productivity and Collaboration - Nemeon.io<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nemeon.io\/nl\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/\" \/>\n<meta property=\"og:locale\" content=\"nl_BE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dev Containers for Improved Productivity and Collaboration - Nemeon.io\" \/>\n<meta property=\"og:description\" content=\"Whenever you partake in a team code project, everyone needs to have all of the dependencies installed in order for the code to run. Generally, you share this in the form of a `requirements.txt` file (`pip freeze &gt; requirements.txt`) in the project\u2019s GIT. When you install the packages from the file on your local machine [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nemeon.io\/nl\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/\" \/>\n<meta property=\"og:site_name\" content=\"Nemeon.io\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-14T12:38:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-14T13:38:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nemeon.io\/wp-content\/uploads\/2023\/12\/shutterstock_2032771244-scaled-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Yanelle Van den Berghe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yanelle Van den Berghe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/\"},\"author\":{\"name\":\"Yanelle Van den Berghe\",\"@id\":\"https:\\\/\\\/nemeon.io\\\/#\\\/schema\\\/person\\\/a3c99baa4e8cb0e2d75c1944768e5c07\"},\"headline\":\"Dev Containers for Improved Productivity and Collaboration\",\"datePublished\":\"2023-12-14T12:38:22+00:00\",\"dateModified\":\"2023-12-14T13:38:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/\"},\"wordCount\":749,\"publisher\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/nemeon.io\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/shutterstock_2032771244-scaled-1.jpg?fit=2560%2C1707&ssl=1\",\"articleSection\":[\"Models\"],\"inLanguage\":\"nl-BE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/\",\"url\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/\",\"name\":\"Dev Containers for Improved Productivity and Collaboration - Nemeon.io\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/nemeon.io\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/shutterstock_2032771244-scaled-1.jpg?fit=2560%2C1707&ssl=1\",\"datePublished\":\"2023-12-14T12:38:22+00:00\",\"dateModified\":\"2023-12-14T13:38:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/#breadcrumb\"},\"inLanguage\":\"nl-BE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/nemeon.io\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/shutterstock_2032771244-scaled-1.jpg?fit=2560%2C1707&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/nemeon.io\\\/wp-content\\\/uploads\\\/2023\\\/12\\\/shutterstock_2032771244-scaled-1.jpg?fit=2560%2C1707&ssl=1\",\"width\":2560,\"height\":1707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nemeon.io\\\/2023\\\/12\\\/14\\\/dev-containers-for-improved-productivity-and-collaboration\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/nemeon.io\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dev Containers for Improved Productivity and Collaboration\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/nemeon.io\\\/#website\",\"url\":\"https:\\\/\\\/nemeon.io\\\/\",\"name\":\"Nemeon.io\",\"description\":\"Your Data and AI partner\",\"publisher\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/nemeon.io\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-BE\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/nemeon.io\\\/#organization\",\"name\":\"Nemeon\",\"url\":\"https:\\\/\\\/nemeon.io\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\\\/\\\/nemeon.io\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/nemeon.io\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/cropped-Contentkalender-Nemeon-10.png\",\"contentUrl\":\"https:\\\/\\\/nemeon.io\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/cropped-Contentkalender-Nemeon-10.png\",\"width\":512,\"height\":512,\"caption\":\"Nemeon\"},\"image\":{\"@id\":\"https:\\\/\\\/nemeon.io\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/nemeondata\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/nemeon.io\\\/#\\\/schema\\\/person\\\/a3c99baa4e8cb0e2d75c1944768e5c07\",\"name\":\"Yanelle Van den Berghe\",\"url\":\"https:\\\/\\\/nemeon.io\\\/nl\\\/author\\\/yanelle\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dev Containers for Improved Productivity and Collaboration - Nemeon.io","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nemeon.io\/nl\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/","og_locale":"nl_BE","og_type":"article","og_title":"Dev Containers for Improved Productivity and Collaboration - Nemeon.io","og_description":"Whenever you partake in a team code project, everyone needs to have all of the dependencies installed in order for the code to run. Generally, you share this in the form of a `requirements.txt` file (`pip freeze &gt; requirements.txt`) in the project\u2019s GIT. When you install the packages from the file on your local machine [...]","og_url":"https:\/\/nemeon.io\/nl\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/","og_site_name":"Nemeon.io","article_published_time":"2023-12-14T12:38:22+00:00","article_modified_time":"2023-12-14T13:38:35+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/nemeon.io\/wp-content\/uploads\/2023\/12\/shutterstock_2032771244-scaled-1.jpg","type":"image\/jpeg"}],"author":"Yanelle Van den Berghe","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Yanelle Van den Berghe","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/#article","isPartOf":{"@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/"},"author":{"name":"Yanelle Van den Berghe","@id":"https:\/\/nemeon.io\/#\/schema\/person\/a3c99baa4e8cb0e2d75c1944768e5c07"},"headline":"Dev Containers for Improved Productivity and Collaboration","datePublished":"2023-12-14T12:38:22+00:00","dateModified":"2023-12-14T13:38:35+00:00","mainEntityOfPage":{"@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/"},"wordCount":749,"publisher":{"@id":"https:\/\/nemeon.io\/#organization"},"image":{"@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/nemeon.io\/wp-content\/uploads\/2023\/12\/shutterstock_2032771244-scaled-1.jpg?fit=2560%2C1707&ssl=1","articleSection":["Models"],"inLanguage":"nl-BE"},{"@type":"WebPage","@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/","url":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/","name":"Dev Containers for Improved Productivity and Collaboration - Nemeon.io","isPartOf":{"@id":"https:\/\/nemeon.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/#primaryimage"},"image":{"@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/nemeon.io\/wp-content\/uploads\/2023\/12\/shutterstock_2032771244-scaled-1.jpg?fit=2560%2C1707&ssl=1","datePublished":"2023-12-14T12:38:22+00:00","dateModified":"2023-12-14T13:38:35+00:00","breadcrumb":{"@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/#breadcrumb"},"inLanguage":"nl-BE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/"]}]},{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/#primaryimage","url":"https:\/\/i0.wp.com\/nemeon.io\/wp-content\/uploads\/2023\/12\/shutterstock_2032771244-scaled-1.jpg?fit=2560%2C1707&ssl=1","contentUrl":"https:\/\/i0.wp.com\/nemeon.io\/wp-content\/uploads\/2023\/12\/shutterstock_2032771244-scaled-1.jpg?fit=2560%2C1707&ssl=1","width":2560,"height":1707},{"@type":"BreadcrumbList","@id":"https:\/\/nemeon.io\/2023\/12\/14\/dev-containers-for-improved-productivity-and-collaboration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nemeon.io\/"},{"@type":"ListItem","position":2,"name":"Dev Containers for Improved Productivity and Collaboration"}]},{"@type":"WebSite","@id":"https:\/\/nemeon.io\/#website","url":"https:\/\/nemeon.io\/","name":"Nemeon.io","description":"Your Data and AI partner","publisher":{"@id":"https:\/\/nemeon.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nemeon.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-BE"},{"@type":"Organization","@id":"https:\/\/nemeon.io\/#organization","name":"Nemeon","url":"https:\/\/nemeon.io\/","logo":{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/nemeon.io\/#\/schema\/logo\/image\/","url":"https:\/\/nemeon.io\/wp-content\/uploads\/2024\/02\/cropped-Contentkalender-Nemeon-10.png","contentUrl":"https:\/\/nemeon.io\/wp-content\/uploads\/2024\/02\/cropped-Contentkalender-Nemeon-10.png","width":512,"height":512,"caption":"Nemeon"},"image":{"@id":"https:\/\/nemeon.io\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/nemeondata\/"]},{"@type":"Person","@id":"https:\/\/nemeon.io\/#\/schema\/person\/a3c99baa4e8cb0e2d75c1944768e5c07","name":"Yanelle Van den Berghe","url":"https:\/\/nemeon.io\/nl\/author\/yanelle\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/nemeon.io\/wp-content\/uploads\/2023\/12\/shutterstock_2032771244-scaled-1.jpg?fit=2560%2C1707&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/posts\/3337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/comments?post=3337"}],"version-history":[{"count":1,"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/posts\/3337\/revisions"}],"predecessor-version":[{"id":3338,"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/posts\/3337\/revisions\/3338"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/media\/3331"}],"wp:attachment":[{"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/media?parent=3337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/categories?post=3337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nemeon.io\/nl\/wp-json\/wp\/v2\/tags?post=3337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}