Published on

Some tools I found useful

Authors

Author's note: it's unclear if this should be a post. I may yet move it, but I'll try and make this page a permalink?

As a developer and tools enthusiast, I've come across various things that have significantly improved my productivity and / or QoL. This list compiles some of the most useful ones I've encountered, along with brief descriptions and links. Whether you're a seasoned computer user or just starting out, you might find something here to enhance your own toolkit.

File and Directory Management

  • ripgrep: Grep (a finder) but way better. Respects .gitignore, ignores binary files, and much more!

    • multithreaded
    • rg -tpy foo limits your search to Python files
    • rg -z foo includes contents of compressed files in your search
    • Regex support
    • Unicode support (grep doesn't)
    • Common options md (symbolic links, sort, etc)
  • Dust

    • Quickly make a tree of filesizes in a directory
    • No interactive mode! For that, use ncdu instead
  • ncdu - interactive du / dust

  • duf - A better df

  • bat - A better cat (highlighting and git)

  • fd - A better find. Stop doing find . | rg <name>

  • exa - A better ls.

  • xsv - Command line csv query engine

  • hyperfine - Quick command line benchmarking

  • Jdupes:

    • Theory: if you have two files, A and B, and they're both the same, but you don't want to hardlink them because if you change one you don't want it to reflect on the other, you're usually in a tough spot. Some filesystems (notably APFS - the mac file system) support cloning, though, which means that the copy is instead delayed, it's treated as a hardlink until there's a write to the contents of either file, at which point the copy actually happens and there's a write to the second file as the new file
    • Jdupes does this in reverse: it scans a file structure, identifies duplicates, and replaces the duplicates with clones.
    • It can do this with hardlinks and softlinks on non-cloning filesystems, but I'd discourage it as it isn't a pure space optimization (can change behavior)
      • Test if your filesystem supports copy on write by running cp –reflink=always <trivial> <trivial copy>. If it fails, no support. If it succeeds, support.
    • Not good for reliable performance, but really shouldn't matter

Git Tools

GPU Monitoring

  • Nvidia-smi+: makes a nvidia smi window in xcode (also can do amd gpus)
  • Nvtop: better nvidia-smi

General dev tools

  • Quicktype: translate any json to parsing code + types, or just types. Supports most languages.
  • difftastic - structural diff tool
  • mold - faster linker

LLM tools

  • LLM visualizer The best LLM visualization tool. I use it to reason about how LLMs work, much easier than grokking math.
  • code2prompt: Code repository to prompt. A nice preamble to attach to code queries!
  • llm-explorer - a tool for finding useful llms for whatever task you may have.
  • Interact with streams as if they were json
    • jq allows you to query json on command line too
  • Outlines - constrained LLM generation (simple)
  • Guidance - constrained LLM generation (complex) (or, if you want to do it manually)
  • Ollama - really quickly and easily run models! Can run most open source models at most quantization levels (via llama.cpp)
    • Run the server: OLLAMA_FLASH_ATTENTION=1 OLLAMA_MAX_LOADED_MODELS=0 OLLAMA_NUM_PARALLEL=0 OLLAMA_DEBUG=1 OLLAMA_GRAMMAR=true ./ollama serve
    • Pull: ollama pull llama3:8b-instruct-q8_0
    • Make requests
      • CLI: ollama run (can just chat in terminal)
      • OpenAI compatible API: just point the openai sdk to localhost:11434
    • Runpod has out of the box support for an ollama client
  • Quicktype -> ollama (a fork thereof): see my blog post for a guide, but you can constrain LLM output to fit a typescript type (or any json schema). Useful for running experiments (for example, my implementation of TAP had no error handling / retry code needed).
    • NB: for now, you're going to have to manually build ollama for this. It's not too tricky and you can use neat flags, but the grammar PR hasn't been merged yet, so either build a branch yourself or ask me for mine (be more than happy to do it).

Swift tools

Mobile dev tools

Web dev tools

Binary analysis

  • godbolt - The compiler explorer. A tool for testing and optimizing code with different compilers and different flags. A cool example.
    • explore opt pipelines
    • view microarchitecture implications on diff arches
  • dogbolt - The reverse of godbolt, a decompiler explorer.
  • bloaty - a tool for analyzing binary code.
  • capa - a first guess at a binary's capabilities.

Rust creates

  • serde - a rust library for serializing and deserializing data.
  • tokio - a rust runtime for writing concurrent code.
  • async-std - a rust runtime for writing concurrent code.
  • wgpu - a rust library for writing cross-platform GPU code.
  • naga - a universal shader compiler (any sl to any target language).
  • bevy - a rust ECS game engine. Really nice community!
  • proptest - a rust library for property based testing.
  • cargo-watch - a rust library for watching cargo projects and running cargo commands when files change.
  • cargo-fuzz - a rust library for fuzz testing.
  • llvm-plugin-rs - out of tree llvm plugin framework! Write compiler passes without having to clone and build llvm.
  • insta - snapshot testing
  • kani - Rust formal verification engine, for times when proptesting and fuzzing won't cut it. Really nice ergonomics!

Misc

  • Obsidian Dataview - Turn your markdown notes into searchable databases and query over them.
  • Alfred (hackernews plugin)
  • Screen
  • Bun.sh - if you ever have to run npm anything or npx anything, just run bun or bunx instead. It's much faster.
  • Turbolizer - a v8 tool for analyzing and optimizing javascript code by looking at the JIT passes.
  • d8 - a v8 shell for running javascript and learning about the v8 engine and the optimizations it performs.
  • regex101 - a tool for testing regex and building them. I use this one, no particular attachment.
  • regexr - another tool for testing regex and building them.
  • v86 - Quickly run (small) OSes in the browser
  • Ball - A ball that lives in your dock. Quite fun.
  • Money stuff - Free fun "weird things in finance" newsletter.