HNHacker News
TopNewBestAskShowJobs

ollien

1,231 karma · joined March 29, 2015

submissionscomments
ollien··on Supabase MCP can leak your entire SQL database
We're agreeing, here. I'm in fact suggesting you _shouldn't_ use the output from your database as input.
ollien··on Supabase MCP can leak your entire SQL database
I won't claim to be as well-versed as you are in security compliance -- in fact I will say I definitively am not. Why would you think that it isn't a meaningful difference here? I would never simply pipe sqlite3 output to `eval`, but that's effectively what the MCP tool output is doing.
ollien··on Supabase MCP can leak your entire SQL database
> It is also crazy to point that command at a production database and do random stuff with it

In a REPL, the output is printed. In a LLM interface w/ MCP, the output is, for all intents and purposes, evaluated. These are pretty fundamentally different; you're not doing "random" stuff with a REPL, you're evaluating a command and _only_ printing the output. This would be like someone copying the output from their SQL query back into the prompt, which is of course a bad idea.

ollien··on Supabase MCP can leak your entire SQL database
Untrusted user input can be escaped if you _must_ eval (however ill-advised), depending on your language (look no further than shell escaping...). There is a set of rules you can apply to guarantee untrusted input will be stringified and not run as code. They may be fiddly, and you may wish to outsource them to a battle-tested library, but they _do_ exist.

Nothing exists like this for an LLM.

ollien··on Supabase MCP can leak your entire SQL database
You're technically right, but by reducing the problem to being "just" another form of a classic internal XSS, missing the forest for the trees.

An XSS mitigation takes a blob of input and converts it into something that we can say with certainty will never execute. With prompt injection mitigation, there is no set of deterministic rules we can apply to a blob of input to make it "not LLM instructions". To this end, it is fundamentally unsafe to feed _any_ untrusted input into an LLM that has access to privileged information.

ollien··on Google Cloud Incident Report – 2025-06-13
What is the difference between a red button and a feature flag, anyway? The report says there was no feature flagging, yet they had this "red button".

It sounds to me like something needed to be recompiled and redeployed.

ollien··on Ditching Obsidian and building my own
Always possible, just not something I really want to do :)
ollien··on Ditching Obsidian and building my own
I wrote my own CLI tool for notes a few months ago (https://github.com/ollien/quicknotes). A web interface with proper rendering is something I thought about, but didn't pursue because I just know my UI skills aren't up to the task. Directus is a really interesting compromise!
ollien··on Notes on rolling out Cursor and Claude Code
> The product manager he sits next to has shipped 130 PRs in the last 12 months. When we look for easy wins and small tasks for new starters, it’s harder now, because he’s always got an agent chewing through those in the background.

I'd be curious to hear more about this, whether from the author or from someone who does something similar. When the author says "background", does that literally mean JIRA tickets are being assigned to the agent, and it's spitting back full PRs? Is this setup practical?

ollien··on Learn You Some Erlang for Great Good (2013)
I haven't read the Haskell version (or at least, not more than a small portion and in a long time), so I can't comment on the comparison, but what did you find insufficient about the "So what's Erlang?" section? I think it explains the benefits quite well, though I am someone who writes BEAM code for a living :)
ollien··on Troubled Amazon drone delivery program faces latest challenge: Annoyed residents
What constitutes a garden? Does a small front lawn count?
ollien··on Introduction to Golang Preemption Mechanisms
Great post! One question that lingered for me is: what are asynchronous safe-points? The post goes into some detail about their synchronous counterparts
ollien··on Framework Laptop 13 Deep Dive: A laptop webcam with smartphone technology
No, but a RISC-V partner-made mainboard was just announced.
ollien··on Just Enough Software Architecture (2010)
I've heard that positive spin responded to with "this company is my biggest investment, I'm not going anywhere" :)
ollien··on Don't DRY Your Code Prematurely
> In WET code (write everything twice) everything looks primitive, as if it was written by complete newbie, and every change needs to be added at multiple places, but each change is trivial and time to finish is predictable. I would go as far as calling the code boring. The most difficult thing is to resist the temptation to remove the duplicity.

This only scales so far. After some point, it's very easy to run into cases where you meant to change something everywhere but forgot/didn't know about others. Not to say everything should be so compartmentalized as to restrict change, but there is a balance to be had.

ollien··on Take a look at Traefik, even if you don't use containers
Oh nice! I'll admit, my comment was based on outdated knowledge (the last time I used Pyandtic for a major project was in 1.x).

https://github.com/pydantic/pydantic/issues/1339

ollien··on Take a look at Traefik, even if you don't use containers
Pydantic falls into this box for me. The maintainer refuses to build API reference documentation, as they feel that there should only be one source of information. It's their project, of course, but every time I need to find a method on an object, I am scouring pages of prose for it. Sometimes it's just easier to read the source.
ollien··on Fairbuds: In-ear with replaceable batteries
If you're in the market ever again, take a look at the Sony Linkbuds. I've enjoyed mine for exactly this reason
ollien··on New Beeper Android app – Open beta test
AFAICR it still "works" if you do a ton of manual setup. They basically said they're not going to support it because it's bad PR
ollien··on gh-116167: Allow disabling the GIL
How do single-threaded programs benefit from a lack of GIL?
ollien··on gh-116167: Allow disabling the GIL
I mean, you're not wrong, but also it's a huge feat to provide a toggle for a major feature like the GIL. Though, if it's just asyncio that's broken, perhaps it's not like removing your engine, but rather your antilock brakes :)

EDIT:

> [the test synchronous programs] all seem to run fine, and very basic threaded programs work, sometimes

Perhaps this is closer to removing the oil pan

ollien··on Intentionally Blank Page
The joke is that I got to be a bit of a smartass and say "you asked me to print double-sided, well here you go!"

I was a much different person then in terms of what I considered to be acceptable (who wasn't, at 16?), but I still find the story amusing.

ollien··on Intentionally Blank Page
Heh... did you look me up? (EDIT: I forgot I recently commented about my highschool tenure until now. Hah!)

Yeah, this was 2015-2016. Yes, the school printer and my home printer supported it, I was just forgetful and a bit of a smartass :)

ollien··on Intentionally Blank Page
Funny story - when I was in high school, my physics teacher used to get on my case about not printing my lab reports double-sided, and how I was wasting paper. The next time I handed one in, I printed double-sided, but I put "This page was intentionally left blank." on every other page.
ollien··on Go Enums Suck
Python does have enums in its standard library

https://docs.python.org/3/library/enum.html

ollien··on Google Promises Unlimited Storage; Cancels; Tells Journalist Life's Work Deleted
No, I agree. Sorry, my phrasing there was poor. I meant: it is completely reasonable to say that "he has seven days to download it", not that it is completely reasonable for him to only have seven days.
ollien··on Google Promises Unlimited Storage; Cancels; Tells Journalist Life's Work Deleted
The six-month grace period notice pretty clearly states his data would be read-only, while the seven-day notice seems to be the first time destruction is even mentioned. I think we can both agree that there's a world of difference between data being read-only and being destroyed. I think it's completely reasonable to say he has 7 days to download it.
ollien··on datetime.utcnow() is now deprecated
It is one that can be found via static analysis. That may not be true if behavior is changed. In some cases, this may be "ok" (see: Go's recent loop changes), but in others, it may not.
ollien··on Framework 13 with AMD Ryzen 7040 Series Makes for a Great Linux Laptop
I admittedly just got my Framework a couple of days ago, but I found scaling the text size to be sufficient in quite a lot of cases, at least for me, in XFCE.
ollien··on Framework 13 with AMD Ryzen 7040 Series Makes for a Great Linux Laptop
Yeah, some of the wifi drivers aren't available in the stock W11 image.
← PreviousPage 2 of 11Next →