About:

Keith Smiley is the author of the website www.smileykeith.com.

Website:

Specializations:

Outgoing Links:

Bastian Bechtold
Subscribe to RSS:
This post discusses the differences in debug information handling between Apple platforms (macOS, iOS) and Linux, specifically focusing on Mach-O binaries and their interaction with lldb. It explains how debug info is generated, i...
The blog post discusses the new rule extensions feature in Bazel 8.0, which allows developers to enhance existing rules without re-implementing them. It explains how to inherit and modify the behavior of existing rules, providing ...
This post discusses the differences in debug information handling between Apple platforms (macOS, iOS) and Linux, specifically focusing on Mach-O binaries and their interaction with lldb. It explains how debug info is generated, i...
The article discusses the challenges of producing reproducible builds on Apple Silicon machines, particularly focusing on the requirement for arm64 binaries to be codesigned. It explains how the codesigning process differs between...
The blog post discusses the differences between using relative and absolute paths in iOS app compilation, particularly when using Bazel as a build system. It highlights the importance of Bazel's 'hermeticity' feature, which ensure...
The post discusses methods for debugging Bazel build actions by reproducing them outside of Bazel's infrastructure. It outlines steps such as disabling sandboxing, capturing command lines, and reproducing the environment to effect...
The article discusses the challenges of shipping a command line tool that relies on the dynamic library _InternalSwiftSyntaxParser, which is provided with Xcode. It explains the compatibility issues that arise when using different...
The post discusses how to use Bazel's query feature to identify unused targets in a codebase after migrating to Bazel. It explains the process of writing queries to enforce coding standards and find unused code by defining 'top le...
The post discusses how to build distribution binaries for command line tools using Swift Package Manager, specifically for Apple Silicon and x86_64 architectures. It explains the need for creating a fat binary to utilize the perfo...
The post discusses the benefits of Bazel's remote caching feature for large builds, highlighting the financial and bandwidth implications. It suggests various methods to improve cache usage, particularly for C/C++ codebases. A key...
The blog post discusses how to set up a remote cache in Bazel for macOS and iOS builds, emphasizing the importance of using the same Xcode version across a development team to ensure consistent build artifacts. It explains how Baz...
The article discusses the transition of Apple to using os_log for system logs and the implications of this change, particularly the increase in log output that can overwhelm developers. It highlights the common recommendation to d...
The post explains how to switch between multiple Xcode versions on CI machines without needing to enter a password. It details the use of the 'xcode-select' command and how to configure the sudoers file to allow specific commands ...
The blog post discusses the challenges Swift developers face with LLDB and introduces reproducers as a solution for improving bug reporting to Apple. It explains how to use reproducers to capture debugging session information outs...
The blog post explains the concept of auto linking in Mach-O binaries, detailing how it allows for the automatic linking of dependencies at compile time, reducing the need for manual linker flags. It provides examples using Object...
The blog post discusses how MachO binaries contain load commands that help dyld locate necessary libraries. It highlights the previous method of inspecting these paths using otool, which was verbose and fragile. The author introdu...
The post discusses the integration of Tagbar with Vim for Objective-C development. It highlights the lack of built-in support for Objective-C in Vim and provides a workaround using ctags and custom regex definitions. The author sh...
The text discusses how to find unused targets with bazel, once a codebase has been fully migrated to bazel. It provides a query to identify unused targets and suggests ways to handle edge cases. The post aims to help readers write...
The text discusses the ability of Bazel to remotely cache artifacts to reduce unnecessary work for large builds, and the financial and bandwidth implications that come with it. It also explains ways to improve cache usage, with a ...
The text discusses how to inspect the paths in MachO binaries to debug library discovery issues. It explains the previous method of discovering these paths and introduces a new, easier option using LLVM's objdump, which was added ...
The text discusses the challenge of producing reproducible builds on Apple Silicon machines, particularly when it comes to codesigning fat binaries. It delves into the differences in behavior when codesigning binaries on Apple Sil...
The text discusses how to lock Xcode versions in bazel to ensure that all the inputs of your build are the same as a previous build, allowing for the sharing of the same build cache. It provides a step-by-step guide on how to enfo...
The article discusses the use of relative paths in XCTest failures in Xcode. It explains the difference between absolute and relative paths, and how Xcode relies on paths being absolute in a few places. It also provides a solution...