2025-01-12 20:19:00
Hi all,
Happy new year. Welcome to the first issue of 2025. I’m trying to become more regular this year. Looking forward to a new year and hope everyone continue to build cool thing. For me, I was unable to launch my another SaaS last year. I did overhault my cloudcost https://ec2.shop and much more happy with its state now.
This week our sponsor is WarpStream, they have build an amazing Kafka alternative while 100% compatible with Kafka and way more cheaper. If you are running Kafka in Kubernetes, or looking to replace Redis with Kafka, like Honeybadger team did, then definetely give WarpStream a try.
If you enjoy BetterDev, please spread the word by sharing it with your friends. And if you’d like to support my work, buying me a coffee would be much appreciated.
The video game company Pixel Federation uses Kafka as the message bus to power its real-time data streaming infrastructure. However, they were leveraging Amazon MSK and their bill was growing faster than their data volumes and they had to use complex networking like VPC peering. By switching to WarpStream, they saved 83% and ditched VPC peering and manual partition rebalancing
build a small operating system from scratch, step by step. You might get intimidated when you hear OS or kernel development, the basic functions of an OS (especially the kernel) are surprisingly simple. Even Linux, which is often cited as a huge open-source software, was only 8,413 lines in version 0.01. Today’s Linux kernel is overwhelmingly large, but it started with a tiny codebase, just like your hobby project. We’ll implement basic context switching, paging, user mode, a command-line shell, a disk device driver, and file read/write operations in C. Sounds like a lot, however, it’s only 1,000 lines of code!
So without further ado, I present to you … Regex Chess: sequence of 84,688 regular expressions that, when executed in order, will play a (valid; not entirely terrible) move given a chess board as input.
Working in large established codebases is one of the hardest things to learn as a software engineer. You can’t practice it beforehand (no, open source does not give you the same experience). Personal projects can never teach you how to do it, because they’re necessarily small and from-scratch.
People, myself included, like to say that POSIX time, also known as Unix time, is the number of seconds since the Unix epoch, which was 1970-01-01 at 00:00:00. This is not true. Or rather, it isn’t true in the sense most people think. For example, it is presently 2024-12-25 at 18:51:26 UTC. The POSIX time is 1735152686. It has been 1735152713 seconds since the POSIX epoch. The POSIX time number is twenty-seven seconds lower.
How 2 devices under a NAT can connect directly to each other without a server beind in the middle to relay traffic?
Routing table define what what happens when an IP packet is sent from or through a Linux box. But the simplify is which destination a package should send to? how do your computer know that a LAN ip need to send to othe laptop, and the rest go out to internet?
When you need memory for your program, you can malloc. Similarly to malloc, a pool allocator allows the user to allocate memory at run time. The pool allocator, however, is much faster than malloc1, at the cost of having a fixed pool size. It allows the user to allocate and free memory blocks (referred to as chunks, from now on) in O(1) constant time. This implementation also uses very little memory: when creating the pool, a very small Pool structure is allocated, along with the pool itself. Free chunks are used to store information, so the memory impact is minimal.
Stream Live accepts audio/video content from broadcasters and makes that content available to viewers around the world in real time through the Cloudflare network. This post look into how they build broadcast ingestion with RTMPS, SRT, WHIP and Spectrum. The data is converted and store in their Durable Object, then serve to viewer through HLS or DASH protocol.
B-Trees were essentially “better” Binary Search Trees, with some hand-waving done that they had improved performance when used in database applications. But it’s more than just that, today we will look into disk constraint, slotted pages to see how B-Tree node fit naturally into a page - a chunk of data that the harddrive read all in the same time.
Arrays are in every web developer’s toolbox, and there are a dozen ways to iterate over them. Choose wrong, though, and all of that processing time will happen synchronously in one long, blocking task. The thing is, the most natural ways are the wrong ways.
a machine learning library in Ruby. Rumale provides machine learning algorithms with interfaces similar to Scikit-Learn in Python.
Track personal Bluetooth devices via Apple’s “Find My” network using OpenHaystack and Macless-Haystack with tools written in Go/TinyGo. No Apple hardware required!
Email parser for browser and serverless environments
File Parser optimised for LLM Ingestion with no loss 🧠 Parse PDFs, Docx, PPTx in a format that is ideal for LLMs.
A Node.js library for inspecting, modifying, and creating EPUB 3 publications.
Recall your SSH sessions (also search your SSH config file)
a simple terminal emulator that can be used to create a terminal-like interface on your website
libvips for the browser and Node.js, compiled to WebAssembly with Emscripten.
Retry a command with exponential backoff and jitter (+ Starlark expressions)
a source code-based static analysis tool that automatically identifies the list of missing security patches in the target system. By default, Vanir pulls up-to-date CVEs from Open Source Vulnerabilities (OSV) together with their corresponding signatures so that users can transparently scan missing patches for an up-to-date list of CVEs.
OpenGFW is a flexible, easy-to-use, open source implementation of GFW (Great Firewall of China) on Linux
Ever wished installing or upgrading PostgreSQL extensions didn’t feel like digging through outdated readmes, cryptic configure scripts, or random GitHub forks & patches? The painful truth is that Postgres’s richness of extension often comes at the cost of complicated setups—especially if you’re juggling multiple distros or CPU architectures. Enter Pig, a Go-based package manager built to tame Postgres and its ecosystem of 340+ extensions in one fell swoop.
Spot vulnerabilities in postgres SQL scripts
2024-12-09 20:19:00
Hi all,
It’s chrismast time. Time for led lighting project. This year I came across this WLED project, a fast and feature-rich implementation of an ESP8266/ESP32 webserver to control NeoPixel (WS2812B, WS2811, SK6812) LEDs or also SPI based chipsets like the WS2801 and APA102! They had all the resouces from hardwares to softwares, Web UI,mobile app to control your leds.
If you enjoy BetterDev, please spread the word by sharing it with your friends. And if you’d like to support my work, buying me a coffee would be much appreciated.
Zapier connects the apps you use every day, so you can focus on what matters most. Start working more efficiently - Create your free account today.
BetterDev usually doesn’t include these kind of vulnerability report. However, this one is very interesting because it happen through using a cache key as a truncate hash of user input data, lead to collision. And caching is common particularlly in web dev, picking right cache key is important to avoid cache poisoning.
it’s a from-theory-to-practice guide and you may enjoy it if you are a developer and want to learn security
This project was entered into as a learning experience, to enhance my knowledge of machine learning, as well as TensorFlow specifically. At the end, I wanted to have a trained machine learning model that runs in the browser to reliably (at least 80% accuracy, >90% preferred) solve the 4Chan CAPTCHA. These goals were achieved - let’s talk about how I got there!
Throughout my career, I have found git submodules to be a pain. Because I did not understand them, I kept getting myself into frustrating situations. So, I finally sat down and learned how git tracks submodules. Turns out, it’s not complex at all. It’s just different from how git tracks regular files. It’s just one more thing you have to learn.
Today i want to share a story about how i ended up writing a simple process tracer for linux. Using eBPF in go to fix a github actions which i actually didn’t need. We will go over each piece and hopefully you will learn something form it.
Most of time you see UUID re-present as text based, but it’s actually a 128 bit integer. The OP makes everyuuid.com to display both the number and text based of every single UUID. They share the challenge of rendering, ordering an searching.
How to reduce complexity and move faster? Just Postgres for everything.
A compilation of lessons about what the SQLite database engine can and cannot do. It’s written for Rails, but you can apply all the lessons to use SQLite generally.
We tend to optimize db for insert and select, and overlook delete. At first glance, the DELETE command seems straightforward. But more ofthen than not on production the delete break down. We’ll uncover why DELETE operations demand careful consideration and explore how to handle them effectively
If you operate Kafka, you know how important the storage layer is. In K8S, when a pod went down, and come back up, we need o make sure the storage is mounted to the same node, lead to slowness of pod because it needs to detach and re-attach volume. WarpStream is essentially serverless Kafka. They aim to solve this storage layer. In this post, they share with us why they choose to use a shared storage system.
A practical journey to use transformersjs.js to perform ML task directly in browser.
This project is a Go library for reading and writing audio metadata tags. It provides a portable solution with no external dependencies required, thanks to an embedded WASM binary. The most interesting part is WASM. So there is no CGO invoke at all even though taglib is a C++ codebase. A very interesting approach
Stream and file based music metadata parser for node. Supporting a wide range of audio and tag formats.
Ruby extension to parse, deparse and normalize SQL queries using the PostgreSQL query parser
IRC application written in Rust
Async, pure-Python rendering engine.
Simple mac binary signing and notarization from any platform (replacing the codesign utility for simple use cases).
A lightweight Database GUI in your browser. It supports connecting to Postgres, MySQL, and SQLite.
Model Context Protocol (MCP) servers are a new, standardized way to provide context and tools to your LLMs, and FastMCP makes building MCP servers simple and intuitive. Create tools, expose resources, and define prompts with clean, Pythonic code:
A rust implementation of gRPC, a high performance, open source, general RPC framework that puts mobile and HTTP/2 first.
A tiny and efficient JavaScript runtime for RP2040 (Raspberry Pi Pico).
Ridiculously fast web & TCP fuzzer designed for brute-forcing directories, subdomains, and files on web servers.
2024-11-26 20:19:00
Hi all,
Welcome to thanksgiving issue of BetterDev. Hope everyone had a safe and warm thanksgiving. It’s getting so cold these days. If you are in warzone such as Ukraina or Gaza, I really hope thing will become better.
AI field has been evolve quite fast this month with a lot of amazing tooling. I added many of them in self-hosted section to help you try them out.
If you enjoy BetterDev, please spread the word by sharing it with your friends. And if you’d like to support my work, buying me a coffee would be much appreciated.
This article explores the historical development of memory in computing, from the early innovations in storage to the evolution of modern memory technologies. It reflects on the forgotten milestones in memory history and their impact on current computing.
why Windows 95 setup goes through three operating systems: MS-DOS, Windows 3.1, and then Windows 95. Why not go from MS-DOS straight to Windows 95?
Border Gateway Protocol (BGP) is the routing protocol for the Internet. Much like the post office processing mail, BGP picks the most efficient routes for delivering Internet traffic. In this post, we’re exploring the intra-day shenanigans with an eye to finding some of the ridiculous things that go on out.
Why using /tmp to store file is a usually a bad idea.
Learn how CloudFlare use formal verification to mathematically prove properties about DNS addressing behavior, even when different systems (owned by different teams) at Cloudflare have contradictory views on which IP addresses should be returned.
This blog post from Micron explores the transformative role of DRAM (Dynamic Random Access Memory) in the evolution of technology. It highlights DRAM’s impact on everything from personal computing to cloud infrastructures and its continued importance in the development of modern devices.
After reading this article, you’ll learn about the techniques we use to analyze SQL query performance when dealing with millions of queries per day and monitoring hundreds of PostgreSQL servers.
The OpenStreetMap (OSM) database builds almost 750GB of location data from a single file download. OSM notoriously takes a full day to run. A fresh open street map load involves both a massive write process and large index builds. It is a great performance stress-test bulk load for any Postgres system. I use it to stress the latest PostgreSQL versions and state-of-the-art hardware. The stress test validates new tuning tricks and identifies performance regressions.
In this easy-to-follow tutorial, you will learn how to build your own voice assistant Siri with the LLAMA-3 AI Model.
In this series of articles, I would like to talk about Linux Page Cache. I believe that the following knowledge of the theory and tools is essential and crucial for every SRE. This understanding can help both in usual and routine everyday DevOps-like tasks and in emergency debugging and firefighting. Page Cache is often left unattended, and its better understanding leads to the following:
We’re going to build a tiny 1000 line implementation of a GraphRAG algorithm originally invented by Microsoft. I consistently hear people talk about this algorithm at meetups, but it appears there are several orders of magnitude of people talking about it than actually using it or implementing it. Likely because the reference implementation is enormous and rather complex. So let’s break it down and see if there’s any merit to the hype around this approach.
High-performance HTML5 parser for Ruby based on Lexbor, with support for both CSS selectors and XPath. A drop-in replacement for Nokogiri.
Mittsu is a 3D Graphics Library for Ruby, based heavily on Three.js
Go toolkit for clean, composable, channel-based concurrency
a simple expression parser written in JavaScript. It can parse JavaScript expressions but not operations. The difference between expressions and operations is akin to the difference between a cell in an Excel spreadsheet vs. a proper JavaScript program.
small, safe, and great commonmark (optionally gfm) compliant markdown parser
Creating beautiful plots of data maps
Embed an SQLite database in your PostgreSQL table. AKA multitenancy has been solved.
performance tool compatible with all PostgreSQL versions (down to 9.4) allowing to collect, aggregate and purge statistics gathered from multiple PostgreSQL instances from various Stats Extensions.
Pretty fancy and modern terminal file manager
An Open-source LTE Downlink/Uplink Eavesdropper
Track the RAM usage of a process and its descendants in real time
Ovault is an open-source tool designed to securely store OAuth credentials for applications. It offers encrypted storage, helping developers manage sensitive tokens without compromising security.
Automate browser-based workflows with LLMs and Computer Vision
An extensible text editor framework that does things differently. At somepoint you would definetely need a JS text editor, having another option is great.
2024-10-21 20:19:00
Hi all,
Welcome to another issue of BetterDev! This week I come across Colmi, a smart ring where you can write your own software to interact with it. It’s also have a $12.51 deal on AliExpress so very affordable to toy around with hardware.
If you enjoy BetterDev, please spread the word by sharing it with your friends. And if you’d like to support my work, buying me a coffee would be much appreciated.
WarpStream is a drop-in replacement for Apache Kafka that has no interzone networking fees, no disks to manage and requires zero cross-account IAM access, so raw data never leaves your environment. You’ll never again have to do things like partition or broker rebalancing, deal with snapshot replication issues or worry about over-provisioning, as auto-scaling is automatic and you’re always right-sized. Join customers that have saved over 80% by replacing self-hosted Kafka and MSK with WarpStream. Sign up for a free WarpStream account and get $400 in credits that never expire.
The first public analysis of the security and privacy properties of MMTLS, the main network protocol used by WeChat, an app with over one billion monthly active users. While they were unable to develop an attack to completely defeat WeChat’s encryption, the implementation is inconsistent with the level of cryptography you would expect in an app used by a billion users, such as its use of deterministic IVs and lack of forward secrecy.
Colmi is a cheap (as in $20) “smart ring” / fitness wearable that includes the following sensors: Accelerometer, sleep tracking, gestures, heart rate and blood oxygen. The coolest thing is you can write your own client to interact with it through bluetooth.
How cool it’s to setup a website run on solar powered at home? Follow this journey.
Uber upgraded their databae from 5.7 to 8.0. If you had use Uber app, you can use the app is no joke. Routing driver, provide real time upgrade etc. A very complicated app. The strategy that they used to upgraded it is worth a read for us. One important point is not being able to rollback once a v8.0 node is promoted to primary. There is risk and they careful testing to accept that risk.
SQLite got a lot of attention recently. If you ever try to use it for some high load you most likely disappointed at its performance. In this post we will look at a few sensible default to help that.
Many a beginner falls into the trap of trigger recursion at some point. Usually, the solution is to avoid recursion at all. But for some use cases, you may have to handle trigger recursion. This article tells you what you need to know about the topic. If you were ever troubled by the error message “stack depth limit exceeded”, here is the solution.
There are two classes of breakage that can occur when applying database migrations: Migrations that make incompatible changes to the schema, breaking client applications, Migrations that lock a database object for an unacceptable amount of time, causing the application to become unavailable as reads and writes start to fail. Today we’re going to talk about the second type of breakage: how long running queries together with DDL statements can lock out reads and writes from a table, causing application downtime.
Resolve DNS on k8s is a bit messy. For convenience there is a few way to hit a servie with just a name, a name and namespace or the cluster domain. What is the rule there?
After Turkey banned Discord, I had to jump through some hoops, fix my VPN, and learn a bit about how DNS works. Today I’m here to share what I have learned while trying to… you know. Find a way to use Discord again. Surprisingly, this ban ended up being a positive experience for me.
In this tutorial, we’ll build a simple chat interface that allows users to upload a PDF, retrieve its content using OpenAI’s API, and display the responses in a chat-like interface using Streamlit. W
Electronics programming in Ruby
A Rust crate for cooking up terminal user interfaces (TUIs)
allows users to spin up a quick Go project using a popular framework
With new of Bitwarden moving to close source, this is an alternative client for the Bitwarden® platform, created to provide the best user experience possible.
a modular, cross-platform, general-purpose Virtual Machine Monitor (VMM), written in Rust.
Trippy combines the functionality of traceroute and ping and is designed to assist with the analysis of networking issues.
a PostgreSQL extension to use Groonga as index. PGroonga makes PostgreSQL fast full text search platform for all languages!
If you ever want a way to export and load parquet file like how BigQuery does it, this finally happens for PostgreSQL.
A new DSL and server for AI agents and multi-step tasks
2024-10-14 20:19:00
Hi all,
Welcome to another issue of BetterDev! I’ve been exploring LLMs more and, while they’re not perfect or likely to replace programming jobs, they’re great for pattern recognition and repetitive tasks. I see LLMs becoming as common as email, with most people using providers and a few hosting their own. That’s why I’m sharing more LLM content, focusing on first principles to help programmers understand and build them from scratch.
Don’t worry, this newsletter isn’t turning into AI “hype.” I simply want to share useful tools and insights with our audience
If you enjoy BetterDev, please spread the word by sharing it with your friends. And if you’d like to support my work, buying me a coffee would be much appreciated.
Unlock unparalleled insights with the improved Amplitude app for HubSpot. This integration empowers you to seamlessly sync user data and behavior insights, ensuring real-time analytics at your fingertips. Elevate your customer engagement with advanced segmentation, allowing marketers to identify product qualified leads. Try the app and start optimizing your strategies today
Have you ever feel overwhelm with all the news about LLM? what is these 70B 4B or 3.5 4.0? Or when you go and check out the code of some project, it’s super short and simple, where is the logic? In this link, we go back to that root to understand how to build an LLM by using Pytorch.
Have you ever feel like iCloud drive, Google Drive or Dropbox app is magic? What power them? It’s pretty much FUSE behind the scene. Can we turn random data available through RPC into a file system?
Cloud storage is ubiquitous: Google Drive, Dropbox, and OneDrive are household names. However, these services do not provide end-to-end encryption (E2EE), meaning that the provider has access to the data stored on their servers. The promise of end-to-end encrypted cloud storage is that users can have the best of both worlds, keeping control of their data using cryptographic techniques, while still benefiting from low-cost storage solutions.
QRCode is everywhere nowsaday. However, they doesn’t need to be just square black and white box. How can we generate QRcode that looks artsy while still readable to the decoder?
With a small team and in a few monthes, imblue trained a 70B parameter model from scratch on their own infrastructure that outperformed zero-shot GPT-4o on reasoning-related tasks. They’re sharing an end-to-end guide for setting up the required infrastructure: from bringing up the initial cluster and installing the OS, to automatically recovering from errors encountered during training.
what if I told you that simply reordering your columns could reduce the size of your tables and indexes by 20%? This isn’t some obscure database trick — it’s a direct result of how Postgres aligns data on disk.
This article is a look at how ngrok, a platform to enable you expose local service on your laptop to internet, built their data platform. Given their team size of 1 engineer, this maybe more useful and relevant to us more than scale of big corp(where there are hundred engineers building a data platform).
Threads and the general concept of concurrency are among the most widely misunderstood and confusing topics for newer developers. This series is meant to help clarify some of these concepts and provide a better understanding of how they work.
a very high level discussion of how Netflix improve and evolve their websocket infrastructure to perform many kind of tasks. There isn’t much technical discussion on this post, but more about concept and system design.
Nearest neighbor search for Rails.
code-based qr code generator.
Fast, cross-platform Node.js access to ExifTool.
an awesome qr code generator in Rust. Go beyond the normal QR Code, it can generate animation QR code as well. By the same author of above qrframe package.
Minimal LLM inference in Rust
Running Llama locally with minimal dependencies
A music manager with a virtual filesystem.
an advanced Layer 7 reverse proxy server written in Go
Video and audio player themes built with Media Chrome, for every web player and every web app framework.
is an simulator/emulator of the Sony PlayStation™ console, focusing on playability, speed, and long-term maintainability. The goal is to be as accurate as possible while maintaining performance suitable for low-end devices. “Hack” options are discouraged, the default configuration should support all playable games with only some of the enhancements having compatibility issues.
A Python script that automatically checks in to your Southwest flight 24 hours beforehand.
Certain workflows require sharing the entire screen (usually due to switching through multiple applications), but if the presenter has a much larger display than the audience it can be hard to see what is happening. DeskPad creates a virtual display that is mirrored within its application window so that you can create a dedicated, easily shareable workspace.
AI & parametric QR code generator. View the actualy deployment on https://qrbtf.com
Add streaming capabilities to Postgres.
A Git GUI branch management tool. Support Linux/Mac/Window. Build with Tauri/Rust/TypeScript so it won’t be as slow as Electron. If you’re a visual person, give it a try.
Command line interface for DuckDB, LibSQL, MariaDB, MySQL, PostgreSQL, Redshift, Snowflake, SQLite3 and SQL Server
2024-09-30 20:19:00
Hi all,
Welcome to another issue of BetterDev. This week PostgreSQL 17 is released. It has a lot of amazing feature. Time to update and look over the release note. If you are a Postgres user, consider subscribe to Postgres Weekly as well
If you enjoy BetterDev, please spread the word by sharing it with your friends. And if you’d like to support my work, buying me a coffee would be much appreciated.
Developing AI Trust, hosted by Snyk on October 8-9. With 20+ sessions and 5 themed tracks, DevSecCon 2024 is packed with DevSecOps lessons and hands-on experiences from industry trailblazers. For all our developers, here’s one that you just can’t miss: Leonardo Zanivan from Okta, who will be discussing how to Secure Node.js Applications from Supply Chain Attacks. Register today!
Have you been trying to learn how compilers and programming languages work? Then come along! Let’s make a compiler that goes all the way from source to assembly from scratch—no shortcuts This book will teach you enough compiler theory and assembly programming to get going. It uses a subset of TypeScript that reads like pseudocode and targets ARM 32-bit instruction set.
Imagion composing a BMP image by hand, or writing a executable file manually? What kind of knowledge need to do that? Mastery of computer programming unlocks power, flexibility, speed, and debugging prowess across all of your work. We will learn in depth what you use every day, by exploring memory, instructions, syscalls, functions, structure and cognition.
In my security research I often come across weird quirks and behaviours that aren’t particularly useful beyond a neat party trick. It’s always a good idea to keep track of them though, perhaps one day they’ll be just the missing piece you need.
Have you ever want a search to find similar image? In this blog we’ll build a basic image search engine using Postgres. We’ll use a pre-trained model to generate embeddings for images and text, then store those embeddings in Postgres. The pgvector extension will enable us to conduct similarity searches on these embeddings using both images and raw-text as queries.
Part 6 of an AI Engineering open-source models tutorial series. We focus on RAG on this article. A RAG pipeline is what allows your AI model(s) to leverage the knowledge of your private/corporate data in its inference. It consists of the following stages: loading, indexing, storing, querying and evaluation.
In JavaScript, more often that not you may want to cancel a request? Imagine an auto-completed, when user type more, you may want to cancel the previous request, there is no point to get them. AbortController is a global class in JavaScript that you can use to abort these fetch request. And also anything else, not just http request.
Parent-child relationship happens a lot in context of web dev. Even harder when it’s nested. Example, nested comment. In this shortarticle we look at the ltree
Postgres extension to store and retreive that data type.
This post is part of an ongoing series about Chrome’s efforts to improve the DevTools Performance panel. Learn about these tools to help analyze performance of our front-end app. In this post we’ll take a closer look at each of the new features: Real-time local Core Web Vitals performance, Real-user experience data, Recommendations to configure your local environment, Information to help you reproduce issues.
Websocket bandwidth is especially chatty for Discord because they need to broadcast the message to all connection client. Also, decreasing bandwidth usage would lead to a more responsive experience.
Rapid, easy full-stack web development starter kit in Go
A simple, battle-tested and generic set type for the Go language. Trusted by Docker, 1Password, Ethereum and Hashicorp.
Ruby PostgreSQL database performance insights. Locks, index usage, buffer cache hit ratios, vacuum stats and more. Also, if you’re a Rails dev, checkout the rails-pg-extras
The Grammar Checker for Developers. Can be think of your own Grammarly replacement.
Visualizing Weather Forecasts Through Landscape Imagery. Traditional weather stations often display sensor readings as raw numerical data. Navigating these dashboards can be overwhelming and stressful, as it requires significant effort to locate, interpret, and visualize specific parameters effectively.
Type safe SQL builder with code generation and automatic query result data mapping
🔥 ~6x faster, stricter, configurable, extensible, and beautiful drop-in replacement for golint. Use by a lot of other Go project to lint their Go code.
Open source ngrok alternative designed for teams. Tunnel http, tcp or websocket connections.
Visualizing and understanding PostgreSQL EXPLAIN plans made easy.
Have you ever feel tedious and risky when you acquire prod db credential, to run some kind of data modification query? Or feel wrong when giving someone access to a postgres db user and have to follow up when revoke/rotate password? Bytebase might solve these pain points. A single place to track change, query db, manage access. Bill itself World’s most advanced database DevOps and CI/CD for Developer, DBA and Platform Engineering teams.
Podman desktop companion
an event calendar focused on covering the needs of modern web apps: responsive design, internationalization, and extensibility. You can ship it with default settings in a matter of minutes. Surely come in handy when you need some sort of calendar-ish displaying for your app