Quick References

As a constant learner, I get to touch upon many ideas in different areas. This category is for me to capture those ideas which I felt people may reference to get ahead of their tasks. Most of the time, I do come back to this section of my blog to remember what I had learnt in the past.

Terms relating to Innovation

Through reading MT5007 Management of Technological Innovation conducted by Professor Annapoornima, I was introduced to some terms relating to Innovation which I found useful as a technology person.

I document those terms alongside some of my thoughts in this post.

Understanding Porter’s five forces model

At some point in life, there can be situations that we have to decide whether to invest effort into a product/service that we will bring to a market to sell. Michael E. Porter came up with a framework in 1979 that helps us analyse the market situation so that we can decide whether it is worthwhile for us to enter the market with a product/service that we have in mind. This post documents my understanding of Porter’s five forces for my future references.

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 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.

How I make INFOLINKS_ON and INFOLINKS_OFF work on my website

Many bloggers use Infolinks as a monetization tool for their websites. Since it is easy to implement, I had Infolinks enabled on my website as well.

Out of the box, the javascript codes from Infolinks scan an entire webpage for opportunities to create links to advertisers’ website.

However, there can be areas of your website that you do not want Infolinks to convert into links. Examples could be the paragraph that describes your page or the paragraph that talks about a product that you are selling from your website.

This post describes what I did on my website to control Infolinks inText ads generation.

How I built my Raspberry Pi 3 CCTV using a motionEyeOS image for home surveillance

When I bought my Raspberry Pi 2, I also bought the first version of the Raspberry Camera Module just for the fun of it. After setting up my Raspberry Pi 2 as a TV box for my wife, that camera module became an ornament. Feeling bad about such wastage, I bought another Raspberry Pi 3 to utilise the camera module in performing home surveillance.

This post documents the steps that I took to build my Raspberry Pi 3 CCTV via a MotionEyeOS image for home surveillance.

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.