Category: Development

Start a Computer Club in Your Neighborhood!

2025-02-22

This article urges readers to establish local computer clubs to combat the negative political economy of the tech industry. It suggests creating a more positive computing environment through collaborative programming, DIY shared computing infrastructure, art, music, and other activities. The article advises against corporate sponsorship, emphasizing collective ownership and building trust through in-person interactions. Methods for starting a club include: connecting with like-minded individuals, participating in existing meetups, leveraging community resources (like food co-ops), and joining or initiating projects.

Development computer club

Envloader: A Simplified Cross-Platform Env Var Loader

2025-02-22

Frustrated with getting direnv to work on his Windows machine due to restrictive office settings, the author built `envloader`, a cross-platform tool to simplify loading environment variables in the terminal. It supports .env and .envrc files, automatically converting them for your shell. Installation is easy via brew or scoop; simply run `envloader` to load your vars. While lacking advanced features of direnv (like autoloading), it's a quick, effective solution for those needing a simple way to manage environment variables.

Math Academy: A Veteran's Return to Linear Algebra

2025-02-22
Math Academy: A Veteran's Return to Linear Algebra

A blogger with a degree in math and physics has been stuck on the concept of eigenvectors in linear algebra for years. After struggling with traditional textbooks, he discovered Math Academy, an online education platform, and decided to subscribe. This series of blog posts will document his journey, from skepticism to experimentation, and a deep dive into the Math Academy system and curriculum. Ultimately, he'll explore the value and effectiveness of Math Academy, and its implications in the age of LLMs.

Development

20 Years of PerfectTablePlan: A Software Success Story

2025-02-21
20 Years of PerfectTablePlan: A Software Success Story

In February 2005, the author released version 1 of PerfectTablePlan, a table seating planning software. Initially created to solve a personal problem for his wedding, it has since evolved to version 7, becoming a surprisingly successful and enduring product. Built with C++ and Qt, it has thrived despite the shift to web-based software and a pandemic-induced sales slump. The author, balancing PerfectTablePlan with other software projects, has enjoyed the flexibility of a lifestyle business, demonstrating the power of perseverance and a well-crafted product in a constantly evolving tech landscape.

Development success story

Slime OS: An Experimental App Launcher for PicoVision

2025-02-21
Slime OS: An Experimental App Launcher for PicoVision

Slime OS is an app launcher for the PicoVision (and soon other RP2040 and RP2350 devices), initially designed for the Slimedeck Zero mini-cyberdeck project. It runs in a limited 32-color mode with a 400x240 internal resolution, upscaling to 800x480. Currently, it supports i2c keyboard input, with USB keyboard support planned. The project is experimental and has known issues, including some apps being upside down and limited hardware support, but contributions to expand hardware compatibility are welcome.

Development app launcher

Seamless Docker to Podman Migration with a Single Script

2025-02-21
Seamless Docker to Podman Migration with a Single Script

Tired of Docker's complexities? `fly-to-podman` is a simple bash script that effortlessly migrates your Docker containers, images, and volumes to Podman. It preserves your container data and configurations (mounts, ports, etc.), allowing for migration of images, volumes, containers, and networks individually or all at once. Transition to a more secure and streamlined containerization experience without root privileges!

Development Container Migration

Cot: Blazing Fast and Secure Rust Web Framework

2025-02-21

Cot is a powerful, type-safe Rust web framework built for speed and security. It enables developers to build production-ready web applications in record time without compromising performance or reliability. Get started quickly with `cargo install cot-cli && cot new`.

(cot.rs)
Development Cot Framework

Ren'Py 8.3.4 Released: Open-Source Engine for Interactive Storytelling

2025-02-21

Ren'Py is a powerful open-source visual novel engine used by thousands to create interactive stories for computers and mobile devices, encompassing both visual novels and life simulation games. Its easy-to-learn scripting language and Python scripting capabilities allow for efficient creation of both large visual novels and complex simulation games. The latest version, Ren'Py 8.3.4, is now available, with multilingual documentation support. Developers offer various support channels including forums, Discord, and IRC.

Development visual novel

Suckless.org Updates: Minimalist Software Refined

2025-02-21

Suckless.org, dedicated to creating simple, clear, and frugal software, has recently released updates for several projects. Improvements include bug fixes, performance enhancements, and better compatibility for tools like dwm and dmenu. New versions of software such as slstatus and lchat were also released, alongside announcements regarding upcoming maintenance and conferences. Suckless.org's continued development reflects its commitment to minimalist software design and its contributions to the open-source community.

Development window manager

Building a Custom Rock Pi 4 Image with Yocto: CUPS, Docker, and SBOM Generation

2025-02-21
Building a Custom Rock Pi 4 Image with Yocto: CUPS, Docker, and SBOM Generation

This article details the author's experience building a custom disk image for a Rock Pi 4 using the Yocto Project. The image includes CUPS print services and Docker, leveraging Yocto's robust SBOM generation capabilities to create a Software Bill of Materials. The author chose Yocto due to outdated official Rock Pi 4 images, as Yocto enables building highly customized and reproducible embedded Linux systems. The article details key Yocto terminology, the build process, and how to locate SBOMs, while noting current image limitations and future improvements.

Development

Rails vs. Next.js: Two Decades Later, Which Web Framework Reigns Supreme?

2025-02-21
Rails vs. Next.js: Two Decades Later, Which Web Framework Reigns Supreme?

This article explores the strengths and weaknesses of Ruby on Rails and Next.js in building web applications. Rails, with its simplicity, abstraction, and mature ecosystem, has powered countless successful companies over the past two decades and remains relevant, especially for small teams needing rapid development. Next.js represents the modern web development trend, offering enhanced interactivity and performance but also increased complexity. The author uses personal experience to illustrate the applicable scenarios for each framework, concluding that users ultimately prioritize product utility over technical implementation details.

Development

Llama 3 from Scratch: A Deep Dive TensorFlow Tutorial

2025-02-21
Llama 3 from Scratch: A Deep Dive TensorFlow Tutorial

This project is an enhanced version of naklecha/llama3-from-scratch, comprehensively improved and optimized to help understand and master the implementation principles and detailed reasoning process of the Llama 3 model. Core improvements include: reorganized content presentation, adjusted directory structure, detailed code annotations, complete matrix dimension change annotations, abundant principle explanations and derivations, an added KV-Cache derivation chapter, and bilingual (Chinese and English) documentation. The tutorial starts by loading model files and configuration files, then guides through text-to-embedding conversion, Transformer block construction, attention mechanism implementation, positional encoding (RoPE), RMS normalization, SwiGLU feed-forward network, and finally predicts the next token. It also explores top-k predictions, the impact of different token embeddings, and the principles and advantages of the KV-cache mechanism.

Development

Txeo: A Modern C++ Wrapper for TensorFlow Achieving Near-Native Performance

2025-02-21
Txeo: A Modern C++ Wrapper for TensorFlow Achieving Near-Native Performance

Txeo is a lightweight and intuitive C++ wrapper for TensorFlow designed to simplify TensorFlow C++ development while maintaining high performance and flexibility. Built entirely with Modern C++, Txeo enables developers to use TensorFlow with the ease of a high-level API, eliminating the complexity of its low-level C++ interface. Benchmarks show negligible performance overhead compared to native TensorFlow, ranging from 0.65% to 1.21%. Currently supports Linux, with Windows and macOS support planned.

Development

CSS Zero: A No-Build CSS Starter Kit for Rails

2025-02-21
CSS Zero: A No-Build CSS Starter Kit for Rails

CSS Zero is a streamlined CSS starter kit for Ruby on Rails applications, offering a 'no-build' experience similar to a Tailwind CSS alternative without the build process. Simply add the gem, run the install command (`bin/rails generate css_zero:install`), and you're ready to go. It provides utility classes and variables, and features custom templates for scaffolds and authentication. Lucide is recommended for high-quality icons. The project is open-source under the MIT License and welcomes bug reports and pull requests.

Development Starter Kit

Conquer File Chaos: Introducing Johnny.Decimal

2025-02-21
Conquer File Chaos: Introducing Johnny.Decimal

Johnny.Decimal is a system designed to help you find things quickly, confidently, and with less stress. It works by assigning a unique ID to everything, creating a structured index linking all your life's items. Imagine a ten-shelf garage: each shelf is a life area (home, work, etc.), each shelf holds ten categorized boxes, and each box contains numbered files. This numerical hierarchy avoids the chaos of traditional file systems, making finding anything fast and efficient.

Development organizational system

AI Coding Assistants: Evolution, Not Extinction, for Software Developers

2025-02-21
AI Coding Assistants: Evolution, Not Extinction, for Software Developers

AI coding assistants are transforming the software development landscape. While concerns exist about AI replacing programmers, experts argue that AI serves more as an evolutionary tool. AI assistants boost developer productivity, reducing coding time, but core skills like design, problem-solving, and communication remain crucial. Future developers will need to master AI tools, combining them with creativity and critical thinking to thrive. Job training programs are incorporating AI coding into their curricula, preparing students for the future job market.

Development

Stop Chasing Tech Trends: Focus on What Matters

2025-02-21
Stop Chasing Tech Trends: Focus on What Matters

Programmers often get bogged down in technology choices, debating which language or framework is superior. But the truth is, users don't care! They won't notice those extra 10 milliseconds you saved, nor will their experience magically improve because you're using the latest JavaScript framework. What truly matters is your focus on the product and user needs. Every programming language and framework excels in specific contexts, but technical decisions alone won't define your product's success. Instead of chasing hype, choose technologies you're familiar with, enjoy working with, and that challenge you to improve daily. Finding the right balance between tech choices and product value is key to building something truly impactful.

Development technology choices

bewCloud: A Lightweight Open-Source Cloud Solution

2025-02-21

Tired of the complexity and limitations of cloud platforms like Nextcloud and ownCloud? bewCloud, a modern, open-source cloud solution built with TypeScript and Deno, offers unparalleled simplicity and efficiency. It addresses the resource-intensive nature of Nextcloud and ownCloud, boasting a lightweight and fast design. Currently featuring file, photo, and note functionalities, calendar and contact integration may not be prioritized. Developed and maintained by Bruno, contributions and donations are welcome.

eserde: Reporting Multiple Deserialization Errors at Once

2025-02-21
eserde: Reporting Multiple Deserialization Errors at Once

The serde library aborts deserialization upon encountering the first error, which is inconvenient when dealing with user-provided JSON payloads (e.g., a REST API request body). eserde solves this by reporting all deserialization errors at once, significantly improving the developer experience. By replacing `#[derive(serde::Deserialize)]` with `#[derive(eserde::Deserialize)]` and using eserde's deserialization functions, developers can easily obtain all error messages, reducing the number of API interactions. eserde currently supports JSON and plans to support YAML and TOML in the future.

Development Deserialization

Docker Hub Usage Limits and Abuse Rate Limiting Explained

2025-02-21
Docker Hub Usage Limits and Abuse Rate Limiting Explained

Docker Hub will enforce new usage limits starting March 1, 2025. Free users have limitations on the number of image pulls per month, while paid users enjoy higher quotas and on-demand options. The article details the quota limits for different user types, including monthly pulls, hourly pull rate limits, and public and private repository storage. Additionally, Docker Hub has abuse rate limiting to prevent malicious requests. Exceeding limits will result in throttling or additional charges.

Development usage limits quotas

Ditch Docker? Explore systemd-nspawn Container Technology

2025-02-21

This article introduces systemd-nspawn, a secure and easily configurable container manager that allows running a full operating system or a command within a directory tree. Compared to chroot, it offers enhanced security and OCI compliance. The article details multiple methods for creating and managing containers with systemd-nspawn, including using Docker export, debootstrap, mkosi, and machinectl commands. The author advocates for reducing reliance on Docker and encourages exploring lower-level, more flexible container technologies.

Development Docker alternative

Abseil's Swiss Tables: A High-Performance Hash Table Implementation

2025-02-21

Abseil provides a family of high-performance hash tables called Swiss Tables, including `absl::flat_hash_map`. These tables utilize a clever metadata scheme and SSE instructions for optimized lookups, resulting in significant performance improvements. Metadata consists of a control bit and a 7-bit H2 hash value to quickly filter candidate matches. Furthermore, Swiss Tables avoid unnecessary memory allocations and copies; `emplace` and `insert` operations leverage move semantics for optimal performance.

Development

Append-Only Programming: A Fun Experiment

2025-02-21

The author experimented with a new software development methodology called "append-only programming": all code resides in a single C file, new code is appended to the end, and editing existing code is forbidden. This forces programmers to define interfaces upfront, write small functions, and produces highly readable code. However, this approach is error-prone; if a function is erroneous, a corrected version must be appended, and all callers must be corrected, potentially requiring rewriting the entire program. The author experimented with a Lisp interpreter and found it tedious. Ultimately, the author concludes it's a fun challenge but not a practical software development method, suggesting improvements such as using header files or one file per function.

Development

Barely Running Wi-Fi Station Mode on a Resource-Constrained MCU with Thingy:91 X

2025-02-21
Barely Running Wi-Fi Station Mode on a Resource-Constrained MCU with Thingy:91 X

This post details the author's experience running Wi-Fi station mode on the resource-constrained Nordic Semiconductor nRF9151 MCU using the Thingy:91 X. The nRF9151's limited 256KB of RAM presented a significant challenge due to the Wi-Fi driver's resource demands. By disabling nrf_modem_lib and cleverly using overlay files and devicetree configuration, Wi-Fi connection was achieved, albeit at a whopping 99.11% RAM utilization. The post meticulously analyzes encountered issues, including driver resource consumption, patch loading methods, and socket creation, providing solutions and valuable insights for embedded developers.

Development

Modeling Open and Closed Universes of Choices in Rust

2025-02-21
Modeling Open and Closed Universes of Choices in Rust

This article explores how to model choices in Rust, distinguishing between closed universes (where all options are known and fixed, like Rust's `Option` type) and open universes (where new options can be added). For closed universes, enums are suitable. Semi-open universes (where library authors can add options but users can't), are best handled with non-exhaustive enums, forcing users to account for wildcard patterns and ensuring API backward compatibility. Fully open universes are best addressed with strings or newtypes, or traits for more flexibility. The article also discusses the pitfalls of using an 'Unknown' variant and explores the use of sealed traits. The author concludes by recommending a case-by-case approach, weighing the trade-offs between the simpler string-based approach and the more powerful, yet more complex, trait-based approach.

Development Type Systems

BritCSS: Proper English Spellings in Your CSS

2025-02-21
BritCSS:  Proper English Spellings in Your CSS

Tired of Americanized CSS property spellings? BritCSS lets you use traditional British English spellings like "colour" instead of "color." Simply include the script `` in your HTML. It works with CSS files, inline styles, and `` tags. Debug mode and disabling the conversion are also implemented.

Development British spelling

CSS Zoom vs. Scale: Understanding the Difference

2025-02-21
CSS Zoom vs. Scale: Understanding the Difference

This article explores the key difference between the `zoom` and `scale` properties in CSS. While both can scale elements, `zoom` recalculates the page layout, unlike `scale`. This means using `zoom` affects the layout of other elements, whereas `scale` only changes the element's size. A CodePen example demonstrates the difference, encouraging further exploration.

Development

Saying Goodbye to try_files: Optimizing Nginx Performance

2025-02-21
Saying Goodbye to try_files: Optimizing Nginx Performance

This article delves into the performance implications of the try_files directive in Nginx. While try_files handles SEO-friendly URLs, it incurs unnecessary disk I/O for file existence checks, impacting performance. The article advocates for a framework-specific approach (e.g., leveraging WordPress's /wp-content/ directory) to configure Nginx directly, allowing Nginx to serve static files without try_files. A Python script is also provided to automate the generation of Nginx location blocks for various static file types, further enhancing efficiency and security.

Development

TinyCompiler: A Weekend Compiler Project

2025-02-20

This project details the creation of TinyCompiler, a minimalist compiler built in a weekend. It translates the esoteric Wend programming language (created by the author) into GNU assembly. Wend is a simple language, omitting pointers, arrays, and other complexities, focusing on core compiler concepts. The entire project is under 500 lines of Python and includes test programs like fixed-point square root calculation, Mandelbrot set rendering, and simple games. It's a great resource for learning about compiler theory.

Development

Five Types of Nondeterminism: Practical Insights from Formal Methods

2025-02-20
Five Types of Nondeterminism: Practical Insights from Formal Methods

This article explores five types of nondeterminism in system modeling: true randomness, concurrency, user input, external forces, and abstraction. The author explains each type clearly with practical examples. True randomness, while often simulated with pseudorandom number generators, is usually treated as nondeterministic choice in modeling. Concurrency is a major source of nondeterminism, requiring special handling due to state space explosion. User input and external forces are treated as nondeterministic external influences. Critically, abstraction simplifies complex deterministic processes into nondeterministic choices, simplifying models and increasing sensitivity to potential errors. This provides valuable insights into understanding nondeterminism and its applications in software development.

1 2 154 155 156 158 160 161 162 214 215