<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: cirego</title><link>https://news.ycombinator.com/user?id=cirego</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 07:12:40 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=cirego" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by cirego in "Microservices and the First Law of Distributed Objects (2014)"]]></title><description><![CDATA[
<p>I've noticed that there's another problem with microservices as well. People tend to tie microservices and multi-repo into the same strategy.<p>Multi-repo appears to make teams faster (builds are faster! fewer merge conflicts!) but, like micro-services, they push complexity into the ether. Things like updating service contracts, library updates, etc. all become more complicated.</p>
]]></description><pubDate>Tue, 24 Mar 2026 13:46:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47502539</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=47502539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47502539</guid></item><item><title><![CDATA[New comment by cirego in "LiteLLM Python package compromised by supply-chain attack"]]></title><description><![CDATA[
<p>First thing I noticed too.</p>
]]></description><pubDate>Tue, 24 Mar 2026 13:07:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47502022</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=47502022</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47502022</guid></item><item><title><![CDATA[New comment by cirego in "Feather: A Rust web framework that does not use async"]]></title><description><![CDATA[
<p>It sounds like this framework is susceptible to head of line blocking. In my experience, that significantly reduces the utility of any applications written choosing this framework. What’s the benefit being delivered?</p>
]]></description><pubDate>Sun, 04 May 2025 20:23:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=43889302</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43889302</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43889302</guid></item><item><title><![CDATA[New comment by cirego in "Feather: Feather: A web framework that skips Rust's async boilerplate and jus"]]></title><description><![CDATA[
<p>I noticed the same thing. I would have expected an Arc<Mutex<…>> or something similar for safe concurrency. Not sure what value is delivered by a single threaded, blocking web server.</p>
]]></description><pubDate>Sun, 04 May 2025 18:52:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=43888621</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43888621</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43888621</guid></item><item><title><![CDATA[New comment by cirego in "Tilt: dev environment as code"]]></title><description><![CDATA[
<p>You bring up an interesting question -- I think Tilt works best for those that find themselves in an environment where product is delivered using a service-oriented architecture deployed to Kubernetes. It's also easy to get started within a small team in a big company.<p>To your other point, Tilt is to development as ArgoCD is to deployment. Tilt enables on-demand, reproducible development environments that are sufficiently high-fidelity that you can often replace your shared and/or long-lived testing clusters.<p>With Tilt, I test my application using the same Kubernetes specs / Kustomizations / Helm Charts that you use to deploy into production. When it comes time to deploy my application, I supply these same specs / kustomizations / charts to ArgoCD.<p>Because I can reuse the specs for both testing and production, I enjoy far greater testability of my application, improving quality and time to market.</p>
]]></description><pubDate>Sun, 27 Apr 2025 13:25:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=43811750</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43811750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43811750</guid></item><item><title><![CDATA[New comment by cirego in "Tilt: dev environment as code"]]></title><description><![CDATA[
<p>I think Tilt Extensions highlights the combined power and composability that using Starlarks brings to Tilt: <a href="https://docs.tilt.dev/extensions.html" rel="nofollow">https://docs.tilt.dev/extensions.html</a>.<p>Want to create a Kubernetes secret? It's as simple as:<p><pre><code>    load('ext://secret', 'secret_yaml_generic')
    k8s_yaml(secret_yaml_generic(...))
</code></pre>
Want to create that secret from Vault instead?<p><pre><code>    load('ext://vault_client', 'vault_read_secret', 'vault_set_env_vars')
    vault_set_env_vars('https://localhost:8200','mytoken')
    my_foo = vault_read_secret('path/myfoo', 'value')
    my_bar = vault_read_secret('path/mybar', 'foobar')</code></pre></p>
]]></description><pubDate>Sat, 26 Apr 2025 22:23:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=43807745</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43807745</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43807745</guid></item><item><title><![CDATA[New comment by cirego in "Tilt: dev environment as code"]]></title><description><![CDATA[
<p>Thank you for sharing this! I think your Tiltfile just showed me how to solve something that's been bugging me for a while!<p>I see that you also have docker-compose files -- are those for different tasks or for developer preference?<p>I'm also curious to understand why you have different build scripts for CI (`buildx`) vs local (regular docker build)? In our team, we use the same build processes for both.</p>
]]></description><pubDate>Sat, 26 Apr 2025 22:14:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=43807684</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43807684</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43807684</guid></item><item><title><![CDATA[New comment by cirego in "Tilt: dev environment as code"]]></title><description><![CDATA[
<p>I've always appreciated that Tilt chose Starlark instead of YAML. Makes things so much cleaner!</p>
]]></description><pubDate>Sat, 26 Apr 2025 22:08:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=43807644</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43807644</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43807644</guid></item><item><title><![CDATA[New comment by cirego in "Tilt: dev environment as code"]]></title><description><![CDATA[
<p>I think that's a fair point -- you're making a tradeoff. And the best part is that you don't need to choose one or the other.<p>In my case, I find that I prefer having higher fidelity and simpler service code by using Tilt to avoid mocks. It's also nice for frontend development because, using a Kubernetes ingress, you can avoid the need for things like frontend proxies, CORS and other development-only setup.</p>
]]></description><pubDate>Sat, 26 Apr 2025 22:07:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=43807630</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43807630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43807630</guid></item><item><title><![CDATA[New comment by cirego in "Tilt: dev environment as code"]]></title><description><![CDATA[
<p>My understanding is that dev containers are more about configuring your development environment with the right toolchains to build and run services.<p>Tilt is a monitor process that builds and starts your services, with a hot-reload loop that rebuilds and restarts your services when the underlying code changes. The hot reload loop even works for statically compiled languages.</p>
]]></description><pubDate>Sat, 26 Apr 2025 21:30:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=43807390</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43807390</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43807390</guid></item><item><title><![CDATA[New comment by cirego in "Tilt: dev environment as code"]]></title><description><![CDATA[
<p>Yes, Tilt really shines when you’re testing interactions with Kubernetes, such a APIs. But also things like your services’ ingress configuration and metrics scraping.<p>By default, Tilt is actually intended for local development using kind, minikube or other similar tooling. It supports developing against a multi-node cluster but it requires extra configuration and slows down iteration time.</p>
]]></description><pubDate>Sat, 26 Apr 2025 21:27:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=43807366</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43807366</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43807366</guid></item><item><title><![CDATA[New comment by cirego in "Tilt: dev environment as code"]]></title><description><![CDATA[
<p>Tilt can also help validate things like:<p>- Service discovery<p>- Volume mounts<p>- Ingress and Certificates<p>- Metrics scraping and configuration<p>- Dashboards<p>It’s really quite powerful and replaces the need to mock things out with docker compose. If you’re deploying to Kubernetes, Tilt gives you the option to avoid “development-only” setups like docker compose.</p>
]]></description><pubDate>Sat, 26 Apr 2025 21:23:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=43807349</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43807349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43807349</guid></item><item><title><![CDATA[New comment by cirego in "Tilt: dev environment as code"]]></title><description><![CDATA[
<p>Interesting to see this pop up here! I’ve been using Tilt for multiple years now but the pace of development seems to have slowed down after the Docker acquisition.<p>I love how Tilt enables creating a local development environment that lets my services run the same in production , test and development. Greatly simplifies my service code and improved my quality.<p>In particular, I’d love to see Tilt be better around handling things like CRDs (there’s no way to mark a k8s_yaml as depending on a CRD being available, a frequent source of broken tilt up invocations).<p>Having said that, the first thing I do, when working on any new project, is to get “tilt up” working.<p>Things I’ve used for testing include: eBPF-based collectors for security and observability, data pipelines, helm chart development, and Kubernetes controllers. It’s very flexible and powerful for a wide range of development.</p>
]]></description><pubDate>Sat, 26 Apr 2025 20:33:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=43806943</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43806943</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43806943</guid></item><item><title><![CDATA[New comment by cirego in "Show HN: WhatsApp MCP Server"]]></title><description><![CDATA[
<p>Sorry, I should have added my second thought. Your original comment about isolating MCP servers is also good!<p>These are tools where the AI may tell you it’s doing one thing and then accidentally do another (I had an LLM tell me it would make a directory using mkdir but then called the shell command kdir (thankfully didn’t exist)). Sandboxing MCP servers is also important!</p>
]]></description><pubDate>Mon, 31 Mar 2025 14:11:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=43535270</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43535270</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43535270</guid></item><item><title><![CDATA[New comment by cirego in "Show HN: WhatsApp MCP Server"]]></title><description><![CDATA[
<p>I believe echoangle’s concern is about the security and privacy of the LLM using the data, not the MCP server itself.</p>
]]></description><pubDate>Mon, 31 Mar 2025 13:05:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=43534607</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43534607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43534607</guid></item><item><title><![CDATA[New comment by cirego in "Leaking the email of any YouTube user for $10,000"]]></title><description><![CDATA[
<p>I think you might be off by a factor of 10. Alphanumeric would be at least 36 characters, which would imply 2.8 trillion combininations (36 ^ 8).</p>
]]></description><pubDate>Wed, 12 Feb 2025 14:11:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=43025588</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=43025588</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43025588</guid></item><item><title><![CDATA[New comment by cirego in "Ask HN: Is there a way to efficiently subscribe to an SQL query for changes?"]]></title><description><![CDATA[
<p>At the moment, we are focused on scaling up with a single instance. While there are a couple of strategies for scaling out, none of our current methods support scaling a single view beyond a single instance. This isn't really a technical limitation but rather more of a testing and supportability limitation. Timely and Differential (the incremental computation frameworks used by Materialize) suport scale-out and have been extensively tested in scale-out scenarios.<p>Do you have a limit in mind on how large you're willing to go? A brief bit of napkin math shows that, at 1KB per record, your largest view should fit within 100GB of memory. This is easily supported by Materialize and I can certainly understand if this exceeds your appetite!<p>If you're interested in reducing the size of the in-memory dataset, does your fact table have a temporal dimension to it? By default, Materialize stores data for all time (like a database) and you can write views in such a way that it will only materialize recent data (like a stream processor). Our co-founder Frank wrote a blog post[1] detailing how to do this.<p>I'm honestly not sure how TAIL-ing a non-materialized view would perform. Sounds like something that would be fun to test!<p>Happy to chat about this further in our community Slack channel if you have more questions.<p>[1] <a href="https://materialize.com/temporal-filters/" rel="nofollow">https://materialize.com/temporal-filters/</a></p>
]]></description><pubDate>Fri, 23 Apr 2021 05:34:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=26911295</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=26911295</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26911295</guid></item><item><title><![CDATA[New comment by cirego in "Ask HN: Is there a way to efficiently subscribe to an SQL query for changes?"]]></title><description><![CDATA[
<p>You are correct! Updates are a expressed as a retraction and an insert that happen within the same timestamp.<p>An example may not be necessary but it might also help clarify. Assuming you're using the psql client to run "TAIL WITH (PROGRESS)", the logical grouping for a single update will be a set of rows like the following:<p><pre><code>  ...
  1608081358001 f -1 ['Lockal', '4590']
  1608081358001 f 1 ['Epidosis', '4595']
  1608081358001 f -1 ['Matlin', '5220']
  1608081358001 f 1 ['Matlin', '5221']
  1608081359001 t \N ['\\N', '\\N']
  ...
</code></pre>
All of these occur at the same timestamp, meaning that they should be applied atomically to maintain consistency of your dataset. In this case, my query is a top-10 query and Epidosis has now entered the top10 while Lockal has dropped out of the top10. Matlin remains in the top10 but their total has gone from 5220 to 5221. The final example record is produced when you run with PROGRESS enabled and serves as an indicator that 1608081359001 is now closed and no further updates will ever happen at timestamp 1608081359001.<p>I find that this stream of rows is very easy to convert to a data structure "{timestamp, inserts[], deletes[]}" and this, in turn, maps naturally onto reactive APIs, such as React or D3. My blog post, linked above, delves into this in more detail. Hope this explanation helps!</p>
]]></description><pubDate>Fri, 23 Apr 2021 04:32:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=26911019</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=26911019</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26911019</guid></item><item><title><![CDATA[New comment by cirego in "Ask HN: Is there a way to efficiently subscribe to an SQL query for changes?"]]></title><description><![CDATA[
<p>> In the simplest case, I'm talking about regular SQL non-materialized views which are essentially inlined.<p>I see that now -- makes sense!<p>> Wish we had some better database primitives to assemble rather than building everything on Postgres - its not ideal for a lot of things.<p>I'm curious to hear more about this! We agree that better primitives are required and that's why Materialize is written in Rust using using TimelyDataflow[1] and DifferentialDataflow[2] (both developed by Materialize co-founder Frank McSherry). The only relationship between Materialize and Postgres is that we are wire-compatible with Postgres and we don't share any code with Postgres nor do we have a dependence on it.<p>[1] <a href="https://github.com/TimelyDataflow/timely-dataflow" rel="nofollow">https://github.com/TimelyDataflow/timely-dataflow</a>
[2] <a href="https://github.com/TimelyDataflow/differential-dataflow" rel="nofollow">https://github.com/TimelyDataflow/differential-dataflow</a></p>
]]></description><pubDate>Thu, 22 Apr 2021 17:31:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=26905428</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=26905428</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26905428</guid></item><item><title><![CDATA[New comment by cirego in "Ask HN: Is there a way to efficiently subscribe to an SQL query for changes?"]]></title><description><![CDATA[
<p>> Yep. I meant it was easy to do it the inefficient way where you just refresh the entire query when any table mentioned in the query changes. You would just have to also check if something was a view and recursively parse the SQL that is used in the view. Just use Postgres `LISTEN` and triggers or the WAL for change monitoring.<p>Unfortunately, it turns out that recursively refreshing views still leads to surprising behavior. I think post summarizes the problem quite nicely: <a href="https://scattered-thoughts.net/writing/internal-consistency-in-streaming-systems/" rel="nofollow">https://scattered-thoughts.net/writing/internal-consistency-...</a>. If you cannot refresh all of the views, at a single point in time, then there will be internal inconsistencies in your dataset.<p>When looking at automatic refreshing, simple triggers and `LISTEN/NOTIFY` don't scale, as was mentioned in the comment regarding Hasura's multiplexing. I think, in the absence of incrementally maintained views, their multiplexing strategy is a good compromise for databases like postgres. However, it should be noted that continuous query / subscription of views is the exact scenario under which incremental computation will provide both lower latency and greater resource efficiency.</p>
]]></description><pubDate>Thu, 22 Apr 2021 16:22:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=26904576</link><dc:creator>cirego</dc:creator><comments>https://news.ycombinator.com/item?id=26904576</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26904576</guid></item></channel></rss>