NG Snakeoil: A Technology Walkthrough
What’s Wrong With Snakeoil 0.1.x
As the previous page implies, 12.04 is too old.
Snakeoil 0.1.x is a “snapshot” of the Operating System I was using at the time, with custom settings and tweaks applied to give me that “euphoric warm sound". The WebApp is hastily put together with a mixture of BASH scripts and PHP, both running on the SnakeoilOS machine. Here’s the 0.1.x web app in all it’s glory:
What an eyesore!
The problems with Snakeoil 0.1.x are many, here is a small subset:
- The WebApp is pure PHP (no framework involved) with BASH scripts thrown in. In layman terms, while the WebApp can be whipped up very quickly - as the complexity grew, the code becomes very difficult to modify, and very difficult to maintain over time.
- Both front-facing (the web page that you see in the WebApp) and back-facing (the “logic” and ) are executed on the SnakeoilOS machine. They are linear in structure with absolutely no parallelism. This is not a good philosophy for audio because the CPU do not have the opportunity to allow itself to execute the more important bits - the audio playback.
- The WebApp is linear/synchronous is design. If there is a intensive process/task running in the background (e.g. cyclictest), the WebApp locks you out from using the application until the background process/task has finished. This is bad design as PHP is designed to “time out” after a fixed interval. PHP has to be configured to allow for extended background execution, which can affect the overall responsiveness of the machine.
- The WebApp design is really ugly. The design is really based on the old HTML pages (think AOL!), with a bit of modern CSS thrown in (tabs).
- The HTML pages only work on desktops or large tablets and totally unusable on smaller mobile devices. It’s not really using the real estate of any screen effectively (too small on a computer monitor and too big for a tablet).
- Information displayed on the WebApp is mostly static. No new information can ever be presented on it’s own. The user must click either the Refresh or Save button for any new information to be displayed.
I could go on, but you get the idea - Snakeoil 0.1.x is really embarrassing.
In my defense I am a C++ software developer and the SnakeoilOS WebApp is my first web application. The idea to go with a WebApp to control SnakeoilOS is mainly due to the circumstances at the time and it stuck. Now working with new employer, I’ve been exposed to modern web development, and only now did I realise just to do this properly