we respect your transparency about ai usage! we're someone very anti-ai however we can't help but be absolutely blown away with how amazing this is. there's obvious love and care put into this that a fully ai generated app could not give.
you stating that you understand the code and are a designer and developer with over a decade of experience is also something that makes a lot more sense when looking at it. the app was obviously intentionally made and not just tossed together to make a quick buck.
we're an artist ourself and design is something we appreciate. you've made the app look sleek but not in a boring way. it's just nice. we love the addition of sharp corners. we love our sharp corners.
we're starting with your app on our "mass review of plural apps" document for the community, and with every swipe we swear we find something new 😭 thank you for making this!
we're curious on your process when it comes to using ai within your coding. would you ever post about the process? have you already? we might join the discord, so if you've showed processes there we'd love to join and see how you work the kinks out of ai responses.
We really respect your open-mindedness! You're right that we have put a ton of love and care into Prism – we've worked 10-12 hour days on it for months now, and prior to that it was a hobby project for nearly the last two years. Development wasn't spawned by Simply Plural's shutdown announcement, but by our desire for a tool that worked better for our system. We're definitely not here to make money – Prism is free and open-source, permissively licensed, and we're not accepting donations.
UI and UX polish is a huge part of what makes an app useful, and something we care about a ton. There's a lot more we'd love to do but there's a fundamental tension between feature development and polish that's hard to get right. We've been focused on adding functionality lately.
We've gone into a little bit of detail in how we use Large Language Models (we prefer the technical term over 'AI' which is really meaningless) in development in this old ask, along with some of our thoughts on the ethics of the industry, but are happy to elaborate here.
Early in Prism's development, we took a more traditional approach to development, working in an IDE writing code by hand, AI-assisted tab completions, the occasional question to a chatbot. In the last 6-8 months, models and their tooling have gotten way better at programming, and our workflow has shifted as a result.
If you report a bug in Prism today, this is how we go about fixing it:
First, we'll use the app on our phone or computer to reproduce your issue. When we feel we've sufficiently investigated and determined whether we can reproduce the issue or not, we'll write a description of what we did, and a couple ideas of what we think the issue may be based on our mental map of the code.
We pass that investigation (not your report) to an LLM with custom skills we've built for debugging – that gives the model an understanding of Prism's structure, conventions, and a summary of previous issues and common pitfalls.
Greater than 90% of the time, the model is able to root cause the issue and implement a fix without much further input. The agent has access to documentation, all of the code, web search, and iOS/Android simulators. This means it is able to autonomously research a bug, try solutions, and test until it's fixed.
Anthropic's new Claude Fable 5 model was remarkable in this regard (before being shut down by the US Government). You could throw it a loosely defined task and it could actually figure out what you wanted. Other models require a bit more hand-holding, and our documentation and tooling help a ton there.
Things like a photo not rendering properly, a markdown bug, a custom field not getting updated – these are all things that we can throw at a model and not have to spend time working on. This lets us focus on larger features, internal structures, and design.
You inquired as to how we get the kinks out of AI responses, and a lot of that is adversarial review. You can have a different model/agent review the code generated from another, and because of the non-deterministic nature of language models, you'll almost certainly come across some issues. A couple rounds back and forth in review will surface small syntax errors, UI nits, and integration problems.
The other side is testing, testing, testing. Prism has 9,774 tests spanning UI. performance, sync, encryption, PluralKit sync, Simply Plural import, updates, and more. If a change we or an agent makes breaks behavior that's tested, we know immediately. Every time we encounter a new issue, we add a regression test so that it doesn't happen again. This also lets us do things like make large refactors to UI rendering, Prism Sync, and PluralKit sync while feeling confident we're not introducing new bugs. The next version of Prism will include significant changes to all of those areas, ideally with no user-visible impact other than better performance and reliability.
Apologies for the (entirely human-written) wall of text, we are really passionate about tooling, workflows, and the speed and force multiplication that can come from responsibly using AI in development. We're always happy to answer further questions, or chat in Discord if there's specifics you'd like to know about.