--- title: "Bunbun" subtitle: "Cross-browser search commands" path: "bunbun" date: 2020-01-01 lang: "rust" tags: [] --- [Bunbun][1] is a search delegation service and my first project in Rust. It's a implementation of [bunny1][bunny1] that offers a simple config file as well as an extensible plugin system. An interesting note about the project is that [I've submitted a patch][hotwatch] to an library to fix a bug where the file descriptor for watching the config file would get stale. For me, it solves a lot of problems I have, particularly in the sense that it lets me write shortcuts that I know will always work, instead of relying on browsers to remember for me. Yes, existing solutions exist, such as DuckDuckGo's [bang!][ddg-bangs] as well as FireFox's shortcuts, but I believe this has a niche particularly for self-hosted or enterprise environments. As it allows for plugins to run, it can offer a uniform experience for employees or users to access common resources. Honestly, this idea didn't sell me at first, but after using a similar variant at my past work, I was completely dependent on it in only 12 weeks. I've been living on this project for months now, so I can guarantee that it works. From a privacy and security perspective, I find it to be satisfactory for my needs: 1. It only logs to `stdout` with the option to completely disable logging. 2. It's built in Rust without any `unsafe` usage, which guarantees that my code should be sound. 3. It uses `actix`, a well respected HTTP server library that is relatively receptive of security concerns. 4. Its plugin system is as private and secure as the host it's running on, and fails safe on improperly defined inputs. 5. It has meaningful tests! _Caveat emptor_[^1], of course. You should audit the code yourself, but I'm happy with the work I've made (and always receptive of feedback). [1]: https://github.com/edward-shen/bunbun [bunny1]: http://www.bunny1.org/ [hotwatch]: https://github.com/francesca64/hotwatch/pull/4 [ddg-bangs]: https://duckduckgo.com/bang [^1]: https://en.wikipedia.org/wiki/Caveat_emptor