Stefan Kecskes

Never stop learning, because life never stops teaching

Concurrency vs Parallelism

Concurrency

Single-threaded, multi-threaded, concurrency, parallel tasks, async task… These words are used by programmers on daily basis and while most of us understands them (fingers crossed), I believe we are using this lingo in presence of non-technical people to confuse them? or to give them more detail, with little success. Let’s recapitulate what this all is, in very high level. So that next time my Product Owner or Scrum master understands what we talk about. Also the described concepts are language agnostic, meaning that they are same across all programming languages and independently of operating systems.


Symlinks in Unix

Create a link in Unix

A symbolic link is a special form of a file. Actually it is not a file just a pointer to a file. This link points to another file somewhere in the file system. You can create link to files and folders. By the look, feel and functionality it is same as Windows shortcut or alias on iOS systems. If the content of the original file changes, so does the content of symlink. If the original file is moved, renamed or deleted, then the symbolic link stops working correctly (called hanging link). Removing the link doesn’t affect the original file in any way. You can symlink files across network too. The symbolic link is often called a soft link or shortly symlink.


Install NVM (Node Version Manager) for Node.js on Ubuntu 18.04

Managing Node.js version through NVM

Node.js is javascript runtime. I am not going to explain why and how it can be used, you can check yourself on node.js website. But the fact is that Node.js comes in different versions and if you used it in the past, you might be familiar that sometimes you just need other version, sometimes newer version, other times older version. There is a easy way to manage those versions with a single command and that’s what I want to introduce you to today. the tool is called NVM, which is shortcut to Node Version Manager. I will show you how to install the latest version on Ubuntu 18.04 although the same steps should work on any unix like system.


Continuous Deployment

Part 2 of 2

Continuous Deployment

In previous article Continuous Integration with Strider I demonstrated how to set up continuous Integration, that means how to test the code automatically and find out if it is the newest changes to code broke it or not. Now that you are automatically testing your commits, the next logical step in automation process would be to release our tested code to live website. We would want it to happen automatically, when all tests pass. We also want it to happen in short cycles, so no huge deployments will happen. If the code breaks, we will know it soon and exactly in which commit did it break. It is easier to spot one bug in one commit than investigate a bunch of bugs in twenty commits. This process is called continuous deployment. But wait, there is one more term called Continuous delivery. Let’s first look on the difference between them two.


Continuous Integration with Strider

Part 1 of 2

Manual deployments of yesterdays

We, developers, are producing websites or applications for many years now. What kinds of tasks needs to be done, before we see the changes live on web. This was a big unknown to me for a very long time. Is my process of deploying the code the best practice? Should I do it other way? When I started creating websites, there was only one task and it was to deliver updated files to web server. I usually used the FTP client with nice GUI (graphical user interface). I logged in to IP address using login and password and copied files from left to right. :) Then I went to website, refreshed the page and checked that the changes are live. Simple, or not?