MoreRSS

site iconBetter Dev LinkModify

Collects links around the web that aims to help you learn something new.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of Better Dev Link

Issues #273 Jan 12, 2025

2025-01-12 20:19:00

Better Dev Link - Resource around the web on becoming a better programmer

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.

  • Pixel Federation Swaps Amazon MSK for WarpStream, Saves 83% on Apache Kafka Costs

    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

  • Operating System in 1,000 Lines

    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!

  • A 2-ply minimax chess engine in 84,688 regular expressions

    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.

  • Mistakes engineers make in large established codebases

    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.

  • Seconds Since the Epoch

    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 NAT traversal works

    How 2 devices under a NAT can connect directly to each other without a server beind in the middle to relay traffic?

  • Linux Routing Fundamentals

    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?

  • Writing a simple pool allocator in C

    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.

  • Behind the scenes with Stream Live, Cloudflare’s live streaming service

    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: More Than I Thought I'd Want to Know

    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.

  • SQL NULLs are Weird

  • Breaking Up with Long Tasks or: how I learned to group loops and wield the yield

    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.

Code to read

  • rumale

    a machine learning library in Ruby. Rumale provides machine learning algorithms with interfaces similar to Scikit-Learn in Python.

  • go-haystack

    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!

  • postal-mime

    Email parser for browser and serverless environments

  • MegaParse

    File Parser optimised for LLM Ingestion with no loss 🧠 Parse PDFs, Docx, PPTx in a format that is ideal for LLMs.

  • @smoores/epub

    A Node.js library for inspecting, modifying, and creating EPUB 3 publications.

Tools

  • ggh

    Recall your SSH sessions (also search your SSH config file)

  • termo

    a simple terminal emulator that can be used to create a terminal-like interface on your website

  • wasm-vips

    libvips for the browser and Node.js, compiled to WebAssembly with Emscripten.

  • recur

    Retry a command with exponential backoff and jitter (+ Starlark expressions)

  • vanir

    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

    OpenGFW is a flexible, easy-to-use, open source implementation of GFW (Great Firewall of China) on Linux

  • Pig: The Postgres Extension Wizard

    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.

  • pgspot

    Spot vulnerabilities in postgres SQL scripts

Issues #272 Dec 09, 2024

2024-12-09 20:19:00

Better Dev Link - Resource around the web on becoming a better programmer

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.

  • Stop worrying about your to-do list.

    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.

  • Compromising OpenWrt Supply Chain via Truncated SHA-256 Collision and Command Injection

    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.

  • Applied offensive security with Rust

    it’s a from-theory-to-practice guide and you may enjoy it if you are a developer and want to learn security

  • Breaking the 4Chan CAPTCHA

    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!

  • Demystifying git submodules

    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.

  • Diving into eBPF: Building a Process Tracer from Scratch

    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.

  • Writing down (and searching through) every UUID

    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.

  • PostgreSQL for everything

    How to reduce complexity and move faster? Just Postgres for everything.

  • What you need to know about SQLite

    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.

  • Deletes are difficult

    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

  • The Case for Shared Storage

    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.

  • Using Transformers.js for AI in the Browser

    A practical journey to use transformersjs.js to perform ML task directly in browser.

  • How To Improve Interaction-to-Next-Paint : React

Code to read

  • go-taglib

    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

  • music-metadata

    Stream and file based music metadata parser for node. Supporting a wide range of audio and tag formats.

  • pg_query

    Ruby extension to parse, deparse and normalize SQL queries using the PostgreSQL query parser

  • halloy

    IRC application written in Rust

  • htmy

    Async, pure-Python rendering engine.

Tools

  • quill

    Simple mac binary signing and notarization from any platform (replacing the codesign utility for simple use cases).

  • studio

    A lightweight Database GUI in your browser. It supports connecting to Postgres, MySQL, and SQLite.

  • fastmcp

    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:

  • tonic

    A rust implementation of gRPC, a high performance, open source, general RPC framework that puts mobile and HTTP/2 first.

  • kaluma

    A tiny and efficient JavaScript runtime for RP2040 (Raspberry Pi Pico).

  • bunbuster

    Ridiculously fast web & TCP fuzzer designed for brute-forcing directories, subdomains, and files on web servers.

Issues #271 Nov 26, 2024

2024-11-26 20:19:00

Better Dev Link - Resource around the web on becoming a better programmer

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.

  • Memory: The Forgotten History

    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 did Windows 95 setup use three operating systems?

    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?

  • A Day in the Life: The Global BGP Table

    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.

  • against /tmp

    Why using /tmp to store file is a usually a bad idea.

  • How we prevent conflicts in authoritative DNS configuration using formal verification

    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.

  • How DRAM Changed the World

    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.

  • Best Practices for Bulk Optimization of Queries in PostgreSQL

    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.

  • Loading the World! OpenStreetMap Import In Under 4 Hours

    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.

  • Build your own personal SIRI with LLAMA-3 like a PRO!

    In this easy-to-follow tutorial, you will learn how to build your own voice assistant Siri with the LLAMA-3 AI Model.

  • SRE deep dive into Linux Page Cache

    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:

  • Tiny GraphRAG (Part 1)

    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.

  • Boosting Postgres INSERT Performance by 2x With UNNEST

  • Why TCP needs 3 way handshakes

Code to read

  • nokolexbor

    High-performance HTML5 parser for Ruby based on Lexbor, with support for both CSS selectors and XPath. A drop-in replacement for Nokogiri.

  • mittsu

    Mittsu is a 3D Graphics Library for Ruby, based heavily on Three.js

  • rill

    Go toolkit for clean, composable, channel-based concurrency

  • jsep

    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.

  • micromark

    small, safe, and great commonmark (optionally gfm) compliant markdown parser

  • datamapplot

    Creating beautiful plots of data maps

  • pglite-fusion

    Embed an SQLite database in your PostgreSQL table. AKA multitenancy has been solved.

Tools

  • PoWA

    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.

  • superfile

    Pretty fancy and modern terminal file manager

  • LTESniffer

    An Open-source LTE Downlink/Uplink Eavesdropper

  • memsparkline

    Track the RAM usage of a process and its descendants in real time

  • ovault: Secure Vault for OAuth Credentials

    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.

  • skyvern

    Automate browser-based workflows with LLMs and Computer Vision

  • lexical

    An extensible text editor framework that does things differently. At somepoint you would definetely need a JS text editor, having another option is great.

Issues #270 Oct 21, 2024

2024-10-21 20:19:00

Better Dev Link - Resource around the web on becoming a better programmer

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 Makes Apache Kafka Simpler and More Affordable

    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.

  • Should We Chat, Too? Security Analysis of WeChat’s MMTLS Encryption Protocol

    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.

  • Open source python client to read your data from the Colmi R02 family of Smart Rings

    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.

  • solar-powered and self-hosted website

    How cool it’s to setup a website run on solar powered at home? Follow this journey.

  • Upgrading Uber’s MySQL Fleet to version 8.0

    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.

  • Sensible SQLite defaults

    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.

  • PostgreSQL Streaming Replication (WAL); What It Is And How To Configure One

  • Dealing with trigger recursion in PostgreSQL

    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.

  • Schema changes and the Postgres lock queue

    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.

  • Understanding DNS resolution on Linux and Kubernetes

    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?

  • Fixing a DNS leak in OpenVPN setup

    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.

  • Chat with your PDF using Pinata,OpenAI and Streamlit

    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

Code to read

  • denko

    Electronics programming in Ruby

  • ratatui

    A Rust crate for cooking up terminal user interfaces (TUIs)

  • go-blueprint

    allows users to spin up a quick Go project using a popular framework

Tools

  • Keyguard

    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.

  • openvmm

    a modular, cross-platform, general-purpose Virtual Machine Monitor (VMM), written in Rust.

  • trippy

    Trippy combines the functionality of traceroute and ping and is designed to assist with the analysis of networking issues.

  • pgroonga

    a PostgreSQL extension to use Groonga as index. PGroonga makes PostgreSQL fast full text search platform for all languages!

  • pg_parquet

    If you ever want a way to export and load parquet file like how BigQuery does it, this finally happens for PostgreSQL.

  • julep

    A new DSL and server for AI agents and multi-step tasks

Issues #269 Oct 14, 2024

2024-10-14 20:19:00

Better Dev Link - Resource around the web on becoming a better programmer

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.

Code to read

  • neighbor

    Nearest neighbor search for Rails.

  • qrframe

    code-based qr code generator.

  • exiftool-vendored.js

    Fast, cross-platform Node.js access to ExifTool.

  • fuqr

    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.

  • lm.rs

    Minimal LLM inference in Rust

  • run-llama-locally

    Running Llama locally with minimal dependencies

  • rose

    A music manager with a virtual filesystem.

  • dito

    an advanced Layer 7 reverse proxy server written in Go

Tools

  • player.style

    Video and audio player themes built with Media Chrome, for every web player and every web app framework.

  • duckstation

    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.

  • auto-southwest-check-in

    A Python script that automatically checks in to your Southwest flight 24 hours beforehand.

  • DeskPad

    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.

  • qrbtf

    AI & parametric QR code generator. View the actualy deployment on https://qrbtf.com

  • sequin

    Add streaming capabilities to Postgres.

  • gitbutler

    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.

  • rsql

    Command line interface for DuckDB, LibSQL, MariaDB, MySQL, PostgreSQL, Redshift, Snowflake, SQLite3 and SQL Server

Issues #268 Sep 30, 2024

2024-09-30 20:19:00

Better Dev Link - Resource around the web on becoming a better programmer

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.

  • Not too many days left for DevSecCon 2024

    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!

  • Compiling to Assembly from Scratch

    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.

  • A Reintroduction to Programming

    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.

  • Using YouTube to steal your files

    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.

  • Building an image search engine on Postgres

    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.

  • Production RAG with a Postgres Vector Store and Open-Source Models

    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.

  • Don't Sleep on AbortController

    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.

  • Hierarchical data types

    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.

  • Monitor your local and real-user Core Web Vitals performance in DevTools

    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.

  • How Discord Reduced Websocket Traffic by 40%

    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.

  • Typescript Monorepo with NPM workspace

  • The Ultimate Guide to PostgreSQL Data Change Tracking

Code to read

  • pagoda

    Rapid, easy full-stack web development starter kit in Go

  • golang-set

    A simple, battle-tested and generic set type for the Go language. Trusted by Docker, 1Password, Ethereum and Hashicorp.

  • ruby-pg

    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

  • harper

    The Grammar Checker for Developers. Can be think of your own Grammarly replacement.

  • weather_landscape

    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.

Tools

  • go-jet

    Type safe SQL builder with code generation and automatic query result data mapping

  • revive

    🔥 ~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.

  • portr

    Open source ngrok alternative designed for teams. Tunnel http, tcp or websocket connections.

  • dalibo

    Visualizing and understanding PostgreSQL EXPLAIN plans made easy.

  • bytebase

    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.

  • container-desktop

    Podman desktop companion

  • schedule-x

    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