# Carmine Paolino > I build AI tools at Chat with Work and RubyLLM. Co-founded Freshflow. Outside tech, I make music, run Floppy Disco, and take photos. ## About Carmine Paolino is an AI engineer, open-source maintainer, and founder building AI tools at Chat with Work and RubyLLM. He previously co-founded Freshflow and also publishes music and photography. - Role: AI engineer, open-source maintainer, and founder ## Key Topics - Ruby - Ruby on Rails - Jekyll - AI applications - Large language models - LLM APIs - RubyLLM - Open source software - Async Ruby - Developer tooling - Product engineering - Startups - Music technology - House music - Photography ## Core Topics Ruby, Rails, Jekyll, AI applications, LLM APIs, open source, async Ruby, developer tooling, product engineering, startups, music, and photography. ## Primary Projects RubyLLM, Chat with Work, Floppy Disco, Crimson Lake, Paolino Photography, Cluster Headache Tracker, and Jekyll VitePress Theme. ## Posts - [RubyLLM::Schema Is Now Schematist: A JSON Schema DSL for Ruby with Full Draft 2020-12 Coverage](https://paolino.me/schematist/): RubyLLM::Schema is now Schematist: a general purpose JSON Schema DSL with full Draft 2020-12 coverage, values resolved at render time, and no runtime dependencies. - [Founding a Company in Germany: €9,600, 152 Days, and I Still Can't Send an Invoice](https://paolino.me/founding-a-company-in-germany/): I started a company in Germany in late January. By late June I had spent 9,600 euros, registered two companies, and still cannot issue a single invoice of my own. Here is the timeline, with the bill next to every step. - [RubyLLM 1.16: Concurrent Tool Execution, Rails-Style Instrumentation, and api_base for Every Provider](https://paolino.me/rubyllm-1-16/): RubyLLM 1.16 runs your tools concurrently in threads or fibers, makes RubyLLM observable without monkey patching, and lets every native provider sit behind a proxy. - [Engineering Is Not Dead, Because Accountability Isn't](https://paolino.me/engineering-is-not-dead/): Models can generate the code. They cannot be accountable for it. The real distinction is whether the result is owned. - [Production Experience Cannot Be Hallucinated](https://paolino.me/production-experience-cannot-be-hallucinated/): A paid Medium article claimed hard-won production lessons about RubyLLM. The code had not even run, and the regenerated version only made the fake experience harder to spot. - [RubyLLM 1.15: Image Editing, Cost Tracking and Less Tool Boilerplate](https://paolino.me/rubyllm-1-15/): RubyLLM 1.15 adds image editing, cost tracking, inferred tool parameters, additive callbacks, and Rails fixes. - [kamal-backup: Scheduled Rails Backups for Kamal Apps](https://paolino.me/kamal-backup/): One Kamal accessory for encrypted Rails database and Active Storage backups, restore drills, and redacted evidence for security reviews. - [Ruby Concurrency: What Actually Happens](https://paolino.me/ruby-concurrency-what-actually-happens/): Every 'what happens when' question about Ruby concurrency, answered with diagrams. - [Making the Rails Default Job Queue Fiber-Based](https://paolino.me/solid-queue-doesnt-need-a-thread-per-job/): I patched Solid Queue to run jobs as fibers. Now it ships in 1.6.0, making the Rails default ready for highly concurrent, cooperative I/O-bound jobs. - [Your Agent's Context Window Is Not a Junk Drawer](https://paolino.me/your-agents-context-window-is-not-a-junk-drawer/): Strategies to combat context rot. - [I Built a Monitor Configuration Tool for Hyprland](https://paolino.me/hyprmoncfg-monitor-configuration-for-hyprland/): A spatial TUI editor with drag-and-drop, safe apply with revert, workspace planning, and a hotplug daemon. All in two zero-dependency Go binaries. - [Comb Shaped Slices](https://paolino.me/comb-shaped-slices/): You don't need to pick a vertical. Build for yourself, listen to your customers, and the shape that emerges is yours. - [Ruby Deserves Beautiful Documentation](https://paolino.me/ruby-deserves-beautiful-documentation/): The Ruby community doesn't have a great documentation theme. So I made one. Jekyll VitePress Theme brings VitePress's docs UX to Jekyll. - [RubyLLM 1.14: From Zero to AI Chat App in Under Two Minutes](https://paolino.me/rubyllm-1-14-chat-ui/): RubyLLM 1.14 ships a Tailwind chat UI, Rails generators for agents and tools, and a simplified config DSL. Watch the full setup in 1:46. - [Ruby Is the Best Language for Building AI Apps](https://paolino.me/ruby-is-the-best-language-for-ai-apps/): A pragmatic, code-first argument for Ruby as the best language to ship AI products in 2026. - [RubyLLM 1.12: Agents Are Just LLMs with Tools](https://paolino.me/rubyllm-1-12-agents/): Agents aren't magic. They're LLMs that can call your code. RubyLLM 1.12 adds a clean DSL to define and reuse them. - [Dictation Is the New Prompt (Voxtype on Omarchy)](https://paolino.me/dictation-is-the-new-prompt/): Stop typing every prompt. Speak it instead, with a fast Rust stack and a clean Omarchy setup. - [Nano Banana with RubyLLM](https://paolino.me/nano-banana-with-rubyllm/): Nano Banana hides behind Google's chat endpoint. Here's the straight line to ship it with RubyLLM. - [RubyLLM 1.4-1.5.1: Three Releases in Three Days](https://paolino.me/rubyllm-1.4-1.5.1/): Structured output that works, Rails generators that didn't exist, and why we shipped Wednesday, Friday, and Friday again. - [Async Ruby is the Future of AI Apps (And It's Already Here)](https://paolino.me/async-ruby-is-the-future/): How Ruby's async ecosystem transforms resource-intensive LLM applications into efficient, scalable systems - without rewriting your codebase. - [RubyLLM 1.3.0: Smarter Attachments, Multi-Tenancy, and No More Manual Model Tracking](https://paolino.me/rubyllm-1-3/): Attachments figure themselves out, contexts isolate configuration per tenant, and model data stays current automatically. - [The LLM Capabilities and Pricing API is Live](https://paolino.me/standard-api-llm-capabilities-pricing-live/): The standard API for LLM model information I announced last month is now live and already integrated into RubyLLM 1.3.0. - [A Standard API for LLM Capabilities and Pricing](https://paolino.me/standard-api-llm-capabilities-pricing/): No provider exposes model capabilities and pricing through their API. So we're building one. - [RubyLLM 1.0](https://paolino.me/rubyllm-1-0/): One Ruby API for OpenAI, Claude, Gemini, and more. Chat, tools, streaming, Rails integration. No ceremony. - [Building Cluster Headache Tracker from a Hospital Bed](https://paolino.me/cluster-headache-tracker/): Cluster headaches hit up to eight times a day. The hospital gave me a paper form with one line per day. So I built an app between attacks. - [Bye Freshflow](https://paolino.me/bye-freshflow/): I co-founded Freshflow 3.5 years ago. Now I'm leaving to build something of my own. ## Links - About: https://paolino.me/about/ - GitHub: https://github.com/crmne - LinkedIn: https://www.linkedin.com/in/carminepaolino - Twitter: https://twitter.com/paolino - Instagram: https://www.instagram.com/crmne/ - Soundcloud: https://soundcloud.com/crimsonlakemusic - Paolino: https://paolino.photography - Crimsonlake: https://crimsonlake.live