Blog

Thoughts on architecture, engineering culture, building products, and the occasional philosophical tangent.

5 min read

Bring Your Own Library

Stop waiting for your college or employer to fund your future. In today's digital economy, the most successful students and early professionals in India are building their own productivity arsenals—and you should too. Just as you wouldn't attend coll...

learning technology tools
4 min read

Docker Community Edition on macOS

If you're a developer on macOS looking to use Docker without Docker Desktop—whether due to licensing, performance, personal preference or usage of VSCode DevContainers —this guide is for you. We'll walk through setting up a fully functional Docker en...

Docker docker ce macOS
2 min read

Enterprise Applications vs Speed of Building: What Are We Trading Off?

Over the last few years, Node.js and React have become the default stack for many new applications. They’re fast to pick up, have thriving communities, and make it easy to ship an MVP quickly — especially for self-taught developers or bootcamp gradua...

typesafe Programming Blogs
4 min read

VSCode DevContainer for Python Programmers

In today's article, we will explore how to set up a VSCode devcontainer for Python programmers. We will cover the basics of what is a devcontainer and why it's useful, how to create one, and some tips on how to use it effectively. What is a DevContai...

devcontainers Python VS Code
3 min read

Java, SpringBoot and MySQL in devcontainer

In this tutorial, we'll walk through the steps to create a simple Java Spring console application that connects to a MySQL database running in a Docker container, creates a "test" table, and lists all the tables. We'll use a devcontainer.json file to...

VSCode Tips devcontainer Springboot
4 min read

Managing Multiple GitHub Accounts: A Comprehensive Guide

A lot of organisations these days use Github for hosting their repositories. With BYOD as a normal practice, everyone wants to be able to differentiate their Git access for work from the one for personal use. Here is a way in which SSH based git acce...

Git GitHub Devops
4 min read

Installing Docker for Windows Home for Standard User

As a learning requirement during my internship recently, I was required to learn the use of Docker. Now there will be people like me, who are new to the concept of what Docker is, this is how it is explained on the Amazon Web Services page for Docker...

Docker docker installation
2 min read

A Privacy Practice Reminder

As a matter of privacy, please change your user ids to not have your birth dates, other dates of relevance, in there. You will be surprised how many times a username / password is leaked. Preferably, use a password manager. Apple, Google, Microsoft ...

privacy best practices
2 min read

End of the 16gb RAM era ?

Until recently, I always bought computers with 16gb RAM. As a developer, this was important, but also necessary for optimal performance. Specially with tools like Docker, and IntelliJ needing the resources they do. I don't mention Chrome, because tha...

Developer DevLife
3 min read

VSCode DevContainer setup for C/C++ programmers

This article delves into getting a VS Code DevContainer Development environment based setup for early C/C++ programmer. The environment runs on Debian, and hence is a good place to start for all School / College students too. As part of my investigat...

C++ C devcontainer
4 min read

Web application, Need they be complex ?

Over the past few weeks, I have started learning #Python, because all the students I teach, and mentor, come with that as the background. Until recently, I was helping them learn "different" programming languages, but with the noise around AI, LLMs a...

Programming Blogs Python SQLite
6 min read

[HttpServer Series] Authentication and Role based Authorization (RBAC)

In the final step in the process of building out an HTTP based application is to put in place a Role based Access Control mechanism. So, in this article, I am going to walk you through the 20 odd commits, over 15+ days of brooding, exploring technolo...

Java frameworks learning
5 min read

[HttpServer series] Static File server, and Logging

As we delve deeper into the series, today we attempt to write a Static file server, and wire it up to serve css and html pages. As with the other posts, you can see the merge request for the code change, the repository for the entire code or the seri...

Java frameworks learning
4 min read

[HttpServer Series] Router - improved - more tests

( Note: You can read the full series at: https://blog.mandraketech.in/series/java-http-server ) As I started working on the Static file server piece of the http server project, I realised that I did not have enough test cases for the Router implement...

Java frameworks learning
7 min read

[HttpServer Series] The Http Router - from scratch

( Note: You can read the full series at: https://blog.mandraketech.in/series/java-http-server ) Next up in our "No Web Frameworks, No Annotations" series, is the http router. As we look at the HttpContextHelper, we can clearly see that there are some...

Java frameworks learning
4 min read

[HttpServer series] Testing the server

( Note: You can read the full series at: https://blog.mandraketech.in/series/java-http-server ) As I started the journey down the test route, the first thought was to unit test the individual Handlers. This required the implementation of a HttpExchan...

Java learning frameworks
4 min read

[HttpServer series] Getting Started - First context (endpoint)

( Note: You can read the full series at: https://blog.mandraketech.in/series/java-http-server ) Continuing in the series, let's write the first endpoint, a "ping", that responds a "pong". The HttpServer uses the HttpHandler interface to delegate the ...

Java learning frameworks
3 min read

[HttpServer series] The fight of the GenAI tools - ChatGPT, Bard, CodyAI?

( Note: You can read the full series at: https://blog.mandraketech.in/series/java-http-server ) Now that the Dev Environment is ready, lets get started. In the world of ChatGPT and Bard, I do not want to start from scratch. So, I will ask both of the...

Java learning learn coding
3 min read

[HttpServer series] Setting up the dev environment

( Note: You can read the full series at: https://blog.mandraketech.in/series/java-http-server ) Now that there is enough context on the objectives of this series, let's get started with setting up our dev environment. My preference is to use Docker, ...

Java learning
2 min read

[HttpServer series] Will it support the Performance, and Scale ?

( Note: You can read the full series at: https://blog.mandraketech.in/series/java-http-server ) What about "scale" and "performance" ? SpringBoot, and all other frameworks publicise the fact that they can handle tens of thousands of requests every se...

Java learning
4 min read

[HttpServer series] Frameworks, Annotations, and SpringBoot

( Note: You can read the full series at: https://blog.mandraketech.in/series/java-http-server ) I recently started and did a "Proof of Concept" for an application in the space of Financial Compliance. When I used to be an active programmer in the Jav...

Java learning
2 min read

[HttpServer series] Who uses Java anymore ?

( Note: You can read the full series at: https://blog.mandraketech.in/series/java-http-server ) It was only recently, after the release of Java 21, that I was re-energised about the language and its potential. To give you a background, I started prog...

Java #learning-in-public Learn Java
2 min read

Masterclass for CS Industry Readiness: Building a Future in Code

Greetings, tech enthusiasts! 🚀 Are you ready to take your coding journey to the next level? I'm thrilled to announce an immersive Masterclass designed for those aspiring to excel in the CS industry. The Challenge: Building a Distributed System The c...

masterclass coding learntocode
6 min read

Installing JDK in Docker: Control your tools

When it comes to Dockerizing your applications, optimizing the installation of essential components like the Java Development Kit (JDK) is crucial. The JDK is a fundamental requirement for many Java-based applications and services. In this blog post,...

Docker Java
3 min read

Installing NodeJS in Docker: A Lightweight Approach

Node.js is a versatile runtime that allows you to execute JavaScript code on the server-side. It's a popular choice for web development, and many applications rely on it to power their backend services. The official Node Docker images are good, but ...

Docker node Node.js
1 min read

NodeJS on Ubuntu and Debian in Docker

For my current development project, I wanted to install NodeJS in my docker image, with the following constraints: OS starting point that I define ( monthly patched version of Debian-LTS ) Latest security patched version of the NodeJS binaries Nee...

Node.js Docker
1 min read

Handling the Change Password url

Most web applications require user identification for login. There are normally two possible strategies (build vs buy): Build your own Use a 3rd Party identity service, like Google or Okta In either of the cases, there is the need to "change pass...

Web Development webdev deployment
2 min read

systemd, crond and Docker Container

Recently, I was in a situation where I needed cron jobs to run inside my DevContainer, to mimic the behaviour of my production machine. Specifically, in the context of log rotation. And, given that the default container images do not contain the syst...

Docker systemd cronjob
1 min read

Migrating Password Managers ?

Recently, LastPass, my favourite password manager until then, reported a leak. It got me thinking. Do I need another "paid" service, or have the "other" providers caught up? So, I went down the track of evaluating Bitwarden and iCloud. Between these ...

Bitwarden icloud Export
2 min read

Understanding `async/await` in NodeJS/Typescript

Here is a Typescript example of evaluating, and understanding the behaviour of async/await in NodeJS. This example, triggers multiple async calls, without waiting ( testAwait ). testAwait in turn, awaits sayHello to execute. There is some additional ...

TypeScript Node.js async/await
5 min read

[DevContainer] Developing on Expo using VSCode and Docker

I am a productivity freak. I want my dev environments to be the best and most predictable, so that I can share them with my coworkers easily. You can read some of the posts around using VSCode and Docker based development environments I have written ...

Docker Visual Studio Code Expo
5 min read

Typescript: String Enums, the easy way

The most common use cases for an enum are: Keys and associated non-string values Keys, and string values that match the keys Now, don't read this wrong. I just don't want to replicate everything that is written in the Typescript Handbook ( https:/...

TypeScript JavaScript coding
6 min read

Multiplatform (iOS/Android/MacOS/Windows) Applications in 2021

If you are one of the "Write Once Run Anywhere" advocates, here is my analysis of where the Mobile/Desktop application world is going. The world is getting divided again. The groups this time: dotNet(MS), FB/MS and Google/JetBrains. Here is what is h...

Developer Tools Kotlin Xamarin
5 min read

Dev env using Docker-Compose and VS Code

Recently, I have been experimenting with moving my development environment to a Dockerized version, so that I can move it closer to production. In an effort to get there, I converted my personal project ( https://www.mocsh.com ) to a docker-compose b...

Developer Tools Docker Visual Studio Code
5 min read

Dev Env using docker-compose and VSCode - Part 2

Continuing from the previous post where we setup a docker-compose file, in this part, we will connect to the environment and do some development. Remember that just deployed a docker-compose based environment with no code, just a volume, in it. Prer...

Docker Visual Studio Code Developer Tools
5 min read

Text Editors, IDEs and Development environments in 2021

As the world was still relishing the success of Jetbrains IntelliJ over Eclipse, and other tools, a quiet horse was making strides. Sublime Text was making inroads into a small but influential community of people doing demos in the conferences. And...

Devops Developer Tools Visual Studio Code
4 min read

PM2 and Docker in the world of NodeJS

NodeJS applications are, by design, single threaded. Well, not in the really, and for good reason, mainly the fact that multi-threaded applications are hard to maintain and debug. Its easier to build an application that has multiple instances of a si...

Docker Node.js k8s
7 min read

[DevContainer] Debugging ExpressJS app with Docker and Visual Studio Code DevContainers

When I started my journey with NodeJS and ExpressJS, one of the things I saw in the trainings and blogs were instructions on installing NodeJS runtime. Although its trivial, but coming from the world of Enterprise application development where deploy...

Visual Studio Code Express.js Node.js