Portfolio: Software Release/Updates Server

A modern solution for software release/updates

The Problem

Back in 2010, we release new versions of AEMTuner quite often. And we were using our forum to release. We have a dedicated subsection just for software release posts. We hope our customers will check that subsection regularly to get the latest software in time.

A screenshot of our software release posts

This process is tedious and not efficient:

  • It’s really easy for customers to miss out.
  • It takes time for customers to get the new software: you’ll have to open the post, download the file and click to install.
  • And it takes time for us to write the forum post too.

I’m not happy about this process. I feel like there must be a better process. I’m wondering:

How can we notify the customers automatically? How can they get the software quickly?

The Solution

The solution consists of two parts:

  • A central place to store the software release/updates information: release notes, installer files, etc
  • A tool that can automatically check for the above information and download the installer

Version 1: XML + FTP (2010–2013)

It seems obvious that the central place to store the software release/updates information would be a web server. But back at that time I don’t know anything about web programming.

So I chose the stupid way:

  • Store the information in a XML file, uploaded to FTP
  • Use a tool to download the XML file from FTP and display the information.

Since it’s not easy to directly edit the XML file, and not to mention that we need some formatting in the description field, I’ve built an internal tool to help to download/upload/edit the XML file:

And if you’re curious, this is the XML file looks like:


Version 2: web server (2014)

The version 1 of our solution worked OK, but it’s not user friendly for us to publish the software updates. Just take a look at the README file I wrote (BTW I’m a big fan of README file and I think every project MUST have a detailed README file):

A few points:

  • You’ll need to install the tool I wrote to publish an update. And this is where web shines, you can just use it without installing everything®.
  • You’ll need to remember those steps to carefully update everything. Why not just creating a script to update it automatically?
  • We’re using the XML and FTP to store the information. It’s like a plain database.

At that time I’m learning about web technologies. I was thinking:

Why not to make a web server to store the updates and streamline everything?

So I created a web site. It exposes an API for checking updates:

API

And it has a web interface to let you manage the software release/updates:

The software page shows relative versions and associated part numbers

Edit page featuring Medium style editor ;)

And here is the public download page:

Downloads page

Well, I also build a statistics page that shows the numbers of query and downloads. Hopefully it will give us some business insights:

Stats Page

Responsibilities

I single handed everything. My coworkers have given valuable feedbacks.

As you can see on my code commits heat map, most of the development happened in a month:

Code commits

Thoughts

The updates server serves us well and most of our software is utilizing it. I feel great about it because not only I learned new stuff (web programming) but also I put it in good use.

I feel like life is like a RPG game, and unlocking new capabilities is fun!

One More Thing

You might wondering what’s the other part (the tool) of this process? Well, click below to find out:


This is a part of my portfolio showcase on medium. To see the overview of my portfolio, please click here.