fredwu

fredwu

Hey folks,

Just wanted to share my journey and experiences so far. Preface: I’ve been using Elixir for about 10 years now, so relatively experienced. Over the years I’ve contributed to and released a few open source libraries in Elixir too (Petal, ExDoubleEntry, Crawler, Simple Bayes and OPQ, etc).

I’ve worked on many commercial projects in Elixir, but about 2-3 years ago I started building my own SaaS products - mostly because there were products I wanted to use but didn’t exist.

First was Persumi - a blogging platform that turns your blog into audio, because I started consuming way more audiobooks and podcasts than I do blogs and books.

Then there was Rizz.farm - a Reddit lead generation platform, because I wanted a tool to help me organically grow Persumi.

And a few weeks ago, I started building FeedBun - a browser extension that decodes food labels for healthy eating, because I wanted something similar and all I can find were barcode scanning tools.

Anyway, the products themselves aren’t the focus, because this is an Elixir forum, let’s talk about the tech.

Several years ago I stumbled upon Petal when I was trying to find a boilerplate to save me time building things like auth. Quickly I started contributing to it, and I’m very happy and proud to be part of a project that have helped many (myself included) launch products faster.

All three products were built on Petal, and Postgres. I deploy them to Fly.io - which has been a mixed bag experience for me. I still like its globally-distributed nature, but stability isn’t their strength. For Persumi and Rizz.farm, I also used Fly’s (unmanaged) Postgres, and have only just very recently migrated them to Fly’s managed Postgres. The experience again was a mixed bag - at the time of my migration, their managed Postgres didn’t support the citext extension. Though according to their docs it’s now supported? I can’t confirm.

For FeedBun, I opt’ed to using Supabase. So far it’s been a painless experience so fingers crossed.

Persumi and Rizz.farm were both mostly hand-written, in a sense that Github Copilot back in the day didn’t do much beyond some basic auto-completion, which in itself was a hit and miss. It took me three months to build Persumi, and six weeks to build Rizz.farm, both were built whilst having a full time job.

The apps themselves are relatively straightforward. For Persumi I did initially experiment doing TTS (text-to-speech) inference on CPU locally on the server. Turns out it was a bad idea so I quickly pivoted to using Azure and Google’s TTS. With Rizz.farm there’s also integration with Reddit API and Google’s Search API. Reddit’s API is… “interesting” - kind of feels like looking at API docs from the 2000s, ha.

This time around, building FeedBun was “a little different”. Well, the tech stack is the same, just with more integration with LLM providers, I integrate with AWS Bedrock, Google Vertex, OpenRouter, Perplexity and OpenAI. This is so that I have a rich suite of LLM models to pick and choose, and to experiment and benchmark for different tasks. I built a bespoke solution to always have a list of LLM models (preferably from different providers) for any given task, so that if one LLM fails, the next one would come in and take over. I’ve configured “model groups” - ones that are hand-picked to do certain tasks, for example, smaller, low latency models for quick extraction tasks, grounded models for doing research tasks to greatly reduce / eliminate hallucination, etc.

Out of all the LLM models, surprisingly, my favourite ones are from Amazon’s Nova family. There are very cheap, and are extremely fast (low latency). My least favourite models are actually the OpenAI ones… No hate, just for some reason their models didn’t work very well for the prompts I have. In total I have about two dozens of LLM models configured in my app (not all are used).

The fact that I was able to release FeedBun as an alpha build, in just a few weeks, all comes down to using AI to help me code. I use Claude Code after having used Cursor for a while. Claude Code with Opus is quite good. Sometimes it drives me crazy, but overall I could not have built FeedBun in such a short amount of time without it, so I’m grateful for the advancements we’re seeing in the machine learning space.

Anyway, I’ve been rambling, this post was entirely hand-written, lol. Just thought I’d jot down these thoughts to share. If you’ve got any questions please feel free to ask.

Where Next? Top

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 94592 917
New
cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
caslu
I want to open this thread for you all to discuss and help those who really like Ash but are still hesitant to use it in a real project. ...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
heathen
Quite interesting article Google brought me. Didn’t find any mentions about it here. What do you think in general? Would you use togethe...
New
maennchen
:warning: Security advisory: Decimal DoS vulnerability A vulnerability has been published for decimal where very large exponents can cau...
New
marciol
It would be helpful to have a list of companies worldwide that hire engineers without prior experience in Elixir. Often, it can be quite ...
New

Other Trending Topics Top

marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews