<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Beatrice Costa</title>
    <description>The latest articles on DEV Community by Beatrice Costa (@beatrisss).</description>
    <link>https://dev.to/beatrisss</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4224703%2Fc43a85eb-c620-475b-8cd6-92f73ccd854c.png</url>
      <title>DEV Community: Beatrice Costa</title>
      <link>https://dev.to/beatrisss</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/beatrisss"/>
    <language>en</language>
    <item>
      <title>Is code review getting expensive for your team?</title>
      <dc:creator>Beatrice Costa</dc:creator>
      <pubDate>Wed, 11 Nov 2026 21:55:49 +0000</pubDate>
      <link>https://dev.to/beatrisss/is-code-review-getting-expensive-for-your-team-1g36</link>
      <guid>https://dev.to/beatrisss/is-code-review-getting-expensive-for-your-team-1g36</guid>
      <description>&lt;p&gt;At Proofline (&lt;strong&gt;&lt;a href="https://proofline.sh/" rel="noopener noreferrer"&gt;https://proofline.sh/&lt;/a&gt;&lt;/strong&gt;), question we’re trying to understand is how much code review costs teams today.&lt;/p&gt;

&lt;p&gt;On one hand, how steep is the actual bill for review tools. On the other, how much time developers spend reading changes, following up on comments, and getting back into context after a pull request has been sitting for a day.&lt;/p&gt;

&lt;p&gt;From the founder side, it’s easy to assume that more code means more review pain. But maybe that's not everybody's experience.&lt;/p&gt;

&lt;p&gt;A few questions for people reviewing code regularly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are you spending more time on reviews than you were a year ago?&lt;/li&gt;
&lt;li&gt;If you use an AI review tool, does it save time once you account for checking its comments?&lt;/li&gt;
&lt;li&gt;What feels most expensive: the tools, reviewer time, or waiting for approval?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d especially like to hear a recent example of a review that took more effort than you expected—and what made it difficult.&lt;/p&gt;

&lt;h1&gt;
  
  
  discuss #codereview #ai #devtools
&lt;/h1&gt;

</description>
      <category>codereview</category>
      <category>discuss</category>
      <category>softwaredevelopment</category>
      <category>startup</category>
    </item>
    <item>
      <title>Some PRs just need a guided tour! (and other updates)</title>
      <dc:creator>Beatrice Costa</dc:creator>
      <pubDate>Tue, 10 Nov 2026 16:45:47 +0000</pubDate>
      <link>https://dev.to/beatrisss/some-prs-just-need-a-guided-tour-and-other-updates-3in7</link>
      <guid>https://dev.to/beatrisss/some-prs-just-need-a-guided-tour-and-other-updates-3in7</guid>
      <description>&lt;p&gt;You know when you open a pull request and description says “small refactor,” but forty files have changed?&lt;/p&gt;

&lt;p&gt;Cool. Just going to make another coffee.&lt;/p&gt;

&lt;p&gt;Well, this week at Proofline, among other updates, we've made that review easier to work through, with faster results, walkthroughs with cited code, and fewer trips between findings and code lines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Less waiting for the review.&lt;/strong&gt; In one week, the daily median review time on Proofline fell from 31 minutes to 3.6 minutes. That’s roughly 9× faster in those production observations, though the review mix varied by day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We created a walkthrough that you can question.&lt;/strong&gt; Follow a PR step by step, with the relevant code beside each explanation. You can ask a follow-up question about a step or specific lines you select. And when the implementation doesn’t support something in the PR description, an Author check can flag the mismatch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spotting tomorrow’s maintenance headache.&lt;/strong&gt; Beyond the walkthrough, an optional maintainability review looks for complexity, hidden assumptions, and duplicated responsibilities introduced or worsened by the change. Each suggestion needs a concrete maintenance cost, cited code, and a smaller alternative. “I personally prefer this other style” doesn’t qualify.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using context beyond the current repo.&lt;/strong&gt; Reviews can also examine interfaces and consumers by reading permitted related repositories at recorded commits. Because changing an API is easy. Remembering everything that calls it is the fun part.&lt;/p&gt;

&lt;p&gt;Back in the redesigned diff view, findings sit directly beneath the lines they cite, so you can read the code and explanation together.&lt;/p&gt;

&lt;p&gt;And there’s more in this release: production investigations, deployment checks, and draft fix PRs for confirmed scan problems. Your team still decides what gets merged.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://proofline.sh/blog/faster-reviews-and-walkthroughs/" rel="noopener noreferrer"&gt;Read the full update on the Proofline blog.&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How a one-line scale-up can exhaust your database connections</title>
      <dc:creator>Beatrice Costa</dc:creator>
      <pubDate>Tue, 03 Nov 2026 16:58:58 +0000</pubDate>
      <link>https://dev.to/beatrisss/how-a-one-line-scale-up-can-exhaust-your-database-connections-4m40</link>
      <guid>https://dev.to/beatrisss/how-a-one-line-scale-up-can-exhaust-your-database-connections-4m40</guid>
      <description>&lt;p&gt;&lt;em&gt;By the Proofline team. Originally published on the &lt;a href="https://proofline.sh/blog/connection-limits/" rel="noopener noreferrer"&gt;Proofline blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Raising a service's task count is a correct change in the diff. Whether production can absorb it depends on numbers that live in the environment, outside the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the reviewer sees: a service scaling from four tasks to twelve
&lt;/h2&gt;

&lt;p&gt;The pull request changes one line. The API service on Amazon ECS goes from four tasks to twelve, because traffic grew and latency followed it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_ecs_service"&lt;/span&gt; &lt;span class="s2"&gt;"api"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;name&lt;/span&gt;          &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"api"&lt;/span&gt;
  &lt;span class="nx"&gt;desired_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="c1"&gt;# was 4&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;terraform plan&lt;/code&gt; shows one attribute changing in place. Nothing in the repository is wrong, and a careful reviewer approves it. The change is still dangerous, and the reason is not in the diff.&lt;/p&gt;

&lt;h2&gt;
  
  
  More tasks can exceed the database's connection limit
&lt;/h2&gt;

&lt;p&gt;Each task opens a database connection pool when it starts. Most pools have a fixed ceiling: HikariCP defaults to 10 connections, node-postgres to 10, and SQLAlchemy to 5 plus an overflow of 10. Teams raise these under load, and 20 per task is common.&lt;/p&gt;

&lt;p&gt;The database limits the total number of simultaneous connections. PostgreSQL sets this limit with &lt;code&gt;max_connections&lt;/code&gt;, which on Amazon RDS is configured through the instance's parameter group. Some connections are reserved for superusers. Suppose the limit is 200 and three connections are reserved:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Connections&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Four tasks at 20 each&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Twelve tasks at 20 each&lt;/td&gt;
&lt;td&gt;240&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Available to the application&lt;/td&gt;
&lt;td&gt;197&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The steady state does not fit. The rollout is worse. ECS replaces tasks with a rolling deployment, and its default lets the service run up to twice its desired count while old and new tasks overlap. The migration job, the queue workers and the admin console draw on the same limit.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it fails
&lt;/h2&gt;

&lt;p&gt;New tasks start, open their pools, and PostgreSQL answers with &lt;code&gt;FATAL: sorry, too many clients already&lt;/code&gt;. The tasks fail their health checks, so ECS stops them and starts replacements, which fail the same way. The deployment stalls. Depending on how connections are retried, tasks that were healthy before the change can lose their connections too.&lt;/p&gt;

&lt;p&gt;The incident review will find the cause quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why code reviews can miss this problem
&lt;/h2&gt;

&lt;p&gt;The three numbers that decide the outcome sit in three places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the task count, in the Terraform diff;&lt;/li&gt;
&lt;li&gt;the pool size, in the application's configuration, often in a different repository;&lt;/li&gt;
&lt;li&gt;the connection limit, in a live parameter group that may have drifted from any file that describes it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A person reviewing the pull request sees the first. A code reviewer that reads the repository may find the second. Neither can see the third, which is a setting of the environment the change deploys into.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a review needs to catch it
&lt;/h2&gt;

&lt;p&gt;Catching this class of failure takes two pinned inputs: the exact commit under review, and a recorded snapshot of the target environment that includes the database's limit and the other clients that share it. With both, the failure is arithmetic. Without the snapshot, the honest answer is that the review is incomplete, not that the change looks fine.&lt;/p&gt;

&lt;p&gt;This is the review Proofline posts on the pull request for this change, with illustrative values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt; resource "aws_ecs_service" "api" {
   name = "api"
&lt;span class="gd"&gt;-  desired_count = 4
&lt;/span&gt;&lt;span class="gi"&gt;+  desired_count = 12
&lt;/span&gt; }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Database connections run out before all tasks become healthy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each task opens 20 connections before passing its health check. With 12 tasks, the service needs 240 connections. The production database allows 197.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code:&lt;/strong&gt; &lt;code&gt;infra/ecs/api.tf:19&lt;/code&gt; sets 12 tasks. The application opens its 20-connection pool before reporting healthy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Environment:&lt;/strong&gt; The pinned snapshot of &lt;code&gt;orders-prod&lt;/code&gt; records &lt;code&gt;max_connections = 200&lt;/code&gt; and 3 reserved connections.&lt;/p&gt;

&lt;p&gt;The extra tasks can fail their health checks and stall the deployment. Reduce the task count or pool size, or add a connection pooler.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Illustrative review in an example repository.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The finding names the trigger, the mechanism and the evidence behind each number, so the author can check it instead of trusting it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ways to fix it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shrink the pool.&lt;/strong&gt; Twelve tasks at 15 connections fit under 197, if nothing else connects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a connection pooler.&lt;/strong&gt; Amazon RDS Proxy or PgBouncer multiplexes many client connections onto fewer database connections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raise the limit deliberately.&lt;/strong&gt; A higher &lt;code&gt;max_connections&lt;/code&gt; costs memory on the database instance, so size it with the instance class.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bound the rollout.&lt;/strong&gt; A lower maximum percent on the ECS deployment keeps old and new tasks from doubling the count during a deploy.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>postgres</category>
      <category>database</category>
    </item>
  </channel>
</rss>
