<?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: Alex Ellman</title>
    <description>The latest articles on DEV Community by Alex Ellman (@aellman).</description>
    <link>https://dev.to/aellman</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3427571%2F6e0f8462-6540-472c-a594-df90fee40473.jpg</url>
      <title>DEV Community: Alex Ellman</title>
      <link>https://dev.to/aellman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aellman"/>
    <language>en</language>
    <item>
      <title>I got to the top of Hacker News and got 12,000 unique visitors in 24 hours</title>
      <dc:creator>Alex Ellman</dc:creator>
      <pubDate>Tue, 12 Aug 2025 17:11:46 +0000</pubDate>
      <link>https://dev.to/aellman/i-got-to-the-top-of-hacker-news-and-got-12000-unique-visitors-in-24-hours-nf3</link>
      <guid>https://dev.to/aellman/i-got-to-the-top-of-hacker-news-and-got-12000-unique-visitors-in-24-hours-nf3</guid>
      <description>&lt;p&gt;About 2 weeks ago I decided to launch a small project I made on Hacker News. It was quite simple, just a website with a single page that displayed a table of the current per dollar prices of the major LLM APIs. It’s called &lt;a href="https://pricepertoken.com" rel="noopener noreferrer"&gt;Price Per Token&lt;/a&gt; and an image of what it looked like when I launched is below.&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.amazonaws.com%2Fuploads%2Farticles%2F1nlks4dg63ooc11jm98q.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.amazonaws.com%2Fuploads%2Farticles%2F1nlks4dg63ooc11jm98q.png" alt=" " width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I made the website to be a small, longer term SEO bet. I did research and found people often would search things like “GPT 4o price,” so thought consolidating prices in one place and making programmatic webpages for each model could work on Google. &lt;/p&gt;

&lt;p&gt;I made the website in a couple hours, collecting the prices for each token manually and entering them into a csv file. The image above is just a simple Nuxt app on top of that file. That was on a Thursday and I decided I would try to get my first backlinks on Hacker News the next day. &lt;/p&gt;

&lt;p&gt;I put a link to the site with the headline LLM API Pricing Data at about 8AM EST and checked back an hour later and was surprised to see my post racking up upvotes and surging to number 3 on overall leaderboard. I checked my traffic on PostHog and saw that in the past hour 1000 visitors had come to the site in the past hour with no indication of slowing down.&lt;/p&gt;

&lt;p&gt;I had to think quick about how to capitalize on this traffic to get some lasting value out of it that day. I figured the surge would only last for the rest of the day at most, which did not leave time for me to offer an actual free or paid service around the data. So I figured I could at least try to capture people’s emails and created a newsletter sign up form using Tally and put it under the pricing table.&lt;/p&gt;

&lt;p&gt;While doing that my Hacker News post was starting to spread over to Twitter (the footer of my website had my Twitter username, &lt;a class="mentioned-user" href="https://dev.to/aellman"&gt;@aellman&lt;/a&gt;) and comments on the post itself were growing. On twitter I was being tagged in posts asking for an API of the data. On the post itself there were comments coming in asking me to include providers in the data, to make changes in the UI and even that some of my data was inaccurate. I responded with updates to the website in real time: fixing the data, adding Xai models and responding to comments about what UI changes I would make in the future.&lt;/p&gt;

&lt;p&gt;By the time the next day arrived I had over 100 newsletter subscribers and 12,000 unique visitors had come to the website. &lt;/p&gt;

&lt;p&gt;I quickly learned that getting to the top of Hacker News does more than just get you traffic from the post itself. By the next day I had acquired over 100 backlinks from websites that pull popular posts from Hacker News, leading to a quick climb to a Domain Authority of 13 on Ahrefs. Throughout the week my website would also be featured on several Podcasts and Newsletters, helping sustain my traffic at over 1000 visitors per day. You can see my to date traffic below:&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.amazonaws.com%2Fuploads%2Farticles%2Fs38syefirtbdlf5obyfk.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.amazonaws.com%2Fuploads%2Farticles%2Fs38syefirtbdlf5obyfk.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Over that week I acquired 250 newsletter subscribers, updated my site to include image models and made my first free tool, an AI Coding Tracker which has about 20 free users. I plan on continuing to ride my Hacker News success and growing the site’s authority through backlink optimization and making SEO focused pages like the new token counter and pricing calculator. In the long term, I see this site becoming an API that helps lower the LLM usage bill for API apps. The success on Hacker News and the site’s growing Newsletter confirms this is a point of interest for devs. I’m not exactly sure what that will look like but hope to learn from the site’s growing audience what the biggest pain points are. &lt;/p&gt;

&lt;p&gt;I’m not exactly sure what the lesson from this story is. I have posted to Hack News since, about the coding tracker I made, and didn’t get a single upvote. Maybe it’s that the internet is random and that if you want to go viral you need to just post a lot to make your own luck. Or that unless you have a big following that going viral is rare and you should be prepared to take advantage of the moment when it happens. In either case I am looking forward to building more sustainable traffic to Price Per Token and making it more valuable than just a table of token prices.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cursor’s New Pricing Blew My Budget, So I Built a Usage Tracker</title>
      <dc:creator>Alex Ellman</dc:creator>
      <pubDate>Mon, 11 Aug 2025 16:02:17 +0000</pubDate>
      <link>https://dev.to/aellman/cursors-new-pricing-blew-my-budget-so-i-built-a-usage-tracker-1cmi</link>
      <guid>https://dev.to/aellman/cursors-new-pricing-blew-my-budget-so-i-built-a-usage-tracker-1cmi</guid>
      <description>&lt;p&gt;In June, Cursor updated its pricing policy and introduced usage-based pricing. All pro users (including me) are now allotted $20 of Sonnet credits and other frontier models at the API price. After running out of allotment, you start paying for each request at API cost. This is a stark change from the seemingly unlimited usage I got before.&lt;br&gt;
I now realize how expensive those requests are. About 3 days into July, I got a warning from Cursor that I would be switched to usage-based pricing (how did that happen so quickly??). I continued using the service as I normally would, unknowingly racking up a sizable bill. In July, I spent $131 total on Cursor, including subscription, so around a 700% increase from the previous month. This is mostly because I code almost solely with Claude, which accounts for around 93% of my tokens in July.&lt;/p&gt;

&lt;p&gt;You may now be wondering how I'm so aware of the specific metrics around my vibe coding. The reason is that I was so shocked at the end of July that I decided to code my &lt;a href="https://pricepertoken.com/coding-tracker" rel="noopener noreferrer"&gt;own tool&lt;/a&gt; that would track my usage for me and help me stay on top of my bill for both Claude Code and Cursor.&lt;/p&gt;

&lt;p&gt;It is the first package I ever made and the first repo I've open-sourced. I coded it in Python (my language of choice, coming from a data science background). It functions just as a simple CLI tool that refreshes your live Cursor and Claude code usage every 5 minutes and displays it on your terminal.&lt;/p&gt;

&lt;p&gt;The coolest part, though, is that it sends your data to a Django server and gives you a nice dashboard on my website, breaking down your daily usage by model so you can see where your money is going. You can see my usage so far this month in the chart below:&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.amazonaws.com%2Fuploads%2Farticles%2Fnwoyhdqrntj00gzmleb6.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.amazonaws.com%2Fuploads%2Farticles%2Fnwoyhdqrntj00gzmleb6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seeing your token counts accumulating throughout the month will also come in handy for Claude Code when they start their new rate limiting. Soon, Anthropic will also be introducing weekly token rate limits to their max-tier ($200) subscribers, which means you may also need to start being aware of WTD token usage in order to avoid a surprise throttle.&lt;/p&gt;

&lt;p&gt;I thought it would be fun to make some kind of model ranking. So, taking inspiration from Open Router's ranking page, I created a leaderboard dashboard of my own. It works by pooling together the MTD token usage of everyone who uses my package and gives a breakdown of the most popular models and how much they make up of the global usage total. You can check that out at the link to my tool above.&lt;/p&gt;

&lt;p&gt;Figuring out how to retrieve the data from Cursor was a struggle. In their API documentation, there is only mention of a usage data endpoint for teams, which doesn't work for me as a solo dev. After almost giving up, I noticed that when I downloaded my usage data in CSV format. I could actually see my browser quickly redirect to an API. From other open source projects, I knew you could get your access token from a local SQLite database Cursor created on every user's machine. So I just tried hitting that endpoint with my credentials from the DB, and I got back the CSV of my usage! It's not in any documentation, so hopefully, Cursor doesn't shut that down if they read this!&lt;/p&gt;

&lt;p&gt;For Claude Code tracking, I leveraged another open-source project called ccusage and embedded it into my package. I simply run that tool like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Build the command
            cmd = ["ccusage", command, "--json"]

            # Add date filters if provided
            if kwargs.get('since'):
                cmd.extend(["--since", kwargs['since']])
            if kwargs.get('until'):
                cmd.extend(["--until", kwargs['until']])

            # Add other options
            if kwargs.get('breakdown'):
                cmd.append("--breakdown")
            if kwargs.get('timezone'):
                cmd.extend(["--timezone", kwargs['timezone']])

            print(f"🔍 Running: {' '.join(cmd)}")

            # Run the command
            result = subprocess.run(
                cmd, 
                capture_output=True, 
                text=True,
                check=True,
                timeout=30
            )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I decided to publish it as a Node package so it would be easier for others to install, even if they don’t have Python set up. To do this, I compiled my Python code into a standalone binary and then wrapped that binary inside a Node.js package. Pretty neat!&lt;/p&gt;

&lt;p&gt;It was a cool but also somewhat anxiety-provoking experience pushing a repo to GitHub and making it public. What if I accidentally push confidential keys or my code isn't good? Eventually I got over it and just pushed it, hoping that it would help other people avoid the surprise I had at the end of July. If anyone here reading it decides to use it, I'd love to hear from you.&lt;/p&gt;

&lt;p&gt;Cursor's new pricing has driven me to start using Claude Code more heavily, as you can see above. I already have multiple more uses from it this month than last (I'm writing this on August 8th). I still find Cursor more reliable, though, so hopefully with my new tool, I am able to keep those vibe code costs in check and their free auto model continues to get better!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
