Hacker Newsnew | past | comments | ask | show | jobs | submit | pjm331's commentslogin

Yes I had a fun experience where it kept on timing out on a seemingly mundane task and it turned out I had written the ask in a way that was impossible to test

and i `brew update && brew upgrade --greedy` every morning with my first cup of coffee because i like to live on the edge like that

thanks for all your work!


so i think the thing that everyone building these git alternatives is missing is a multi-repo story - unless the expectation is that everyone is going to start operating out of monorepos

i've settled on all of this context attached to issues in a project management system and referenced from commits

it works just fine - its not like your agent cannot read your issue tracker


I've built some skills to help work with multiple repos, but it's really annoying how e.g. repo-specific .claude/ configs are only read when you start the agent in the repo folder. There's a ton of low hanging fruit to improve dev experience.

I came across the conclusion here since a change sometimes spans several repos, per-repo history optimizes the wrong target.

Maybe there’s a case to be made for a system that combines issue tracking, Slack conversations, PR reviewing, angent harness, and collaborative editing in a single tool. And Zed could make a nice system to build that tool on top of.

i feel fairly certain everyone has some set of activities or tasks they feel this way about

my wife and i have two non-overlapping sets haha you can imagine how that plays out


Same wrt my wife and I. She’s quite clumsy and to my assertion doesn’t always think things through. So it’s a bad combination for “accidents” to always happen which I think are very preventable and quite obvious to occur using her approach. A lot of it is just mental errors that I don’t make, but it’s not that I’m perfect I probably just make different mistakes (I think less volume too ;)

Yesterday she literally failed miserably at a single task. Her mission was grocery shopping. She drove to grocery store, shopped, and came home and left the groceries in the car. Didn’t realize it until she was making breakfast the next morning and there was no milk.

I see this two ways; 1) I would never make that mistake 2) I know her quite well, partners for over 20 years now, and this kind of thing is just her normal par for the course type of “oops”. The second part is what frustrates me the most, I like to learn from my mistakes and she treats it as a given that she’s just spacey/dimwit by nature and leans into everything being an “accident”. Obviously not healthy if I treat her like a child so I just watch her fumble through life and try to have a sense of humor about it all.


Well, how hard should you beat yourself up over a mistake like that? If I forgot my groceries in the car, I'd just laugh about it being a silly one-time mistake. But if it happened twice I'd take it more seriously, and maybe make a note or something to remind me. I'm sure everyone has made some silly mistake like forgetting a jacket at a party or leaving a phone at home sometime. I think we should be a little extra forgiving toward others, because we'd so easily forgive our own mistakes

Does your wife have ADHD? She may not be physically capable of learning from her mistakes without the use of frameworks built to address the disorder.

If she's unsure, it's worth looking into. The immediate relief available by way of the strategies that documentation on the disorder provides can be life-changing and don't require medication nor therapy in order to be put to use.


https://pragprog.com/titles/lhelph/functional-web-developmen...

don't let the title fool you - the first half of the book is just elixir

over the past 8 years this is the book i've used to ramp back up on elixir and it works like a charm every time - i've never finished it

for me, a mark of a good programming book in this tutorial-project style is that I have started it half a dozen times and never finished it because at some point before the end I've been equipped w/ the tools to go off and do my own thing


FYI, that’s currently available in a Humble Bundle with 16 other PragProg functional programming books: https://www.humblebundle.com/books/ultimate-functional-progr...

Great find, grabbed that. Thanks!

Yea I've worked through Elixir in Action and appreciate all book recommendations. My issue is, tutorial style books rarely cover security related concerns.

what do you mean by 'security related concerns'?

How to properly build a liveview thats safe against hijacking the websocket phoenix uses for liveviews. You can just do it from the devtools on client side. With regular HTTP requests at least I know what to look out for, with liveview there are almost no resources on how to build a view securely. Like I was able to just call the functions in my module by just addressing them from my browsers console. Just to name an example.

As others have said, the server receives a function call request and decides what to do with it. Whether or not a user or session is currently authorized to perform the action they want is something you evaluate inside the function -- but you

E.g. https://github.com/beyond-all-reason/teiserver/blob/f6ff6d68... here, we are in a function call that handles requests to send a chat message into a game lobby. We updated the flood protection timestamps above, and then determine if the user has permission to send the message, and finally if they are speaking just as a client or via the Coordinator. Then we reply the updated state back to the websocket.

This is what I found beautiful about GenServers, by the way. It's a very explicit "starting state, consume from queue, and each message handling function returns the next system state", which makes it very clear that a state transition does not occur unless you reach the bottom of the event-handling function call, and at that point, it's an atomic state transition of the entire internal state.

In summary: don't trust the client. Independently determine, server-side, in the function itself, if the function call you just received is valid given the current state, not rate limited, etc, and then from there you can choose if you want to act on it.

Disclaimer: Elixir noob, but I have been using Teiserver to learn.


[1] https://phoenix-live-view.hexdocs.pm/security-model.html

There's a guide in the LiveView docs that walks you through the security model. To be clear, you need to always assume that the user can send you anything. That's a fact of any networked system: Clients need to be assumed to be completely under the control of an evil user, because at the end of the day it is impossible to know whether you're talking to the client you wrote, or some evil program written by an adversary. Any function that acts as a handler for an event/message can be called by the user, at any time. You have to use session/socket state to handle authorization.


I am well aware of that, its much much easier to account for this with regular HTTP handlers in other stacks though. The issue here is that you can call random functions if you guess the signature correctly. Even authorized/authenticated users can and will missbehave if given the chance.

To clarify, when you say "random functions", do you mean arbitrary event handlers like "handle_event("my_event")", despite the intended UI not presenting a way to call that event at the moment? Or do you mean any function in the LiveView module?

The latter doesn't seem to be the case, and if it is would be alarming. The former is absolutely the intended behavior. The client can send events to the server, that's how the whole thing works. If certain events shouldn't be available at certain times, you need to check that server side, and that's going to be true in any http handler.


>"handle_event("my_event")", despite the intended UI not presenting a way to call that event at the moment?

Exactly this, didnt know how to phrase it as it was a while ago where i had this issue.

And thats absolutely not true for any HTTP handler as there's no way for people to easily break out of the intended behavior.


In most other HTTP handlers I've ever used, event handling would be handled by API endpoints, which are trivial for the user to target directly just by going to the Network tab in their browser's developer console.

Honestly just build it using the tutorials and sound mind and you're like 80% there.

This may sound crazy but when any interpreter boots up, but I feel it especially with BEAM, that needs to be your "let there be Light" moment. That's your world, that state is yours and only your will decides what changes.

So yes you can call all functions in your module, that's indeed how it works. But that's your module and that function mutates your world.

Just like you filter what people tell you based on your knowledge, you do the same here.

Most of my methods start with guard clauses.

`return if condition_not_met`

Don't touch my state if I don't agree with what you want me to do.

In Ruby it's essential cause that's how we get RuntimeErrors all over the place. In Elixir it's way easier to do, with pattern matching. And easier since state is what enters the function and will be what leaves.

If you keep this in mind you should inherently write safe code, because in protecting your domain through guards you basically close the door for exploitation by unknown means.

I'll give you one example I just thought of. Where I work we run Rails since the time before time, and as such had a lot of technical debt.

Around Rails 5 or 6 what we call `ActionController::Parameters` had a breaking change. Basically this module processes parameters received from HTTP requests.

Beforehand it just wrapped all it got and handed it over to us. But now it expected us to tell it what to expect. And if didn't find what it expected it blew up with a bang!

Horrible for our hundreds of controllers with `controllers * 4` html templates where all the form keys were hidden.

We either had to add the conventiely available `permit!` call, or find the form keys for all the forms, and add `permit(:name, :address,...)`. A shitload of work before AI.

I ended up monkey patching Rails to generate the lists for us instead of crashing. And for the point of this entire story...

The defaults of most frameworks are very safe, but they require the most verbosity so the framework knows what to expect and to guard it. But there always exists easier and faster ways to the same goal, but it's generally a trade. You get ease, you sacrifice some security.

Don't get in that habit and you'll be fine. And spend a lot of time thinking what could go wrong and guard against them.



I've heard that Phoenix has changed a lot since that book was written. How relevant are those framework specific parts still?

As someone who learned Elixir during the Phoenix 1.7 release, let me tell you: If you downgrade to Phoenix 1.6 and learn from there, you should be fine.

The upgraded versions are mostly the same, but the differences in Phoenix 1.7 are enough to break the tutorials enough to confuse a newbie. Now, in the post-LLM age, that's not nearly as bad. But it was a real pain when I was learning.


> > "But pattern‑matching is not system understanding, and plausibility is not correctness."

> Why not? Who says that? Who proved that system understanding is not just more complex pattern matching?

I'm not in the camp of "system understanding is just more complex pattern matching"

but I am absolutely in the camp of "there are many tasks where pattern matching is just as effective as actual understanding"


More strongly, if the pattern matching of a phenomenon totally / perfectly models the phenomenon, and you end up with a perfect model of the phenomenon, that enables you do do causal prediction, how can you NOT call it understanding? What more is there?


> but I am absolutely in the camp of "there are many tasks where pattern matching is just as effective as actual understanding“

What if „being effective at something with pattern matching but not understanding it“ just means that you have identified only 90% of patterns and keep failing to learn the rest for whatever reason.


Aren't we humans functioning in the same way, failing for 10% (take a random number) whatever we learn because we can forget, or be tired, or distracted? And what is the practical effect of "actual understanding" other than actually getting the 90% right (or more, or less, whatever)? I cannot tell what's inside my neighbor's head so for all practical matters they could be an AI, so why should I care whether the AI has a real understanding (good luck proving that) or not? I only care whether they take away enough jobs (mine included) that I cannot life a peaceful life anymore because it sends me foraging for roots or I must defend my roots parcel against hungry foragers. And for AI to achieve that it definitely doesn't need "actual understanding" just following some less or better formulated goals and having the right tools under their "hands".

What I want to say is, yeah fascinating topic about real understanding, but I think we have more pressing issues.


sounds very familiar to what I ended up doing on my internal system - especially anything to do with search - much better to just sync everything to a DB and give the agent access to the DB


That's great to hear - great minds think alike!

> give the agent access to the DB

This is where Airbyte really can shine, I think, and the total can be more the sum of the parts. Because Airbyte excels at data replication already, we can populate your the Agent Context Store without users or agents ever needing to think about the words "ELT" or "ETL".

We're listening carefully to feedback so we hope you will give it a try and let us know how it goes! Thanks!


yeah this is one of the few AI-related products that I have seen that make sense to me

but i also wonder to what extent this needs to be its own thing or if this is just something that it looks like we need but really people just need to shovel more stuff into their data warehouse / data lake that you never had reason to before, because now that's all fodder for agentic search


Great point. Many of Airbyte's customers are doing just that - adding new sources to their warehouses - like Google Drive, Gong, and a ton of sources that weren't as interesting previously for data analytics. But this creates a ton of work for the data engineering teams - to not only load all that extra data, but to deal with rate limits and then to conform the schemas into a usable format after loading.

For now, I think its 100% appropriate to think of the Context Store complementing the Warehouse and not replacing it per se. We're evaluating future integration options between the new Context Store and the traditional data warehouse, but nothing we have publicly announced as of now. I think both approaches have their strengths and killer use cases.


it's straightforward to spin up a custom MCP wrapper around any API with whatever access controls you want

the only time i reach for official MCP is when they offer features that are not available via API - and this annoys me to no end (looking at you Figma, Hex)


Indeed, ever since MCPs came out, I would always either wrap or simply write my own.

I needed to access Github CI logs. I needed to write Jira stories. I didn't even bother glancing at any of the several existing MCP servers for either one of them - official or otherwise. It was trivial to vibe code an MCP server with precisely the features I need, with the appropriate controls.

Using and auditing an existing 3rd party MCP server would have been more work.


That’s what we’re doing, but it’s annoying. Why can’t they just let us limit access for the official MCP easily?


Agreed. Sounds like a failure of the services, but not MCP. Can't believe in 2026 we don't have better permissions on systems like this.


“Communism can work we just did not see a good implementation of it”. If majority of implementations fail at it -> protocol is defined incorrectly. With security first approach it would not be the case.


don't see it in the comments yet so: https://www.brain.fm/


Requires an email address and credit card to even try this, so nope.


Yeah I’ve had a lot of success with agentic search against a database.

The way I think of it, the main characteristic of agentic search is just that the agent can execute many types of adhoc queries

It’s not about a file system

As I understood it early RAG systems were all about performing that search for the agent - that’s what makes that approach “non agentic”

But when I have a database that has both embeddings and full text and you can query against both of those things and I let the agent execute whatever types of queries it wants - that’s “agentic search” in my book


Absolutely, agentic search is much more robust to the specific implementation details of your search setup (data quality issues, too) than the early one-shot approaches were. Anyone watching Claude Code work can see this for themselves.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: