If you haven’t looked yet please take a look at the 5 Testing Tips in Go post. I will try to list more testing functions and concepts here.

Test Caches

Go creates and uses caching for build ing and test ing. If nothing has changed in your program Go does not wait to change the unit test result as well so just gets the results from cache. OK but what does a “cacheable” test mean? How does Go identify and detect them anyway. How to get away with this kind of caching. Let’s take a look at the official documentation.

The rule…


As Sigmund Freud stated in 1917, communities with adjoining territories and close relationships are especially likely to engage in feuds and mutual ridicule because of hypersensitivity to details of differentiation.

Humans are tended to think themselves as unique and self. So, in the environments, especially they’re likely to each other, they find (and may even exaggerate) the small differences. The example is given through a marrying couple and their families, the families can be easily envy to each other. And after that moment of marriage, each of them starts to think how they’re superior than the other family, secretly. …


Pride — We’re already behind X, it is not possible to attack this application.

It’s great to have trust boundaries. It’s great to be inside a trusted network or being behind a well configured security device. It’s one of the core elements of Secure By Design. But it’s never enough to making everything secure. With a layered security design, vulnerabilities can be covered off by generic prevention, it’s always better to have additional prevention logic as the layers go deeper. Remember configurations can change, systems may fall, new attacks are invented everyday and it’s really easy to passing away one…


Before saying anything about tests in Go, I must say that, there are already some great posts on the internet about testing in Go, written earlier. In this blog post I just aim to share own experiences with a bit repeating what have written before and also a listing some useful libraries & resources.

1. Table Driven Tests

Table driven tests convention is a real, “Why couldn’t I think that before” solution, especially if you’re coming from a different language. Unit tests are actually quite similar to each other and table driven thinking is great to form the tests…


As human beings, we tend to repeat things that have made us successful in the past. We think we’ll get similar results when we remake those things that activate our brain’s reward zone. The annoying part is that sometimes (to be more honest, most of the time) we do it without thinking, in a reflexive manner.

Cargo Cult is a very interesting definition in this sense. It begins with the introduction of primitive indigenous tribes from Melanesia to cargo planes during World War II.

Isolated and primitive island cultures that were lacking technology found soldiers and supplies arriving in large…


Exxen project, a Turkish online broadcasting platform, was recently launched. As both the expectations of the people from the project and the popularity of the project are quite high, the platform was met with great interest and was examined as soon as it opened.

It seems that the project was launched even though it was not ready yet and it was full of deficiencies in both functional and security aspects. This situation drew the attention of the software community and people started to share the mistakes they found on social media.

Immediately afterwards, discussions began about who made the “real”…


Stoicism is an ancient philosophy that looks for happiness and fulfillment in the life for every human being. Often mentioned with the philosopher-emperor Marcus Aurelius and his diary Meditations. I am writing this blog post with a write-to-learn approach, and extract some applicable habits for a software developer. So, sorry for the mistakes already :)

Stoicism stands for an honest approach to looking at ourselves and gives practical solutions to daily life. So these practices below also are applicable to any other domain or discipline, of course.

Marcus Aurelius. Source: https://cdn.britannica.com/67/148167-050-F596E6F2/Marcus-Aurelius-statue-Rome-Piazza-del-Campidoglio.jpg

Feelings come from inside

“Today I escaped anxiety. Or no, I discarded it…


Secure / Defensive coding is a deep concept. This post only aims to give a different perspective and a set of useful tools to the developers who are interested in the Go programming language .

OWASP Secure Coding Principles is a good resource to dive deep.

Compare strings on a constant time

Regular string comparison is done byte by byte. When running this code,

b := "abcd123" == "abcx123"

firstly the a runes are compared, and then the b and so on. …


Ok, meditation does not create better *software*. It’s just for a good title to attract. But it creates better software developers, I believe. I’ve a strong belief on the relationship between software developers’ psychology and the software quality / organizational success. Most of the times, problems occur because people are sad for some reason, it’s rarely happens because of hard technical problems.

Software developers face with high cognitive load and they always deal with it. They need to focus on a tiny problem, then take a few steps back and look for a bigger picture. …


One of the hardest things in Software Development is diving deep in a subject that you’re not much familiar with. It can be something, that is not on your speciality or can be some code that you’ve not digged before, or you may not know the patterns that is used inside or you just don’t know the business domain well enough etc. When a software developer works on a subject that needs to be done and faces immediately something that comes from some dark place, first reaction is to avoiding from it. …

Mert Akkaya

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store