<?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: Marcelo Maia</title>
    <description>The latest articles on DEV Community by Marcelo Maia (@marcelo_maia).</description>
    <link>https://dev.to/marcelo_maia</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%2F4080189%2F44d6700d-2cf9-4a8b-a3af-120f1173ec8a.jpg</url>
      <title>DEV Community: Marcelo Maia</title>
      <link>https://dev.to/marcelo_maia</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marcelo_maia"/>
    <language>en</language>
    <item>
      <title>Nebraska: the person holding up your project has a name</title>
      <dc:creator>Marcelo Maia</dc:creator>
      <pubDate>Sat, 05 Sep 2026 21:42:33 +0000</pubDate>
      <link>https://dev.to/marcelo_maia/nebraska-the-person-holding-up-your-project-has-a-name-ig1</link>
      <guid>https://dev.to/marcelo_maia/nebraska-the-person-holding-up-your-project-has-a-name-ig1</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-09-03"&gt;Weekend Challenge: Generosity Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;My first three ideas were a donation tracker, a volunteer matcher, and a transparency dashboard for a nonprofit. All fine. All things a hundred other people were about to build.&lt;/p&gt;

&lt;p&gt;Then I noticed something about my own week. I had installed roughly four hundred packages. I had thanked exactly zero people. Not because I am ungrateful — because I never once saw a face.&lt;/p&gt;

&lt;p&gt;The largest act of generosity most developers take part in is one we are on the &lt;em&gt;receiving&lt;/em&gt; end of, every single day, and it is completely invisible to us.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Nebraska&lt;/strong&gt;. You give it a &lt;code&gt;package.json&lt;/code&gt;. It finds the people underneath it, ranks them by how much weight they carry against how little support comes back, and gives you something to actually send to the person at the top of that list.&lt;/p&gt;

&lt;p&gt;The name is &lt;a href="https://xkcd.com/2347/" rel="noopener noreferrer"&gt;xkcd 2347&lt;/a&gt; — all modern digital infrastructure, balanced on a project some random person has been thanklessly maintaining since 2003. Nebraska draws that comic using your real dependency tree.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;→ &lt;a href="https://marcelo-henry.github.io/nebraska/" rel="noopener noreferrer"&gt;marcelo-henry.github.io/nebraska&lt;/a&gt;&lt;/strong&gt; — no signup, no API key, about eight seconds.&lt;/p&gt;

&lt;p&gt;Paste a &lt;code&gt;package.json&lt;/code&gt;, a GitHub URL, or just a package name. Here is Express, the most-used framework in Node:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcafp33a411kt7yth00ju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcafp33a411kt7yth00ju.png" alt="Express and its 46 dependencies drawn as a brick wall standing on a single pillar labelled " width="800" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every brick is a package Express ships, coloured by how much it owes them. The load gathers at the bottom. The whole wall rests on one pillar.&lt;/p&gt;

&lt;p&gt;Forty-six packages. Seventy-nine people. &lt;strong&gt;Fifteen of those packages are kept alive by one person, and fourteen of them have no way to accept money at all.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Filter the ledger down to the solo maintainers and it stops being abstract:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1  depd          one person   150M/wk   No way to pay them   (last push 2024)
2  once          one person   157M/wk   No way to pay them   (last push 2025)
3  accepts       one person   148M/wk   No way to pay them   (last push 2026)
4  on-finished   one person   138M/wk   No way to pay them   (last push 2026)
5  fresh         one person   137M/wk   No way to pay them   (last push 2026)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A hundred and fifty million downloads a week, each, and not a single funding link between them. That is not a bug in npm. That is what the foundation looks like when you finally point a light at it.&lt;/p&gt;

&lt;p&gt;The one at the top is the one the comic is actually about. &lt;code&gt;depd&lt;/code&gt; has a single maintainer, no way to accept money, and a repository nobody has pushed to since 2024. Quiet and load-bearing at the same time.&lt;/p&gt;

&lt;p&gt;Open any row and you get the maintainer handles, the funding link if one exists, and a note you can send:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/kael"&gt;@kael&lt;/a&gt; — you maintain ignore by yourself.&lt;/p&gt;

&lt;p&gt;It was downloaded 312 million times last week. One of those was my project. I never installed it directly — it came in underneath something else I chose, which is why it took me this long to look.&lt;/p&gt;

&lt;p&gt;There is no funding link on it, so there is nothing for me to click. I can at least write this.&lt;/p&gt;

&lt;p&gt;Thank you. Genuinely.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is also a &lt;code&gt;THANKS.md&lt;/code&gt; you can commit next to your README.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Marcelo-Henry" rel="noopener noreferrer"&gt;
        Marcelo-Henry
      &lt;/a&gt; / &lt;a href="https://github.com/Marcelo-Henry/nebraska" rel="noopener noreferrer"&gt;
        nebraska
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Paste a package.json. Find the people holding up your project. xkcd 2347, drawn with your real dependency tree.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Nebraska&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;Paste a &lt;code&gt;package.json&lt;/code&gt;. Find the people underneath it.&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/Marcelo-Henry/nebraska/assets/example-express.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FMarcelo-Henry%2Fnebraska%2FHEAD%2Fassets%2Fexample-express.svg" alt="Express and its 46 dependencies drawn as a brick wall standing on a single pillar labelled 'depd — one person, unpaid, 150M downloads a week'" width="720"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Every project you ship stands on work somebody gave away. Nebraska walks your
dependency tree, finds the humans behind it, and ranks the packages by how much
weight they carry against how little support comes back — then gives you a way
to say something to the person at the top of that list.&lt;/p&gt;
&lt;p&gt;The drawing above is Express. Forty-six packages, seventy-nine people. Fifteen of
those packages are kept alive by one person, and fourteen of them have no way to
accept money at all. The pillar holding the whole thing up is &lt;code&gt;depd&lt;/code&gt; — one
maintainer, no funding link, a hundred and fifty million downloads a week, and a
repository that has not been touched in years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://marcelo-henry.github.io/nebraska/" rel="nofollow noopener noreferrer"&gt;Open it&lt;/a&gt;&lt;/strong&gt; · runs entirely in the browser, no build, no backend, no API key.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it actually does&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Reads a &lt;code&gt;package.json&lt;/code&gt;…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Marcelo-Henry/nebraska" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Zero dependencies.&lt;/strong&gt; A tool about dependency debt that adds to yours would be a bad joke. No build step, no bundler, no framework, no backend — plain ES modules served as static files, running entirely in your tab.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The score, published rather than hidden
&lt;/h3&gt;

&lt;p&gt;The theme included "ethical and accountable giving", so a black-box number felt like the wrong move. Every signal is a pure function of public data, and the whole thing fits on one screen in &lt;a href="https://github.com/Marcelo-Henry/nebraska/blob/main/src/score.js" rel="noopener noreferrer"&gt;&lt;code&gt;src/score.js&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reach&lt;/strong&gt; is weekly downloads on a &lt;code&gt;log10&lt;/code&gt; scale. Going from a hundred users to a thousand matters more than ten million to eleven.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support&lt;/strong&gt; is maintainer count — saturating at four, because past that you have a team — plus a flat share for having any way to accept money at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Silence&lt;/strong&gt; raises the score once a repository is archived or has been quiet over a year. Abandoned &lt;em&gt;and&lt;/em&gt; load-bearing is the exact failure the comic draws.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Depth&lt;/strong&gt; weighs a transitive dependency slightly lower, because you never chose it — which is precisely why you never thought to thank anyone for it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Debt never reaches zero for a package you actually use. Being paid is not the same as being thanked, and I wanted the formula to say that out loud.&lt;/p&gt;

&lt;h3&gt;
  
  
  Three things I got wrong first
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The 2.9 MB trap.&lt;/strong&gt; The obvious way to read a package is to fetch its registry document. Do that for &lt;code&gt;react&lt;/code&gt; and you get 2.9 MB, almost all of it every README ever published. The &lt;code&gt;/latest&lt;/code&gt; endpoint returns the same maintainers, funding links and dependencies in about 2 KB. That single change is the difference between usable and unusable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bug that mattered most.&lt;/strong&gt; Early runs on the same repo returned 112 packages, then 100, then 97. My retry logic only covered 5xx — but npm's CDN answers a burst with &lt;strong&gt;429&lt;/strong&gt;, which was falling straight through as a permanent failure. The tree was quietly shrinking, and the size of the tree is the entire claim this page makes. Now 429 backs off exponentially, and anything still unreadable is reported to you instead of silently dropped. Three runs in a row: 112, 112, 112.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never block on the optional part.&lt;/strong&gt; GitHub's anonymous limit is 60 requests an hour, and the archived-repo check was holding the whole report behind it — 28 seconds. Moving it off the critical path took that to 8. It now enriches the heaviest rows in the background, stops the instant the limit answers back, and tells you it was skipped rather than pretending it ran.&lt;/p&gt;

&lt;p&gt;That last one changed a result, which is my favourite part. Without the GitHub signal, Express's pillar is &lt;code&gt;once&lt;/code&gt;. With it, &lt;code&gt;depd&lt;/code&gt; overtakes it — same lone maintainer, but a repo that has been silent since 2024. The tool found the more honest answer than the one I had.&lt;/p&gt;

&lt;h3&gt;
  
  
  Google AI
&lt;/h3&gt;

&lt;p&gt;Every thank-you note has an offline version written from real numbers, and it is never a placeholder — that is the one quoted above. Paste a Google AI Studio key into a row and &lt;strong&gt;Gemini&lt;/strong&gt; rewrites it knowing what the package actually does. The key stays in the tab, is held in memory only, and is sent to nobody but Google.&lt;/p&gt;

&lt;p&gt;One writing detail I liked: quoting the npm description verbatim was the only construction that stayed grammatical for every package. Some read &lt;em&gt;"A parser for X"&lt;/em&gt;, others read &lt;em&gt;"Run a function exactly one time"&lt;/em&gt; — splice either into a sentence and half your notes come out broken. There is a test for it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it deliberately does not do
&lt;/h3&gt;

&lt;p&gt;It reads &lt;code&gt;dependencies&lt;/code&gt;, not your lockfile, so it sees the tree you declare rather than the exact one you install. It counts npm maintainer accounts, which means a publishing bot counts as one person — so every row lists the actual handles, because a number that can mislead should show its work.&lt;/p&gt;

&lt;p&gt;And it cannot tell you whether the person on the other end wants to hear from you. Read the note before you send it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Google AI&lt;/strong&gt; — Gemini writes the thank-you notes, using what each package actually does, with your own API key held only in the tab.&lt;/p&gt;




&lt;p&gt;Run it on your own project. I would genuinely like to know who turns up at the bottom of your stack — drop the name in the comments. Somebody should say it to them.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>DeepSeek Code: A TUI for working in your terminal with DeepSeek!</title>
      <dc:creator>Marcelo Maia</dc:creator>
      <pubDate>Sun, 16 Aug 2026 15:15:59 +0000</pubDate>
      <link>https://dev.to/marcelo_maia/deepseek-code-a-tui-for-working-in-your-terminal-with-deepseek-2o4k</link>
      <guid>https://dev.to/marcelo_maia/deepseek-code-a-tui-for-working-in-your-terminal-with-deepseek-2o4k</guid>
      <description>&lt;p&gt;&lt;strong&gt;DeepSeek Code&lt;/strong&gt; is an open-source CLI built specifically for DeepSeek — one of the most cost-effective AI models on the market!&lt;/p&gt;

&lt;p&gt;It was heavily inspired by tools like Claude Code and OpenAI's Codex for most of its feature set. Since it is fully open-source, you are more than welcome to open Pull Requests, report bugs, or submit issue suggestions!&lt;/p&gt;

&lt;p&gt;Installation&lt;br&gt;
You can install it globally via npm or bun:&lt;/p&gt;

&lt;p&gt;``&lt;/p&gt;

&lt;h1&gt;
  
  
  Using npm
&lt;/h1&gt;

&lt;p&gt;npm install --global @hermenics/deepseek-code&lt;/p&gt;

&lt;h1&gt;
  
  
  Using bun
&lt;/h1&gt;

&lt;p&gt;bun add -g @hermenics/deepseek-code&lt;br&gt;
``&lt;/p&gt;

&lt;p&gt;Check out the repository, star the project, or contribute:&lt;br&gt;
👉 GitHub: &lt;a href="https://github.com/Hermenics/deepseek-code" rel="noopener noreferrer"&gt;https://github.com/Hermenics/deepseek-code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to test it out and leave your feedback below! PRs and Issues are highly appreciated.&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #cli #showdev #typescipt
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>cli</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
