<?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: Natraj L</title>
    <description>The latest articles on DEV Community by Natraj L (@jartan).</description>
    <link>https://dev.to/jartan</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%2F391534%2Fd1d58a14-3e89-4166-94b6-e4fc8c38e8a0.png</url>
      <title>DEV Community: Natraj L</title>
      <link>https://dev.to/jartan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jartan"/>
    <language>en</language>
    <item>
      <title>I almost accepted the lower offer because the bigger number was harder to compare</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 23 Aug 2026 14:26:10 +0000</pubDate>
      <link>https://dev.to/jartan/i-almost-accepted-the-lower-offer-because-the-bigger-number-was-harder-to-compare-37a5</link>
      <guid>https://dev.to/jartan/i-almost-accepted-the-lower-offer-because-the-bigger-number-was-harder-to-compare-37a5</guid>
      <description>&lt;p&gt;Two offers landed in the same week. One was a straight $105K in a city I already lived in. The other was $95K, fully remote, with equity, a better 401(k) match, and a relocation stipend I wasn't planning to use. My gut said take the $105K -- it was just a bigger number, and bigger numbers feel safer when you're deciding in a hurry.&lt;/p&gt;

&lt;p&gt;I almost did it. Then I actually sat down and did the math instead of eyeballing it, and the remote offer won by a wide margin once I accounted for the equity vesting on a normal schedule, the 401(k) match difference over a year, and what $95K actually buys in a place with a lower cost of living than where the $105K job was based. Base salary alone hid more than it revealed.&lt;/p&gt;

&lt;p&gt;That's the trap with comparing job offers: the number on top is the easiest thing to compare and the least reliable one. A $95K offer with real equity and a strong match can beat a flat $105K offer once you do the math. A remote offer tied to an expensive city's pay band can be worth less than a smaller number somewhere cheaper. Most people either eyeball it under time pressure, or open a blank spreadsheet the night before they have to respond and try to rebuild all of this from scratch.&lt;/p&gt;

&lt;p&gt;So I built the workbook I wish I'd had that week: The Job Offer Decision Kit.&lt;/p&gt;

&lt;p&gt;It's a 6-tab spreadsheet plus a companion PDF guide that turns base salary, bonus, signing bonus, equity/RSU grant, 401(k) match, benefits, and PTO into one clear Year-1 number for up to 4 offers side by side. It adjusts that number for cost of living, so a bigger salary in an expensive city gets compared honestly against a smaller one somewhere cheaper. It scores the non-money factors -- growth, culture, stability, flexibility -- by what actually matters to you, not a generic checklist. And it sets your target ask and your walk-away number before you get on the phone, not during it, with 6 ready-to-send negotiation scripts for the conversations that actually come up.&lt;/p&gt;

&lt;p&gt;You don't need to know spreadsheet formulas to use it. Every cell you're meant to fill in is color-coded with an example value already in it; everything else calculates automatically. It works in Excel, LibreOffice, and Google Sheets, and setup takes about 10-15 minutes for one offer.&lt;/p&gt;

&lt;p&gt;If you've got an offer sitting in your inbox right now, or you're expecting one soon, you can get it here: &lt;a href="https://logi2.gumroad.com/l/ukkvqm" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/ukkvqm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-almost-accepted-the-lower-offer-because-the-bigger-number-was-harder-to-compare-736df1e528b6" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>jobsearch</category>
    </item>
    <item>
      <title>I Stopped Trusting Green CI on AI-Generated Pull Requests</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 16 Aug 2026 15:06:53 +0000</pubDate>
      <link>https://dev.to/jartan/i-stopped-trusting-green-ci-on-ai-generated-pull-requests-51bn</link>
      <guid>https://dev.to/jartan/i-stopped-trusting-green-ci-on-ai-generated-pull-requests-51bn</guid>
      <description>&lt;p&gt;Three weeks ago I merged a PR that Claude Code wrote for a side project.&lt;/p&gt;

&lt;p&gt;The diff was clean, the tests passed, CI was green. I skimmed it, approved it, moved on. Two weeks later I found out the authorization check on a delete endpoint had quietly disappeared during a refactor earlier in that same session. Nobody exploited it. I just got lucky.&lt;/p&gt;

&lt;p&gt;That's when it clicked that AI-generated code doesn't fail the way human-written code fails. A human engineer forgets an edge case or doesn't know a library has a built-in for something. An AI coding agent writes a plausible-looking auth check, a plausible-looking test, a plausible-looking API call, and "plausible" is exactly the failure mode that slips past a reviewer skimming a diff at 6pm. None of it shows up as a red squiggly line. It just looks finished.&lt;/p&gt;

&lt;p&gt;So I went back through a stack of AI-generated PRs, mine and a few teammates shared with me, looking for a pattern instead of individual bugs. Six showed up over and over: hardcoded secrets dropped in for a "working example," authorization checks that check you're logged in but not that you're allowed to touch this specific resource, tests that mock the exact function they're supposed to be testing (so they pass no matter what the implementation does), API calls that look right but don't match the actually-installed library version, edge cases that fail silently instead of throwing, and scope creep where the agent "improves" an adjacent file nobody asked it to touch.&lt;/p&gt;

&lt;p&gt;I built a toolkit around those six patterns: what each one looks like in a real diff, the exact review question that catches it, a 45-item checklist organized by risk category, a 1-5 risk scoring rubric so you know how deep to review before you start, and a companion spreadsheet that logs every PR you review so the pattern becomes visible over time instead of staying anecdotal, which AI tool in your stack actually produces the most rework, not a guess.&lt;/p&gt;

&lt;p&gt;It's for solo developers and small teams (2-15 people) who've adopted Claude Code, Cursor, or GitHub Copilot for a meaningful share of their code and are currently reviewing AI-generated PRs the same way they'd review a junior engineer's: reading the diff, trusting green CI, moving on. If that's you, the 5-minute triage checklist alone is worth running on your last three merged PRs before you read anything else. Most people find something on the first pass.&lt;/p&gt;

&lt;p&gt;If you want the full toolkit, a 16-page PDF plus the PR risk tracker workbook, it's here: &lt;a href="https://logi2.gumroad.com/l/lpdebo" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/lpdebo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The thing I keep coming back to is that "the code looks finished" and "the code has actually been checked" are two different claims, and AI coding agents are very good at making the first one true regardless of the second. Worth remembering the next time a diff looks a little too clean.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-stopped-trusting-green-ci-on-ai-generated-pull-requests-6c2aec4caaeb" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Built a Google Sheets Calculator That Tells Tech Workers Exactly When They Can Quit Their Job</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Fri, 14 Aug 2026 02:00:12 +0000</pubDate>
      <link>https://dev.to/jartan/i-built-a-google-sheets-calculator-that-tells-tech-workers-exactly-when-they-can-quit-their-job-9ig</link>
      <guid>https://dev.to/jartan/i-built-a-google-sheets-calculator-that-tells-tech-workers-exactly-when-they-can-quit-their-job-9ig</guid>
      <description>&lt;p&gt;Six months ago, I had a Notion doc titled "The Plan." It had my side hustle revenue projections, my savings runway, my client pipeline. I thought it was thorough. Then my manager scheduled a surprise 1:1 and I immediately started refreshing my bank balance on my phone under the desk.&lt;/p&gt;

&lt;p&gt;The spreadsheet wasn't the problem. The spreadsheet was missing something: a single, clear answer to the question I was actually asking. Not "how much do I make freelancing?" but "can I afford to quit right now?"&lt;/p&gt;

&lt;p&gt;So I built something that gives you that answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;The Side Hustle Full-Time Decision Planner is a Google Sheets workbook for tech workers who are seriously considering going independent. Not daydreaming — actually close to pulling the trigger, or actively trying to figure out when they can.&lt;/p&gt;

&lt;p&gt;It has four connected calculators:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Financial Runway Calculator.&lt;/strong&gt; Enter your monthly expenses, current savings, and minimum acceptable income. It tells you exactly how many months you can survive without a single client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client Income Projector.&lt;/strong&gt; Model what your income looks like at 3, 6, and 12 months post-quit: conservative (1 client), realistic (3 clients), and aggressive (5+ clients).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk Score Dashboard.&lt;/strong&gt; Scores your health insurance plan, estimated tax setup, and emergency fund readiness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go/Wait Decision Engine.&lt;/strong&gt; Produces one output: a recommended quit date, or the specific milestone you need to hit first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;Software engineers, PMs, designers, and data professionals earning $80K–$200K who have a side hustle generating real income and are trying to make the leap with math rather than motivation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to get it
&lt;/h2&gt;

&lt;p&gt;Available on Gumroad at $17: &lt;a href="https://logi2.gumroad.com/l/sidehustleplanner" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/sidehustleplanner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also on &lt;a href="https://www.etsy.com/listing/4555422356" rel="noopener noreferrer"&gt;Etsy&lt;/a&gt; and &lt;a href="https://payhip.com/b/5ZCUQ" rel="noopener noreferrer"&gt;Payhip&lt;/a&gt;. Works in Google Sheets (free) and Excel. Includes a PDF companion guide.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-built-a-google-sheets-calculator-that-tells-tech-workers-exactly-when-they-can-quit-their-jobsix-0374bb8e56d6" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Got Laid Off and Built the Spreadsheet I Actually Needed</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 09 Aug 2026 14:42:55 +0000</pubDate>
      <link>https://dev.to/jartan/i-got-laid-off-and-built-the-spreadsheet-i-actually-needed-2hcg</link>
      <guid>https://dev.to/jartan/i-got-laid-off-and-built-the-spreadsheet-i-actually-needed-2hcg</guid>
      <description>&lt;p&gt;Three weeks ago a friend forwarded me a message: her whole team had been cut in a Friday-afternoon restructuring, effective immediately. Slack access gone within the hour. She had a severance number, a COBRA quote she hadn't opened yet, and a job market everyone keeps describing as "tough right now" — and no idea, actually, how many days she had before the math stopped working.&lt;/p&gt;

&lt;p&gt;That's the part nobody tells you about a layoff: it's not one problem, it's two running at the same time. There's the job search — applications, interviews, networking — and there's the money question underneath it, quietly ticking. Most people end up tracking neither one properly, because giving either your full attention means the other one drifts.&lt;/p&gt;

&lt;p&gt;So I built the thing she actually needed. Not another generic job tracker — there are dozens of those — but a workbook that puts the runway math and the job pipeline in the same place. One tab is a severance, COBRA, and unemployment runway calculator: enter your numbers once and it tells you, in days and months, exactly how long you have — accounting for the fact that COBRA runs well above what you paid as an employee, and that unemployment benefits cap out regardless of your old salary. The other tabs are a straightforward job search system — applications, interview pipeline, networking outreach, a five-minute weekly planning ritual — all rolled up into a dashboard you can check once a day instead of holding the whole thing in your head.&lt;/p&gt;

&lt;p&gt;It's built for the specific reality of the 2026 tech layoff wave — this year alone has seen hundreds of companies, from platform giants to well-funded startups, cut headcount as AI reshapes hiring plans. If you're one of the people affected, a generic "job search tracker" doesn't actually solve your problem. You're not just looking for a job. You're managing a financial runway while you do it, and the two things compound on each other in ways a plain application spreadsheet ignores entirely.&lt;/p&gt;

&lt;p&gt;Who it's for: laid-off software engineers, product managers, designers, data and ops folks who want their runway and their pipeline tracked in the same system, instead of a mental tally that resets every time a bill or a rejection email shows up.&lt;/p&gt;

&lt;p&gt;If that's you, or someone you know, the workbook (Excel and Google Sheets compatible, plus an 11-page companion guide) is here: &lt;a href="https://logi2.gumroad.com/l/riypw" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/riypw&lt;/a&gt; — and on Etsy: &lt;a href="https://www.etsy.com/listing/4552685120/tech-layoff-job-search-tracker-severance" rel="noopener noreferrer"&gt;https://www.etsy.com/listing/4552685120/tech-layoff-job-search-tracker-severance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The thing I keep coming back to after building this: a layoff is a company's headcount decision, not a verdict on your work. The search usually takes longer than feels comfortable, and the money math usually feels tighter than you'd like along the way. Neither of those is a reason to avoid looking at the numbers — it's the reason to build a system that carries some of that weight for you, so it's not all sitting in your head at 2am.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-got-laid-off-and-built-the-spreadsheet-i-actually-needed-29be3286df67" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>jobsearch</category>
    </item>
    <item>
      <title>Etsy's Ad Dashboard Told Me I Was Winning. My Bank Account Disagreed.</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 02 Aug 2026 14:25:56 +0000</pubDate>
      <link>https://dev.to/jartan/etsys-ad-dashboard-told-me-i-was-winning-my-bank-account-disagreed-207j</link>
      <guid>https://dev.to/jartan/etsys-ad-dashboard-told-me-i-was-winning-my-bank-account-disagreed-207j</guid>
      <description>&lt;p&gt;A few weeks ago I was looking at an Etsy shop's ad report showing a 4x ROAS on one of its best-selling listings, running about $10 a day in Etsy Ads. On paper, that's a strong number. Look at the actual bank deposits for that same stretch, though, and growth didn't line up with the story the dashboard was telling.&lt;/p&gt;

&lt;p&gt;The reason is simple once you see it: Etsy's ad reports show revenue attributed to ads, never profit. They don't know your materials cost, they don't know your shipping cost, and they definitely don't remind you that a totally separate fee, Offsite Ads, at 12-15%, might already be attached to a chunk of your "organic" sales. A listing can look like a big ROAS win and still lose money once the real fee stack comes out of it. Most sellers find this out months into scaling a budget on a number that was never telling them the truth.&lt;/p&gt;

&lt;p&gt;So I built a spreadsheet that does the math Etsy's dashboard won't. It's a Google Sheets / Excel workbook with five connected tabs: a Fee Calculator that shows real per-listing profit after Etsy's listing, transaction, and payment processing fees; an Ads Spend &amp;amp; ROI tracker that turns daily ad numbers into an actual Net Profit After Ads figure instead of just ROAS; an Offsite Ads tracker that applies the correct 12% or 15% rate automatically; a Monthly P&amp;amp;L dashboard with a profit trend chart; and a Break-Even Pricing calculator that tells you the minimum price and ROAS you need before launching a new ad push. It comes with a 10-page playbook walking through Etsy's full 2026 fee stack, category ROAS benchmarks, and three worked real-number scenarios.&lt;/p&gt;

&lt;p&gt;This is built for Etsy sellers doing somewhere between $2,000 and $15,000 a month who are running, or thinking about running, Etsy Ads and want one real number, profit rather than revenue, to make budget decisions from. Doesn't matter if you sell handmade jewelry, printables, or vintage finds; the fee math is the same.&lt;/p&gt;

&lt;p&gt;If this sounds like a gap you've been feeling but hadn't quite named, the tracker is up on &lt;a href="https://logi2.gumroad.com/l/nggcqx" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt;. It's also listed on &lt;a href="https://www.etsy.com/listing/4548493167/etsy-ads-profit-tracker-spreadsheet-etsy" rel="noopener noreferrer"&gt;Etsy&lt;/a&gt; if you'd rather buy it there.&lt;/p&gt;

&lt;p&gt;The bigger lesson, for me, was that "the dashboard says X" is never the same as "my bank account says X." Any platform's built-in reporting is going to show you the metrics that make the platform look good. Profit tracking is always going to be homework you do yourself.&lt;/p&gt;

&lt;p&gt;— Natraj&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/etsys-ad-dashboard-told-me-i-was-winning-my-bank-account-disagreed-65bd3bd04ced" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>business</category>
      <category>productivity</category>
      <category>etsy</category>
    </item>
    <item>
      <title>Spending $400/Month on AI APIs Without Project-Level Cost Visibility</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Fri, 31 Jul 2026 02:02:01 +0000</pubDate>
      <link>https://dev.to/jartan/spending-400month-on-ai-apis-without-project-level-cost-visibility-172m</link>
      <guid>https://dev.to/jartan/spending-400month-on-ai-apis-without-project-level-cost-visibility-172m</guid>
      <description>&lt;p&gt;Six months ago I started building three small AI products at the same time. One was a Slack bot that summarized threads. One was a document Q&amp;amp;A tool using RAG. One was a report generator that called Claude every night.&lt;/p&gt;

&lt;p&gt;At the end of month two I got an email from my credit card: $412 in API charges. I had no idea which project was responsible.&lt;/p&gt;

&lt;p&gt;I logged into OpenAI, Anthropic, and Google dashboards separately. None of them broke costs down by project. I had to grep my logs for request counts, manually look up pricing, and do arithmetic in a spreadsheet I built from scratch at 11pm.&lt;/p&gt;

&lt;p&gt;That spreadsheet became the AI API Cost &amp;amp; Budget Tracker.&lt;/p&gt;

&lt;p&gt;The core insight: if you are running more than one AI project, you need project-level cost tracking. Your OpenAI bill tells you how much you spent on gpt-4o. It does not tell you that your Slack bot used 60% of it while your RAG pipeline used 30% and your report generator used 10%.&lt;/p&gt;

&lt;p&gt;The tracker has five tabs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard&lt;/strong&gt;: auto-calculates month-to-date spend, projects end-of-month total, flags projects over 80% of budget&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage Log&lt;/strong&gt;: record each API call by project, model, and token count — cost columns calculate automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing Reference&lt;/strong&gt;: 19 models pre-filled with July 2026 rates across OpenAI, Anthropic, Google, Groq, and Mistral&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project Budget&lt;/strong&gt;: set monthly budget per project, track percentage used in real time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Comparison&lt;/strong&gt;: see cost-per-request for every model at once&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After two months I cut my API bill by 34% without degrading any product. My nightly report generator was using gpt-4-turbo for a task gpt-4o-mini handled just as well at one-twentieth the cost.&lt;/p&gt;

&lt;p&gt;The tracker is on &lt;a href="https://logi2.gumroad.com/l/ycabl" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt; for $17 and &lt;a href="https://www.etsy.com/listing/4545173841" rel="noopener noreferrer"&gt;Etsy&lt;/a&gt; for $14. Includes a 15-page setup guide and a 12-tactic Cost Optimization Playbook.&lt;/p&gt;

&lt;p&gt;If you are calling more than one AI provider across more than one project and you do not have per-project cost visibility, this solves that in about fifteen minutes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-was-spending-400-month-on-ai-apis-without-knowing-which-project-cost-what-f4bc7706c84f" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
