Introducing Mastering Golang Programming

For the past year, I had worked really hard with Packt publishing on building an advanced video course about the Go language called “Mastering Go Programming“. Mastering Golang Programming is an extensive video course on the world of the Go language. The Go programming language is considered by many as a phenomenal disruptive technology despite it’s young age. A game changer when it comes to building powerful software products. Since it’s inception, Go had grown in popularity dramatically, becoming the TIOBE programming index 2016 language of the year winner.  

read more

Practical thoughts on industrial OPC

Industrial OPC is a vital, yet relatively small component in a SCADA system. This is because OPC is typically responsible for the software communication aspect between a piece of industrial software, and a monitoring or control device (sensors, PLCs..etc). It may not be as complex as analysis algorithms embedded in data historians , or as fancy as visuals reflected on HMI screens. However, Inspite of this, industrial OPC can never be ignored. OPC is the equivalent of those resilient nails that make a fancy piece of furniture come together.

read more

Implementing UDP vs TCP in Golang

Go is known to be a very capable systems programming language. Programmers enjoy it’s simplicity, ease of deployment, and performance when writing backend services. A key feature in any backend software service is networking communications. There are numerous application level protocols by which software can communicate over a network. Underneath the great majority of these protocols lie either TCP or UDP. In this article, we’ll talk about the code involved in implementing UDP vs TCP in Golang. Let’s get started.

read more

Concurrency in Golang

Yesterday, I answered a question in Quora about the concurrency model in Go. Now, I feel like I want to say more!! Concurrency in Golang is one of the most powerful features in the language. Numerous folks covered the topic, ranging in their takes from very simple to overly complicated. Today, it’s my turn to give my two cents.

Concurrency in Golang is a way of thinking more than just syntax. In order to harness the power of Go , you need to first understand how Go approaches concurrent execution of code. Go relies on a concurrency model called CSP ( Communicating Sequential Processes) ,  which -in computer science- is basically a model that describes interactions between concurrent systems. But since this is not a scientific paper, I will skip the formalities and jump into the practical description of what it does.

read more

Thoughts on Process historians

Today, I found myself wanting to talk about a SCADA related topic a little bit. What is SCADA you say? Well, you can either check this article, or just read on. SCADA is a world that I live in, where software meets temperature sensors and pressure gauges. SCADA is the software layer that sits between a human being and a bunch of devices that control and monitor operations in a factory, oil pipelines in the desert , or power generation substations… you get the idea!! Process historians are not considered SCADA systems by themselves, however they are vital companions in almost all SCADA related project. You can put both Process historians and SCADA systems under the umbrella of industrial software.

read more

URL Shortener Golang Web Service tutorial with Mongodb

Web technologies are in the heart of the software industry in this day and age. And one of the most popular approaches for web services to communicate with the outside world is the HTTP RESTful API design, which is integral in making modern software scalable and open. At the same time,  NOSQL databases are gaining more and more market share as the new data storage engines of choice for a lot of software professionals. Since Go is a very modern language, it’s a very smooth experience to combine the two technologies via Go. This article serves as a practical tutorial into how to build a Golang web service combined with the popular Mongodb NOSQL document store database. The web service does URL shortening, meaning you could use it to beautify long ugly URL addresses, by providing a shorter URL that you would like to use instead (think

read more

Same page navigation in MeteorJS

We currently live in a world dominated by JavaScript. While JS might not be my most favorite language, I am practical enough to realize that ignoring it isn’t a sound approach to being an efficient software professional. Having said that, I still get the freedom to pick the JS framework that strikes my fancy the most. In my case, I like Meteor. I have been experimenting with the framework for some time now, one of the challenges that I faced was same page navigation in MeteorJS.

This article assumes some basic knowledge of MeteorJS. If you need some head start, check this quick tutorial

read more

Cross-platform mobile development

This post is about my thoughts on C#, Xamarin and cross-platform mobile programming in general. Originally, I wanted to talk exclusively about C# and it’s significance in modern mobile programming however I couldn’t resist covering the topic from the beginning. If you are only interested in C# and Xamarin , click here.

Cross-platform mobile development

So you love technology, you enjoy your iPhone/Android/Windows device, you know how to program and you have a ground-breaking-kick-ass-never-seen-before-will-turn-the-world-upside-down idea for a mobile app, what next? Answer is simple: go make it!! But make it how? Isn’t your idea worth sharing with the whole world? or is it worth only sharing with someone who owns an iPhone (assuming you do swift/objective-c) or an Android phone (Assuming the you breath Java like most of the world) ? Do you write it for one platform first then rinse and repeat every single ounce of effort for the next platform? IMO, once you start pondering these questions, you are getting really serious. And once you start getting really serious, you will either wish you have an endless supply of time and developer friends or you start researching cross-platform mobile development. For me, obviously the solution was to take a stab at cross-platform mobile development.

read more

Never underestimate the power of art

According to wikipedia, art is an outlet for human expression, a vessel for our creativity. A very attractive definition indeed. But what value does art provide? Why do we care about outlets for human expression? How does it apply to our day to day lives?

Way back when, in my college days, I was deeply puzzled about the usefulness of any study that doesn’t yield immediate measurable value. Let’s say you studied medicine, shortly after you graduate you are treating patients, helping people get better, making families happier while making money in the process. How about engineering? You finish school today, tomorrow you are designing cities , building robots , crafting useful software , taking over the world one achievement at a time while yet again making money in the process.

read more

How to build a Modbus driver in Go?

This article serves as a practical guide into how to build a Modbus driver. I use the Go (Golang) programming language because I like it . However, the principles outlined should apply to any stack.

I happen to be a software engineer who works in SCADA. What does that mean?  it means that a lot of my days involve making various pieces of complex software work in harmony with industrial devices like one big happy family. In order to make software talk to industrial devices, we use protocols that both the devices and the software can understand. Some protocols are fairly complex and some are fairly easy, some are frustrating and some are fun. Amongst them Modbus is the most popular.

read more