@pranay on FRC Programming (Raycast Extension)
Hello everyone!
I built a Raycast extension built for FRC (FIRST Robotics Competition) programmers. It basically has a couple of commands for looking up documentation and converting common FRC-specific units right inside Raycast instead of having a bunch of tabs open to do the same thing.
If you haven’t used it, [Raycast](https://www.raycast.com/) is a super fast keyboard launcher app where you can search, run commands, and build little custom extensions that can be then be used really easily on your computer. FRC is a robotics competition where high school teams build and program robots to compete in a game that changes every year, and [WPILib](https://docs.wpilib.org/en/stable/index.html) is the software library most FRC teams use to write their robot's code.
### What The Extension Does
The extension has the following features: searchable WPILib Java and C++ documentation, a quick link to WPILib's status light reference page for decoding hardware indicator lights, and a unit converter for things like velocity, angular velocity, torque, and force that come up sometimes when writing robot code and just robot stuff in general.
Instead of scraping documentation webpages, the Java and C++ commands pull the same search index files that power each site's own search bar, parse them into something usable, and cache the results so repeat searches are instant rather than re-fetching every time.
### Roadblocks
Adding the Python documentation feature was a huge headache since the url I was pulling the search data from kept randomly blocking requests and instead sent a Cloudflare auth page (which is a good thing, I'm not saying human auth pages are bad), and nothing I tried got around it consistently. I eventually had to just cut the feature from the extension.
Aside from that, there was a lot of annoying bug hunting in the unit converter, you know the kind where you try and hit flies with your hands, but you simply can't move fast enough. Anyway, I also had to figure out how to use markdown (the detail panels in Raycast use markdown) and make it look good. That learning started as an annoying process due to markdown's limitations, but it actually became quite fun trying to work around those limitations.
### What I'm proud of
I'm most proud of the unit converter. Though the Java and C++ documentation search are more useful, I just had a really fun time mapping out the logic for the unit converter and actually coding it when compared to the documentation search features.
This is also the first time I’ve built something intended for other people to use. I’ve always coded random passion projects in my free time, but actually shipping something that's actually useful for other people is a huge first for me.
### Try it Out
The Try it Out button takes you to instructions that tell you how to install the extension. Sorry that the process is a hassle, but until Raycast approves the extension, this is the only way to share the project with people.
- 5 devlogs
- 10h