RSSAmplifier

Blog

Blog about Software Development

Sasha Shpota blogging about Software Development, Kotlin, Java, TypeScript, Infrastructure and more.

shpota.comRSS feed ↗10 posts

Latest posts

Setting up monitoring with NestJS, Prometheus and Grafana

A production application went down and was recovered six hours later after users started reaching support and developers rebooted the app. This happened on a real production system at my friend’s company. Money was lost, the customers were angry, and the developers scratched their heads about how it could happen. This is an excellent example of how monitoring and alerting could have solved the…

How to Set Up Terraform State Management using AWS S3 and DynamoDB

Terraform is a widely-used tool that helps provisioning infrastructure. Its power and simplicity made it a popular choice for many developers. However, if used incorrectly, Terraform can cause significant harm, including downtime or even data loss without the possibility of restoration. This becomes particularly relevant when multiple team members work on the same Terraform configuration…

Automating Website Release with Terraform, AWS, and GitHub Actions

So you’ve built a website, and you want to release it to the world? There are many unique ways this can be done. One of them is using AWS S3. It is simple, cheap, and convenient if you already use AWS. In this post, I will explain how to configure an S3 bucket to host a website, how to create the corresponding AWS resources using Terraform, and last but not least, how to automate the process so…

How to Verify a Solana Wallet Signature Using Java?

One of the most common tasks when dealing with wallets is proving that the user is really the owner of the wallet. Every time a user links a wallet to a website, the website has to prove ownership. This can be easily done on the front-end side with JavaScript, but oftentimes it is not enough. If a wallet is stored on the backend, it is required to prove ownership on the backend as well. What if…

Communicating with Solana RPC using Java

Solana is one of the most popular blockchains with increasing adoption. However, when it comes to development experience and client libraries, predominantly only JavaScript and Rust are used. But what if you have an existing project in Java and want to integrate Solana? What about Android? This is where sol4k comes into play.

Reducing NodeJS Artefacts Size Using Multi-Stage Docker Builds

Delivering a Node application as a Docker image is easy, and it works straight away. Most likely because of this simplicity many don’t even know it is done incorrectly. In this article, I am going to explain how to build a Docker image for a Node application and how multi-stage builds can help in this.

Role-Based Authorization with JWT Using NestJS

Authentication and Authorization can be implemented in different ways using NestJS. The framework has great documentation for that purpose. However, when it comes to implementing a concrete scenario, there are many small details that have to be taken into account. In this article, I will walk you through the steps needed to set up JWT-based authentication and configure authorization to handle…

Unwrapping Use-Site Targets in Kotlin

I like Kotlin for its expressiveness. Its interoperability with Java allows the developer to easily use the existing Java ecosystem while enjoying a modern language. When it comes to annotations Kotlin handles them almost the same as Java. In Kotlin, a single syntax construction might be compiled into several JVM constructions. A Kotlin property would produce a JVM field, a getter, and optionally…

A Better Structure for Kotlin Projects

When I write programs in Kotlin I usually don’t think about where to put my source files and how to structure packages; my build tool knows it better. After years of working with Java and then with Kotlin, it is not a surprise that code lies in src/main/kotlin and tests in src/test/kotlin. I know where the resources are and how they are packaged. Paths like com/companyname/projectname are paths…

My Two-Years-Long Journey in Learning German

When I started learning German I was curious about what I could expect from the language, how fast I would learn it, and what experience I would have. At the time, most of the stories I could find on the Internet were about people reaching fluency in half a year and guides about repeating their success. I would gladly read something close to how regular people learn. Learning English was tough. I…