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! URLs
When the
domains launched, we made sure to jump on right away. You can use it to launch new sandboxes right from your browser, for example:
We also own 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.
Earn credits for referring new users!
We've launched a referral program so you can share Next Tech with your friends and earn $5 in extra credits each time someone joins with your referral link and activates their account!
Anyone you refer will also receive an extra $5 in credits thanks to you for a total of $15 in credits upon sign up.
You can view your referral URL here.
(note that these credits do not apply to enterprise accounts)
Improved directory sidebar performance
We've improved the performance of the directory sidebar when many files are created or deleted. This has resulted in a 10x speed improvement!
Previously the directory sidebar was re-rendered each time a file was created or deleted. This would cause the web page to become slow or unresponsive when there were many files in the directory sidebar, since it could mean re-rendering it hundreds or even thousands of times.
We've optimized it so that now so that when many files are created or deleted at once, only one re-render is necessary.
Load More