Articles about software development operations

In this page, you will find articles that are related to computer infrastructure operations that are performed in the course of software development.

Examples include how to setup the server infrastructure to run Python applications, WordPress applications and etc.

Setting up Nginx server on Windows 10

Recently, I got my wife an Asus ROG GL552VW-DH74 15-Inch Gaming laptop as a development machine (so that I can have a machine to use when I feel like gaming). Since the nginx server is one of my favorite servers for building web applications, it is something that I will always setup first when I get a new development machine.

I will set up my nginx server to listen on port 80 and serve as a reverse proxy to web applications listening on other port numbers. And since the ROG GL552VW-DH74 15-Inch Gaming laptop came with Windows 10, this post documents the steps that I went through to set up nginx server on Windows 10.

The Nginx configurations that I had created to serve only robots.txt and sitemap-index.xml over http

I had initially configured a set of Nginx rules that will redirect every single request made over http to https. However, that breaks my doing so breaks my reference on how to send HTTP GET request with Java without using any external libraries.

Since the robots.txt is not sensitive data, I had decided to allow it to be retrieved via http as well. And since my robots.txt points to sitemap-index.xml via http, I also allowed sitemap-index.xml to be retrieved via http as well.

This post documents the changes that I had made to my Nginx configurations to serve only robots.txt and sitemap-index.xml over the http protocol.

How to manually create the jar file for running your Java application

Advances in software engineering had shortened the time needed to build an application from scratch. For instance with Spring Boot, I can easily build my own web API backed by a web server of my choice into a single jar file. By running that jar file, I can start a process that responds to HTTP requests directed at my customized endpoints.

However, not knowing how that jar file is formed and read by the Java Virtual Machine can cloud our understanding of application development with Java. To help understand Java application development better, I described how to manually create a jar file for running a Java application.

How I make my Java programs run faster on my Raspberry Pi 3

When my first attempt to install GitBucket on my Raspberry Pi 3 highlighted to me that it was the JVM that caused GitBucket to have sluggish performance, I did not invest more time to improve the performance of the JVM that I had installed on my Raspberry Pi 3. Instead, I went on to install Go Git Service on my Raspberry Pi 3 to act as the Git server to manage the source codes of my hobby projects.

However, I just couldn’t get over my belief that Java programs would perform badly on my Raspberry Pi 3; after all Java was the first programming language that I learnt and I often use it to build software at work. Furthermore, with an Ubuntu Server 15.10.3 setup on my Raspberry Pi 3, I could use my Raspberry Pi 3 as an integration server for my Java hobby projects and be pretty sure that if my Java hobby projects run on my Raspberry Pi 3, they will most probably run on a Ubuntu Server 15.10.3 DigitalOcean droplet as well.

After spending some time researching the topic, I did manage to make my Java programs run around 10 times faster on my Raspberry Pi 3. This post documents the steps that I went through to speed up my Java programs on my Raspberry Pi 3.

Setting up Go Git Service on a Ubuntu Server 15.10.3 image on my Raspberry Pi 3

My quest in searching for a suitable self hosted Git Service didn’t stop at GitBucket. While GitBucket is easy to setup, running it on a Raspberry Pi 3 had not been ideal for me. If I had set it up on a more powerful computer / VM, I would have stuck with it.

To get a second opinion, I decided to give Go Git Service a try. This post documents my attempt in setting up Go Git Service on a Ubuntu 15.10.3 image on my Raspberry Pi 3. To make this post complete, the first eight steps are taken from previous posts.

Setting up GitBucket on Raspberry Pi 3 with an Ubuntu Server 15.10.3 image

With multiple Raspberry Pis around the house, it was time for me to setup a Git server to synchronise the source codes residing on my development laptop with those that are deployed on my Raspberry Pi servers.

As I am using GitHub at my workplace, I seek to emulate similar development operations at home. GitBucket seems to be an ideal candidate for my home Git server since it comes as a war file having API compatibility with GitHub.

Since I had created a LEMP server on my Raspberry Pi 3 with on Ubuntu Server 15.10.3, it makes sense for me to setup my GitBucket server on it.

This post describes how I setup GitBucket on my Raspberry Pi 3 with an Ubuntu Server 15.10.3 image. To make this post complete, the first seven steps are taken from previous posts.

Ensuring that your Supervisor subprocesses can run your Python applications properly behind your http proxy on Ubuntu Server 14.0.4

I had been using Supervisor to run my Python application for quite a while on a Ubuntu Server 14.0.4 box.

There was this OAuth feature that I had implemented on my Python Flask application to allow my users to sign in with their social account.

After completing the OAuth feature and ensuring that it worked fine on my development environment, I deployed the feature on my Ubuntu Server 14.0.4 instance.

However, my Python application encountered a HTTP request timeout error when it attempted to contact the OAuth server to authenticate my user login.

It turned out that there was no HTTP and HTTPS proxy settings available for my Python application to use when it tried to contact the OAuth server which is sitting somewhere in the Internet.

This post documents three ways which I had considered for propagating HTTP and HTTPS proxy settings to my Python application via the http_proxy and https_proxy environment variables.

Setting up a free CA signed SSL certificate from Let’s Encrypt for my LEMP server on my Raspberry Pi 3 with an Ubuntu Server 15.10.3 image to secure my WordPress site

After setting up a LEMP web server on Raspberry Pi 3 with an Ubuntu Server 15.10.3 image to host my new WordPress website, a good colleague of mine recommended me to try implementing a free certified SSL certificate. The intelligent and generous folks from Let’s Encrypt had created a free and open Certificate Authority and an automated workflow for websites to generate certified SSL certificates for serving trusted and encrypted communication.

Since, there is no cost involved in implementing the SSL certificate, I went on to try and implement one on the Nginx server on my Raspberry Pi 3.

This post documents my process on setting up a Let’s Encrypt certified SSL certificate for my Nginx server on my Raspberry Pi 3.