• Creating a TypeScript declaration file for a JavaScript library

    Hello everyone, a couple of weeks ago, I wrote a post on migrating my bot project from JavaScript to TypeScript. In that post, I had the issue that the greek-utils library I was using didn’t offer TypeScript types. I also mentioned that maybe creating a declaration file for that library would be a good idea for a post. So here we are! Today I’m going to build this declaration file.

  • Creating Docker Aliases

    Hello everyone! In one of my previous posts, I mentioned that I want to start using aliases more, and I presented you my Git aliases. Today I will expand my aliases collections with Docker aliases.

  • Lacking Discipline

    Most of us think that starting is the most challenging part of achieving a goal. Nevertheless, I would argue that starting is the most straightforward part. In the beginning, you are quickly motivated because you start something new and break your routine. Difficulties arise when this honeymoon phase is over, and you have to discipline yourself to stick to your schedule.

  • Creating Git Aliases

    Hello everyone! Today I decided to finally do something I was postponing for a very long time, which is to set up my Git aliases.
    I recently switched to a new laptop and OS, and I find the mental remapping of keys quite annoying. Consequently, my efficiency with the keyboard suffered quite a bit, and this resurfaced the idea of creating aliases for different CLI tools I use. So today, I start with Git.

  • Migrating a Nodejs Telegram Bot to TypeScript

    Hello everyone! In this post, I will continue to work on my chatbot. Lately, I’ve been using TypeScript a lot, and I found I’m more productive using it. However, I only had experience with projects that originally use TypeScript. So in this post, I decided to migrate my chatbot project from JavaScript to TypeScript.
    Before we dive into the actual migration, I think it makes sense to present briefly the main reasons you want to use TypeScript.

  • How having a personal brand makes you a better developer

    If you carefully observe the software development industry, you will realize that technology comes and goes rapidly. The reason why this happens is an intriguing subject and might be an excellent motive for another post. But let’s accept it and move on for now.

  • Refactoring a Node.js Telegram Bot - Part 2

    Hello everyone! In the previous post, we spent a lot of time refactoring our third-party integration libraries. Feel free to check it out if you missed it! Today, we continue refactoring the chatbot project, but this time we focus on the web application structure as well as the main logic of the bot that involves all the reactions to the user input. In the end, I present the new goals for this project and give you a small teaser about what’s to follow.

  • Refactoring a Node.js Telegram Bot - Part 1

    In the previous post, I introduced you to Pop my Telegram chatbot, and I told you its story thus far. This one is more technical. First, I present the existing codebase and comment on the implementation. Then, following my remarks, I restructure the current project and refactor most of it. For all the files I refactor, I present the before and after so that it is easy to follow. However, this creates the illusion that the post is quite lengthy; don’t be scared.
    Finally, for your help here are the before and after versions of the repository:

  • Zen Stories


    There is a Taoist story of an old farmer who had worked his crops for many years.
    One day his horse ran away. Upon hearing the news, his neighbors came to visit. “Such bad luck,” they said sympathetically.
    “Maybe,” the farmer replied.

  • The story of a Telegram bot

    Nearly three years ago, I started one of the most amusing side projects. I did not even regard it as a side project; it was something I rapidly hacked while under the excitement of messing with my friends.

  • My Node.js development setup

    To be productive during development you need to put a bit of thought into your development workflow. In this post, I present some of the tools I use while working on Node.js projects to be more productive and have better development experience.

  • Using Observables for batch processing in the backend

    I’ve heard about reactive programming and RxJS library before but I never had the chance to use it and understand it better. It seemed to me that it makes sense only in the frontend where you have streams of different user-generated events or applications that use a streaming architecture. In the frontend, this approach became popular after frameworks like Angular and React introduced RxJS to their architecture.

    Lately, I’ve been using the web framework NestJS which is heavily inspired by the Angular architecture, and like Angular, it is also using RxJS and Observables. For example, in the HTTP module, you can receive the data of an HTTP response through an Observable.

    Meanwhile, I had to solve a different problem.

  • Package management in Python with Poetry

    A cheatsheet for poetry python package manager. Includes the basic commands to perform different tasks, instructions on how to connect to a private PyPI and how to setup a project dockerfile, and integrate it in Gitlab CI.

  • A Complete Git Setup

    In this tutorial we go through all the necessary step we need to make when setting up Git and GitHub for the first time.

  • Setting OAuth 2.0 in an Express app

    In this post we cover how you can setup OAuth 2.0 authentication to an express app. You should go straight to this GitHub repository to see the code and then read the post where the most crucial parts are explained. The post assumes you have some basic knowledge of Javascript, NodeJS, and Express. You can find a working demo of the app here