How to run Pro Tools First under Linux for free

Pro Tools First is a version of Avid Pro Tools which can be used for free. It's limited in what it can do but for many applications is just fine. Pro Tools First and all of Avid's line of digital audio software is create exclusively for Microsoft Windows and Apple Mac OSX, not for Linux. Pro Tools apparently doesn't work in Wine.

Here's how to run Pro Tools First under Linux using all free (as in beer) software. In my case I did this under Ubuntu 14.04 LTS but since there is no Linux package specific steps this should work on any major distro (e.g. RPM based CentOS systems).

  1. Download and install Oracle VirtualBox
  2. Download the Microsoft Windows 10 free virtual machine
  3. Download the Vista/Win7 (32/64 bits) Realtek AC'97 Driver that can be found on this page which you'll need to enable the VirtualBox virtual audio device in the Windows 10 guest [alternate download]
  4. Download the ASIO4ALL driver which will create a virtual audio device in the Windows 10 guest which Pro Tools First will recognize
  5. Import the Microsoft Windows 10 ova appliance that you downloaded into VirtualBox, creating a VirtualBox VM.
  6. Edit the settings of the newly created VirtualBox VM
    • Change the number of CPUs dedicated to the VM from 1 to some greater number. This depends on how many CPU cores your host computer has. I dedicated 4 of my 8 cores to the VM. If you don't set this high enough you'll hear crackling and skipping in your audio (though the crackling/skipping won't end up in the recording)
    • Enable Audio support and chose the "AC97" audio driver, which should be the default.
    • Create a shared folder so that you can make the downloaded AC97 and ASIO4ALL drivers available to the Windows 10 guest
    • Maybe increase the video memory as mine started out with a value that was too low and VirtualBox complained. I don't know that this step is required.
  7. Create a snapshot of your VM at this point, before your first boot but after tweaking the settings. I called mine "Before First Boot". This is the snapshot you'll go back to every 90 days as the Windows 10 license only works for 90 days.
  8. Start/Boot the Windows 10 VirtualBox VM
  9. Once it's booted, reboot the VM with driver signature enforcement disabled by following these steps
    1. Click the Start menu and select Settings.
    2. Click Update and Security.
    3. Click on Recovery.
    4. Click Restart now under Advanced Startup.
    5. Click Troubleshoot.
    6. Click Advanced options.
    7. Click Startup Settings.
    8. Click on Restart.
    9. On the Startup Settings screen press 7 or F7 to disable driver signature enforcement.
  10. Set the display resolution of Windows to whatever you prefer as it defaults to 800x600 which is small
  11. Copy the AC97 drivers and ASIO4ALL drivers that you downloaded earlier from the shared folder to somewhere on the Windows 10 guest, for example the Desktop. Unzip the AC97 drivers into a folder.
  12. Open the Device Manager by running devmgmt.msc or searching for it in the Start menu
  13. Find the Multimedia device with the exclamation mark over it in Device Manager, this is your virtual sound card
  14. Right click the device to update the drivers
  15. Select drivers from your local computer
  16. Navigate to the folder with the downloaded AC97 drivers
  17. When prompted if you'd like to load the drivers even though they're not digitally signed, choose Yes.
  18. This should remove the exclamation mark in Device Manager and your virtual sound card should be working. You can test this by clicking the volume slider or playing an audio file and confirming you hear sound.
  19. Install ASIO4ALL
    • If you forget this step you'll see this error when you try to use Pro Tools First.
    • Here's a video showing how to work around this error and force Pro Tools First to reprompt you to select the ASIO4ALL device.
  20. Download and install Pro Tools First
  21. Launch Pro Tools First to confirm that it recognizes the ASIO4ALL virtual sound card.
  22. Take a VirtualBox Snapshot now that you have a working setup.

At this point you have a working Pro Tools Firs installation under Linux. Because you're using a test VM of Microsoft Windows 10, you'll need to redo these steps every 3 months (90 days) as the Windows 10 OS will stop working when the license runs out.

Mozilla GitHub repository naming convention

I wanted to create a new GitHub repo in the Mozilla GitHub org and went searching for a document defining a naming convention for repository names. I didn't find anything so I thought I'd look at what names people used and deduce a convention.

  • 928 (100%) Mozilla GitHub Repositories
  • 878 (95%) have no uppercase characters
  • 909 (98%) have no underscore character
  • 517 (56%) have a dash character

Looks like the convention is :

  • Use all lower case
  • Separate words with a dash character if needed

I used PyGitHub to query the GitHub API.

How to increase the session expiration time in Subsonic

Here's how you can increase the length of a session in Subsonic from the default of 30 minutes to something longer. In this example I'm increasing it to 2 weeks (20160 minutes).

mkdir workspace
cd workspace
sudo cp /usr/share/subsonic/subsonic-booter-jar-with-dependencies.jar /usr/share/subsonic/subsonic-booter-jar-with-dependencies.jar.orig
unzip /usr/share/subsonic/subsonic-booter-jar-with-dependencies.jar
cat > webdefault.patch <<End-of-message
--- org/mortbay/jetty/webapp/webdefault.xml.orig  2014-06-11 10:06:12.000000000 -0700
+++ org/mortbay/jetty/webapp/webdefault.xml 2014-06-11 10:06:39.000000000 -0700
@@ -323,7 +323,7 @@

   <!-- ==================================================================== -->
-    <session-timeout>30</session-timeout>
+    <session-timeout>20160</session-timeout>

   <!-- ==================================================================== -->
patch -p0 webdefault.patch && rm webdefault.patch
sudo service subsonic stop
sudo zip -r /usr/share/subsonic/subsonic-booter-jar-with-dependencies.jar ./
sudo service subsonic start

Time for Security!


Starting next Monday I'll begin my new job as a Cloud Security Engineer here at Mozilla! I'm really excited about this new role. I get to work with some super talented guys, many of whom I'm already good friends with. Julien, Guillaume, Michal, Tinfoil, Joe and some newer folks on the team that I'm getting to know. The job will involve bringing my development and operations background to bear and learning the ins and outs of security engineering.

Tomorrow will be my two year anniversary at Mozilla. I've worked in the operations team of our Cloud Services organization for most of that time (except for a short stint in the Identity Engineering group). I'll still get to see and work with the guys on my old team all the time so there's not much bitter in the bittersweetness of this change.

On to new challenges. Looking forward to it.

Marine Technology


This morning was very foggy. In my daily ferry trip to work I learned a little about marine technology. I had assumed that, here in the 21st century, ships, like the ferry I ride to work, used some combination of high resolution GPS, radar, and maybe radio telemetry triangulation to identify where the ship was and where everything else in the bay was (other ships, the bridge pylons, etc.) I found out this morning that this must not be the case. As we trucked along, at a pretty good clip, across the bay with zero visibility of any kind, all of a sudden, the engines go from about 3/4 of full thrust to zero thrust. The whole boat lunges forward as we rapidly decelerate (due to water resistance) and out of the pea soup appears the massive bay bridge center anchorage dead ahead. The captain turns the boat sharply to the left and we swing around it and accelerate again. I'm glad our captain has good reflexes.

Later, upon landing and walking to work, the entire embarcadero was echoing with different ships fog horns being blasted.

It turns out that the two methods employed these days to deal with fog are slamming on the brakes if you see something ahead of you and making a ton of noise in hopes that someone else out there hears you and doesn't crash into you. I thought we were living in the future, what happened?