Writing a simple shell in Go

Introduction In this post, we will write a minimalistic shell for UNIX(-like) operating systems in the Go programming language and it only takes about 60 lines of code. You should be a little bit familiar with Go (e.g. how to build a simple project) and the basic usage of a UNIX shell. UNIX is very simple, it just needs a genius to understand its simplicity. - Dennis Ritchie [Read More]

Deploy Go code to Heroku with GitLab CI

Introduction I’ve created a very minimalistc repository to show, how to deploy Go code to Heroku using GitLab CI. Automatically triggered on push/merge: golint go tool vet go test -race deploy to staging (automatically) deploy to production (manually) How-To Create a new Heroku Pipeline. Set up as many Heroku apps in this pipeline as you need (e.g. staging and production). git clone this repository or copy whatever you need. [Read More]

Web development with Go

Screenshot Description When I learned to program, I’ve never focused on web development. I was more interested in old school CLI backend programming. Furthermore, PHP never attracted me so much, but was (and still is) the programming language of the web. After some time of learning Go, I realised it was used more and more for web development, as an alternative to PHP, Python, or Ruby (on Rails). After reading some articles about web programming with Go, I was thrilled: Doing web dev just felt like writing anything else in Go, no big framework necessary, just needing the fundamentals of how web dev works (and I did lack these fundamentals). [Read More]

Real-Time Anomaly Detection in Time Series Data Streams

Description The research goal of my master thesis was to find real-time capable solutions to automatically detect anomalies in time series data streams, which are especially useful to monitor servers. I evaluated several algorithms and finally ensembled an own algorithm which meets almost all of the previously gathered requirements. In the figure, you can see a collection of outliers, the algorithm is so good, it is even hard to see the anomaly behind all the true positives (green dots) ;-) At the beginning of the measurements, there are two false positives (red dots) [Read More]

Geoinformatics and QGIS

Description One of my courses during the master studies was geoinformatics. Hm, how can I describe geoinformatics with a single sentence? Without being too accurate: Everything behind services like Google Maps or OpenStreetMap, and more :D During the course, we learned all the fundamentals, for example how GPS works. Another topic is the many geographic reference systems and projections. There are so many, mainly because there isn’t a perfect solution to map a kind of a globe onto a 2-dimensional picture, thus for several use-cases, there are other approaches to deal with the distortions. [Read More]

Android App: Call Logger and Recorder

Description You don’t remember what someone told you on the phone? Recording your calls made with your Android smartphone? That’s what this project was about! It was done for the course Mobile and Internet Computing. It was a really tough project because of the deadline and there is no easy way of recording calls in Android. In the end, I figured out that not all phones are capable of recording uplink and downlink. [Read More]

Prototyping a Computer Algebra System in Go

Description It was time for my bachelor thesis and I was thinking about the topic. At this time I was totally hyped by Go (and I’m still), so I wanted to find something related. As I am always curious how things work, I wanted to research a calculator with simple algebraic operations and a web interface based on Bootstrap. Of course, this was highly inspired by all students favourite Wolfram Alpha ;-) [Read More]

Writing a Port Scanner

I’m always a very curious person, especially when it comes to IT and tech. When I ask myself how does something work, I want to figure out the solution. The same happened to me when I asked myself “how do port scanners work”? There was so much magic inside, but as always, when you get the idea behind it, it is anything but magic :-) Here I want to describe the very simple concept of a port scanner I’ve written in Go. [Read More]

Ordinary Differential Equation library for Go

Description At the university I wrote a Go library to solve Ordinary Differenctial Equations using the Euler Forward or the 4th order Runge Kutter method. Github repository Example // Example to show how the ode package works package main import "fmt" import "github.com/sj14/ode" func main() { // SIR Start Values yStartSIR := []float64{700, 400, 100} // Do the calculation (start, step size, end, start values, function) y := ode.RungeKutta4(0, 10, 100, yStartSIR, sir) // Output the results to the console for _, val := range y { fmt. [Read More]

Android App: Notification To Speech

Description At the very beginning of my CS studies, I played a bit with Android development. You achieve the most learning when you are interested in the stuff you are doing or you have own requirements. My motivation was to write an app, which can speak out incoming notifications. As a text-to-speech engine was already built into Android (e.g. navigation directions), I thought this was a challenging but possible project. [Read More]