Guide: Installing Cuda Toolkit 9.1 on Ubuntu 16.04

With advances in GPU technologies, performing complex computation is not an exclusive feat of multicore CPUs anymore. It is not uncommon to perform computation for linear algebra, image and video processing, machine learning (especially deep learning), graph analytics, and so forth on GPU.

NVIDIA graphic cards have gained popularity among machine learning researchers and practitioners as the base hardware for GPU computing. To harness the GPU power, NVIDIA develops and provides CUDA toolkit that can be used as the development environment and libraries for GPU-accelerated applications.

If you are using Ubuntu 16.04 (Xenial) and want to install the recent release of CUDA toolkit (version 9.1), this post may help. The official installation guide is available at the NVIDIA website and can be referenced when following the steps outlined in this post. Continue reading

Quick Tip: Installing NodeJS 8 on CentOS 7

Node JS has been gaining more popularity as the server-side runtime environment of choice these recent years. The asynchronous event-driven feature built into Node JS can be considered a killer feature that may flatter a system architect planning to build a high-performing server-side component serving HTTP webservice to the clients.

Node JS is cross-platform. The executable can run on major OSes that include Windows, GNU Linux, and Mac OS. Having a wide OS support further accelerates Node JS adoption within the server-side technology stack. Continue reading

Using SCP to Securely Upload Files and Directories to Remote Server

Secure Shell (SSH) is a common protocol used to access or login to remote servers. The protocol is widely supported across Operating Systems. If you are Windows user, you may have heard and been using Putty, which is a SSH client for Windows. Windows 10 users can use Open SSH client that can be installed via new feature installation. UNIX OSes usually come with native SSH client support, so additional software installation is not needed. Continue reading

How To Install Docker on Ubuntu 16

Docker is a popular option for “virtual appliances” nowadays. Docker website defines the “Docker” moniker as a software containerization platform that is more flexible than traditional virtual machines since it virtualizes the operating system instead of the hardware. This means that Docker can further isolate the resources by enabling multiple Docker containers running on an operating system. If the operating system itself is running on a virtual machine either via full virtualization (bare metal) or paravirtualization, we will have a good example of IT infrastructure transformation from asset-ownership model into cloud-lease model (my related paper about such transformation can be read here). Continue reading

Xpath Basics: Introduction to XPath with an Example Java Project

xpathXPath is a W3C recommendation used to search and find parts of an XML document through a path expression. The elements or attributes that match the path expression will be returned for further processing by the invoking command, module, actor, or component.

In this post, I will explain about the basic concept of XPath via presentation slides. The presentation starts with a revisit to some of the XML key concepts. Subsequently, it shows sufficient elaboration of the basic concept of XPath. It concisely describes the key features of XPath that are worth knowing and practically useful especially when searching inside XML files.

The final part of the presentation consists of a sample project accompanied with some screenshots provided for readers to experiment with. In an upcoming post, I will show how the sample project can be converted into a Maven project for more convenient use and distribution.

You can download the slides from the following URL:

Xpath Basics (913 downloads)