About:

I'm a software engineer, father and wishful amateur surfer. If you've come seeking my political views; you've found the wrong Fareed.

Website:

Incoming Links:

Outgoing Links:

David Walsh
Subscribe to RSS:
Linker pessimization is a technique to expand binary instructions to handle larger address spaces, particularly when working with Intel's Math Kernel Library.
COMDAT sections in C++ highlight the challenges of code duplication and linker behavior, impacting binary size and program logic.
Linkers can optimize static binaries through 'relaxation', replacing indirect function calls with more efficient direct calls, enhancing performance.
Exploring solutions for x86_64 linking challenges, the post advocates for using Linker Thunks to optimize large binaries while maintaining performance.
The post examines the complexities of handling massive binaries in large codebases, focusing on the 2GiB Relocation Barrier and its implications for code linking and execution.
The blog post discusses the author's challenges and discoveries while working with the Nix package manager, specifically regarding the Ruby interpreter's build and runtime graph. The author encounters issues with missing derivatio...
The blog post discusses how Linux capabilities can be managed using extended attributes (xattrs) on files, particularly in the context of building OCI images with Bazel. It explains the concept of capabilities, which allow process...
The blog post discusses the complexities and challenges of using Bazel for building Java applications, particularly when mixing bytecode versions from source and prebuilt artifacts. It highlights the original intent of Bazel and s...
The blog post discusses optimizing the process of creating OCI images for Java applications using Bazel. It highlights the inefficiencies of using a single _deploy.jar file, which forces a complete rebuild of the image for any cod...
Challenges of managing large binaries are examined, focusing on relocation overflows and the limitations of linker assumptions in programming.
The blog post discusses the 'strict dependencies' feature in Bazel's Java language implementation, which ensures that all classes used are loaded from a target's direct dependencies. It explains how to use the 'unused_deps' tool t...
The blog post discusses the author's experience contributing to CppNix, a project related to the Nix package manager. It highlights the challenges of navigating a new codebase and the welcoming community on the Matrix channel. The...
The blog post discusses the implications of the eventual deprecation of NIX_PATH in the Nix ecosystem, highlighting a conversation at DEFCON33 about new functionalities that can be introduced using angle brackets in Nix expression...
The blog post explains the concept of transitions in Bazel, a build tool, detailing how they allow modifications to rules and their dependencies. It provides a practical example of creating a text rule to construct a thesis, demon...
Sparse files can have a large logical size but occupy little disk space, as explained through examples and commands in the context of file systems.
The blog post discusses a keynote by Will Wilson on fuzzing, emphasizing the underutilization of fuzzing tools like American Fuzzy Lop (AFL) in software testing. The author shares their experience of learning fuzzing from first pr...
The blog post discusses the challenges of using Protocol Buffers (Protobuf) in Java, particularly with managing multiple versions in a dependency graph. It introduces the concept of writing a Protobuf plugin in Java, explaining ho...
The blog post discusses the issue of non-daemon threads preventing a Java application from exiting even after the main method has completed. It explains the JVM's exit conditions, the role of daemon threads, and provides a code ex...
Nix's rejection of the Filesystem Hierarchy Standard is challenged by practical needs for graphics drivers, leading to necessary compromises in its design.
The blog post discusses the use of Nix and home-manager for managing dotfiles, emphasizing the reproducibility of personal development environments. It critiques the common practice of symlinking configuration files into the home ...
Bespoke software solutions, enhanced by LLMs, are essential for smaller companies to overcome inefficiencies of generalized software and legacy systems.
The author expresses skepticism about the productivity benefits of large language models (LLMs) for production-grade code, emphasizing the superior utility of GitHub's revamped code search tool, which has significantly improved co...
The author shares their experiences and challenges while using NixOS on a Framework 13 AMD laptop, particularly focusing on the transition from single-user to multi-user installation modes. They discuss issues encountered with S3 ...
The post reflects on the author's interview experiences in the software industry, emphasizing resilience and the unpredictable nature of interview outcomes.