In our previous posting, we discussed using VSCode’s Dev Container extension to allow running workspaces directly within a Docker container.
In December 2020, I was granted early access to a new feature developed by GitHub called Codespaces. Codespaces offers an online VSCode development environment, enabling you to develop entirely in the cloud.
The great news is that Codespaces uses the same core process, and file structure, as Dev Containers; meaning once we have our
.devcontainer folder setup (if you are unfamiliar with Dev Containers it is worth reading the previous blog first) “it just works” online.
TDD in the cloud
Using our example from the previous blog (GoogleTest and meson) to run using Codespaces is Simples!.
When granted Codespaces access, open the GitHub project and under the
Clone or download button you are offered the option
Open with Codespaces
Open with Codespaces and then
Codespaces will now open and begin building the Docker container based on the
Once built, we are running VSCode as if running a Dev Container locally on our machine.
Using our example, we can now build and test the meson/gtest project.
Coding on an iPad via Codespaces
One immediate benefit of Codespaces enables me to continue development anywhere I have access to a browser. For example, here is the same project running using Firefox on an iPad.
The bad news
As Ted Hughes famously wrote
“Nothing is free. Everything has to be paid for.”
Codespaces are hosted by GitHub and is free to use during the beta stage. When Codespaces becomes generally available, users will be billed for storage and compute usage (starting at $0.085/hour).
Each Codespaces instance also incurs monthly storage costs until it is deleted. Storage costs for all instance types are $0.10/GB-month.
It’s difficult to gauge at the moment what that may add up to (possibly a couple of dollars a month) and, like most things in life, it’s up to you whether this is value-for-money; but I have already seen a significant benefit in my day-to-day work.
As previously stated, integration of VSCode, GitHub and Docker is a quite exciting offering. Using this feature within a web browser opens up new opportunities for development practices.
It has always been a frustration that attempting to do C/C++ development on a mobile/lightweight device, such as an iPad, has been difficult. It has typically involved setting up remote machines and using SSH (Secure Shell) access to write code.
This combination of Dev Containers and Codespaces offer a ubiquitous programming environment, aiding code quality improvements through standardisation of environments. As a side-effect of using Docker containers, I have found it forces the issues of defining a standard set of tools to the forefront of people’s minds, and improves project “hygiene”.
Sometimes there are benefits to be on the “bleeding edge“!.
To join the beta waitlist for Codespaces, see Sign up for Codespaces beta.
- Disassembling a Cortex-M raw binary file with Ghidra - December 20, 2022
- Using final in C++ to improve performance - November 14, 2022
- Understanding Arm Cortex-M Intel-Hex (ihex) files - October 12, 2022