Programming

Solving SICP

A detailed analysis of solving the SICP problem set reveals it requires 729 hours over 8 months, involving 6 programming languages and 9 software tools, tracking time spent per exercise and difficulty distribution. The analysis provides valuable data on course workload estimation, student motivation tracking, and curriculum design improvements.

Effective Rust

A comprehensive guide presenting 35 specific methods to enhance Rust programming practices, covering essential topics from type systems to FFI boundaries. The guide is structured into six main sections, focusing on types, traits, concepts, dependencies, tooling, and advanced Rust features. Each item provides detailed insights for writing more effective and maintainable Rust code.

Smart Pointers Can't Solve Use-After-Free

Smart pointers in C++ cannot fully prevent use-after-free vulnerabilities due to internal raw pointers in types beyond user control. Examples with std::vector, std::span, and std::lock_guard demonstrate how iterator invalidation and pointer mismanagement can still lead to memory safety issues regardless of smart pointer usage.

The early days of Linux

A firsthand account of Linux's creation and early development by Lars Wirzenius, who witnessed Linus Torvalds' journey from writing a simple multitasking program to creating the Linux kernel in 1991. The kernel evolved from displaying alternating As and Bs on screen to becoming a global powerhouse running on billions of devices, including Mars rovers.

Do You Really Want to be Doing This When You're 50?

A former programmer reflects on the frustrations of modern software development, highlighting challenges like incomplete domain knowledge, complex APIs, and constant technological evolution. The author expresses preference for small, manageable programming projects while suggesting that high-pressure development may be better suited for younger developers.

TinyCompiler: a compiler in a week-end

A developer shares their experience building a minimalist compiler called TinyCompiler for a custom programming language 'wend' over a weekend. The project aims to translate 'wend' code into GNU assembly while maintaining a codebase of around 500 lines of Python, serving as an educational exploration of compiler theory.

Greg Kroah-Hartman Makes A Compelling Case For New Linux Kernel Drivers To Be Written In Rust

Linux kernel maintainer Greg Kroah-Hartman advocates for writing new kernel drivers in Rust, highlighting how it eliminates common C-related memory bugs. The debate over Rust in the Linux kernel continues, with Linus Torvalds supporting its inclusion despite some maintainers' opposition. Kroah-Hartman emphasizes that while existing C code won't disappear, Rust offers better memory safety and API design opportunities.

NASA has a list of 10 rules for software development

A critical analysis of NASA's 10 coding rules for embedded software programming discusses potential issues with their restrictions, especially around recursion, memory allocation, and function pointers. The analysis emphasizes how these rules, while potentially beneficial for spacecraft software, may lead to less maintainable code and argues against limitations that prevent common programming patterns.

Writing My Own Dithering Algorithm in Racket

An exploration of image dithering techniques demonstrates how to convert color images to black-and-white using various algorithms, including a novel approach that balances between Atkinson and Floyd-Steinberg methods. The author developed this technique while building Guten, a custom newspaper printer that requires monochrome images, showcasing practical applications of dithering in modern technology.