Introduction # Hey there, would you like to use a custom domain instead of the one Firebase assigned to you? You have come to the right place! You will learn: How to set up a custom domain for authentication How to use that domain for your email templates How to use that domain for your login via Google Custom Domain # Open https://console.| Ecostack
Introduction # Imagine you have a resource that can only handle a limited number of requests per second. How do you ensure it doesn’t get overwhelmed? One solution is rate-limiting — controlling how many requests are allowed in a given time frame. In this article, I’ll show how to implement a simple rate limiter using Redis and Golang. Rate-Limiting Algorithms # There are several types of rate-limiting algorithms — two common ones are fixed-window and token bucket.| Ecostack
In today’s digital age, securing web traffic with HTTPS is crucial for protecting data integrity and privacy. This guide demonstrates how to leverage NGINX, a powerful web server, within Docker Compose to create a secure and scalable environment.| Ecostack
Checking Open Ports on Your System # Need to check which applications are listening on a port? Here’s how you can do it on macOS. Using lsof # The lsof command lists process IDs, ports, and network addresses: lsof -a -PiTCP -sTCP:LISTEN Example output: lsof -a -PiTCP -sTCP:LISTEN COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rapportd 1063 user 9u IPv4 ... 0t0 TCP *:59797 (LISTEN) ControlCe 1105 user 8u IPv4 .| Ecostack
If you need to run a process as a daemon in Ubuntu, this guide will walk you through the steps to set it up properly using systemd. Setting Up the Daemon # Let’s assume your executable is named arduino-data-points, and you want to configure it as a daemon under the same name. I assume the executable is stored here: /root/arduino-data/arduino-data-points 1. Define the Service # First, create a service file for systemd.| Ecostack
Introduction # Imagine this: A critical piece of your infrastructure—software used by millions—suddenly fails, not because of a massive overhaul or a complicated feature, but due to a seemingly minor update. No one notices the flaw until it’s too late, and the damage ripples through countless applications. This isn’t a hypothetical scenario; it’s a reality that recently unfolded in the world of Node.js. With the release of Node.| Ecostack
Fix the Handoff feature between your Mac and iPhone with this step-by-step guide. Learn how to configure settings and restart key processes.| Ecostack
A Case for WebAssembly (WASM) and Rust in Zero-Knowledge Authentication # Introduction # While working on a project that implemented zero-knowledge proof authentication, I encountered an interesting challenge. A zero-knowledge password proof (ZKPP) allows someone to prove they know a password without revealing it. In this case, during signup, based on a password, the client generates an RSA key pair and sends the public key to the server.| Ecostack
Problem # Hey there, have you seen the Blue Argon error while publishing a Chrome extension with the Firebase Auth SDK? Let’s get into the details of what a Blue Argon error is. Blue Argon # Blue Argon is a rejection error enforced by the Chrome Web Store when a Chrome extension violates the security policies of Manifest V3. Manifest V3 introduces stricter Content Security Policy (CSP) rules to enhance security, primarily targeting:| Ecostack
Introduction # I have been listening to the amazing podcast How to Take Over the World by Ben Wilson in the past weeks and I wanted to note down some things that all the great people have in common. The following notes are all based on the podcast. The Power of Writing # Great minds like Julius Caesar, Benjamin Franklin, and Napoleon Bonaparte were known for their habit of reading and writing daily.| Ecostack
Introduction # Firebase is widely used for authentication, database management, and other server-side operations in Node.js applications. However, when operating behind a corporate proxy or firewall, you might encounter connection issues that hinder communication with Firebase services. In this article, we will explore how to configure Firebase behind a proxy using the proxy-agent package. Proxy with Firebase # Here’s an example of how your Firebase initialization code might look:| Ecostack
Introduction # This is the second article in a series on how to maximize CPU utilization for single-threaded languages like Node.js and Python. In the previous article, I explored using Docker Swarm, which provides built-in load balancing. You can find that article here . In this article, however, we’ll stick with Docker Compose and look at how to effectively handle load balancing without switching to Docker Swarm.| Ecostack
Introduction # Imagine you are working with Docker Compose and you have deployed your Python or Node.js app with it. You might have noticed that these are usually single-threaded, and you need multiple instances of the same app to make use of the tons of CPU your server has. When dealing with high traffic or CPU-intensive operations, running multiple replicas of your service is crucial to distribute the load and make full use of your server’s resources.| Ecostack
Introduction # In this article, we will guide you through setting up a Lark webhook to receive notifications from Uptime Kuma, a popular self-hosted monitoring tool. Using Lark for notifications ensures that your team stays informed in real-time about the status of your monitored services, allowing you to respond quickly to any downtime or issues. Setup Lark Notification Webhook for Group # Create Group # Let’s create a group in which the notifications will be added.| Ecostack
If your Linux machine’s disk is full, you might be wondering which files or directories are consuming the most space. Here is a guide that will help you, in case you have some space left you can use ncdu or otherwise just use find. NCDU # If there is some space left on your Linux, I highly recommend using ncdu, here is what the man page has to say:| Posts on Ecostack
Learn how to charge your electric vehicle (EV) in China with this comprehensive guide. Discover the different types of EV chargers, find nearby charging stations using apps like Baidu Maps and TELD, and understand the payment methods, charging losses, and pricing variations to ensure a smooth and efficient charging experience.| Ecostack
Learn how to set up an automated deployment pipeline using GitHub Actions and Docker Compose. This guide provides step-by-step instructions to connect to a server via SSH, update Docker images, and restart containers automatically, ensuring your applications are always running the latest code with minimal manual intervention.| Ecostack
A practical guide on how to limit Docker container logs to prevent errors such as 'No space left on device' and 'Cannot create directory'.| Ecostack
This article provides a way to configure rewriting the path without normalizing the URI while using proxy_pass.| Posts on Ecostack
Learn how to optimize Nginx startup by delaying DNS lookups for proxy_pass configurations until they are actually needed, thereby avoiding startup delays from unreachable domains. This article includes step-by-step configuration examples and DNS customization options.| Ecostack
Learn to fix the `missing Location in call to Time.In` error in Go, particularly for Docker containers on Alpine Linux. This guide offers solutions through code adjustments and Dockerfile configurations for seamless timezone handling.| Ecostack
Unlock the full potential of application monitoring with 'Mastering OpenTelemetry with Uptrace: A Developer's Guide'. This comprehensive article takes you on a deep dive into the world of OpenTelemetry and Uptrace, guiding you through the essentials of observability, tracing, metrics, and logs. Tailored for both beginners and seasoned developers, the guide features practical implementations, including building a REST API server and integrating advanced features like caching and error handling...| Ecostack
In today’s digital age, securing web traffic with HTTPS is crucial for protecting data integrity and privacy. This guide demonstrates how to leverage Nginx, a powerful web server, within Docker Compose to create a secure and scalable environment.| Ecostack
How do gRPC and RabbitMQ RPC compare for microservices? This article explores the differences between gRPC and RabbitMQ RPC, two leading frameworks in remote procedure calls (RPC) for microservices architecture.| Ecostack
Auto reconnect to RabbitMQ in Node.js on error| Ecostack
How to convert an integer to a string in Golang| Ecostack
Do you want to ensure that your project's codebase remains clean, maintainable, and bug-free? Look no further than Git pre-commit hooks with Husky. In this article, we'll guide you through the easy installation process and show you how to set up pre-commit hooks to enforce coding standards. Plus, we'll demonstrate how to customize hooks to fit your project's specific needs. Don't miss out on this easy and effective way to improve your code quality!| Ecostack
Using Golang and TinyGo's BLE library, learn how to connect to Bluetooth Low Energy devices. This introduction uses the AOJ-20A thermometer from Lepu but using other BLE enabled devices will work in a similar way.| Ecostack
How to cross-compile applications for other platforms with Go and Cgo| Ecostack
General # https://www.0atman.com/ Finance # https://bam.kalzumeus.com Business # https://training.kalzumeus.com/newsletters/archive/consulting_1 https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ https://www.kalzumeus.com/archive/ AI # https://course.fast.ai/| Ecostack
Problem # The error handling of Go is not up to snuff compared to other languages like Java for example. Errors are treated equally to other values, meaning, they have no special type. This means, they do not carry information of origin in them. Which makes tracking down the error origin more difficult. Let me show that to you. package main import ( "errors" "fmt" ) func main() { err := NewErrorWithStackTrace() if err !| Ecostack
Introduction # You might have heard of the Option type, if not, let me introduce that concept shortly. An Option type is data structure which either has a value or no value contained in itself, it kind of acts as a box (Schrödinger’s cat 😉). Usually, the Option type is created with a constructor such as Some(value) or None(). From there, the type usually offers methods which can act in case a value exists.| Ecostack
You have built this amazing React application with lots of components and everything works smooth but somehow, it feels slugish at certain places. You got that nice lazy loading that the stakeholder wanted but it slows everything down over time. Now, how would you go ahead and improve this? Let’s have a look at profiling a React application! Your customer has been bothering you for weeks about his project TortoiseBook, and it is nearly finished, but, the most recent complaint was about perf...| Ecostack
Did you ever run your Go code, and you felt like something was off? Ever thought this might be related to the variable scope? Then you might be onto something!| Ecostack
Hello back again! If you missed out on how to create the selector for HTML data, please check out part one of the series! Otherwise, let…| Ecostack
You maybe might be in the same position, you want to gather some data of different objects (like financial data from different entities)…| Ecostack
A practical guide on how some functional development concepts work.| Ecostack
I used to work on a pretty large project written in Sails.js. Now, after such a long time of development the project…| Ecostack
I currently work as a full-stack engineer at Midjourney . Before that, I used to work for ByteDance/TikTok , Philips , Plek , and JapieCars . All in all amounting to 15+ years of software development experience. During this time, I work mostly on web based applications, but also worked on mobile apps, desktop applications and bluetooth related IoT devices. This blog only contains opinions of my own. What technologies have you worked with?| Ecostack
During my younger years, I would have liked to contact someone more experienced but shied away from doing so. I hereby pledge, if you are interested in talking about software, be it about ideas or technical issue, reach out to me via email or Twitter!| Ecostack
Imagine you are working on the next big thing that runs in the browser, and it requires some heavy-duty code, which need to run fast and efficient. You remember that your friend Jack told you about WebAssembly (Wasm), which supposedly runs faster than JavaScript (JS), so you decide to check it out. The thing you are working on involves sorting large amounts of data, so you test a pure JS implementation first.| Ecostack