Basics of Machine Learning

“Naive Bayes, decision trees, zero-frequency, missing data, ID3 algorithm, information gain, overfitting, confidence intervals, nearest-neighbour method, Parzen windows, K-D trees, K-means, scree plot, gaussian mixtures, EM algorithm, dimensionality reduction, principal components, eigen-faces, agglomerative clustering, single-link vs. complete link, lance-williams algorithm…”

An Open Letter to the Erlang Beginner (or Onlooker)

“One of the #erlang regulars, Jesper Louis Andersen (jlouis) recently posted a reply to an old post about whether Erlang is overhyped or not.

I definitely have to agree with jlouis on this one and his blog post is pretty good. His reply stirred a lot of arguments up on social websites such as reddit or Hacker News, but really none of these arguments were new or unknown to the Erlang community. I’ve decided to write this blog post addressing a few points about it…”

Go from C to Go

“It’s time for the Go compilers to be written in Go, not in C. I’ll talk about the unusual process the Go team has adopted to make that happen: mechanical conversion of the existing C compilers into idiomatic Go code.”

Transactional Memory: History and Development

“Parallel programming is difficult. When using systems with common memory, you can’t go without synchronization of parallel processes/threads access to the common resource (memory). The following are used for it:

– locks (mutex);
– lock-free algorithms (lockless);
– transactional memory.

Transactional memory is a technology of concurrent threads synchronization. It simplifies the parallel programming by extracting instruction groups to atomic transactions. Concurrent threads operate paralleled till they start to modify the same memory chunk. For example, operations of nodes adding to the red/black tree (animation in the heading) can operate in parallel in several threads…”

A Practical Introduction to Docker Containers

Docker has quite an amount of buzz around it today because it makes so many things easy that were difficult with virtual machines.

Docker containers makes it easy for Developers, Systems Administrators, Architects, Consultants and others to quickly test a piece of software in a container; much quicker than a virtual machine, and using less resources. The average command in Docker takes under a second to complete…”

Using Supervisor with Docker

“Traditionally a Docker container runs a single process when it is launched, for example an Apache daemon or a SSH server daemon. Often though you want to run more than one process in a container. There are a number of ways you can achieve this ranging from using a simple Bash script as the value of your container’s CMD instruction to installing a process management tool.

In this example we’re going to make use of the process management tool, Supervisor, to manage multiple processes in our container. Using Supervisor allows us to better control, manage, and restart the processes we want to run. To demonstrate this we’re going to install and manage both an SSH daemon and an Apache daemon…”