RSSAmplifier

Blog

Verba volant, scripta manent

Recent content on Verba volant, scripta manent

ipinak.grRSS feed ↗18 posts

Latest posts

Parallel vs Asynchronous: Understanding the Difference in C# (Using Bread Making)

When working with C#, developers often face two important concepts: Asynchronous programming (async/await) – Best for waiting on external tasks (e.g., network requests, file operations). Parallel programming (Parallel.ForEach) – Best for executing multiple tasks simultaneously (e.g., CPU-heavy computations). To explain this, let’s use the example of baking bread. Asynchronous Programming…

How Not To Send Transactional Emails

Disclaimer: this is the anti-aws guide to sending emails The problem You have a system and you need to send emails to your customers which happen upon certain events, for example a new user signs up and you send him a welcome email. At the same time you are using aws and to ensure the least problems you decided to use as much as much possible of what Jeff is selling. Based on that you decided to…

Bazel: Love it or Leave it? My Short Experience

For the past two years, I’ve been using Bazel, an open-source build tool similar to Make, Maven, and Gradle. As their documentation states: “Bazel is an open-source build and test tool similar to Make, Maven, and Gradle. It uses a human-readable, high-level build language. Bazel supports projects in multiple languages and builds outputs for multiple platforms. Bazel supports large…

Implementing 2FA Login With Email On AWS Cognito Using Typescript

Security has become a huge deal in today’s computing world, and one part of security is authentication, in other words proving that you are the person you say you are. For computer systems a username and passoword is enough to authenticate a user, however that has proven to be insufficient for today. That led to 2FA solutions (2 Factor Authentication) which add one more layer of security in…

How to Write Good Unit Tests

It is probable that you have encountered numerous tests, or perhaps none at all (though this scenario is hopefully uncommon). If you belong to the former group, you may have experienced the laborious process of comprehending and constructing tests, which is painful for the eyes and patience. Despite the challenges, investing effort into test creation yields considerable benefits in the long term.…

Using JWT for authentication in Gin

Authentication is a crucial part of any web application. It allows us to verify the identity of users and ensure that only authorized users can access sensitive information. In this post, we will learn how to use JSON Web Tokens (JWT) for authentication in the Gin framework for Go. The Gin framework is a popular web framework for Go that makes it easy to build fast and scalable web applications.…

Quick Mock Server

Are you in a need of a quick mock server? One simple solution for Linux/Mac/BSD users is to employ an existing tool, nc . It exists in most distros and it&rsquo;s very easy to use. #!/bin/bash if [ ' $# ' -ne '1' ] ; then echo 'usage: ./mock_server.sh <port>' exit 1 fi trap '{ exit 0; }' SIGINT SIGTERM SIGKILL PORT = ' $1 ' function make_response () { read -r response echo -e 'HTTP/1.1 200…

Favourite VSCode Extensions

I&rsquo;ve been using VSCode for about 3 years now, it&rsquo;s not the best editor out there, but I like it. I try to keep it minimal with only a few extensions for executing certain things quickly and easily. Here&rsquo;s a list of the extensions I use: C# - I&rsquo;ve been writing C# over 5 years now, the first years I used Visual Studio, then vscode came out and I switched. On dotnet core it…

Learning a Musical Instrument

About 2 years ago I decided to learn a musical instrument. I have always been interested in string based instruments so I decided to learn how to play guitar. First, I tried out a friend&rsquo;s guitar and then I realized that I really liked it, so I bought a cheap acoustic guitar. My knowledge about playinng musical instruments was very limited, I knew very basic things from school most of which…

Editors Choice

I&rsquo;ve used a few editors over time, Emacs, Atom, Sublime, Vim, VSCode, IntelliJ, Visual Studio and Xcode. From those I&rsquo;ve used professionally Xcode, Emacs, Visual Studio, vim, vscode and Intellij. I have tried to use atom and sublime, but they never really stack. Here is a small review of what I like and what I don&rsquo;t for each one of them. FYI my favourite 2 are vim and vscode.…

Go Patterns?

I came across a repository on github that consolidated simple examples exhibiting design patterns in Go. In the beginning I thought that was a great resource, but after a while I got a bit confused. You will find a list of patterns like creational, structural, behavioural, synchronization, concurrency, messaging, stability, profiling, idioms and anti-patterns. You find patterns like Abstract…

Bookshelf

The list of (physical) books that I own and have read (or I&rsquo;m about to read). This list is constantly growing and comprises of books in Greek and English. Technology Algorithms in Java, Parts 1-4 by Robert Sedgewick, John Fuller UNIX Programming Environment by Brian W. Kernighan, Rob Pike Beginning JavaScript by Paul Wilton, Jeremy McPeak Fedora 7 and Red Hat Enterprise Linux Bible by…

About me

I&rsquo;m Ioannis Pinakoulakis a software engineer and co-founder at TechPals . I&rsquo;ve been playing around with computers since a very early age, mainly playing games on an Olivetti 8086 running MS-DOS 3.5. A few years later I moved to a more advanced computer where I did my first programming steps. I&rsquo;m still into computers a lot more than when I was a kid, but now I use beasts (compared…

One Use Case for TPL

TPL is a set of libraries from Microsoft that can be used for parallel processing, basically it is a set of high level tools that can make your code run in parallel. TPL is not a panacea for parallel processing, mainly because you don’t always need parallel processing, but when you need it, it can be a life-saver. The system The system was built with a simple purpose, to consume and process events…

Multi-stage building with Docker

Docker supports a feature, where you can create multiple containers with a single dockerfile and at the same time share the contents between the containers. This feature gives you the possibility of having multi-stage builds and opens one significant spot for creating repeatable builds. The idea behind it is simple, you can have multiple FROM statements inside the same Dockerfile . Each FROM…

Inconsistency as a Feature

The image below depicts the logos of the 2 most deadly package managers massively used by almost every JS developer. Interacting with them is straightforward and easy through a few CLI commands. What they do is pretty simple, download packages for you according to specific version. The left logo belongs to bower and the right one to npm of course. Experiences Bower & npm I’ve been using bower for…

SECURITY in your everyday e-shop...

I don’t know if what I discovered is good or bad. I really like this site and the prices of its products, but it has a big security flaw, which makes me not use it anymore. In the following paragraphs I will describe what I’ve discovered, but I will not point to the actual e-shop, since this post is purely academic (so to speak). Heads up, nothing illegal… OWASP and Security OWASP is a community…

ASP.NET & Docker Experience

Introduction Docker is system for creating and managing lightweight linux containers, which has become very popular in the enterprise computing business. ASP .NET is a framework/platform from Microsoft, mainly used in building web applications. At the moment is on version 4.6.1 (stable) and version 5 is waiting around the corner. Version 5 is a completely re-done, its structure and mentality…