Software-Engineering
Disclaimer: Go is not a pure functional programming language. This article does not try to teach you functional programming in Go since imposing functional programming concepts, may result in unnecessarily awkward code. Go has its style, and it’s proven to be highly successful. Therefore, there’s no point in forcing a foreign dialect on Go code. Haskell would be a great choice if you want to express yourself functionally.
This article aims to provide imperative programmers a bridge to the functional world. Crossing that bridge and seeing the other side can help us reimagine problem-solving and add new skills to our set. We will encounter Go translations to some original Haskell code, hoping this will allow us to understand the original dialect.
Profiling is an underrated skill among software-engineers and it’s often overlooked by even very skilled developers. Profiling a program, is essentially measuring CPU and memory usage to spot bottlenecks, memory leaks, and other performance issues. Knowing how profile a program and interpret the result can direct us to where exactly our program is suffering from poor performance, and focus our efforts on optimizing those specific parts. In this article, we’ll be profiling a real-world Go program. We’ll learn how to interpret the results, draw conclusions, and optimize the program accordingly.
This article is a followup for a more basic guide. If you would like to read the previous article, click here
If you would like to skip to a more advanced article, check out Synchronization Patterns in Go
Network communication in general is a very wide topic. It can probably fit in a large section of the New York Public Library (if not already). Fitting even a brief overview of this subject from bottom to top in a single article, might be a bit pretentious. So I won’t do it. Instead, I’ll be focusing mainly on software design patterns and technologies for communicating over a network.
Let’s unravel the mystery We will start our journey with TCP/IP . Unless your program directly communicates using electromagnetic waves, there’s a good chance that your program will communicate with the world, using TCP/IP. I know you’ve heard this term before, but what is it?
Caching is one of those things that almost every digital service uses in some way or another, it can improve user experience, and reduce costs by preventing redundant computation. When incorrectly applied, it can be the root cause of many nasty issues such as serving stale data, creating security breaches, and eating up the memory. In this article, we will see what cache exactly is, what types of cache we can implement, and how to implement them correctly.