Creating Your First Homebrew Tap: A Complete Guide
If you’ve built a command-line tool and want to make it easy for users to install, Homebrew is one of the best distribution methods available. In this guide, I’ll walk you through creating your own Homebrew tap—a custom repository that allows users to install your software with a simple brew install command. Steps Overview Prepare Your Binary Releases Create Your Tap Repository Write Your Formula Get SHA256 Checksums Push Your Formula Test Your Tap Share Your Tap What is Homebrew? Homebrew is the most popular package manager for macOS, and it also works on Linux. It allows users to install software from the command line with simple commands like brew install wget. Think of it as an app store for command-line tools and applications. ...
Spark from NDC Oslo: Events as Internal APIs
💥 Spark: Events as Internal APIs At NDC Oslo, one quote from James Eastham really stuck with me during his talk: “Think about your events as internal APIs.” This simple mindset shift has deep implications for how we design, evolve, and document event-driven systems. Just like internal APIs, events deserve: Clear contracts — schemas, versioning, and well-defined intent Ownership — someone needs to own the lifecycle and semantics Documentation — make it obvious what the event means and when it’s emitted Stability — no breaking changes without coordination This spark reminded me that reliability in event-driven systems isn’t just about infra or retries — it’s about treating your events as first-class citizens in your architecture. ...
Link Sparks: The Power of Ten - Rules for Developing Safety Critical Code
The Power of Ten - Rules for Developing Safety Critical Code The “Power of Ten” is a set of coding rules designed by NASA’s Gerard J. Holzmann to improve the safety, reliability, and maintainability of safety-critical software. The document outlines ten essential rules for writing robust, verifiable code in critical systems, with a focus on simplicity, strict control flow, memory management, and code clarity. ...
Managing Git Submodules: A Quick Guide
Git submodules are a powerful feature that allows you to include and manage other repositories as part of your main repository. This is especially useful for projects where you want to use external repositories (e.g., a custom Neovim configuration) while keeping them independent. In this post, we’ll cover how to set up, update, and manage Git submodules with a practical example. What Are Git Submodules? A submodule in Git is a pointer to a specific commit of another repository. It allows you to include that repository as a part of your main project without merging its content directly into your repository. ...
Getting Started with Neovim: Installation Guide
Neovim is a modern take on Vim, designed for power users and developers. In this guide, we’ll install Neovim and set it up for basic usage. Why Use Neovim? Extensibility: Lua-based configuration. Modern Features: Built-in LSP, tree-sitter support, etc. Installation Linux Use your package manager: apt update && sudo apt install neovim macOS Install using Homebrew: brew install neovim Windows Install using choco or scoop: choco install neovim Verify the Installation Run nvim in your terminal and create a basic configuration: ...
Link Sparks: Essential Knowledge for Programmers
Link Sparks: Essential Knowledge for Programmers A treasure trove of resources that every programmer should know. This curated list covers a wide range of essential topics, including algorithms, memory management, security, and best practices for writing clean and efficient code. Whether you’re just starting or looking to refine your skills, this guide has something valuable for everyone. Explore the list on GitHub
Getting Started with Python Environments
Getting Started with Python Environments: Conda, venv, and Installing Dependencies Managing Python projects efficiently requires a solid understanding of virtual environments and dependency management. This guide introduces you to two popular tools—conda and venv—and shows you how to set up a project and install dependencies from a requirements.txt file. Why Use Virtual Environments? Virtual environments allow you to: Isolate dependencies for each project. Avoid conflicts between package versions. Maintain a clean global Python installation. Both conda and Python’s built-in venv module are excellent tools for creating virtual environments. ...
How to Check and Clean Up Disk Space on Linux Servers (Ubuntu)
Running out of disk space on your Ubuntu server can cause performance issues and prevent applications from running properly. This guide provides straightforward steps to help you check disk space usage and clean up your server effectively. Check Current Disk Space Usage To see how much disk space is currently being used, open your terminal and run: df -h df displays disk space usage. -h makes the output human-readable. This command shows disk usage for all mounted filesystems. Look at the Use% column to identify filesystems with high usage. ...
How to Resize a Filesystem on Hetzner Cloud VM
If you’ve recently upgraded the disk size of a volume on Hetzner Cloud, you’ll find that the additional space is not automatically available for use. This is because the filesystem on the disk needs to be resized to utilize the new space. Here’s a straightforward guide on how to resize your filesystem on a Hetzner Cloud virtual machine (VM). ...
Link Up Your Life: Symlinks in Linux and Windows
Symlinks (symbolic links) are like the ultimate shortcuts in the world of operating systems. They help you point to files and folders from multiple locations without creating duplicates. Let’s dive into how you can create and manage symlinks, making your life easier whether you’re navigating the Linux terminal or the Windows Command Prompt. Linux: Creating and Managing Symlinks Making a Symlink In Linux, creating a symlink is as simple as striking a few keys: ...