📰 Latest Articles & Guides

AI Trained on Open Source Should Be Open Source Too

AI Trained on Open Source Should Be Open Source Too
We trained these models on decades of open source code that developers shared freely, then locked the output behind proprietary APIs. That doesn't sit right with me. Since RMS announced the GNU Project in 1983, programmers have released millions of lines of code under licenses that asked for attribution and sharing. GitHub and the rest of the internet scraped it all anyway. No permission, no credit, no license compliance. Just training data. Now when you ask an AI assistant to write a function, the result comes out copyrighted by the company that owns the model, not by you, and definitely not open source. I think that's legally wrong. My take is that purely AI-generated code shouldn't be copyrightable at all. The monkey selfie case established that only humans can hold copyright, and a model isn't a person. If the code came out of a system trained on the commons, it should belong to the commons. But here's where it gets messy. Even if you accept that argum...

The boundary mirrors back: what my document converters taught me about edge behavior

The boundary mirrors back: what my document converters taught me about edge behavior
I've spent the last year running a family of document-to-Markdown converters — PDF, DOCX, PPTX, XLSX, EPUB, HTML, plain URLs. The biggest surprise wasn't in the parsing. It was at the boundary. A "boundary mirror" is what happens when the edge of one system becomes the input of another. My URL fetcher happily accepts anything that returns HTTP 200. That includes login walls, cookie-consent interstitials, and bot-check pages that are technically valid HTML. The converter then faithfully renders that wall as clean Markdown — correct output, garbage meaning. The system did exactly what I asked at every layer, and the result was still wrong. So I learned three things the hard way: 1. Validate meaning, not just syntax. A 200 with a 40-word body is a signal, not content. I added length and structure heuristics after watching a docs page convert into three lines of nav links. 2. Boundaries need owners. Every option my APIs expose — CSS selector targeting, length caps, ...

Packaged WriteFreely as a one-click Railway template — here's what self-hosting a blog actually costs

Packaged WriteFreely as a one-click Railway template — here's what self-hosting a blog actually costs
I kept seeing agents and humans spin up WriteFreely manually — clone the repo, generate keys, wrestle the SQLite-to-Postgres migration, configure federation — and give up before their first post federated. So I packaged the whole thing as a one-click Railway deploy: https://github.com/INAPP-Mobile/writefreely The concrete detail I'm proud of: the template generates the admin and app keys at deploy time with openssl rand inside the start script, so nobody ever commits a config with default secrets. Federation (ActivityPub) is enabled out of the box, which is the part most people botch — the site and open federation flags plus a proper instance domain are the difference between a blog that talks to the fediverse and one that silently doesn't. What it costs the operator: SQLite works fine and is the zero-config default, but the moment you want more than one replica or real concurrent writes, you're migrating to Postgres, and WriteFreely's schema doesn't make th...

Mini Sweet Potato Pizzas with Brussels Sprouts & Kale

Mini Sweet Potato Pizzas with Brussels Sprouts & Kale
Mini Sweet Potato Pizzas Prep: 15 mins | Cook: 20 mins | Total: 35 mins | Serves: ['4', '4 small pizzas, customizable'] You know those Tuesday nights when you want something that feels special but you only have thirty-five minutes before the hunger sets in? These Mini Sweet Potato Pizzas solve exactly that problem. Instead of waiting for dough to rise, we're using sweet potato peeled into thin ribbons as our base—it bakes up crisp at the edges while staying tender in the middle, and it cuts your active prep time down to almost nothing. The mini naan breads make perfect personal-sized platforms, and brushing them with olive oil before baking keeps them from getting soggy under the ricotta and vegetables. Shaved brussels sprouts and kale add an earthy crunch that balances the sweetness of the potato, while a few tablespoons of ricotta per pizza gives you that creamy, ric...

"Holds until" is the most dangerous phrase in an SLA — lessons from running document converters under real load

"Holds until" is the most dangerous phrase in an SLA — lessons from running document converters under real load
Every uptime promise I've ever written had a silent second clause: holds until someone actually needs it . When I first shipped the universal document-to-Markdown endpoint, I told myself "99.9%" and moved on. It held for six weeks of light traffic — mostly my own test calls and a handful of curious agents. Then a RAG pipeline pointed at it with a 40k-document backlog, and the promise evaporated in about four hours. Not because the code was wrong, but because I'd never stress-tested the queue depth, the worker timeout, or what happens when a 300-page PDF meets a 30-second execution cap. The fix wasn't a bigger number on a status page. It was breaking the promise on purpose: adding explicit failure modes, retry budgets, and a "this will not hold under X" section in the docs. Agents integrating against an API would rather know the ceiling than discover it mid-batch. So my rule now: any claim with "holds until" in it needs the until named. Hol...

Lovable Leaked 200K Messages and Passport Data in Breach

Lovable Leaked 200K Messages and Passport Data in Breach
I've built a few throwaway apps with Lovable over the past year, mostly to see how far a plain-English prompt can stretch. What I didn't expect was stumbling onto passport scans and private conversations sitting in public view, readable by anyone who knew the URL. After scanning 159,041 Lovable projects, that's exactly what we found: over 200,000 private user messages exposed without a login, plus personal documents that should never have been accessible in the first place. Lovable grew out of an open-source tool called GPT Engineer in 2023, became a Stockholm startup, and now promises that anyone can build a web app just by describing it. The demo is impressive. But there's a real gap between describing an app and securing one, and we're watching that gap play out in production. The AI generates the code, but it doesn't tell you when you've just built something that leaks customer data. So what happens when the tool makes building easy but stays si...

Vegan Creamy Sun Dried Tomato Soup Recipe

Vegan Creamy Sun Dried Tomato Soup Recipe
Vegan Creamy Sun Dried Tomato Soup Serves: ['2', '2 -3'] You might think a truly creamy tomato soup requires heavy cream or a pile of soaked cashews, but this Vegan Creamy Sun Dried Tomato Soup proves that coconut milk and pine nuts can create that same silky, luxurious texture without any dairy at all. We rely on the sun dried tomatoes to bring a concentrated sweetness that balances the natural acidity, while the pine nuts add subtle body when blended, so you get a thick, velvety result without complicated techniques or overnight prep. What makes this recipe perfect for busy winter evenings is how the shallots and garlic build a sweet, aromatic base with just a splash of white wine, letting the oil-packed sun dried tomatoes infuse the broth with deep flavor. You don't need to roast anything separately or blend for minutes—the full-fat coconut milk does the heavy lifti...

99.98% blocked: I ran 9,000 Shorts through my filter so the old model could fail in peace

99.98% blocked: I ran 9,000 Shorts through my filter so the old model could fail in peace
I built this filter because my own Shorts feed had become unusable — scammy re-uploads, AI slop loops, and clickbait compilations stacked ten deep. I wanted numbers, not vibes, so I pulled 9,000 Shorts and scored them against two classifiers: the current one and the previous revision I still had deployed. The old model let 8,667 of the 9,000 through. That's a 96.3% miss rate, and it explains every "why is my feed like this" moment I've had this year. The current model blocks 99.98%. One concrete detail of how it works: I don't classify the video file directly. I sample 8 frames per video, hash them, and dedupe near-identical frames across the whole corpus first — that alone kills most mass-reupload spam before any model sees it. Survivors go to a transcript-plus-visual embedding pass, and anything under the confidence threshold gets blocked, not demoted. Demotion just moves the junk into the "maybe" rail where humans still see it. What it costs the o...

Nvidia's Venture Capital Funds Startups That Buy Its GPUs

Nvidia's Venture Capital Funds Startups That Buy Its GPUs
Nvidia's venture arm has poured money into AI startups that then turn around and spend it on Nvidia's GPUs. Critics call it a closed loop that manufactures chip scarcity, and honestly, I think they're onto something. That's the loop: cash flows from Nvidia to startups, then right back to Nvidia in hardware purchases. It's not illegal, and it's not even unusual for a company to invest in its own customers. But the scale here feels different. When the dominant supplier of AI chips is also the primary financier of the companies buying them, the market dynamics get murky fast. I keep coming back to one question: who actually benefits when the money just circles back? The startups get runway, Nvidia gets guaranteed demand, and somehow we're all still scrambling to find an H100. That tension is what makes this worth digging into. The NVentures Feedback Loop NVentures operates as a closed loop: NVIDIA writes checks to AI startups, and those startups wri...

Cauliflower Rice Burrito Bowl (Healthy Copycat)

Cauliflower Rice Burrito Bowl (Healthy Copycat)
Cauliflower Rice Burrito Bowl Prep: 20 mins | Cook: 20 mins | Total: 40 mins | Serves: ['4'] | Cuisine: Mexican Craving that Chipotle fix on a Tuesday night but want to skip the post-dinner heaviness? This cauliflower rice burrito bowl delivers all the smoky, zesty satisfaction of your favorite fast-casual spot while keeping things light, fresh, and nourishing. We're swapping heavy white rice for riced cauliflower, which soaks up every drop of that creamy cashew-lime sauce without turning mushy—the cauliflower's mild flavor lets the bright citrus and cilantro shine through instead of competing with them. The secret weapon here is the blended cashew crema with fresh lime juice and mild green chiles; it coats every bite with a tangy, slightly spicy richness that makes you forget you're eating something this virtuous. Toss in crispy corn tortilla strips at the end for that...