<?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: Ama</title>
    <description>The latest articles on DEV Community by Ama (@amals367).</description>
    <link>https://dev.to/amals367</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%2F3745339%2Fc5b18e65-62d1-4923-b31e-7940ab6eb0b3.jpeg</url>
      <title>DEV Community: Ama</title>
      <link>https://dev.to/amals367</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amals367"/>
    <language>en</language>
    <item>
      <title># How to Apply for the GitHub Student Developer Pack Without Getting Rejected 🚀</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Wed, 20 May 2026 17:38:13 +0000</pubDate>
      <link>https://dev.to/amals367/-how-to-apply-for-the-github-student-developer-pack-without-getting-rejected-43k2</link>
      <guid>https://dev.to/amals367/-how-to-apply-for-the-github-student-developer-pack-without-getting-rejected-43k2</guid>
      <description>&lt;p&gt;In the &lt;a href="https://dev.to/amals367/what-you-actually-get-from-github-student-developer-pack-no-corporate-fluff-2g3a"&gt;previous post&lt;/a&gt;, I showed what you actually get from the GitHub Student Developer Pack and why it’s worth claiming if you’re learning to code.&lt;/p&gt;

&lt;p&gt;Now let’s talk about the important part:&lt;/p&gt;

&lt;p&gt;How do you actually get approved?&lt;/p&gt;

&lt;p&gt;Because yes, GitHub can reject your application if your profile looks messy, your name doesn’t match your documents, or your account information feels suspicious.&lt;/p&gt;

&lt;p&gt;So before you smash the “Apply” button, fix the basics first.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Set your legal name on GitHub 🪪
&lt;/h2&gt;

&lt;p&gt;First, go to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://github.com/settings/profile&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;Name&lt;/strong&gt; field, write your real legal name.&lt;/p&gt;

&lt;p&gt;Not your nickname or &lt;code&gt;backend_god_777&lt;/code&gt;&lt;br&gt;
Your actual name.&lt;/p&gt;

&lt;p&gt;This matters because GitHub may ask you to verify your student status with a document, and the name on your GitHub profile should match the name on that document.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don’t lie here. It’s not worth it. If your name doesn’t match, you’re basically asking the verification system to slap your application into the rejection bin.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. Fill in your billing information, but don’t add a card 💳
&lt;/h2&gt;

&lt;p&gt;Next, go to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://github.com/settings/billing/payment_information&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Scroll to &lt;strong&gt;Billing information&lt;/strong&gt; and fill it in properly.&lt;/p&gt;

&lt;p&gt;You need to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First name&lt;/li&gt;
&lt;li&gt;Last name&lt;/li&gt;
&lt;li&gt;Real address&lt;/li&gt;
&lt;li&gt;City&lt;/li&gt;
&lt;li&gt;Country&lt;/li&gt;
&lt;li&gt;State / Province&lt;/li&gt;
&lt;li&gt;Postal / ZIP code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;VAT / GST ID&lt;/strong&gt; field can be left empty if you don’t have one.&lt;/p&gt;

&lt;p&gt;Important: you don’t need to add a payment card for this step. Just fill in the billing information so your account looks complete and consistent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Again, don’t write random nonsense here.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your GitHub profile says one thing, your billing information says another thing, and your student document says something completely different, the verification system will not magically trust you.&lt;/p&gt;

&lt;p&gt;It will probably just reject you and go drink coffee somewhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Apply for GitHub Education benefits 🎓
&lt;/h2&gt;

&lt;p&gt;Now go to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://github.com/settings/education/benefits&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is where you apply for the GitHub Student Developer Pack.&lt;/p&gt;

&lt;p&gt;Fill in the required information carefully. Choose your school/college/university, add the requested details, and submit your application.&lt;/p&gt;

&lt;p&gt;GitHub may ask you to verify that you’re actually a student. Depending on your case, this can include things like a student email, school-issued document, student ID, transcript, or another proof of enrollment.&lt;/p&gt;

&lt;p&gt;Make sure your document is readable, current, and matches the name you added earlier.&lt;/p&gt;

&lt;p&gt;This is not the moment to upload a blurry potato photo taken from across the room.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Prepare a proper student document 📄
&lt;/h2&gt;

&lt;p&gt;Before submitting the application, make sure your proof of student status actually looks official.&lt;/p&gt;

&lt;p&gt;In my case, the document had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;my first name and last name&lt;/li&gt;
&lt;li&gt;my class / grade&lt;/li&gt;
&lt;li&gt;the academic year&lt;/li&gt;
&lt;li&gt;the issue date of the certificate&lt;/li&gt;
&lt;li&gt;the signature of an authorized person&lt;/li&gt;
&lt;li&gt;the official blue round stamp / seal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last part matters. A plain document with just your name typed on it may not be enough. GitHub needs to see that it came from a real educational institution, not from your “trust me bro” department.&lt;/p&gt;

&lt;p&gt;Also, make sure the document is readable. No blurry photos, no weird angles, no dark screenshots where the text looks like ancient cave writing.&lt;/p&gt;

&lt;p&gt;Your name on the document should match the legal name you added to your GitHub profile earlier. If the names don’t match, don’t be surprised if the verification system throws your application into the shadow realm.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Check your email 📩
&lt;/h2&gt;

&lt;p&gt;After submitting your application, check your email.&lt;/p&gt;

&lt;p&gt;If everything was submitted correctly, GitHub should send you a confirmation email saying they received your application. It may also give you an estimated date for when you should get a final response.&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%2Fd7svukflhcf9o3pfeniq.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%2Fd7svukflhcf9o3pfeniq.png" alt="It can look something like this:" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you get rejected, don’t panic.&lt;/p&gt;

&lt;p&gt;Read the reason carefully. Usually, it’s something boring but fixable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name mismatch&lt;/li&gt;
&lt;li&gt;unclear document&lt;/li&gt;
&lt;li&gt;expired proof&lt;/li&gt;
&lt;li&gt;wrong school information&lt;/li&gt;
&lt;li&gt;incomplete GitHub profile&lt;/li&gt;
&lt;li&gt;document doesn’t clearly show active enrollment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fix the issue and apply again properly.&lt;/p&gt;

&lt;p&gt;The goal is not to “trick” GitHub.&lt;/p&gt;

&lt;p&gt;The goal is to make your information clean, consistent, and easy to verify.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Don’t rush the application 🧠
&lt;/h2&gt;

&lt;p&gt;A lot of people get rejected because they apply too fast with a half-empty GitHub profile and messy account details.&lt;/p&gt;

&lt;p&gt;Before applying, quickly check this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your GitHub name matches your document&lt;/li&gt;
&lt;li&gt;Your billing information is filled in&lt;/li&gt;
&lt;li&gt;Your school information is correct&lt;/li&gt;
&lt;li&gt;Your document is clear and readable&lt;/li&gt;
&lt;li&gt;Your proof shows that you’re currently a student&lt;/li&gt;
&lt;li&gt;Your email is accessible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Small details matter here.&lt;/p&gt;

&lt;p&gt;The verification system is not your friend. It doesn’t understand “bro trust me.”&lt;/p&gt;

&lt;p&gt;It wants clean information.&lt;/p&gt;

&lt;p&gt;Give it clean information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final checklist ✅
&lt;/h2&gt;

&lt;p&gt;Before applying, do this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;https://github.com/settings/profile&lt;/code&gt; and set your real legal name.&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;https://github.com/settings/billing/payment_information&lt;/code&gt; and fill in your billing information.&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;https://github.com/settings/education/benefits&lt;/code&gt; and submit your application.&lt;/li&gt;
&lt;li&gt;Check your email for updates.&lt;/li&gt;
&lt;li&gt;If GitHub asks for extra verification, send a clear and valid document.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;No magic.&lt;br&gt;
No shady tricks.&lt;br&gt;
No fake data.&lt;/p&gt;

&lt;p&gt;Just make your account look real, consistent, and verifiable.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>github</category>
    </item>
    <item>
      <title>What You Actually Get from GitHub Student Developer Pack (No Corporate Fluff) ⚡</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Wed, 20 May 2026 17:21:45 +0000</pubDate>
      <link>https://dev.to/amals367/what-you-actually-get-from-github-student-developer-pack-no-corporate-fluff-2g3a</link>
      <guid>https://dev.to/amals367/what-you-actually-get-from-github-student-developer-pack-no-corporate-fluff-2g3a</guid>
      <description>&lt;p&gt;If you’re a student or just learning to code, please don’t start your dev journey by burning money on premium tools.&lt;/p&gt;

&lt;p&gt;You don’t need to pay for every shiny “Pro” button you see.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;GitHub Student Developer Pack&lt;/strong&gt; is basically a loot box for developers, except this one is legal, useful, and doesn’t ask your wallet to bleed 🫠&lt;/p&gt;

&lt;p&gt;You get IDEs, hosting credits, cloud platforms, learning resources, monitoring tools, and a bunch of other stuff. But here’s the problem:&lt;/p&gt;

&lt;p&gt;The official directory has &lt;strong&gt;a lot&lt;/strong&gt; of tools.&lt;/p&gt;

&lt;p&gt;And when you’re still learning, it’s easy to open the list and think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Cool… but what am I actually supposed to use?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I filtered out the noise and kept the stuff I’d actually care about if I were building backend APIs, Telegram bots, automation scripts, portfolio projects, or small SaaS experiments.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. GitHub Copilot: amazing, but there’s a catch 🤖
&lt;/h2&gt;

&lt;p&gt;Let’s talk about the AI elephant in the terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Copilot Student is currently paused for new sign-ups.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you already have access, nice. Keep using it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you’re applying now, don’t build your whole plan around it.&lt;/p&gt;

&lt;p&gt;Copilot is useful🧠&lt;br&gt;
It can save time🧠&lt;br&gt;
It can help you move faster🧠&lt;/p&gt;

&lt;p&gt;But it won’t magically turn bad fundamentals into clean code.&lt;/p&gt;

&lt;p&gt;While Copilot Student is paused, you can still use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot Free&lt;/li&gt;
&lt;li&gt;ChatGPT&lt;/li&gt;
&lt;li&gt;Gemini&lt;/li&gt;
&lt;li&gt;Notion AI&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;and the ancient senior-dev ritual: actually reading the error message 💀&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI is a tool.&lt;/p&gt;

&lt;p&gt;Not a replacement for your brain.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. JetBrains IDEs: probably the fattest win in the pack 🧠
&lt;/h2&gt;

&lt;p&gt;This is the one I’d claim first.&lt;/p&gt;

&lt;p&gt;The Student Pack gives you access to JetBrains tools like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PyCharm Professional&lt;/li&gt;
&lt;li&gt;WebStorm&lt;/li&gt;
&lt;li&gt;IntelliJ IDEA Ultimate&lt;/li&gt;
&lt;li&gt;DataGrip&lt;/li&gt;
&lt;li&gt;PhpStorm&lt;/li&gt;
&lt;li&gt;and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re learning backend, this is huge.&lt;/p&gt;

&lt;p&gt;Python / FastAPI / Django?&lt;br&gt;
Use &lt;strong&gt;PyCharm Professional&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Node.js / TypeScript / frontend-heavy work?&lt;br&gt;
Use &lt;strong&gt;WebStorm&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Working with databases?&lt;br&gt;
&lt;strong&gt;DataGrip&lt;/strong&gt; will make you wonder why you were fighting raw database clients like a medieval peasant.&lt;/p&gt;

&lt;p&gt;And most importantly:&lt;/p&gt;

&lt;p&gt;No cracked IDEs.&lt;br&gt;
No sketchy downloads.&lt;br&gt;
No “why is Windows Defender suddenly judging my life choices?” moments 😬&lt;/p&gt;

&lt;p&gt;Just proper tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Heroku: easy deployment without DevOps pain ☁️
&lt;/h2&gt;

&lt;p&gt;Heroku gives students &lt;strong&gt;$13/month in credits for 24 months&lt;/strong&gt;, which adds up to &lt;strong&gt;$312&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That’s actually useful.&lt;/p&gt;

&lt;p&gt;You can host:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI apps&lt;/li&gt;
&lt;li&gt;Express APIs&lt;/li&gt;
&lt;li&gt;Django projects&lt;/li&gt;
&lt;li&gt;Telegram bots&lt;/li&gt;
&lt;li&gt;webhook servers&lt;/li&gt;
&lt;li&gt;cron jobs&lt;/li&gt;
&lt;li&gt;small portfolio backends&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Heroku is great when you want to deploy something without spending three days wrestling with server config.&lt;/p&gt;

&lt;p&gt;You push your code.&lt;br&gt;
It runs.&lt;br&gt;
You fix your actual bugs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Beautiful little backend sandwich 🥪&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  4. DigitalOcean: when you want to learn real server stuff 🐧
&lt;/h2&gt;

&lt;p&gt;DigitalOcean gives eligible new users &lt;strong&gt;$200 in credit for 1 year&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is where things get more serious.&lt;/p&gt;

&lt;p&gt;Use it when you want to learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linux servers&lt;/li&gt;
&lt;li&gt;SSH&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;background workers&lt;/li&gt;
&lt;li&gt;proper backend deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Heroku is “ship fast”.&lt;/p&gt;

&lt;p&gt;DigitalOcean is “understand what’s happening under the hood”.&lt;/p&gt;

&lt;p&gt;And if you want to become a strong backend developer, you need that under-the-hood knowledge.&lt;/p&gt;

&lt;p&gt;Not immediately. But eventually, yes.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Azure: useful cloud credit with less billing anxiety 💳
&lt;/h2&gt;

&lt;p&gt;Azure for Students gives you &lt;strong&gt;$100 in credit&lt;/strong&gt; and access to a bunch of cloud services.&lt;/p&gt;

&lt;p&gt;The nice part?&lt;/p&gt;

&lt;p&gt;No credit card required.&lt;/p&gt;

&lt;p&gt;That matters.&lt;/p&gt;

&lt;p&gt;Because nobody wants to wake up to a surprise cloud bill that looks like a boss fight health bar.&lt;/p&gt;

&lt;p&gt;Azure is useful if you want to experiment with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;app hosting&lt;/li&gt;
&lt;li&gt;databases&lt;/li&gt;
&lt;li&gt;serverless functions&lt;/li&gt;
&lt;li&gt;cloud storage&lt;/li&gt;
&lt;li&gt;enterprise-style cloud tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wouldn’t start here first as a beginner.&lt;/p&gt;

&lt;p&gt;But it’s a good place to explore once you already understand the basics.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Sentry: know when your code explodes before users do 🔥
&lt;/h2&gt;

&lt;p&gt;Sentry is one of those tools beginners ignore until something breaks in production.&lt;/p&gt;

&lt;p&gt;Then suddenly it becomes very interesting.&lt;/p&gt;

&lt;p&gt;With the Student Pack, you get a useful Sentry allowance for error tracking and performance monitoring.&lt;/p&gt;

&lt;p&gt;Connect it to your backend and you can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what error happened&lt;/li&gt;
&lt;li&gt;where it happened&lt;/li&gt;
&lt;li&gt;how often it happened&lt;/li&gt;
&lt;li&gt;which request caused it&lt;/li&gt;
&lt;li&gt;what needs fixing first&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the difference between:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Bro, your app is broken.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I already saw the error, fixed it, and deployed the patch.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That second version makes you look much more professional.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Learning platforms: good, but don’t collect courses like trophies 📚
&lt;/h2&gt;

&lt;p&gt;The pack also includes learning resources like Codédex and other education offers.&lt;/p&gt;

&lt;p&gt;These can be useful. But don’t fall into the classic beginner trap:&lt;/p&gt;

&lt;p&gt;Collecting courses instead of building projects.&lt;/p&gt;

&lt;p&gt;A course is good if it helps you build something.&lt;/p&gt;

&lt;p&gt;A course is bad if it becomes another way to avoid opening your code editor.&lt;/p&gt;

&lt;p&gt;Use learning platforms to fill gaps.&lt;/p&gt;

&lt;p&gt;Then go build.&lt;/p&gt;

&lt;p&gt;That’s where the real XP is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’d claim first
&lt;/h2&gt;

&lt;p&gt;If you’re learning backend, I’d start with this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;JetBrains IDEs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Heroku&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DigitalOcean&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sentry&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notion / learning tools&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This gives you a strong setup for writing, deploying, monitoring, and improving real projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final verdict 🧩
&lt;/h2&gt;

&lt;p&gt;Even with GitHub Copilot Student paused for new sign-ups, the &lt;strong&gt;GitHub Student Developer Pack is still absolutely worth it (absolute OP)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The JetBrains license alone is already a big win.&lt;/p&gt;

&lt;p&gt;Add Heroku, DigitalOcean, Azure, Sentry, and learning resources on top, and it becomes one of the best free bundles you can get as a student developer.&lt;/p&gt;

&lt;p&gt;So if you’re eligible, don’t sleep on it.&lt;/p&gt;

&lt;p&gt;Claim the pack.&lt;/p&gt;

&lt;p&gt;Pick a few tools.&lt;/p&gt;

&lt;p&gt;Build something real.&lt;/p&gt;

&lt;p&gt;Your portfolio won’t grow by itself.&lt;br&gt;
&lt;strong&gt;How to apply&lt;/strong&gt;: &lt;a href="https://dev.to/amals367/-how-to-apply-for-the-github-student-developer-pack-without-getting-rejected-43k2"&gt;in this post&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>github</category>
    </item>
    <item>
      <title>What You Actually Get from Google AI Pro (Beyond the Marketing)</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Thu, 05 Mar 2026 12:11:01 +0000</pubDate>
      <link>https://dev.to/amals367/what-you-actually-get-from-google-ai-pro-beyond-the-marketing-17c2</link>
      <guid>https://dev.to/amals367/what-you-actually-get-from-google-ai-pro-beyond-the-marketing-17c2</guid>
      <description>&lt;p&gt;Everyone lists the 2 TB and Gemini access, but that's just the box 📦. The real value is in the workflows it quietly unlocks—if you know where to look.&lt;/p&gt;




&lt;h2&gt;
  
  
  The real problem
&lt;/h2&gt;

&lt;p&gt;Most productivity tools add more steps to your day. You subscribe for one shiny feature, but end up managing another app, learning new shortcuts, and fighting a different UI 😮‍💨. The promise of "AI assistance" often feels like more work, not less.&lt;/p&gt;

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

&lt;p&gt;I stopped treating it as a chatbot subscription and started treating it as a &lt;strong&gt;context engine&lt;/strong&gt; 🧠. The goal isn't to have conversations with AI; it's to offload the mental overhead of starting, summarizing, and connecting information scattered across Google's ecosystem. The trade-off? You have to lean into Google's apps (Docs, Drive, Gmail) to get the full benefit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real workflow (step-by-step)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Dump everything into a dedicated Drive folder.&lt;/strong&gt; I have a folder called &lt;code&gt;_context&lt;/code&gt;. In goes every project brief, meeting note, spec sheet, and useful snippet I find. This isn't for organization—it's raw material 🗃️.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Start every new Doc with a command, not a thought.&lt;/strong&gt; Instead of staring at a blank page, I write a prompt like: "Based on the files in the &lt;code&gt;_context&lt;/code&gt; folder about [Project X], draft a technical approach focusing on error handling." It uses my past work as a template 🚀.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Use Gmail's "Help me write" for triage, not composition.&lt;/strong&gt; I don't have it write full emails. I use it on dense threads with: "Summarize the key decisions and list action items for me." In 3 seconds, I know if I need to engage or not 📬.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Mistakes and gotchas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Mistake 1: Treating Gemini like a search engine.&lt;/strong&gt; It's terrible for factual lookups 🔍. Its strength is synthesizing &lt;em&gt;your&lt;/em&gt; content. Avoid asking "what is X?"; ask "based on my document Y, how would I approach X?"&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Mistake 2: Ignoring the family plan structure.&lt;/strong&gt; If you're paying solo, you're overpaying 💸. The 6-person family sharing is the secret. You can split the cost with trusted colleagues (everyone keeps their own account/data), making it one of the cheapest per-person AI tools available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More about family plan is &lt;a href="https://dev.to/amals367/20-subscription-6-people-google-one-ai-family-sharing-explained-65a"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final take
&lt;/h2&gt;

&lt;p&gt;Don't buy it for the AI. Buy it for the 2 TB of unified storage, then use the AI to make that storage actively useful. The intelligence is a bonus that only works if you feed it your own context.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR 🧾
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  The core benefit is using 2 TB of Drive storage as your team's or your own active, AI-accessible memory.&lt;/li&gt;
&lt;li&gt;  Real value comes from prompting Gemini with &lt;em&gt;your&lt;/em&gt; documents and emails, not general knowledge.&lt;/li&gt;
&lt;li&gt;  Always use the Family Plan; share with 5 others to drop the effective cost to ~$3.33/person/month.&lt;/li&gt;
&lt;li&gt;  It's a system for reducing startup friction on tasks, not a magic idea generator.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What's the one annoying task it's actually helped you automate?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>context</category>
      <category>google</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stop paying OpenAI to transcribe your voice notes (My offline Telegram bot stack) 🎙️</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Wed, 04 Mar 2026 13:45:16 +0000</pubDate>
      <link>https://dev.to/amals367/stop-paying-openai-to-transcribe-your-voice-notes-my-offline-telegram-bot-stack-3a65</link>
      <guid>https://dev.to/amals367/stop-paying-openai-to-transcribe-your-voice-notes-my-offline-telegram-bot-stack-3a65</guid>
      <description>&lt;p&gt;Every tutorial on building an &lt;strong&gt;AI Telegram bot&lt;/strong&gt; right now uses the exact same lazy architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User sends a voice message.&lt;/li&gt;
&lt;li&gt;Bot downloads the .ogg file.&lt;/li&gt;
&lt;li&gt;Bot sends the file to OpenAI's Whisper API.&lt;/li&gt;
&lt;li&gt;You get billed per minute of audio.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is fine if you are building a quick prototype. But if you actually use your bot every single day, you are burning money on a task your own CPU can do for free. Not to mention the privacy nightmare of shipping all your personal audio logs to a third-party cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The local alternative ⚙️&lt;/strong&gt;&lt;br&gt;
I wanted to build a Telegram interface for the Nomi API. I heavily rely on voice messages, so I needed speech-to-text.&lt;/p&gt;

&lt;p&gt;Instead of defaulting to a paid API, I built the entire transcription pipeline locally using Vosk and FFmpeg.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow is dead simple:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Telegram sends the .ogg voice note.&lt;/li&gt;
&lt;li&gt;FFmpeg runs a local process to convert it to a .wav file with the correct sample rate.&lt;/li&gt;
&lt;li&gt;The offline Vosk model reads the file and returns the text.&lt;/li&gt;
&lt;li&gt;Then the text is sent to the LLM.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;code Python

# The core logic is just wrapping the offline tools
# No network requests, no API keys for the transcription

async def process_voice(file_path):
    wav_path = convert_ogg_to_wav_ffmpeg(file_path)
    text = await run_vosk_transcription(wav_path)
    return text
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why this matters 🧱&lt;/strong&gt;&lt;br&gt;
Network latency disappears. Your server isn't waiting on a cloud provider to process an audio file. The transcription happens instantly, offline, and costs absolutely zero dollars.&lt;/p&gt;

&lt;p&gt;More importantly, it forces you to understand your tools. Setting up async subprocesses for FFmpeg inside a Telegram bot (I use aiogram) teaches you way more about backend architecture than just making another HTTP request to OpenAI.&lt;/p&gt;

&lt;p&gt;You can find the entire implementation in my NomiAssistantTG repo. It handles the Telegram async loop, the offline voice processing, and the API connections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I build micro-tools (and a quick favor) 🤝&lt;/strong&gt;&lt;br&gt;
Developers default to paid SaaS tools because setting up local binaries like FFmpeg and Vosk feels like a headache.&lt;/p&gt;

&lt;p&gt;I spend my time taking those headaches, wrapping them into clean, reusable Python code, and dropping them on GitHub. My repositories aren't theoretical frameworks; they are the actual tools I use to bypass expensive API limits.&lt;/p&gt;

&lt;p&gt;If my NomiAssistantTG code just saved you a monthly OpenAI Whisper bill, or gave you a working async boilerplate for your next Telegram bot, consider dropping a sponsorship on my GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/sponsors/AmaLS367" rel="noopener noreferrer"&gt;Sponsor AmaLS367 on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your support directly buys the time I need to keep breaking things, reading awful documentation, and open-sourcing production-ready templates so you don't have to.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Stop sending basic audio transcription to the cloud.&lt;/li&gt;
&lt;li&gt;Use FFmpeg to normalize Telegram voice notes.&lt;/li&gt;
&lt;li&gt;Use Vosk for free, offline, instant speech-to-text.&lt;/li&gt;
&lt;li&gt;Keep your architecture lean.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Are you still using Whisper API for personal projects, or have you moved to local models? Let me know 👇&lt;/p&gt;

</description>
      <category>python</category>
      <category>telegram</category>
      <category>backend</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I deleted my entire AI microservice and just used Postgres (here is why) 🐘⚡</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Sun, 01 Mar 2026 11:04:22 +0000</pubDate>
      <link>https://dev.to/amals367/i-deleted-my-entire-ai-microservice-and-just-used-postgres-here-is-why-541m</link>
      <guid>https://dev.to/amals367/i-deleted-my-entire-ai-microservice-and-just-used-postgres-here-is-why-541m</guid>
      <description>&lt;p&gt;A few months ago, I needed to build a feature that everyone is asking for right now: &lt;em&gt;"Let our users chat with their messy data."&lt;/em&gt; (In my case, it was a massive dump of chaotic customer support tickets).&lt;/p&gt;

&lt;p&gt;If you Google how to build this, the internet will immediately try to sell you a 5-tier architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need a Vector DB for embeddings.&lt;/li&gt;
&lt;li&gt;You need a graph database for relationships.&lt;/li&gt;
&lt;li&gt;You need LangChain to glue it together.&lt;/li&gt;
&lt;li&gt;You need a separate Python microservice to run it all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I fell for it. I built it.&lt;/strong&gt;&lt;br&gt;
And two weeks later, I was dealing with the most annoying bug in modern engineering: State mismatch.&lt;/p&gt;

&lt;p&gt;A user would delete a ticket in our main database, but the vector representation of that ticket &lt;strong&gt;still lived&lt;/strong&gt; in our Vector DB. The AI kept hallucinating answers based on deleted data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "Aha" Moment 💡&lt;/strong&gt;&lt;br&gt;
Syncing data between a relational database and a dedicated vector database is a nightmare. You have to write custom webhooks, handle failed retries, and pay for two separate servers.&lt;/p&gt;

&lt;p&gt;So, I just threw it all away.&lt;/p&gt;

&lt;p&gt;I stopped treating AI like some magical entity that requires a bespoke ecosystem, and went back to the most reliable tool in the backend world: Postgres.&lt;/p&gt;

&lt;p&gt;Postgres + pgvector = Peace of Mind 🧘‍♂️ (and its not a joke)&lt;br&gt;
Instead of sending data across the internet to a third-party vector store, &lt;strong&gt;I just enabled the pgvector extension&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My data and my embeddings now live in the exact same table:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE EXTENSION vector;

CREATE TABLE support_tickets (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id uuid REFERENCES users(id) ON DELETE CASCADE,
  issue_text text,
  embedding vector(1536) -- OpenAI's embedding size
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Look at that ON DELETE CASCADE.&lt;/strong&gt;&lt;br&gt;
If a user deletes their account, their tickets disappear. Because the tickets disappear, the embeddings disappear. Instant, ACID-compliant state management without writing a single line of sync logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dumping the heavy frameworks 🗑️&lt;/strong&gt;&lt;br&gt;
Once everything was in Postgres, I realized I didn't need LangChain or LlamaIndex either.&lt;/p&gt;

&lt;p&gt;Most AI frameworks try to do too much. They hide the actual API calls behind layers of abstraction, making debugging impossible.&lt;/p&gt;

&lt;p&gt;Now, my entire "RAG" pipeline is just a raw SQL query and a standard API fetch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User asks a question.&lt;/li&gt;
&lt;li&gt;Turn the question into an embedding.&lt;/li&gt;
&lt;li&gt;Run a cosine similarity search directly in SQL:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT issue_text 
FROM support_tickets 
ORDER BY embedding &amp;lt;=&amp;gt; $1 
LIMIT 5;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Feed those 5 results into the OpenAI/Anthropic API with a strict JSON schema.&lt;/p&gt;

&lt;p&gt;That's it. No microservices. No $80/month Vector DB bills. Just a regular monolithic backend doing its job efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I'm sharing this (and how you can support) ☕&lt;/strong&gt;&lt;br&gt;
The tech industry loves hype. We are constantly pushed to adopt the newest, most complex tools, even when a boring 20-year-old technology does it better.&lt;/p&gt;

&lt;p&gt;I spend a lot of my time testing these architectures, making the mistakes, and stripping away the marketing fluff so you can just build things that actually work in production.&lt;/p&gt;

&lt;p&gt;If this post just saved you from an unnecessary architecture rewrite, a massive SaaS bill, or a weekend of debugging sync errors, consider sponsoring my work on GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/sponsors/AmaLS367" rel="noopener noreferrer"&gt;Sponsor AmaLS367 on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sponsorships give me the freedom to keep experimenting, breaking things, and open-sourcing production-ready boilerplates that save you time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;
Don't over-engineer your AI features.&lt;br&gt;
Dedicated Vector DBs often introduce data-sync nightmares.&lt;br&gt;
pgvector keeps your embeddings ACID-compliant.&lt;br&gt;
Ditch heavy AI frameworks; raw API calls + SQL are easier to debug and maintain.&lt;/p&gt;

&lt;p&gt;I’m really curious — how are you managing your embeddings right now? Are you using a separate DB or keeping it monolithic? Let me know below! 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>backend</category>
      <category>postgres</category>
      <category>architecture</category>
    </item>
    <item>
      <title>I ship a lot of API/webhook integrations. Here’s how I make them NOT hurt in production 🔥</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Fri, 27 Feb 2026 13:19:06 +0000</pubDate>
      <link>https://dev.to/amals367/i-ship-a-lot-of-apiwebhook-integrations-heres-how-i-make-them-not-hurt-in-production-50hb</link>
      <guid>https://dev.to/amals367/i-ship-a-lot-of-apiwebhook-integrations-heres-how-i-make-them-not-hurt-in-production-50hb</guid>
      <description>&lt;h1&gt;
  
  
  I ship a lot of API/webhook integrations. Here’s how I make them NOT hurt in production 🔥
&lt;/h1&gt;

&lt;p&gt;If you do freelance backend long enough, you start noticing a pattern:&lt;/p&gt;

&lt;p&gt;Clients don’t pay for “beautiful code”.&lt;br&gt;
They pay for &lt;strong&gt;it working tomorrow&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And webhook integrations are the fastest way to get random chaos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;duplicate events&lt;/li&gt;
&lt;li&gt;out of order delivery&lt;/li&gt;
&lt;li&gt;retries that DDoS you&lt;/li&gt;
&lt;li&gt;and the classic “it worked yesterday 🤡”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So here’s my real-world baseline for building webhook/API integrations that don’t wake me up at 3AM.&lt;/p&gt;

&lt;p&gt;No theory. Just a practical checklist + a simple architecture that scales.&lt;/p&gt;




&lt;h2&gt;
  
  
  1) Assume the webhook will be duplicated. Because it will. ✅
&lt;/h2&gt;

&lt;p&gt;If you process every incoming request as “unique”, you’re cooked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule:&lt;/strong&gt; every webhook must be idempotent.&lt;/p&gt;

&lt;p&gt;That means you need an &lt;strong&gt;event id&lt;/strong&gt; or a &lt;strong&gt;hash&lt;/strong&gt; that lets you say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Seen it. Skipping.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Real workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;extract &lt;code&gt;event_id&lt;/code&gt; from payload (or generate a hash from stable fields)&lt;/li&gt;
&lt;li&gt;store it with a status&lt;/li&gt;
&lt;li&gt;on repeat: return &lt;code&gt;200 OK&lt;/code&gt; and do nothing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because if you return 500, they will retry harder.&lt;/p&gt;




&lt;h2&gt;
  
  
  2) Acknowledge fast. Process async. ⚡
&lt;/h2&gt;

&lt;p&gt;A webhook handler that does real work inside the HTTP request is a trap.&lt;/p&gt;

&lt;p&gt;It feels fine until:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your DB is slow for 5 seconds&lt;/li&gt;
&lt;li&gt;the provider timeout hits&lt;/li&gt;
&lt;li&gt;retries begin&lt;/li&gt;
&lt;li&gt;now you’re processing the same event 5 times&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My default:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Receive webhook&lt;/li&gt;
&lt;li&gt;Validate signature / basic checks&lt;/li&gt;
&lt;li&gt;Save event to DB (raw payload + metadata)&lt;/li&gt;
&lt;li&gt;Return &lt;code&gt;200 OK&lt;/code&gt; fast&lt;/li&gt;
&lt;li&gt;Process the event in a worker/job queue&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This makes your system calm.&lt;/p&gt;




&lt;h2&gt;
  
  
  3) Store raw payloads. Future you will thank you 🧠
&lt;/h2&gt;

&lt;p&gt;When something breaks, the client will say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I don’t know, it just didn’t send.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you don’t store raw payloads, you have no evidence and no replay.&lt;/p&gt;

&lt;p&gt;I always store:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;full raw JSON payload&lt;/li&gt;
&lt;li&gt;headers (at least important ones)&lt;/li&gt;
&lt;li&gt;provider name&lt;/li&gt;
&lt;li&gt;received timestamp&lt;/li&gt;
&lt;li&gt;processing status&lt;/li&gt;
&lt;li&gt;error message if failed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;replay events&lt;/li&gt;
&lt;li&gt;debug edge cases&lt;/li&gt;
&lt;li&gt;prove what happened&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It turns “guessing” into “knowing”.&lt;/p&gt;




&lt;h2&gt;
  
  
  4) Security: verify signatures or don’t pretend it’s secure 🔒
&lt;/h2&gt;

&lt;p&gt;If the provider supports signatures, verify them.&lt;/p&gt;

&lt;p&gt;Not later. Not “we’ll add it after MVP”.&lt;/p&gt;

&lt;p&gt;Right away.&lt;/p&gt;

&lt;p&gt;Because otherwise you’re basically running:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;public endpoint that triggers actions&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s how you get spam, abuse, or worse.&lt;/p&gt;




&lt;h2&gt;
  
  
  5) Rate limits and backoff: retries are not your enemy, your implementation is 😅
&lt;/h2&gt;

&lt;p&gt;When processing fails, don’t do instant retries like a maniac.&lt;/p&gt;

&lt;p&gt;Use backoff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 min&lt;/li&gt;
&lt;li&gt;5 min&lt;/li&gt;
&lt;li&gt;30 min&lt;/li&gt;
&lt;li&gt;2 hours&lt;/li&gt;
&lt;li&gt;dead-letter queue (manual review)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most integrations fail because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;temporary provider downtime&lt;/li&gt;
&lt;li&gt;temporary DB issue&lt;/li&gt;
&lt;li&gt;network nonsense&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Backoff makes it survive like a tank.&lt;/p&gt;




&lt;h2&gt;
  
  
  6) Logging that actually helps, not “we logged something” 📝
&lt;/h2&gt;

&lt;p&gt;I log at two layers:&lt;/p&gt;

&lt;h3&gt;
  
  
  Request layer
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;request id&lt;/li&gt;
&lt;li&gt;provider&lt;/li&gt;
&lt;li&gt;event id&lt;/li&gt;
&lt;li&gt;status returned&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Job layer
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;event id&lt;/li&gt;
&lt;li&gt;job attempt&lt;/li&gt;
&lt;li&gt;result&lt;/li&gt;
&lt;li&gt;full error stack (if any)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And one extra rule:&lt;br&gt;
If job fails, save a &lt;strong&gt;short human-readable error&lt;/strong&gt; near the event record.&lt;/p&gt;

&lt;p&gt;So later I can scan the DB and instantly see patterns.&lt;/p&gt;




&lt;h2&gt;
  
  
  7) My minimal scalable structure (simple but powerful)
&lt;/h2&gt;

&lt;p&gt;I like separating responsibilities like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;webhook_controller&lt;/code&gt;&lt;br&gt;
accepts HTTP, validates, stores event, returns response fast&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;event_store&lt;/code&gt;&lt;br&gt;
saves raw payloads, dedup keys, statuses&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;processor&lt;/code&gt;&lt;br&gt;
contains business logic: “what do we do with this event”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;adapters&lt;/code&gt;&lt;br&gt;
provider-specific mapping (CRM A vs CRM B)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;queue/worker&lt;/code&gt;&lt;br&gt;
runs processing asynchronously with retry rules&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This lets you add new integrations without rewriting everything.&lt;/p&gt;

&lt;p&gt;You just add a new adapter.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common production “gotchas” (learned the annoying way) 🤝
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Out-of-order events
&lt;/h3&gt;

&lt;p&gt;You might receive “updated” before “created”.&lt;/p&gt;

&lt;p&gt;Solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;allow upserts&lt;/li&gt;
&lt;li&gt;store event history&lt;/li&gt;
&lt;li&gt;process based on current state&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Provider sends partial data
&lt;/h3&gt;

&lt;p&gt;Sometimes they send only IDs and you must fetch details.&lt;/p&gt;

&lt;p&gt;Solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use a “hydration step” in the worker (API pull)&lt;/li&gt;
&lt;li&gt;cache if needed&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Webhook timeouts
&lt;/h3&gt;

&lt;p&gt;If you process inside request, you lose.&lt;/p&gt;

&lt;p&gt;Solution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fast ACK, async processing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  TL;DR 🧾
&lt;/h2&gt;

&lt;p&gt;If you want webhook integrations that behave in production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;idempotency is mandatory&lt;/li&gt;
&lt;li&gt;acknowledge fast, process async&lt;/li&gt;
&lt;li&gt;store raw payloads&lt;/li&gt;
&lt;li&gt;verify signatures&lt;/li&gt;
&lt;li&gt;implement sane retries&lt;/li&gt;
&lt;li&gt;log like you’ll debug it later (because you will)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you’ve ever shipped webhooks in production, you already know:&lt;/p&gt;

&lt;p&gt;it’s never “done”.&lt;/p&gt;

&lt;p&gt;it’s “stable enough to survive real traffic” 😄&lt;/p&gt;

&lt;p&gt;Drop your worst webhook horror story below 👇&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>What you can actually DO with Google AI Pro (real workflows) ⚡</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Wed, 25 Feb 2026 18:24:41 +0000</pubDate>
      <link>https://dev.to/amals367/what-you-can-actually-do-with-google-ai-pro-real-workflows-56g0</link>
      <guid>https://dev.to/amals367/what-you-can-actually-do-with-google-ai-pro-real-workflows-56g0</guid>
      <description>&lt;p&gt;Most posts about Google AI Pro sound like:&lt;/p&gt;

&lt;p&gt;“2 TB storage 🤖&lt;br&gt;
Gemini in Gmail 🤖&lt;br&gt;
Gemini in Docs 🤖”&lt;/p&gt;

&lt;p&gt;Cool.&lt;/p&gt;

&lt;p&gt;But none of that matters until it saves you from something annoying in real life.&lt;/p&gt;

&lt;p&gt;So here’s how I actually use it — not as a chatbot, but as a daily tool that quietly removes friction.&lt;/p&gt;




&lt;h2&gt;
  
  
  Gmail → from chaos to “ok I know what’s going on” 📬
&lt;/h2&gt;

&lt;p&gt;You know those email threads where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;12 replies&lt;/li&gt;
&lt;li&gt;half decisions&lt;/li&gt;
&lt;li&gt;someone changed the scope&lt;/li&gt;
&lt;li&gt;and you’re mentioned once in the middle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before: reread everything like a detective 🕵️&lt;/p&gt;

&lt;p&gt;Now I just ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What was decided here and what do I need to do?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that’s it.&lt;/p&gt;

&lt;p&gt;I get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;decisions&lt;/li&gt;
&lt;li&gt;action items&lt;/li&gt;
&lt;li&gt;things waiting for me&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the first time an AI feature actually made my inbox calmer instead of louder.&lt;/p&gt;




&lt;h2&gt;
  
  
  Starting a project without staring at a blank page
&lt;/h2&gt;

&lt;p&gt;Blank Docs page = fake productivity.&lt;/p&gt;

&lt;p&gt;Now my flow is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a technical plan for a Playwright-based monitoring tool with retries, logging and alerts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It gives me a structure.&lt;/p&gt;

&lt;p&gt;Not something I copy.&lt;/p&gt;

&lt;p&gt;Something I react to.&lt;/p&gt;

&lt;p&gt;That’s the difference.&lt;/p&gt;

&lt;p&gt;It turns “ugh I need to start” into&lt;br&gt;
“ok this is already moving”.&lt;/p&gt;




&lt;h2&gt;
  
  
  The underrated use: reading long technical stuff for me 🧠
&lt;/h2&gt;

&lt;p&gt;Client specs.&lt;br&gt;
Random API docs.&lt;br&gt;
Some integration written in… a very creative way.&lt;/p&gt;

&lt;p&gt;Instead of scanning everything:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What are the risky parts?&lt;br&gt;
What is unclear?&lt;br&gt;
What will break in production?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question alone saved me from writing the wrong thing more than once.&lt;/p&gt;

&lt;p&gt;And that’s hours of life.&lt;/p&gt;




&lt;h2&gt;
  
  
  Google Drive became my external memory 🗂️
&lt;/h2&gt;

&lt;p&gt;This part is low-key insane.&lt;/p&gt;

&lt;p&gt;I dump there:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;old project notes&lt;/li&gt;
&lt;li&gt;architecture drafts&lt;/li&gt;
&lt;li&gt;random research&lt;/li&gt;
&lt;li&gt;useful snippets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Based on my previous automation projects, suggest a structure for this new one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You’re no longer prompting a model.&lt;/p&gt;

&lt;p&gt;You’re prompting &lt;strong&gt;your past self&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That feeling is wild.&lt;/p&gt;




&lt;h2&gt;
  
  
  Research without the 37-tab anxiety 🌐
&lt;/h2&gt;

&lt;p&gt;My normal research looked like:&lt;/p&gt;

&lt;p&gt;open tabs → open more tabs → forget why I opened the first tab.&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Compare these approaches for browser automation in production. Focus on stability and scaling.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I still open sources.&lt;/p&gt;

&lt;p&gt;But only the ones that matter.&lt;/p&gt;

&lt;p&gt;Less noise. Same depth.&lt;/p&gt;




&lt;h2&gt;
  
  
  Coding use (not the way people think) 💻
&lt;/h2&gt;

&lt;p&gt;I don’t use it for:&lt;/p&gt;

&lt;p&gt;“write me a function”.&lt;/p&gt;

&lt;p&gt;I use it for:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What kind of race condition can happen here?&lt;/p&gt;

&lt;p&gt;Is this module boundary bad?&lt;/p&gt;

&lt;p&gt;How would you refactor this safely?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s like having a second brain for architectural thinking.&lt;/p&gt;

&lt;p&gt;And it never gets tired.&lt;/p&gt;




&lt;h2&gt;
  
  
  2 TB storage changed one stupid habit ☁️
&lt;/h2&gt;

&lt;p&gt;I stopped deleting things.&lt;/p&gt;

&lt;p&gt;Seriously.&lt;/p&gt;

&lt;p&gt;Now I keep:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;datasets&lt;/li&gt;
&lt;li&gt;recordings&lt;/li&gt;
&lt;li&gt;project archives&lt;/li&gt;
&lt;li&gt;experiments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which means:&lt;/p&gt;

&lt;p&gt;my past work is always available → AI can use it → better outputs later.&lt;/p&gt;

&lt;p&gt;Before I optimized for space.&lt;/p&gt;

&lt;p&gt;Now I optimize for context.&lt;/p&gt;




&lt;h2&gt;
  
  
  Family sharing = the most practical “AI scaling” move
&lt;/h2&gt;

&lt;p&gt;Everyone has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;their own account&lt;/li&gt;
&lt;li&gt;their own chats&lt;/li&gt;
&lt;li&gt;their own workspace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the plan is shared.&lt;/p&gt;

&lt;p&gt;So it doesn’t feel like:&lt;/p&gt;

&lt;p&gt;“paying for a tool”&lt;/p&gt;

&lt;p&gt;It feels like:&lt;/p&gt;

&lt;p&gt;a small private AI environment for people you work or live with.&lt;/p&gt;




&lt;h1&gt;
  
  
  The real shift
&lt;/h1&gt;

&lt;p&gt;The biggest change is not the model.&lt;/p&gt;

&lt;p&gt;It’s this:&lt;/p&gt;

&lt;p&gt;AI is no longer a separate tab I visit.&lt;/p&gt;

&lt;p&gt;It lives inside:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gmail&lt;/li&gt;
&lt;li&gt;Docs&lt;/li&gt;
&lt;li&gt;Drive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which I already use all day.&lt;/p&gt;

&lt;p&gt;So instead of “using AI”&lt;br&gt;
I just… work.&lt;/p&gt;




&lt;h1&gt;
  
  
  Who this is actually for
&lt;/h1&gt;

&lt;p&gt;This setup makes sense if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you juggle multiple projects&lt;/li&gt;
&lt;li&gt;you read long messy things&lt;/li&gt;
&lt;li&gt;you plan systems before coding&lt;/li&gt;
&lt;li&gt;you reuse your own knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not if you just want:&lt;/p&gt;

&lt;p&gt;“write me a tweet”.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I’m testing next 🧪
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Using Drive as structured long-term context&lt;/li&gt;
&lt;li&gt;Full project planning inside Docs&lt;/li&gt;
&lt;li&gt;Pushing it harder in real coding workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Will share what actually holds up in production life.&lt;/p&gt;




&lt;h1&gt;
  
  
  TL;DR
&lt;/h1&gt;

&lt;p&gt;Google AI Pro became useful for me when I stopped treating it like a chatbot and started using it as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;inbox interpreter&lt;/li&gt;
&lt;li&gt;project starter&lt;/li&gt;
&lt;li&gt;context reader&lt;/li&gt;
&lt;li&gt;external memory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything else is just features.&lt;/p&gt;




&lt;p&gt;If you’re using it in a different way — I’m genuinely curious.&lt;br&gt;
Always looking for workflows that remove friction ⚡&lt;/p&gt;




</description>
      <category>ai</category>
      <category>gemini</category>
      <category>google</category>
      <category>productivity</category>
    </item>
    <item>
      <title>$20 subscription 6 people: Google One AI family sharing explained 😈✨</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Wed, 25 Feb 2026 12:47:31 +0000</pubDate>
      <link>https://dev.to/amals367/20-subscription-6-people-google-one-ai-family-sharing-explained-65a</link>
      <guid>https://dev.to/amals367/20-subscription-6-people-google-one-ai-family-sharing-explained-65a</guid>
      <description>&lt;p&gt;If you’re paying for Google AI Pro alone, you might be leaving value on the table.&lt;/p&gt;

&lt;p&gt;Google lets you create a &lt;strong&gt;family group with up to 6 accounts total&lt;/strong&gt; (1 manager + 5 members) and share certain Google services across that group. So one person pays, and multiple people can benefit — &lt;strong&gt;without mixing chats&lt;/strong&gt;, because everyone still uses their &lt;strong&gt;own Google account&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This post explains what you actually get, what’s shared vs not shared, and how to set it up without drama 🙃&lt;/p&gt;




&lt;h2&gt;
  
  
  The idea (in one sentence)
&lt;/h2&gt;

&lt;p&gt;One person buys &lt;strong&gt;Google AI Pro ($19.99/month)&lt;/strong&gt;, enables &lt;strong&gt;family sharing&lt;/strong&gt;, invites up to 5 people, and each person uses Gemini from their &lt;strong&gt;own&lt;/strong&gt; Google account (so chats and history don’t collide).&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Quick honesty check (before the “invite whoever” part)
&lt;/h2&gt;

&lt;p&gt;Google calls it a &lt;strong&gt;family group&lt;/strong&gt; and markets it as sharing with “people you love” / household. You &lt;em&gt;can&lt;/em&gt; invite any Google account technically, but don’t be weird about it: invite people you trust, and assume Google expects it to be “family/household-style sharing.”&lt;/p&gt;

&lt;p&gt;That said… yes: it’s &lt;strong&gt;not a shared login&lt;/strong&gt;. Each member uses their own account, their own prompts, their own Drive, etc. ✅&lt;/p&gt;




&lt;h2&gt;
  
  
  What you get (the “why this is OP” list) 🔥
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1) Up to &lt;strong&gt;6 accounts&lt;/strong&gt; total
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;1 family manager&lt;/li&gt;
&lt;li&gt;up to 5 invited members
Even pending invites count toward the limit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2) Gemini benefits for family members (no extra cost)
&lt;/h3&gt;

&lt;p&gt;Google’s own help docs literally say that &lt;strong&gt;family plan members on a Google AI Pro plan can enjoy AI benefits and features at no extra cost&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3) &lt;strong&gt;2 TB&lt;/strong&gt; storage (shared pool)
&lt;/h3&gt;

&lt;p&gt;AI Pro includes &lt;strong&gt;2 TB&lt;/strong&gt; total storage across &lt;strong&gt;Google Drive / Gmail / Photos&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4) Gemini inside Google apps (Gmail / Docs / etc.)
&lt;/h3&gt;

&lt;p&gt;Google has been rolling Gemini into apps like &lt;strong&gt;Gmail, Docs, Sheets, Slides, Meet&lt;/strong&gt; for these plans (availability can vary by country/language).&lt;/p&gt;

&lt;h3&gt;
  
  
  5) Coding goodies (yes, Antigravity is in the bundle)
&lt;/h3&gt;

&lt;p&gt;On the official subscriptions page, Google AI Pro includes higher access to a bunch of dev stuff like &lt;strong&gt;Gemini Code Assist / Gemini CLI / Jules&lt;/strong&gt; and &lt;strong&gt;Google Antigravity&lt;/strong&gt;.&lt;br&gt;
(And yeah, Antigravity is their “agentic dev platform” thing — it’s getting real attention lately.)&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s shared vs what’s NOT shared 🧠
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ Shared
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;membership benefits&lt;/strong&gt; that are meant to be shareable across a family group (AI Pro perks)&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;storage pool&lt;/strong&gt; (2 TB) across the family group&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ❌ Not shared (important)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Your &lt;strong&gt;Gemini chats&lt;/strong&gt; are not merged (different accounts → different chat histories) ✅&lt;/li&gt;
&lt;li&gt;Your &lt;strong&gt;files are not visible&lt;/strong&gt; to the manager unless you explicitly share them. Google states that others in your family won’t have access to your files unless you share directly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So you get the benefits, but you don’t become roommates inside one account. Perfect.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step-by-step setup (the clean way) 🛠️
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: One person becomes the “plan manager”
&lt;/h3&gt;

&lt;p&gt;They subscribe to &lt;strong&gt;Google AI Pro&lt;/strong&gt; (currently shown as &lt;strong&gt;$19.99/month&lt;/strong&gt; on Google’s subscription page).&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Create / manage your Google family group
&lt;/h3&gt;

&lt;p&gt;As the family manager, you can invite up to 5 people.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Turn on Google One family sharing
&lt;/h3&gt;

&lt;p&gt;Google One supports sharing with up to 5 family members.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Invite people (and they accept)
&lt;/h3&gt;

&lt;p&gt;They accept the invite, and then they just use Gemini normally… &lt;strong&gt;on their own account&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common gotchas (aka “why doesn’t it work for my friend?”) 😵‍💫
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Country availability / rollout&lt;/strong&gt;&lt;br&gt;
AI features and integrations can vary by country/territory and rollout timing. Google AI Pro availability is listed as “150+ countries/territories” (check your region).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You hit the 6-person limit&lt;/strong&gt;&lt;br&gt;
It’s strict: &lt;strong&gt;5 members + 1 manager&lt;/strong&gt; max.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Storage confusion&lt;/strong&gt;&lt;br&gt;
Storage is a shared pool, but &lt;strong&gt;each person controls their own files&lt;/strong&gt;. If someone is eating all the storage, you can’t delete their stuff — they need to clean up their own account.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  My personal “best use” setup 😎
&lt;/h2&gt;

&lt;p&gt;If you’re doing coding + content + life stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Gemini Pro for &lt;strong&gt;research + planning + drafting&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use Gemini inside &lt;strong&gt;Gmail/Docs&lt;/strong&gt; for annoying admin work&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Antigravity / Code Assist / CLI&lt;/strong&gt; for coding workflows (depending on what you like)&lt;/li&gt;
&lt;li&gt;Enjoy the &lt;strong&gt;2 TB&lt;/strong&gt; and stop playing storage Tetris forever&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  TL;DR 🧾
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Google family group = &lt;strong&gt;up to 6 accounts&lt;/strong&gt; (manager + 5)&lt;/li&gt;
&lt;li&gt;Google AI Pro = &lt;strong&gt;$19.99/month&lt;/strong&gt;, includes &lt;strong&gt;2 TB&lt;/strong&gt; + Gemini in apps + dev tools&lt;/li&gt;
&lt;li&gt;Family members can enjoy &lt;strong&gt;AI benefits at no extra cost&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chats don’t mix&lt;/strong&gt; (separate accounts), and &lt;strong&gt;files aren’t visible&lt;/strong&gt; unless shared &lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;1: &lt;a href="https://support.google.com/googleplay/answer/6317858?hl=en&amp;amp;utm_source=chatgpt.com" rel="noopener noreferrer"&gt;https://support.google.com/googleplay/answer/6317858?hl=en&amp;amp;utm_source=chatgpt.com&lt;/a&gt; "Join or leave a family on Google"&lt;br&gt;
2: &lt;a href="https://gemini.google/subscriptions/" rel="noopener noreferrer"&gt;https://gemini.google/subscriptions/&lt;/a&gt; "Google AI Pro &amp;amp; Ultra — get access to Gemini 3.1 Pro &amp;amp; more"&lt;br&gt;
3: &lt;a href="https://families.google/intl/en_ca/families/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;https://families.google/intl/en_ca/families/?utm_source=chatgpt.com&lt;/a&gt; "Stay Connected with a Family Account"&lt;br&gt;
4: &lt;a href="https://support.google.com/googleone/answer/14534406?hl=en" rel="noopener noreferrer"&gt;https://support.google.com/googleone/answer/14534406?hl=en&lt;/a&gt; "Use Google AI Pro benefits - Google One Help"&lt;br&gt;
5: &lt;a href="https://blog.google/products-and-platforms/products/google-one/google-one-gemini-ai-gmail-docs-sheets/" rel="noopener noreferrer"&gt;https://blog.google/products-and-platforms/products/google-one/google-one-gemini-ai-gmail-docs-sheets/&lt;/a&gt; "Google One AI Premium: Gemini access in Gmail, Docs, Sheets and more"&lt;br&gt;
6: &lt;a href="https://www.theverge.com/news/822833/google-antigravity-ide-coding-agent-gemini-3-pro" rel="noopener noreferrer"&gt;https://www.theverge.com/news/822833/google-antigravity-ide-coding-agent-gemini-3-pro&lt;/a&gt; "Google Antigravity is an ‘agent-first’ coding tool built for Gemini 3 | The Verge"&lt;br&gt;
7: &lt;a href="https://support.google.com/googleone/answer/9004015?co=GENIE.Platform%3DAndroid&amp;amp;hl=en" rel="noopener noreferrer"&gt;https://support.google.com/googleone/answer/9004015?co=GENIE.Platform%3DAndroid&amp;amp;hl=en&lt;/a&gt; "Start or stop sharing with your family - Android - Google One Help"&lt;br&gt;
8: &lt;a href="https://support.google.com/googleplay/answer/6286986?co=GENIE.Platform%3DAndroid&amp;amp;hl=en&amp;amp;utm_source=chatgpt.com" rel="noopener noreferrer"&gt;https://support.google.com/googleplay/answer/6286986?co=GENIE.Platform%3DAndroid&amp;amp;hl=en&amp;amp;utm_source=chatgpt.com&lt;/a&gt; "Manage your family on Google - Android"&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>google</category>
      <category>gemini</category>
    </item>
    <item>
      <title>♻️ Persisting Login Sessions in Headless Playwright Automation</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Mon, 02 Feb 2026 16:24:37 +0000</pubDate>
      <link>https://dev.to/amals367/persisting-login-sessions-in-headless-playwright-automation-k07</link>
      <guid>https://dev.to/amals367/persisting-login-sessions-in-headless-playwright-automation-k07</guid>
      <description>&lt;p&gt;Logging into websites every single run is the fastest way to:&lt;/p&gt;

&lt;p&gt;🚫 trigger anti-bot systems&lt;br&gt;
🧩 face endless CAPTCHAs&lt;br&gt;
🔒 get accounts locked&lt;br&gt;
🐌 slow down your scraper&lt;/p&gt;

&lt;p&gt;The correct pattern is simple:&lt;/p&gt;

&lt;p&gt;Login once → persist browser profile → reuse it forever (until expiration).&lt;/p&gt;

&lt;p&gt;In this article I will show how this works in a real project:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/AmaLS367/parts_info_collector" rel="noopener noreferrer"&gt;https://github.com/AmaLS367/parts_info_collector&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This project automates data extraction from Gemini’s web UI and keeps authentication between runs using a persistent browser profile.&lt;/p&gt;

&lt;p&gt;🧠 The Core Idea&lt;/p&gt;

&lt;p&gt;Instead of exporting cookies manually, Playwright can launch Chromium with a persistent user profile directory.&lt;/p&gt;

&lt;p&gt;That directory stores:&lt;/p&gt;

&lt;p&gt;cookies 🍪&lt;br&gt;
localStorage&lt;br&gt;
IndexedDB&lt;br&gt;
login tokens&lt;br&gt;
session metadata&lt;/p&gt;

&lt;p&gt;Once created, it becomes your reusable authenticated identity.&lt;/p&gt;

&lt;p&gt;📂 How the Project Does It&lt;/p&gt;

&lt;p&gt;In parts_info_collector, authentication is handled via:&lt;/p&gt;

&lt;p&gt;a user-data/ directory&lt;br&gt;
first interactive run via first_start.bat&lt;br&gt;
manual login to Gemini&lt;br&gt;
all next runs reuse the same browser profile&lt;/p&gt;

&lt;p&gt;So the flow is:&lt;/p&gt;

&lt;p&gt;1️⃣ Run once with UI&lt;br&gt;
2️⃣ Log in manually&lt;br&gt;
3️⃣ Browser profile is saved&lt;br&gt;
4️⃣ Next runs are headless and already authenticated&lt;/p&gt;

&lt;p&gt;No repeated login.&lt;br&gt;
No constant CAPTCHA hell 😌&lt;/p&gt;

&lt;p&gt;🔐 Persistent Context in Playwright&lt;/p&gt;

&lt;p&gt;This is the key API:&lt;/p&gt;

&lt;p&gt;browser_context = playwright.chromium.launch_persistent_context(&lt;br&gt;
    user_data_dir="user-data",&lt;br&gt;
    headless=True&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;That single folder is everything.&lt;/p&gt;

&lt;p&gt;If it exists, Playwright loads it.&lt;br&gt;
If not, you run in visible mode and authenticate.&lt;/p&gt;

&lt;p&gt;🧑‍💻 First Run: Create the Session&lt;/p&gt;

&lt;p&gt;In the project, the first launch happens with UI enabled so you can log in:&lt;/p&gt;

&lt;p&gt;browser_context = playwright.chromium.launch_persistent_context(&lt;br&gt;
    user_data_dir="user-data",&lt;br&gt;
    headless=False&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;You open Gemini, authenticate manually, and close the browser.&lt;/p&gt;

&lt;p&gt;From that moment:&lt;/p&gt;

&lt;p&gt;📁 user-data/ contains your session.&lt;/p&gt;

&lt;p&gt;♻️ All Next Runs: Fully Headless&lt;/p&gt;

&lt;p&gt;Subsequent executions simply reuse the same folder:&lt;/p&gt;

&lt;p&gt;browser_context = playwright.chromium.launch_persistent_context(&lt;br&gt;
    user_data_dir="user-data",&lt;br&gt;
    headless=True&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;You are already logged in.&lt;/p&gt;

&lt;p&gt;No forms.&lt;br&gt;
No credentials.&lt;br&gt;
No redirects.&lt;/p&gt;

&lt;p&gt;⚠️ What Happens When the Session Expires?&lt;/p&gt;

&lt;p&gt;Eventually cookies die.&lt;/p&gt;

&lt;p&gt;The project handles this operationally:&lt;br&gt;
you delete user-data/&lt;br&gt;
or rerun first_start.bat&lt;br&gt;
login again&lt;br&gt;
profile is recreated&lt;/p&gt;

&lt;p&gt;Simple, manual, and reliable.&lt;/p&gt;

&lt;p&gt;You can extend this with:&lt;/p&gt;

&lt;p&gt;detecting redirect to /login&lt;br&gt;
checking DOM markers&lt;br&gt;
auto-relogin logic&lt;br&gt;
alerting&lt;/p&gt;

&lt;p&gt;🛡️ Why Persistent Profiles Beat Cookie Dumps&lt;/p&gt;

&lt;p&gt;Using a persistent profile directory is stronger than just exporting cookies:&lt;/p&gt;

&lt;p&gt;✅ keeps IndexedDB tokens&lt;br&gt;
✅ survives browser restarts&lt;br&gt;
✅ mimics real user Chrome profile&lt;br&gt;
✅ less suspicious than scripted logins&lt;br&gt;
✅ perfect for long-running monitors&lt;/p&gt;

&lt;p&gt;🚀 When You Should Use This Pattern&lt;/p&gt;

&lt;p&gt;This approach is ideal for:&lt;/p&gt;

&lt;p&gt;📊 price monitors&lt;br&gt;
🤖 automation bots&lt;br&gt;
🧠 AI web scrapers&lt;br&gt;
📈 background workers&lt;br&gt;
🔁 periodic collectors&lt;/p&gt;

&lt;p&gt;Anything that runs for weeks.&lt;/p&gt;

&lt;p&gt;🔗 Real Repository&lt;/p&gt;

&lt;p&gt;Full project:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/AmaLS367/parts_info_collector" rel="noopener noreferrer"&gt;https://github.com/AmaLS367/parts_info_collector&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧾 TL;DR&lt;/p&gt;

&lt;p&gt;✅ use launch_persistent_context&lt;br&gt;
✅ store profile in user-data/&lt;br&gt;
✅ login once manually&lt;br&gt;
✅ reuse forever&lt;br&gt;
✅ refresh only when expired&lt;/p&gt;

</description>
      <category>programming</category>
      <category>playwright</category>
    </item>
    <item>
      <title>🔍 Monitoring Bybit P2P USDT/RUB prices with Playwright network interception + Telegram alerts (Python)</title>
      <dc:creator>Ama</dc:creator>
      <pubDate>Sun, 01 Feb 2026 13:25:49 +0000</pubDate>
      <link>https://dev.to/amals367/monitoring-bybit-p2p-usdtrub-prices-with-playwright-network-interception-telegram-alerts-4n01</link>
      <guid>https://dev.to/amals367/monitoring-bybit-p2p-usdtrub-prices-with-playwright-network-interception-telegram-alerts-4n01</guid>
      <description>&lt;p&gt;If you have ever tried to “scrape” a modern website, you know the pain: the UI looks simple, but the data is loaded dynamically, and the DOM changes every two minutes 😅&lt;/p&gt;

&lt;p&gt;⚡ What this tool does&lt;/p&gt;

&lt;p&gt;You set a threshold like 71.50 RUB.&lt;br&gt;
The script checks the current best USDT/RUB buy offer and notifies you in Telegram if the price is below that level.&lt;/p&gt;

&lt;p&gt;Core flow:&lt;/p&gt;

&lt;p&gt;🧭 open the Bybit P2P page&lt;br&gt;
🕵️ listen to network responses&lt;br&gt;
🧾 parse JSON from the P2P API response&lt;br&gt;
📉 compare the best price with your threshold&lt;br&gt;
📩 send Telegram message&lt;/p&gt;

&lt;p&gt;No fragile selectors. No DOM gymnastics. Just data.&lt;/p&gt;

&lt;p&gt;🧰 Setup&lt;/p&gt;

&lt;p&gt;Install dependencies:&lt;/p&gt;

&lt;p&gt;pip install -r requirements.txt&lt;br&gt;
playwright install&lt;/p&gt;

&lt;p&gt;Create .env:&lt;/p&gt;

&lt;p&gt;BOT_TOKEN=your_telegram_bot_token&lt;br&gt;
CHAT_ID=your_chat_id&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;python main.py&lt;/p&gt;

&lt;p&gt;Then enter your threshold when the script asks for it.&lt;/p&gt;

&lt;p&gt;🧠 The key idea: intercept the JSON response&lt;/p&gt;

&lt;p&gt;Bybit P2P UI is basically a shell. The real data is coming from an internal endpoint.&lt;/p&gt;

&lt;p&gt;So the strategy is:&lt;/p&gt;

&lt;p&gt;open the page&lt;br&gt;
subscribe to Playwright response events&lt;br&gt;
filter responses by URL (the internal API endpoint)&lt;br&gt;
call response.json()&lt;br&gt;
extract offers and prices&lt;/p&gt;

&lt;p&gt;This is usually more stable than DOM scraping because you rely on the same payload the app uses internally.&lt;/p&gt;

&lt;p&gt;📦 Why network interception beats DOM scraping&lt;/p&gt;

&lt;p&gt;DOM scraping often breaks because:&lt;br&gt;
class names change&lt;br&gt;
elements are lazy loaded&lt;br&gt;
content is rendered differently by region or language&lt;br&gt;
the site adds random wrappers&lt;/p&gt;

&lt;p&gt;Network interception is cleaner:&lt;/p&gt;

&lt;p&gt;✅ data structure is consistent&lt;br&gt;
✅ you get structured JSON&lt;br&gt;
✅ fewer moving parts&lt;br&gt;
✅ easier debugging&lt;/p&gt;

&lt;p&gt;If the endpoint changes, you update one filter. Not 20 selectors.&lt;/p&gt;

&lt;p&gt;📩 Telegram alerts in 10 seconds&lt;/p&gt;

&lt;p&gt;Telegram sending is just a POST request to:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://api.telegram.org/bot" rel="noopener noreferrer"&gt;https://api.telegram.org/bot&lt;/a&gt;/sendMessage&lt;/p&gt;

&lt;p&gt;Payload:&lt;/p&gt;

&lt;p&gt;chat_id&lt;br&gt;
text&lt;/p&gt;

&lt;p&gt;Add a timeout so your monitor loop never hangs.&lt;/p&gt;

&lt;p&gt;Result: when the best price crosses your threshold, you get a nice message instantly 🚀&lt;/p&gt;

&lt;p&gt;If you want to evolve this tool, here are easy upgrades:&lt;/p&gt;

&lt;p&gt;🧽 deduplicate notifications so you do not spam yourself&lt;br&gt;
🧷 move threshold into .env or CLI args&lt;br&gt;
🧪 add a --once mode to run a single check&lt;br&gt;
📊 store history to a simple CSV for analysis&lt;/p&gt;

&lt;p&gt;✅ Wrap up&lt;/p&gt;

&lt;p&gt;If you are scraping a dynamic website and the data comes from JSON calls, intercepting the network layer is often the most robust solution.&lt;/p&gt;

&lt;p&gt;This project is a tiny example of that approach:&lt;/p&gt;

&lt;p&gt;Playwright for browser and network events&lt;br&gt;
JSON parsing for structured data&lt;br&gt;
Telegram for instant notifications&lt;/p&gt;

&lt;p&gt;Repo again: &lt;a href="https://github.com/AmaLS367/bybit-p2p-price-monitor" rel="noopener noreferrer"&gt;https://github.com/AmaLS367/bybit-p2p-price-monitor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have ideas for improvements or want to contribute, PRs are welcome 💪🔥&lt;/p&gt;

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