Hope everyone's week is going well. 👋 I just published a guide on dev containers (devcontainers) and wanted to share it here for anyone who's tired of "works on my machine" problems or setting up the same dev environment over and over again. The short version of why this matters: your entire development environment — dependencies, tools, runtime, editor settings — can live in a single JSON configuration. Instead of documenting setup steps, you define them once and run your project inside a container that’s identical for everyone on the team. A few things I found especially valuable while working with devcontainers: Reproducibility becomes the default. Whether you're onboarding a new developer or switching machines, you spin up the same environment every time — no hidden setup steps or version mismatches. It integrates cleanly with Docker, which means you’re not just standardising dev environments but also getting closer parity with production setups. The configuration is surprisingly flexible. You can define extensions, ports, environment variables, post-create scripts, and more — all in one place. For teams working across different operating systems, this removes an entire class of issues that usually show up late and waste time. The guide walks through everything from what devcontainers are, how the devcontainer.json works, setting up a project from scratch, and how to actually use it in day-to-day development. If you’re working on collaborative projects or just want a cleaner, more predictable setup for your own work, I think this approach is worth exploring. Link in the comments. Would love to hear how others are handling dev environments — especially in larger teams. 🙏 #DevContainers #Docker #SoftwareEngineering
DevContainers Simplify Reproducible Dev Environments
More Relevant Posts
-
Stop wasting a week onboarding every new dev. Environment drift, missing creds, and "works on my machine" slow teams down more than bad code. I prefer building a 1-click dev workspace that ships with code, extensions, secrets access, and CI hooks — ready in under 10 minutes. Use these to hack your onboarding and daily dev loops: - https://lnkd.in/gqH4aMz Run VS Code in a container so new hires start coding in the browser — no local setup, same IDE everywhere. - https://lnkd.in/drXVuzs9 Define a devcontainer.json that codifies extensions, tools, and ports — one repo = reproducible workspace. - https://lnkd.in/gRPQR6um Use it in your GitHub Actions to clone repos in CI/CD and trigger workspace provisioning on PRs or branch creation. - https://lnkd.in/eADPnpZN Install and pin Node versions inside containers or setup scripts so "node -v" is deterministic across machines. How I stitch them together (practical flow): 1) Add a .devcontainer for tool + extension list. 2) Push a workflow that boots a code-server instance on PRs using actions/checkout. 3) Use nvm in the container setup to enforce Node version. Result: PR reviewers and new devs jump in the same environment instantly. Want a starter template I use for 1-click on-boarding? I’ll drop a minimal repo you can fork. Who wants it? #DevTools #DeveloperExperience #Onboarding #DevContainers #GitHubActions #OpenSource #Productivity #RemoteDev #CI_CD #Automation
To view or add a comment, sign in
-
Stop treating documentation as an afterthought. Senior devs use it as a living, breathing part of their codebase. Have you ever considered why documentation often lags behind code changes? It’s like trying to sprint while looking in the rearview mirror. Documentation as code is supposed to fix this, but how can we ensure it stays accurate and up to date? In my experience, the key is integrating documentation updates directly into the development workflow. I start with the mindset that documentation is as important as the code itself. By using version control systems, documentation evolves alongside the code. Tools like JSDoc or Sphinx can dynamically pull comments from the codebase, transforming them into comprehensive guides. This speeds up the process and reduces discrepancies between code and docs. But here’s the catch: it's not just about tools. It's about embedding a culture of "vibe coding" where writing docs is part of the developer's rhythm. Picture this: you finish adding a feature and immediately reflect that in your documentation because it's that integral to the development cycle. So, why do so many teams still struggle with keeping documentation current? Is it a lack of discipline, or do we need better tools and practices? I’d love to hear your thoughts. How do you ensure your documentation never misses a beat? What strategies or tools have you found effective in keeping it in sync with your code? #SoftwareEngineering #CodingLife #TechLeadership
To view or add a comment, sign in
-
-
What if you could build an Internal Developer Platform… over lunch? 🍱 Matthew Casperson kicks off a 5-part series showing how to do exactly that—step by step with Octopus. Start with part 1, then dive into the full series 👇 https://lnkd.in/efJt972v
To view or add a comment, sign in
-
The great Matthew Casperson at it again 👏 👏 👏 The below series is a great, practical way to see how platform engineering can be approached incrementally using Octopus, starting simple, then layering in structure, standardisation, and guardrails as you scale. Worth a watch if you’re trying to improve developer experience without adding more complexity.
What if you could build an Internal Developer Platform… over lunch? 🍱 Matthew Casperson kicks off a 5-part series showing how to do exactly that—step by step with Octopus. Start with part 1, then dive into the full series 👇 https://lnkd.in/efJt972v
To view or add a comment, sign in
-
In software development, we often obsess over writing clean, efficient code — but overlook something just as critical: commit messages. A well-written commit message is more than a note. It’s documentation, communication, and context — all in one place. Done right, it saves time, reduces confusion, and makes collaboration smoother across teams. 🚀 Bring Consistency with Commit Types Using standardized commit types makes your history easier to scan and understand: ✔️ feat: Add a new feature ✔️ fix: Fix a bug ✔️ refactor: Restructure code (no feature/bug changes) ✔️ chore: Miscellaneous updates (configs, dependencies) ✔️ perf: Improve performance ✔️ ci: Changes to CI/CD pipelines ✔️ ops: Infrastructure, deployment, backups ✔️ build: Build system or dependency changes ✔️ docs: Documentation updates ✔️ style: Formatting, whitespace, syntax fixes ✔️ test: Add/update tests ✔️ revert: Revert previous commits ✍️ Rules for Writing Great Commit Messages - Good commit messages don’t need to be long — just clear and disciplined: - Keep the subject line within 50 characters - Capitalize the subject line - Don’t end with a period - Add a blank line before the body - Wrap the body at 72 characters - Explain what changed and why - Use an imperative mood (like giving a command) Example: feat: Add user authentication 💡 Why This Matters Well-crafted commit messages: ✔️ Improve code reviews ✔️ Help onboard new developers faster ✔️ Simplify debugging and rollbacks ✔️ Serve as reliable project history In the end, commit messages reflect your engineering mindset. They show how much you care about maintainability, collaboration, and your future self. Small habit. Big impact. ✨ #commit #git #maintainability #collaboration
To view or add a comment, sign in
-
-
Stop wasting time babysitting builds — automate the boring parts of shipping. Most teams treat CI/CD like a black box: slow feedback, flaky runs, and a pile of manual scripts no one owns. Here are compact tools and repos I use to turn “it works on my machine” into “it ships reliably.” Why they matter: - Faster feedback loops - Local parity with CI - Fewer flaky deploys - Scripts that are readable and reusable Tools & repos (real, battle-tested) - https://lnkd.in/dfG88h2Q — Taskfile as a Make replacement: simple task runner with cross-platform commands and deps; perfect for onboarding scripts and CI steps. - https://lnkd.in/gsjjxvF — Run GitHub Actions locally: replicate your CI in seconds to debug failing workflows without pushing commits. - https://lnkd.in/d5ZGZeY8 — Auto-load env vars per-project: keep secrets out of dotfiles and your terminal in the right state for every repo. - https://lnkd.in/dVmE6y9Z — Terminal UI for git: stage, rebase, and resolve conflicts 3x faster than typing long git commands. Quick workflow hack (1–2 lines): - Put build/test/deploy steps in a Taskfile, run them locally with act to mirror CI, and use direnv to inject envs so everyone runs identical commands. Want a template? - Swap your brittle shell scripts for Taskfile + act, add a tiny CONTRIBUTING.md with exact commands, and watch PR cycle times drop. Which one would shave off hours for your team this week? Pick one and I’ll show a 5-minute setup. #devtools #automation #devops #CICD #github #productivity #engineering #opensource #developerexperience #buildfaster
To view or add a comment, sign in
-
🚀 Pushing code is easy… But pushing clean, tested, and production-ready code automatically? That’s where the real engineering begins. And that’s exactly what CI/CD is all about 👇 🟢 CI - Continuous Integration When multiple developers work on the same project, things can get messy fast. CI solves this by: ✅ Merging code changes frequently ✅ Running automated tests on every update ✅ Catching bugs before they become big problems 💡 It’s like having a smart checkpoint after every small step you take. 🔵 CD - Continuous Delivery / Deployment Once your code passes all tests, CD takes it further: 🚀 Continuous Delivery --> Code is always ready to be released ⚡ Continuous Deployment --> Code is automatically pushed live 💡 No manual stress. No last-minute surprises. 🔥 Why CI/CD is powerful for Full Stack Developers Handling both frontend + backend isn’t easy. CI/CD makes your life smoother by: ✔ Speeding up development ✔ Improving code quality ✔ Reducing errors ✔ Making deployments seamless 💭 Simple takeaway: CI/CD = Build → Test → Deploy (Automatically) 💡 Popular tools: GitHub Actions | Jenkins | GitLab CI | Docker | Kubernetes ✨ If you're serious about full stack development, CI/CD is not just a concept - it’s your daily workflow. 💡 Solution: How to actually start with CI/CD? 👉 Step 1: Push your project to GitHub 👉 Step 2: Set up a simple CI pipeline using GitHub Actions 👉 Step 3: Add at least one automated test (even basic) 👉 Step 4: Enable auto-deploy (Vercel / Netlify / your own server) 👉 Step 5: Improve step-by-step with Docker & advanced workflows 🚀 Don’t wait to master everything. Start small, iterate fast. 🔥 Final Thought: Anyone can write code. But developers who can build, test, and deploy automatically are the ones who stand out. #FullStack #CICD #DevOps #WebDevelopment #SoftwareEngineering #TechLife #Developers #CodeSmart #Programming #LearnBuildGrow
To view or add a comment, sign in
-
-
Stop scrolling — your local dev loop is wasting hours, not minutes. You ship features, not manual chores. Yet every day you: - hunt files with slow find, - wrestle with git diffs, - debug Actions by pushing commits, - and run a dozen inefficient CLI steps. Here’s a compact toolkit to cut that friction now. Tools & repos (plug-and-play): - https://github.com/cli/cli — GitHub CLI: open PRs, run checks, and merge from your terminal without the browser detour. - https://lnkd.in/gsjjxvF — act: run GitHub Actions locally to iterate CI fast instead of guessing after pushes. - https://lnkd.in/eAYmxkx — ripgrep (rg): search codebases at native speed; replace slow grep workflows and save minutes per search. - https://lnkd.in/deCEZuAh — fd: human-friendly, blazing-fast alternative to find for quick file discovery in projects. - https://lnkd.in/d9tbxZqw — delta: syntax-highlighted, side-by-side git diffs that make code review and debugging 10x clearer. How I wire them together in 10 minutes: - Use fd + rg to find the failing test and file. - Open the repo with gh issue/pr commands. - Run the exact workflow step locally with act. - Inspect changes with delta before committing. You’ll trade noisy friction for deliberate, fast iterations. What’s the slowest step in your dev loop right now — and which of these would you try first? #DeveloperTools #Automation #GitHub #CLI #DevProductivity #DevOps #OpenSource #Workflow #Tooling #BuildFaster
To view or add a comment, sign in
-
Why did we build it this way again? If you manage an engineering team, you’ve probably heard this question a hundred times when looking at a 6-month-old codebase. The code tells you what happened. But the Pull Request description is the only place that tells you why. Tragically, the moment a PR gets merged, all that brilliant architectural context, decision-making, and trade-off analysis gets buried deep in a closed GitHub tab. When the time comes to refactor or onboard a new developer, that context is completely gone. Documentation is always an afterthought. [The Solution] I decided to fix this. Today, I'm incredibly excited to announce the launch of WhyLog. WhyLog is an AI-powered platform that automatically turns your chaotic GitHub merges into a beautifully organized, searchable knowledge base. [How it works] Here is how we are killing manual engineering documentation: Passive Capture: It listens to your GitHub webhooks. When a PR is merged, it extracts the underlying architectural decision. 💬 Slack Integration: It drafts a summary and drops it into your engineering Slack channel for a 1-click human approval. The "Ask Why" Engine: It vectorizes the approved decision. Now, your team can simply ask our AI, "Why did we switch to bcrypt?" and get an instant answer linked directly to the original PR. No more lost context. No more writing separate documentation tickets. If you are an Engineering Manager or Tech Lead tired of losing your team's context, I would love for you to try it out. Check it out here: https://lnkd.in/d49CVX_x (If you want a personal onboarding session, shoot me a DM!)
To view or add a comment, sign in
-
Optimizing your dev environment for coding agents If you want coding agents to do the work humans do, give them what humans get on day one. A machine, credentials, Slack, Linear, Notion, Datadog, the GitHub org. Your job shifts when you do this and its less writing code and more building the system that tells agents what good and bad looks like. Mostly the same work as building good DX for humans. A rough way to carve up the space: - Primitives are the building blocks agents reach for instead of inventing their own. Co-located code, usage patterns (e.g an npm script shipped with your package, an example in the README). - Guardrails tell agents whether they're on track. Rules that shape behavior before the agent acts. Hooks that react to specific edits. Tests, because if the agent can't verify its own work, you're the bottleneck. - Enablers let agents run longer without a human in the loop. Skills for repeated work. MCPs to access context in external systems where you and your team also work. The only real way to know where you stand is to run an agent and watch what happens: 1. Can it start your local env? 2. Can it run tests and make sense of the output? 3. Can it pull external context? 4. Can it verify its own changes? If the answer is no anywhere in that chain, you're the human (bottleneck) in the loop This was hard to justify on small teams before. You'd spend a week optimizing the process of doing the thing instead of just doing the thing. But whatever you put into setup compounds across every parallel agent you run, and you can run a lot of them. As models are getting better, the codebases and environments that are ready will pull ahead fast!
To view or add a comment, sign in
-
More from this author
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development
✨ Medium blog URL: https://kapildagur.medium.com/dev-containers-devcontainers-your-entire-dev-environment-in-a-single-json-file-ec2a982e2f9f