FendApp: Building Your Own Tools

Around this time last year, I found myself frustrated with the calculators I could find online or preinstalled on my devices. The basic tools that popped up in search results were functional, sure—but they didn’t meet my needs. I wanted something that could keep track of, and refer back to, my calculation history and that could handle unit-based calculations with ease, like converting kilograms to pounds or calculating distances by multiplying speeds and durations. The available options just didn’t cut it - I often found myself opening up a browser console to do my calculations with JavaScript.

That frustration sparked an idea: why not create my own calculator app? I’d previously come across a lightweight application called Fend, which is an evaluation engine for unit-based calculations. It can handle queries like:

  • 6 km/h * 2 hours = 12 km
  • 1 kg to pounds to 3dp = approx. 2.204 pounds

This was precisely the functionality I needed. Inspired by Fend, I decided to build a custom app around it. My goal was to not only solve my own problem but also use the opportunity to learn something new.

Choosing Tools for the Job

I wanted to build a desktop application with a GUI using Rust. At the time, Rust didn’t have a lot of GUI libraries, especially not in a ready to use state or relying on web technology. I had recently discovered Freya, a Rust GUI library based on Skia—the same graphics engine that used to power Chrome and Flutter (though Flutter has since moved on). Freya was still in its early days, at version 0.1, but it was intriguing.

Combining Freya’s unreleased next version with Fend, I began piecing together my app, which I eventually called FendApp.

Building FendApp

FendApp wasn’t polished at first—it had minimal features, and the early state of Freya showed. But it worked, and it a pretty major advantage: low memory usage and quick start-up. I could open a new instance near-instantly, and leave it running in the background without any noticeable performance hit for as long as I wanted. Over time, I made small improvements and added features like click-to-copy.

Basic example of FendApp, calculations from the Fend example above

The app turned into my go-to calculator. Not only did it save me time (and frustration), but it also helped me avoid mistakes in my calculations - both the mistake-identifying functionality of the unit-aware calculation engine and the handy history reference of my app working together.

Complex example of a FendApp session, too many calculations to type here

Learning Through Building

The process of creating FendApp was as valuable as the end product. Along the way, I learned:

  • The state of Rust GUI development: Freya gave me insight into what’s possible (and challenging) when building graphical interfaces in Rust.
  • CI pipelines: I built CI pipelines for FendApp to automate testing and building. This experience later informed the CI pipelines I developed during my Google Summer of Code project.
  • Application distribution: Though I haven’t applied this skill professionally yet, packaging and distributing FendApp was a great learning experience.

FendApp also showed me the importance of iteration. While it may not have been perfect initially, gradual enhancements made it more useful over time.

Was It Worth It?

If I calculate the raw time investment in developing FendApp versus the time it has saved me, I might not break even. But in terms of frustration saved, it’s been a huge win. More importantly, the experience was an incredible learning opportunity. It pushed me to explore new technologies and refine my skills in areas I hadn’t touched before.

Why You Should Build Your Own Tools

Creating a custom app might not always be the most efficient solution to a problem, but it can be incredibly rewarding. Here’s why you might consider building your own tool:

  1. Tailored Solutions: You get exactly what you need, with the features that matter most to you.
  2. Skill Development: The process often involves learning new technologies and sharpening existing skills.
  3. Frustration Reduction: You solve your problem your way, saving yourself from the limitations of off-the-shelf solutions.

FendApp wasn’t just a calculator—it was a project that saved me headaches, taught me new skills, and gave me a deeper appreciation for building practical tools.

There’s a small project waiting for you too, if you can find it. Whether it’s a calculator, a productivity tool, or something entirely different, the journey of building your own solution can be worth far more than just the final product.

Try making your own stuff to scratch your itch. An app a website a song a poem. Because there is value in not just what you have created but in creating it.