launchctl: Bootstrap failed: 5: Input/output error
2025-09-26
Initial symtoms
We have an internal service that needs to start a boot. The responsible team wrote a simple launchd script, like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.watchdog</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/watchdog</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>SessionCreate</key>
<true/>
<key>StandardOutPath</key>
<string>/var/log/watchdog.out</string>
<key>StandardErrorPath</key>
<string>/var/log/watchdog.err</string>
</dict>
</plist>
Helix returns "No definition found" when going to a definition
2025-08-14
If you follow this blog regularly, you know that I’m so happy with the combo WezTerm (terminal emulator) and Helix (editor). Since I recently switched to a project that uses Java, I’m trying to configure Helix as my Java editor.
The default language server for Java is jdtls which can be installed easily on macOS by running:
brew install jdtls
hx --health java
Configured language servers:
✓ jdtls: /opt/homebrew/bin/jdtls
Configured debug adapter: None
Configured formatter: None
Tree-sitter parser: ✓
Highlight queries: ✓
Textobject queries: ✓
Indent queries: ✓
Tags queries: ✓
Rainbow queries: ✓
What I'm doing now
2025-03-28
After taking some time to refresh myself and going on a road trip through Vietnam, I returned to the office to work as a Platform Engineer for a company in Hanoi. I’m learning to write an OS in Rust while continuing to read OSTEP. I’m building an all-in-one troubleshooting tool named diagtree, where I turn nearly any command into a tree, helping me quickly debug multiple services across different environments, from local to testing, and production.
Quan Tong