Posts published by Clivant

Clivant a.k.a Chai Heng enjoys composing software and building systems to serve people. He owns techcoil.com and hopes that whatever he had written and built so far had benefited people. All views expressed belongs to him and are not representative of the company that he works/worked for.

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

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.

Five reasons why I love my Anker 40W/8A 5-Port USB wall charger

After setting up a Raspberry Pi web server, a Raspberry Pi TV Box and a Raspberry Pi CCTV, I had utilised most of the USB chargers that I had accumulated over the years.

As a replacement for those USB chargers that my Raspberry Pis had utilised, I bought the Anker 40W/8A 5-Port USB wall charger from a local store. In this post, I document why I love my Anker 40W/8A 5-Port USB Charger.