So I’m always continuing to improve my skills. Currently I’m working on a Coursera Class. This one happens to be Real Time Operating Systems. I’m working on an interesting project involving real time analysis of sound to generate dynamic light output. There is a simulator that I want to run to support the class, in this case a scheduling simulator designed for the study of real-time scheduling algorithms. The simulator is SimSo, and the specific program I want to run, is Simso Web, a full browser interface for SimSo. The code for Simso-Web is offered at Github, and uses both JavaScript and Python as a Served HTML web page. Unfortunately, you can’t just run the webpage via a simple Open-In-Browser interface. That web page has a whole lot of Ajax calls going on. And Ajax calls without a running server generates a whole lot of critical errors “XMLHttpRequest cannot load …content… Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.” What to do, what to do? In the old days, I’d add an XAMPP server to my computer and work with that. And that would install a program, and a whole bunch of content, who knows where.


But in the ever changing world of software, there is something better available. Enter VirtualBox from our friends at Oracle. So what is VirtualBox you ask? Good question. A virtualbox is an implementation of a virtual operating system installed as an application. VirtualBox allows additional operating systems to be installed on it, as a Guest OS, and run in a virtual environment. And like anything else, that may not be obvious until you see it in operation.


So here’s the deal.

  • Open up VirtualBox, the Virtual Machine manager from Oracle
  • Download Ubuntu Server.
  • Spin up a Ubuntu Server O/S. This is pretty straight forward, but you do need to enable Bridge Mode for your network connection: Virtual box, settings, network, Bridged Adapter. This will enable you to use IP addressing to get to the server from a browser on any computer within your local network.
  • Spin up a LAMP (Linux, Apache, MySQL, PHP) server.
  • Look for your IP Address $ ifconfig
  • Open up the Apache Server @ given IP address
  • Figure out the directory structure for Apache HTML web server content. The address is shown right there in the Apache Ubuntu Startup Page $ var/www/html/
  • Go to that directory, clone the github repository of interest.
  • git clone https://github.com/MaximeCheramy/simso-web.git
    cd simso-web/submodules/simso
    git submodule init
    git submodule update

  • Open up the link in the browser. Success!! See top photo on this blog entry.

Other uses:

–Check out that image on the right… that’s one virtual machine running Ubuntu Desktop, while another machine runs Debian Pixel
–Create a Ubuntu Desktop. Add a shared drive. This is a great way tool to use if you ever need to use a torrent to download a large file. Transmission, the Linux torrent tool, works great, and doesn’t expose your desktop or laptop operating system to potential problems.
–This is great way to test different flavors of an operating system. Not sure if you want Ubuntu desktop or Lubuntu or Edubuntu or Mate? Try ’em all. Quick, easy, done. Toss out what you don’t need without leaving extra installations on your desktop or laptop. Clean, seamless. Move along.
–Android Emulator. Run the Genymotion android emulator within VirtualBox. I was playing around with the native emulator that comes with Android Studio. The laptop I was using wasn’t the newest, or latest or greatest. The native emulator was slow. Brutually slow. And flaky. And fragile. Total pain in the neck to work with. The Genymotion emulator, wow. That thing spun right up. And I was testing Android apps with React-Native in no time. Note, the free version of Genymotion emulator is for personal use only. But its pretty nice.
–Debian with Pixel. Perhaps you want to understand what Pixel is, and how it works. Pixel is an ultralightweight interface to the Debian O/S, generally used on devices like a Raspberry Pi. Now released for PC or Mac. Give it a try.
–Create an older operating system to be able to run old, very old software. In my case, I have a customer whose business depends on software written in 1995 that only runs on PowerPC Apple devices. The underlying software has changed considerable, and he doesn’t have a copy of the source code. The customer has to keep old hardware around to keep his business running smoothly. While I’m duplicating the functionality on more modern software (HTML, JavaScript, Node.js) I’d like to understand how the old stuff works. We’re trying to avoid having to retrain his entire crew on managing something new. Note: I’m still working on this. This is one virtualization I’ve not yet been able to run successfully. So yeah, there is this way old Mac sitting in the corner of my office, grrrr…
–Run GnuCash (Open Source Accounting Software) on a MacBook.
–Try alternative Open Source DataBases… Cubrid or Firebird or MariaDB or…
–Test that voice activation program you’ve always wanted to install on a Raspberry Pi, but don’t have the desk space for all that hardware for your design and coding phase.