A few weeks ago we announced we'd be rolling out a whole new domain for our container infrastructure, and now, we're excited to introduce you to ! 🐣
This domain is a tad shorter than its predecessor (sandbox.codevolve.com). It also aligns perfectly with its counterpart domain, . The core concepts behind both of these domains are:
  • : BUILD something! nt.dev/python will jump you right into a coding environment for Python, for example.
  • : HOST something! This whole domain is as short as a TLD like
    , so your website on Next Tech is essentially just running on a funky TLD.
Currently, domains still use a session token for the computing environment you're in, so they look something like this:
(you may also note that there are now 2
's before the port number instead of 1)
Perhaps not the prettiest (unless pseudo-randomly generated hex values are your thing), but we have some really exciting changes to this in the works. So stay tuned later this month for that announcement!
Also part of our previous announcement was that all historical domains (namely, codevolve.com) now forward to our not-so-new snazzy domain, next.tech. That's done too!
2019 - Jörmungandr
This release was started on May 13th and finalized on May 29th. It consisted of some improvements, a bug fix, and a number of development tasks not visible to users.
* Improve performance of code patterns in projects with many files.
* Ensure that processes are stopped in a container when their terminal is closed.
Bug Fixes
* Fix container-dependent templates not being injected into step instructional materials.
* Next Tech now uses ES6 JavaScript! This was a massive migration for us from CoffeeScript (30,000+ LOC) that we were able to accomplish in under a week, thanks to numerous tools out there for doing this conversion.
* We've deployed an updated version of our SmartScaler that improves our load prediction rates. This helps us ensure that users never need to wait too long for a sandbox.
* We've made a number of infrastructure logging and monitoring improvements to improve our ability to monitor our systems for issues and respond quickly.
In Norse mythology, Jörmungandr, also known as the Midgard Serpent, is a sea serpent, the middle child of the giantess Angrboða and Loki. According to the Prose Edda, Odin took Loki's three children by Angrboða—the wolf Fenrir, Hel, and Jörmungandr—and tossed Jörmungandr into the great ocean that encircles Midgard.
March / April 2019
Hello all! We have a
to cover in this changelog, as we've fallen behind with updates recently. So much has happened since the last time we posted one, so we're going to list everything here, and then certain topics we'll cover in more detail in separate posts.
Additionally, we'll be using a new format for changelog releases going forward. We're deprecating the use of semantic versioning because with our multiple products that all overlap, complexity abounds. So in the interest of keeping things simple, we'll be using named versions going forward, corresponding to the week of the year we do the current release.
We've decided to use mythological creatures and will have (around) 26 versions a year, which is 52 weeks / 2 = 26, which conveniently is the number of letters in the alphabet. So the next version we'll be releasing is "Ipotane".
Okay, here's what's happened in the last couple months!
New Features
Bug Fixes
  • Addressed several memory leaks in project interface.
  • Disable snippet runs when the sandbox has been shutdown.
  • Fix memory alert font color in content editor.
  • Fixed bug in GitHub logins for users with no names.
  • Fixed chmod/chown not being applied during sandbox launches.
  • Fixed help tour skipping Codey introduction.
  • Fixed scrolling bug in code editor for Firefox.
  • Removed extra spacing atop videos.
  • Removed thin white line that sometimes appeared in projects.
  • On-boarded Joe, our new Systems Engineer!
  • Improved the speed of a core piece of our infrastructure by 20x (isn't tech fun?) ― soon to be 100x.
  • Switched to BEM standard for our CSS.
  • Switched to CSS grid layouts.
  • Switched to CSS variables.
  • Updated documentation and added documentation for Sandbox.
New Product: Next Sandbox!
We're excited to announce the release of Next Tech's newest product: Next Sandbox!
The Next Sandbox provides access to real-world computing environments in 2 seconds directly from your browser. Rather than installing the programming language or software you want to use on your computer, you can just click a button and access that language or software right away using a browser-based development tool.
We built Sandbox to solve two key problems we experienced ourselves as developers almost every day:
  1. Installing software is hard. Even experienced developers can struggle with this and it's something that can get in the way of trying out new ideas. It's nice to have something works out of the box so you can focus on innovating.
  2. When you do install software on your computer yourself - especially if you just want to test it - it can quickly clutter your environment. Maybe you want to try the newest version of Java, but installing it on your computer could cause issues with your current version.
The Next Sandbox addresses these issues by shifting the burden of installing software off of you and onto us. But that's okay, we've been doing this for years! The Next Sandbox is based on the same infrastructure and interface that powers our product for teaching and learning tech skills, which is used by leading educational companies all around the world.
Here's what a sandbox for the Python programming language looks like when you first launch it:‌
The Next Sandbox provides access to the same development environment that our content has been delivered alongside for years.
But of course, we added some new special features just for Sandbox 😁
We've added a new section of our site that lets you create and view your sandboxes. We're especially a fan of the page used for creating new sandbox, aptly dubbed the "launchpad":
Screenshot from 2019-05-06 20-50-13
Environment Configuration
Inside a sandbox, you can configure a few pieces of its environment:
  • Startup Script: The Bash script run when the sandbox first loads.
  • Build Script: The Bash script run when the Run button is clicked, but before the Run Command.
  • Run Command: The command that is used to execute the program in your sandbox.
Note that these can be (and often are) blank! Sandboxes are often used for things well beyond compiling and executing programs.
Shareable Sandboxes
The ability to share a sandbox combined with the environment configuration makes for an extremely powerful tool. In just a few seconds, you can spin up a new sandbox, add some code, configure the environment (if necessary), and then send that sandbox's share URL to others.
When someone click a share URL, they're given a copy of that sandbox with its current code files. Check out the Use Cases section below for some exciting ways this can be used!
nt.dev URLs
When the
domains launched, we made sure to jump on nt.dev right away. You can use it to launch new sandboxes right from your browser, for example:
We also own nt.run and have some fun features planned for that coming soon!
Use Cases
We've begun compiling a list of ways you can use Sandbox here. It includes a list of ways it can be used for programming, data science, web development, and in a classroom.
You can check out the docs for Sandbox here.
New pricing model
For a long time, Next Tech serviced only enterprise customers in a "B2B2C" fashion, meaning we sell our products to companies who in turn bundle it up and sell it to their users.
However, over the last six months we've begun to work on building our own users base that get direct access to our content library and now our Sandbox product.
We debated between a subscription and usage-based pricing model for some time, and in the end went with usage-based. Specifically, we now charge $0.01 per minute you are actually on the page ― meaning that you have the page focused ― with a sandbox or lesson open.
You can learn more about how this works here.
Upon sign up you'll also receive $10 in free credits. And you can refer others to earn more!
Note that this does not affect our enterprise pricing model. That is still billed based on the amount of time a code environment is live vs actively used and pricing is negotiated on a per-contract basis.
Added user preferences
You can now set your preferred editor theme and keymap from your account preferences. This ensures course activities and sandboxes are always loaded with a consistent style that fits your editor preferences.
These values default to the "dark" theme and the "default" keymap. You can learn more about those in our docs!
Screen Shot 2019-05-07 at 11
New enterprise reports
We've created some new reports to make it easier for our enterprise customers to track their usage and engagement metrics!
Project Usage Digest Report
shows the number of base minutes, billable minutes, and total minutes for each project in a course per day. It also tells you how many projects were launched that day, the number of users who launched those projects, and the number of times your users launched those projects.
Course User Engagement Report
shows the number of base minutes spent by each user per course per day. It also includes some basic user information, such as email, registration date, and when the user was last active.
These reports are available for download each month as
files on your account page.
You can read more about these reports in our docs.
Improved terminals
We've released a number of significant improvements for the terminals!
Previously, each new terminal opened spawned a new websocket connection, which is not how websockets are meant to be used. Now, only one is opened for all the terminals on the page.
This fixes a bug that has cropped up intermittently over the years where the number of outstanding websocket connections in the browser would hit its limit because we were spawning too many. Turns out browsers have a fixed maximum number of websocket connections and don't flush them until the browser is restarted!
It also means each new terminal launching takes < 1 second. Click here to launch a Python sandbox and see what that looks like! After your initial terminal loads, just click the
and select Terminal to start a new one.
And last but certainly not least, terminals now support text wrapping, thanks to the folks at Xterm.js. This means they behave essentially like your local terminal does by reflowing the text as you resize the terminal!
Improved startup / build scripts
Previously, startup and build scripts needed to include a "hashbang" statement, e.g.:
#! /bin/bash
echo "foo" > /home/nt-user/workspace
Everyone (including us!) forgot to add the hashbang almost all the time, so we checked how these features were currently being used, and turned out 99.98% of the time, these were just Bash scripts anyway.
As such, these scripts are now always run with Bash. Any content that previously didn't use Bash has been updated to do so.
New project user and working directory
Historically, projects have used the
user with a working directory of
. We decided to use this user years ago to prevent issues with permissions, and while it worked at the time, we realized that using the
user caused some issues:
  1. It doesn't accurately portray the real-world situations outside of our environment.
  2. Many programs refuse to run as
    initially and require to be overridden to allow it.
As such, we've migrated to a new user called
(Next Tech user) and working directory at
. This user still has
access, so they can still do anything
previously could!
Old content has not been updated to use this new user and will continue to function as always. Future content will use nt-user.
Load More