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.

Preventing image hotlinking with Nginx, with some style

Image hotlinking is a situation when your image appears on other website(s) but that image was actually being served by your web server. Image hotlinking is bad; your image gets stolen from your website and your server resources is being spent to serve them. If you happen to be running Nginx as your web server, this post describes how you can use Nginx to prevent image hotlinking with a smarter way that was suggested by Hongkiat.

How to manually add a public PGP key to Ubuntu’s Advanced Packaging Tool (APT)

I was trying to install docker on my Ubuntu server as an initial step to set up a continuous integration server for my Python project. As I was following through the guide provided by docker, I was not able to proceed with adding the public PGP key of docker’s apt repository at Ubuntu’s Advanced Packaging Tool (APT) key store automatically. This post describes what I did to manually add the public PGP key to the APT key store.

A workflow for handling multiple concurrent changes on a single software system

To me, a change will mean that I am going to have more rice on my bowl. And in my nature of work, changes to the software systems under my care occur pretty often. In fact, changes had benefited me, as changes serve to increase my company’s competitiveness so that she can continue to buy me my daily bread.

There was this time when I was working with a software development house which my company had employed to build our new system. Nearing project completion, I volunteered to engineer a new workflow for my company to handle software development after we took over the system from the software development house. The main objective of the workflow is for coordinating change deliveries from multiple development teams on a single software system suite.

This post documents the workflow that I had engineered.

Why my Java applets took much longer to load when I upgrade to Java Runtime Environment version 7

I was looking after a couple of Java applets that are used in our private network for more than a decade. Changing business requirements mandated the upgrade of the Java Runtime Environment from version 1.5 to version 1.7. That change had caused my Java applets to load very slowly. On Java Runtime Environment version 1.7, my applets took at least 20 times longer to load.

How did this happen? Why did my Java applets took significantly longer to load when I upgraded my Java Runtime Environment to version 7? This post records how I had managed to solve the mystery and gotten my applets to run like they were on Java Runtime Environment 1.5.

Configurations that I set in my Java Control Panel to get my Java Plug-in to tell me more about the Java applets and binaries that it is running

Right after I took over the maintenance work for Java applets that are a decade old, I did an important tweak to my Java Runtime Environment: I applied some configurations for the Java Plug-in on my computer to be as verbose as possible when it had to run my Java applets.

This post shows how I had configured in my Java Control Panel in my windows machine for the sake of performing diagnostic tasks when trouble brews.

Steps to check whether a process had utilised a port before your application does with windows built in facilities

As a systems analyst, it is inevitable for me to go to windows based computers to check out the applications that I am taking care of. Most of my applications listen to commands via TCP/IP ports in order to do work.

Whenever a user reports that one of such applications is failing on their machine, the first thing that I will check out is whether that application is able to reserve the port that it is supposed to listen to.

Although there are Sysinternal suite of diagnostic tools for me to use, there are client machines does not allow foreign executables to execute on them.

This post details the steps that I take to check out whether there is a port binding issue in the event that my application fail to run in windows based machines.

Emulating the web production environment with an Apache HTTP server running on a Windows 7 development machine

To minimize overhead costs of my website, I would restrain myself from buying a hosted plan until my website is launch-able. In the process of developing my website, I will want my tests to be as close to the real thing as possible.

This meant that when I type in the real domain of my website in my browser location bar, my browser will connect to my development web server, instead of the web server which my domain is being parked at.

I was using Windows 7 and an instance of Apache HTTP server as my development environment when I achieved that. My Apache HTTP server was listening at port 80 for HTTP requests.

There are two main steps to achieving my objective:

  • Routing HTTP requests, made to the actual domain, to my local machine
  • Configuring Apache HTTP server to serve HTTP requests directed at the actual domain