I recently added a new feedback widget to this site โ€“ Feedback.one โ€“ and I’m impressed enough with it that I thought it deserved its own post. Beyond being a useful tool, it’s also an excellent example of how functional programming languages like Elm can shine in production environments.

What is Feedback.one? Link to heading

At its core, Feedback.one is a simple but powerful tool that adds a non-intrusive feedback button to your website. With one line of code, you get:

  • A nice and simple feedback widget that doesn’t interfere with your site’s design
  • Unlimited feedback submissions (yes, actually unlimited, not “unlimited until you hit our secret cap”)
  • No impact on your site’s performance
  • A clean dashboard to manage and respond to feedback

What makes it particularly interesting to me is the tech stack: it’s built with Elm and Rust โ€“ two languages that prioritize correctness, performance, and maintainability. And they’re using the Astro web framework. Cool, to say the least!

Why the Tech Stack Matters Link to heading

When choosing tools for your project, the underlying technology might seem irrelevant โ€“ after all, users care about features and experience, not implementation details. But the tech stack often reveals the values and priorities of the creators.

Elm: Correctness by Design Link to heading

Elm is a functional language that compiles to JavaScript and is specifically designed for building reliable web applications. If you’ve read my previous post on Elm, you know I’m a fan of its approach to frontend development.

The fact that Feedback.one uses Elm suggests a few things:

  1. Reliability is a priority โ€“ Elm’s compiler is famous for catching errors at compile time that would be runtime errors in JavaScript
  2. Long-term maintenance matters โ€“ Elm code tends to be more maintainable as projects grow
  3. The team values functional programming principles โ€“ Immutability, pure functions, and strong typing

Rust: Performance and Safety Link to heading

On the backend, Feedback.one uses Rust โ€“ a systems programming language focused on safety, speed, and concurrency. Rust’s memory safety guarantees without garbage collection make it ideal for performance-critical applications.

Using Rust indicates:

  1. Performance is taken seriously โ€“ Rust is consistently among the fastest languages available
  2. Security is a core concern โ€“ Rust’s ownership model prevents entire classes of bugs
  3. The team is willing to invest in the right tools โ€“ Rust has a steeper learning curve than many alternatives

The User Experience Link to heading

What I appreciate most about Feedback.one is how it balances simplicity with effectiveness. The integration process couldn’t be simpler:

<script
  src="https://sdk.feedback.one/v0/core.min.js"
  data-project-id="[insert-project-id]"
  defer
></script>

That’s it. One line of code and you’re done.

The widget itself is equally thoughtful โ€“ it sits unobtrusively in the corner of your site until needed, then expands into a clean, focused interface when clicked. No popups, no interruptions to the user experience, just a helpful tool available when wanted.

The Business Model: Refreshingly Honest Link to heading

In an era of “free tiers” that are really just limited trials, Feedback.one’s approach is refreshing. Their basic service is genuinely free, with no artificial limits on submissions or users.

Their stated plan is to monetize through advanced features later while keeping the core functionality free. This aligns with the values suggested by their tech choices โ€“ building something sustainable and valuable rather than optimizing for short-term gains.

Why I Added It to My Site Link to heading

I’ve always believed that direct feedback from readers is invaluable, but I’ve been hesitant to add complex widgets that might slow down the site or compromise privacy. Feedback.one struck the right balance for me:

  1. Lightweight โ€“ No performance impact
  2. Non-intrusive โ€“ Doesn’t interfere with the reading experience
  3. Privacy-focused โ€“ No tracking or analytics beyond what’s needed for the feedback itself
  4. Simple to implement โ€“ I spent more time writing this blog post than implementing the widget

And while it’s mostly designed as a means to give feedback for systems more complicated than my blog (:D), I thought it interesting (and simple) enough to give it a go.

The Bigger Picture: Functional Programming in Production Link to heading

Beyond its practical utility, Feedback.one serves as a case study for functional programming in production. It demonstrates that languages like Elm and Rust aren’t just academic curiosities โ€“ they can power real-world tools that are simple, reliable, and performant.

This matters because we often see a disconnect between programming paradigms that are theoretically “better” and what actually gets used in production. Tools like Feedback.one help bridge that gap, showing that the benefits of functional programming can translate directly to better products.

Try It Out Link to heading

If you’re reading this post and have thoughts to share, you can use the feedback button on the right side of the page. It’s a small example of the tool in action, and I’d love to hear what you think โ€“ about this post, about Feedback.one, or about the site in general.

And if you’re building your own site or application, consider giving Feedback.one a try. It’s a simple tool that does one thing well, built with technologies that prioritize correctness and maintainability โ€“ values that align well with creating quality software.

Resources Link to heading

  • Feedback.one โ€“ The official site
  • Elm โ€“ The functional language for reliable webapps
  • Elm Land โ€“ The framework used by Feedback.one for their Elm implementation
  • Rust โ€“ A language empowering everyone to build reliable and efficient software
  • Astro โ€“ A web framework for content-driven websites

One last thing Link to heading

This might be a topic for an upcoming post, but just saying: They also built and open sourced Elmstronaut, an Astro integration for rendering Elm modules as Astro components. I definitely need to look into that! Well done.

Michael Scott: “I Like It”