<?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: whaiman</title>
    <description>The latest articles on DEV Community by whaiman (@whaiman).</description>
    <link>https://dev.to/whaiman</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%2F4079356%2Fb499c22f-66fc-4043-8e0f-6cf494961264.jpg</url>
      <title>DEV Community: whaiman</title>
      <link>https://dev.to/whaiman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/whaiman"/>
    <language>en</language>
    <item>
      <title>No Ship November: A Month Without Public Progress Updates</title>
      <dc:creator>whaiman</dc:creator>
      <pubDate>Fri, 23 Oct 2026 17:16:41 +0000</pubDate>
      <link>https://dev.to/whaiman/no-ship-november-a-month-without-public-progress-updates-46a8</link>
      <guid>https://dev.to/whaiman/no-ship-november-a-month-without-public-progress-updates-46a8</guid>
      <description>&lt;p&gt;&lt;em&gt;Build in silence. Share what you did after November.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When a developer completes a significant task - merging a pull request, resolving a complex bug, or validating a new prototype - there is often an immediate opportunity to share that achievement. A screenshot on a social media platform, a commit message on a public repository, or a status update in a community channel are all standard ways to signal progress.&lt;/p&gt;

&lt;p&gt;Public sharing serves several concrete purposes: it provides a way to receive feedback, helps in finding collaborators, assists in documenting technical decisions, and can open up professional opportunities. These are important functions of a developer's public presence. However, there is a distinct difference between making progress and preparing that progress for a public audience. &lt;/p&gt;

&lt;p&gt;At times, a useful piece of work can be shared immediately. At other times, reaching a meaningful conclusion takes days or weeks of investigation. An unfinished architectural decision, a rejected hypothesis, or a long debugging session may not produce anything suitable for a public update. When we feel the need to report every visible milestone, the time spent on the presentation of the work can sometimes overshadow the work itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No Ship November&lt;/strong&gt; is a voluntary, independent experiment designed to explore what happens when we intentionally remove that pressure to report progress for one month.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Experiment
&lt;/h2&gt;

&lt;p&gt;From &lt;strong&gt;November 1 through November 30, 2026&lt;/strong&gt;, participants are invited to select one specific focus - a project, a technical problem, a research question, or a new skill - and work on it without publicly sharing any intermediate progress or achievements related to that focus anywhere online.&lt;/p&gt;

&lt;p&gt;No Ship November is an independent initiative and is not organized, sponsored, approved, or endorsed by DEV.&lt;/p&gt;

&lt;p&gt;The central question of the initiative is: &lt;em&gt;“What changes when you spend a month working on something without turning intermediate progress into public announcements?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is an experiment, not a productivity method with a guaranteed result. You might find that you work with greater focus. You might also miss the feedback, discussion, or accountability that public updates can bring. Or you might notice little difference. Any of these outcomes is a valid result of trying the experiment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing Your Focus
&lt;/h2&gt;

&lt;p&gt;Choosing a focus shapes the experience of the experiment. There is no expected outcome. Work on your chosen focus as you normally would, without publicly reporting its progress, and see whether anything changes for you.&lt;/p&gt;

&lt;p&gt;The focus can be a small task, an investigation, a learning goal, or a larger project. It does not need to lead to a public release or a completed product. A suitable focus should be specific enough to navigate easily, but broad enough to allow for genuine exploration. Here are several examples of what a participant might choose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Investigating an intermittent bug:&lt;/strong&gt; Spending the month trying to reproduce and understand a "flaky" issue whose cause is currently unknown.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Comparing system architectures:&lt;/strong&gt; Evaluating two different designs (e.g., comparing different database schemas, message brokers, or microservices patterns) before committing to one.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Deep learning and research:&lt;/strong&gt; Studying an unfamiliar protocol, a complex compiler, or a new library deeply enough to form an independent technical opinion.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Improving neglected subsystems:&lt;/strong&gt; Refactoring a "boring" part of an existing codebase - the kind of work that rarely makes for a good screenshot but significantly improves system health or maintainability.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Building a "throwaway" prototype:&lt;/strong&gt; Creating a proof-of-concept to test a specific idea that may be discarded entirely after the first tests.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Exploring a research question:&lt;/strong&gt; Collecting evidence for or against a specific technical hypothesis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A participant does not need to disclose their exact goal publicly. If you wish to join the experiment, a simple comment such as “I’m in” is sufficient to signal your intention.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rules
&lt;/h2&gt;

&lt;p&gt;To ensure a consistent experience for all participants, the following rules apply during the month of November.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 1: One chosen focus
&lt;/h3&gt;

&lt;p&gt;The experiment applies to one selected project, problem, question, idea, or learning goal. It does not suspend your entire public or professional life. You are not expected to stop all online activity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 2: No public progress updates
&lt;/h3&gt;

&lt;p&gt;You must refrain from publicly sharing progress or achievements related to your chosen focus anywhere online during the month of November. This applies to all platforms, including but not limited to DEV.to, GitHub, X (Twitter), Reddit, and personal blogs.&lt;/p&gt;

&lt;p&gt;Prohibited actions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Pushing progress-related commits or repository updates to a public repository.&lt;/li&gt;
&lt;li&gt;  Opening public pull requests or publishing project releases that reveal progress on the chosen focus.&lt;/li&gt;
&lt;li&gt;  Posting screenshots, demos, videos, benchmarks, or milestone announcements.&lt;/li&gt;
&lt;li&gt;  Publishing blog posts, technical write-ups, changelogs, or social media updates about the selected work.&lt;/li&gt;
&lt;li&gt;  Sharing progress through public community channels or livestreams.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note on Git: Local commits are permitted. A branch that exists only on your machine is not publicly visible. A private repository is another option. If you push a branch to a public repository, however, its contents are public regardless of the branch name.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 3: Private work and communication remain allowed
&lt;/h3&gt;

&lt;p&gt;This experiment does not require isolation. You may continue to code, research, run tests, and keep private notes. You can continue private conversations with collaborators, internal work communication, and any coordination your work requires. The experiment does not require isolation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 4: Unrelated public activity is allowed
&lt;/h3&gt;

&lt;p&gt;You are free to remain active in the developer community. You can publish articles about unrelated projects, contribute to repositories that are not your chosen focus, and join discussions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt; If your focus is "Investigating a new database schema," you are prohibited from posting an update about that schema. However, you are perfectly free to post an article about a book you read on CSS, or contribute a typo fix to a popular open-source library that is unrelated to your focus.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 5: Responsibilities come first
&lt;/h3&gt;

&lt;p&gt;Participation in this experiment must not be used as an excuse to neglect professional duties. No one should delay security fixes, violate contractual obligations, mislead a customer, or withhold necessary information from collaborators because of the experiment. &lt;/p&gt;

&lt;p&gt;If your work involves obligations that make a temporary pause in public progress updates inappropriate or risky, choose a different focus for the experiment. Necessary emergency and professional actions take priority over the experiment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 6: No mandatory completion or reporting
&lt;/h3&gt;

&lt;p&gt;There are no "streaks," quotas, or required hours. You do not have to finish your project, write a retrospective, or publish a "final" result on December 1. There are no entry fees, prizes, points, badges, or leaderboards.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who might find it useful?
&lt;/h2&gt;

&lt;p&gt;The experiment can appeal to developers whose work naturally produces visible milestones, as well as to people whose work involves long periods of uncertainty.&lt;/p&gt;

&lt;p&gt;For an &lt;strong&gt;early-career developer&lt;/strong&gt;, a month might involve learning a new codebase or trying to understand a difficult concept. For these developers, the experiment might help them notice whether sharing new discoveries changes how they approach learning.&lt;/p&gt;

&lt;p&gt;For an &lt;strong&gt;experienced engineer&lt;/strong&gt;, the month might involve architectural investigation, refactoring technical debt, or evaluating competing designs. For these professionals, the experiment might explore how much "invisible work" - the work that keeps systems running but does not make for a great headline - actually occupies their time.&lt;/p&gt;

&lt;p&gt;For a &lt;strong&gt;researcher&lt;/strong&gt;, the month might involve testing assumptions before finding an answer worth presenting. They might observe whether the absence of public updates changes how they allocate time between investigation, analysis, and presenting intermediate findings.&lt;/p&gt;

&lt;p&gt;Different kinds of work produce different kinds of progress. A new feature is easy to demonstrate; a rejected design, a better understanding of a failure mode, or an avoided mistake is much harder to turn into a public update. This experiment allows you to see what it feels like to hold onto that "invisible" progress for a while.&lt;/p&gt;

&lt;h2&gt;
  
  
  What counts as a result?
&lt;/h2&gt;

&lt;p&gt;From December 1, 2026, onward, participants may share their results if they wish. A "result" does not have to be a polished, finished product. In fact, some of the most interesting results may be the ones that did not "succeed" in the traditional sense.&lt;/p&gt;

&lt;p&gt;A result could be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A completed project or a working prototype.&lt;/li&gt;
&lt;li&gt;  A technical article, a set of notes, or a clearer explanation of a concept.&lt;/li&gt;
&lt;li&gt;  Evidence supporting or rejecting a research hypothesis.&lt;/li&gt;
&lt;li&gt;  A benchmark or comparison of different approaches.&lt;/li&gt;
&lt;li&gt;  A bug that was finally understood.&lt;/li&gt;
&lt;li&gt;  A design that was deliberately rejected.&lt;/li&gt;
&lt;li&gt;  A failed experiment that ruled out a promising idea.&lt;/li&gt;
&lt;li&gt;  A project that remains unfinished but is now better understood.&lt;/li&gt;
&lt;li&gt;  A simple account of what did (or did not) change during the month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You are not required to provide evidence of your private work, share commit histories, or produce screenshots. You do not have to publish anything at all.&lt;/p&gt;

&lt;p&gt;If you do choose to share, you might find it useful to reflect on these questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Did the absence of public updates change what I chose to work on?&lt;/li&gt;
&lt;li&gt;  Did I miss external feedback or accountability?&lt;/li&gt;
&lt;li&gt;  Did I spend less time preparing demonstrations, or did that make no difference?&lt;/li&gt;
&lt;li&gt;  Was it harder or easier to explain the eventual result?&lt;/li&gt;
&lt;li&gt;  Would I use this approach for another project?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to participate
&lt;/h2&gt;

&lt;p&gt;The goal is to keep this initiative low-friction and free of bureaucracy. There are no registration forms, no application processes, and no community servers to join.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Choose your focus:&lt;/strong&gt; Pick one project, problem, or goal for November.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Work within the rules:&lt;/strong&gt; Follow the guidelines listed above throughout the month.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Optional Check-in:&lt;/strong&gt; You may leave a brief comment on this article before November to let others know you plan to participate.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Share later:&lt;/strong&gt; From December 1 onward, you can return to this article to share your result or your reflections on the experience.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is this against "building in public"?&lt;/strong&gt;&lt;br&gt;
No. Public development is valuable for feedback, networking, and collaboration. No Ship November is a temporary, intentional alternative to that practice for one specific focus for one month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I continue committing code?&lt;/strong&gt;&lt;br&gt;
Yes. Local commits and private work are encouraged. The restriction is specifically on making progress about your &lt;em&gt;chosen focus&lt;/em&gt; public.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need to publish a result on December 1?&lt;/strong&gt;&lt;br&gt;
No. That is simply the earliest date allowed for sharing results. You can share whenever you are ready, or not at all.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>softwaredevelopment</category>
      <category>community</category>
      <category>challenge</category>
    </item>
    <item>
      <title>Hacktoberfest 2026: How to Participate, Earn Rewards, and Join a Local Fest</title>
      <dc:creator>whaiman</dc:creator>
      <pubDate>Tue, 13 Oct 2026 17:36:50 +0000</pubDate>
      <link>https://dev.to/whaiman/hacktoberfest-2026-how-to-participate-earn-rewards-and-join-a-local-fest-3m3n</link>
      <guid>https://dev.to/whaiman/hacktoberfest-2026-how-to-participate-earn-rewards-and-join-a-local-fest-3m3n</guid>
      <description>&lt;h1&gt;
  
  
  Hacktoberfest 2026: a practical guide to taking part, online and in person
&lt;/h1&gt;

&lt;p&gt;Hacktoberfest changed in 2026. Pull requests no longer count toward rewards. The month is now about building with open-weight models and open-source AI, online and at local events. This guide explains how to take part, whether you join online, at a Fest near you, or both. It works for anyone, anywhere.&lt;/p&gt;

&lt;p&gt;I host a Hack Day in Baku, Azerbaijan, and I wrote this first for the people who registered. Everything here applies to any Fest and to the online activities. The last section covers our event.&lt;/p&gt;

&lt;p&gt;This guide is not an official MLH or DEV page. Facts checked on 11 October 2026. Dates and rules can change, so check hacktoberfest.com before you plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key dates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;9 to 15 October: Global Hack Week, online and free. It starts on 9 October at 12:00 EDT (16:00 UTC, 20:00 Baku time) and ends on 15 October at 13:00 EDT (17:00 UTC, 21:00 Baku time).&lt;/li&gt;
&lt;li&gt;12 to 18 October: DEV Challenge, Week 2&lt;/li&gt;
&lt;li&gt;19 to 25 October: DEV Challenge, Week 3&lt;/li&gt;
&lt;li&gt;26 to 31 October: DEV Challenge, Week 4&lt;/li&gt;
&lt;li&gt;All October: livestreams, and Fests in cities around the world&lt;/li&gt;
&lt;li&gt;17 October: Hack Day Baku (see the last section)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Weekend Challenge (2 to 5 October) and Week 1 (5 to 11 October) have ended.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Hacktoberfest is in 2026
&lt;/h2&gt;

&lt;p&gt;Hacktoberfest 2026 runs all of October. This year's theme is "AI belongs to everyone".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Who runs it:&lt;/strong&gt; Major League Hacking (MLH) and DEV, presented by DigitalOcean, which started Hacktoberfest in 2014.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Age:&lt;/strong&gt; 13 or older, subject to country eligibility rules. Individual Fests can set their own audience and age limits. DEV Challenges have their own eligibility rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formats:&lt;/strong&gt; online, in person at a Fest, or both. Hundreds of Fests take place around the world.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pull requests no longer count. The organizers say low-effort and spam pull requests burden maintainers, and AI tools make them easier to produce. Contributing to open source is still encouraged. If you are new to it, start with this beginner guide: &lt;a href="https://dev.to/opensauced/open-source-101-a-beginners-guide-to-getting-started-37fb"&gt;https://dev.to/opensauced/open-source-101-a-beginners-guide-to-getting-started-37fb&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up once, in 10 minutes
&lt;/h2&gt;

&lt;p&gt;Do these steps first.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sign in to My Hacktoberfest at hacktoberfest.com with a free MyMLH account.&lt;/li&gt;
&lt;li&gt;Add your shipping address to your MyMLH account. Steps 1 and 2 are required for any reward.&lt;/li&gt;
&lt;li&gt;Connect your DEV account. This is optional, but it gives you a DEV badge and credit for DEV Challenges.&lt;/li&gt;
&lt;li&gt;Join the MLH Community Discord. It earns you a sticker.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some other sticker activities ask you to connect tools such as DevRelay or a DigitalOcean account. These are optional. Read what each tool asks for before you connect it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the sticker book works
&lt;/h2&gt;

&lt;p&gt;The sticker book has 24 virtual stickers. Collect them to earn rewards.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Required for any reward:&lt;/strong&gt; sign in and add your address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3 stickers:&lt;/strong&gt; a mailed pack of real stickers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 stickers:&lt;/strong&gt; a bonus holographic sticker in your pack.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;15 stickers (Completionist):&lt;/strong&gt; automatic entry in a raffle for a Hacktoberfest 2026 T-shirt or an Arduino Uno Q board.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ways to earn stickers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check in to livestreams with the code shown on screen. There are stickers for 1, 3 and 5 livestreams, and for the launch livestream.&lt;/li&gt;
&lt;li&gt;Submit to DEV Challenges after you connect your DEV account.&lt;/li&gt;
&lt;li&gt;Join Global Hack Week: finish the registration challenges, check in to a livestream and reach points milestones.&lt;/li&gt;
&lt;li&gt;Connect the optional tools, and complete the pre-event and post-event surveys.&lt;/li&gt;
&lt;li&gt;Attend a Fest in person.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Real stickers are mailed after Hacktoberfest ends. It can take a few weeks to a couple of months. See the full list of activities: &lt;a href="https://hacktoberfest.com/activities/" rel="noopener noreferrer"&gt;https://hacktoberfest.com/activities/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can join online
&lt;/h2&gt;

&lt;p&gt;You can join from anywhere, all month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Livestreams.&lt;/strong&gt; Sessions on open-weight models, agents and tools. Check in with the code on screen to earn a sticker. See the schedule: &lt;a href="https://hacktoberfest.com/online/" rel="noopener noreferrer"&gt;https://hacktoberfest.com/online/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Global Hack Week: Hacktoberfest.&lt;/strong&gt; A free, week-long online festival run by MLH.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dates: 9 October 12:00 EDT to 15 October 13:00 EDT (see Key dates for UTC and Baku time).&lt;/li&gt;
&lt;li&gt;Daily workshops on Twitch, with recordings on YouTube.&lt;/li&gt;
&lt;li&gt;Mini-events in the MLH Community Discord.&lt;/li&gt;
&lt;li&gt;Challenges that earn points.&lt;/li&gt;
&lt;li&gt;Details: &lt;a href="https://ghw.mlh.com/events/open-source" rel="noopener noreferrer"&gt;https://ghw.mlh.com/events/open-source&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DEV Challenges.&lt;/strong&gt; Five challenges with cash prizes. The themes are revealed at launch.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weekend Challenge: 2 to 5 October&lt;/li&gt;
&lt;li&gt;Week 1: 5 to 11 October&lt;/li&gt;
&lt;li&gt;Week 2: 12 to 18 October&lt;/li&gt;
&lt;li&gt;Week 3: 19 to 25 October&lt;/li&gt;
&lt;li&gt;Week 4: 26 to 31 October&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need a DEV account. You can make one submission per challenge. Build a new project during the challenge window with open-source AI at its core, and write about it on DEV. Winners are announced the week after each challenge closes.&lt;/p&gt;

&lt;p&gt;Check the exact deadlines and rules on the challenge page: &lt;a href="https://dev.to/challenges"&gt;https://dev.to/challenges&lt;/a&gt;. Week 1, for example, closed on 11 October at 11:59 PM PDT (06:59 UTC on 12 October). Convert deadlines to your own time zone before you plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens at a Fest
&lt;/h2&gt;

&lt;p&gt;A Fest is a free, one-day, in-person event. Find one near you by city, country or name: &lt;a href="https://hacktoberfest.com/fests/" rel="noopener noreferrer"&gt;https://hacktoberfest.com/fests/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two formats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hack Day:&lt;/strong&gt; a mini-hackathon. You build a project and demo it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meetup:&lt;/strong&gt; talks, workshops or social time. There is no project to ship.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every Fest has its own page with the date, the venue and a register button. Register there with your MyMLH account. Each Fest has separate registration.&lt;/li&gt;
&lt;li&gt;Read the Fest's page before you go. It lists the schedule, venue, food, accessibility, check-in instructions and what to bring.&lt;/li&gt;
&lt;li&gt;If you are building, bring a laptop and a charger. If not, just bring yourself.&lt;/li&gt;
&lt;li&gt;Check in in person on the day.&lt;/li&gt;
&lt;li&gt;At a Hack Day, every team member must register and check in.&lt;/li&gt;
&lt;li&gt;Come solo or in a team of any size. Prizes cover up to four team members, so larger teams share.&lt;/li&gt;
&lt;li&gt;To submit a project, one teammate opens Challenges on the Fest's event page, selects Add Submission, enters the project details, selects the challenges and submits before the host's deadline.&lt;/li&gt;
&lt;li&gt;The host chooses the winners.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What you can get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An official participation certificate in My Hacktoberfest.&lt;/li&gt;
&lt;li&gt;A DEV badge, if you connected your DEV account.&lt;/li&gt;
&lt;li&gt;T-shirts and event swag while supplies last. They are not guaranteed, and the host decides how to hand them out.&lt;/li&gt;
&lt;li&gt;Arduinos at select Hack Days, while supplies last.&lt;/li&gt;
&lt;li&gt;A common Hack Day prize is a swag bag with MLH and DEV merch. If a prize is missing because of shipping delays, MLH says it will send a prize of equal or greater value within 60 days after the Fest ends.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pick your level
&lt;/h2&gt;

&lt;p&gt;Pick what fits your time this month.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;15 minutes:&lt;/strong&gt; sign in, add your address, connect DEV and join the Discord.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1 hour:&lt;/strong&gt; check in to a livestream. Global Hack Week runs until 15 October.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A weekend:&lt;/strong&gt; submit a project to a DEV Challenge. Weeks 2 to 4 are still ahead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One day:&lt;/strong&gt; join a Fest near you. In Baku, that can be our Hack Day on 17 October.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can do all four.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick answers
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do pull requests count?&lt;/strong&gt; No. Contributing to open source is still encouraged, but pull requests do not count toward rewards this year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it free?&lt;/strong&gt; Global Hack Week is free, and almost all Fests are free. A few pop-up Fests take place inside ticketed conferences, so check each event page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How old do I need to be?&lt;/strong&gt; 13 or older, subject to country rules. Individual Fests can set their own limits. DEV Challenges have separate rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need to build an AI project?&lt;/strong&gt; A Hack Day is about building a project, and this year's focus is open-source AI. Check your Fest's requirements. DEV Challenges need open-source AI at the core. For a Meetup or a livestream, you do not need to build anything, and beginners are welcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I come alone?&lt;/strong&gt; Yes. You can enter a Hack Day alone or in a team of any size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I find a Fest near me?&lt;/strong&gt; Search the Fests directory by city, country or name: &lt;a href="https://hacktoberfest.com/fests/" rel="noopener noreferrer"&gt;https://hacktoberfest.com/fests/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who do I ask for help?&lt;/strong&gt; Use Contact Host on the Fest's event page for questions about that Fest. Email &lt;a href="mailto:hacktoberfest@mlh.io"&gt;hacktoberfest@mlh.io&lt;/a&gt; for swag, prizes and general questions. For harassment or safety concerns, email &lt;a href="mailto:incidents@mlh.io"&gt;incidents@mlh.io&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you are in Baku: Hack Day on 17 October
&lt;/h2&gt;

&lt;p&gt;Hacktoberfest Hack Day Baku x Tea &amp;amp;&amp;amp; Compile is hosted by Tea &amp;amp;&amp;amp; Compile, a new open-source and Linux community in Baku. It is one example of how a Hack Day works.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;When:&lt;/strong&gt; Saturday, 17 October 2026, 10:00 to 15:00&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where:&lt;/strong&gt; Coffee Moffie, Baku&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; free&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Age:&lt;/strong&gt; 18 and over only&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teams:&lt;/strong&gt; solo or any team size. We help people find teammates on the spot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seats:&lt;/strong&gt; limited. The host approves registrations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Register:&lt;/strong&gt; every person registers separately on the MLH event page and checks in on the day: &lt;a href="https://events.mlh.com/events/15529-hacktoberfest-hack-day-baku-x-tea-compile" rel="noopener noreferrer"&gt;https://events.mlh.com/events/15529-hacktoberfest-hack-day-baku-x-tea-compile&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bring:&lt;/strong&gt; a laptop, a charger and a GitHub account.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10:00 Check-in&lt;/li&gt;
&lt;li&gt;10:20 Welcome&lt;/li&gt;
&lt;li&gt;10:30 Quick start&lt;/li&gt;
&lt;li&gt;10:45 Idea round and teams&lt;/li&gt;
&lt;li&gt;About 11:05 Hacking starts&lt;/li&gt;
&lt;li&gt;14:00 Wrap-up and project submission on the event's Challenges page&lt;/li&gt;
&lt;li&gt;14:15 Demos, 2 minutes each&lt;/li&gt;
&lt;li&gt;14:45 Vote and winners&lt;/li&gt;
&lt;li&gt;15:00 End&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What to expect: there are no cash prizes from the host. The participation certificate is included. Swag, Arduinos and winners' bags are not guaranteed, because the event pack had not arrived when we wrote this.&lt;/p&gt;

&lt;p&gt;Before the day, connect your DEV account to My Hacktoberfest so you can receive the DEV badge. Follow us for updates: Telegram &lt;a href="https://t.me/teacompile" rel="noopener noreferrer"&gt;https://t.me/teacompile&lt;/a&gt; and Instagram &lt;a href="https://www.instagram.com/teacompile.baku/" rel="noopener noreferrer"&gt;https://www.instagram.com/teacompile.baku/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To prepare, read our hack day guide: &lt;a href="https://dev.to/whaiman/zero-to-demo-in-5-hours-a-survival-guide-for-your-first-ai-hack-day-3h4d"&gt;https://dev.to/whaiman/zero-to-demo-in-5-hours-a-survival-guide-for-your-first-ai-hack-day-3h4d&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;My Hacktoberfest and sign-in: &lt;a href="https://hacktoberfest.com" rel="noopener noreferrer"&gt;https://hacktoberfest.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Find a Fest: &lt;a href="https://hacktoberfest.com/fests/" rel="noopener noreferrer"&gt;https://hacktoberfest.com/fests/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sticker activities: &lt;a href="https://hacktoberfest.com/activities/" rel="noopener noreferrer"&gt;https://hacktoberfest.com/activities/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Online livestreams: &lt;a href="https://hacktoberfest.com/online/" rel="noopener noreferrer"&gt;https://hacktoberfest.com/online/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Global Hack Week: &lt;a href="https://ghw.mlh.com/events/open-source" rel="noopener noreferrer"&gt;https://ghw.mlh.com/events/open-source&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;DEV Challenges: &lt;a href="https://dev.to/challenges"&gt;https://dev.to/challenges&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Open source for beginners: &lt;a href="https://dev.to/opensauced/open-source-101-a-beginners-guide-to-getting-started-37fb"&gt;https://dev.to/opensauced/open-source-101-a-beginners-guide-to-getting-started-37fb&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Hack Day Baku registration: &lt;a href="https://events.mlh.com/events/15529-hacktoberfest-hack-day-baku-x-tea-compile" rel="noopener noreferrer"&gt;https://events.mlh.com/events/15529-hacktoberfest-hack-day-baku-x-tea-compile&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Hack day preparation guide: &lt;a href="https://dev.to/whaiman/zero-to-demo-in-5-hours-a-survival-guide-for-your-first-ai-hack-day-3h4d"&gt;https://dev.to/whaiman/zero-to-demo-in-5-hours-a-survival-guide-for-your-first-ai-hack-day-3h4d&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tea &amp;amp;&amp;amp; Compile on Instagram: &lt;a href="https://www.instagram.com/teacompile.baku" rel="noopener noreferrer"&gt;https://www.instagram.com/teacompile.baku&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tea &amp;amp;&amp;amp; Compile on Telegram: &lt;a href="https://t.me/teacompile" rel="noopener noreferrer"&gt;https://t.me/teacompile&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Zero to demo in 5 hours: a survival guide for your first AI hack day</title>
      <dc:creator>whaiman</dc:creator>
      <pubDate>Tue, 06 Oct 2026 21:35:54 +0000</pubDate>
      <link>https://dev.to/whaiman/zero-to-demo-in-5-hours-a-survival-guide-for-your-first-ai-hack-day-3h4d</link>
      <guid>https://dev.to/whaiman/zero-to-demo-in-5-hours-a-survival-guide-for-your-first-ai-hack-day-3h4d</guid>
      <description>&lt;p&gt;It is 10:00 on Saturday morning. You open your laptop, look at a blank editor, and realize you have no idea what to build. Time is ticking down, and you feel tempted to plan a massive application that takes weeks to construct. You do not need a complex architecture or a full product to succeed today. This survival guide gives you a practical framework to scope an idea, set up tools, build a working prototype, and present it in five hours.&lt;/p&gt;

&lt;p&gt;If you are near Baku, you can join us for &lt;a href="https://events.mlh.com/events/15529-hacktoberfest-hack-day-baku-x-tea-compile" rel="noopener noreferrer"&gt;Hacktoberfest Hack Day Baku x Tea &amp;amp;&amp;amp; Compile&lt;/a&gt;. We gather on Saturday, 17 October 2026, to build small open-source AI projects together and practice our skills. Whether you are attending an event or hacking alone at home, these steps will keep you on track.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shrink your idea until it fits in five hours
&lt;/h2&gt;

&lt;p&gt;Before committing to an idea, search GitHub, Hugging Face, and the web for similar projects for 10 minutes. This 10-minute search is my most recommended habit. If you find an existing project, you have three clear options: use it as a base, copy its approach with your own twist, or build your own version. Building your own version is a valid choice and a great way to learn. It often results in a tool that is simpler or more convenient for your own needs. Searching first ensures you make this choice on purpose instead of accidentally duplicating effort without knowing it.&lt;/p&gt;

&lt;p&gt;To keep your project manageable, write your goal in one simple sentence using this fill-in template: "[Who] pastes [input] and gets [output]."&lt;/p&gt;

&lt;p&gt;Here are three right-sized example ideas that fit this template perfectly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A student pastes error logs and gets a plain English explanation with two fixes.&lt;/li&gt;
&lt;li&gt;A writer pastes a draft and gets three alternative title suggestions.&lt;/li&gt;
&lt;li&gt;A developer pastes a shell script and gets a brief security review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now consider an idea that is too big: an automated AI agent that scans your entire repository, writes missing tests, creates pull requests, and updates your deployment scripts.&lt;/p&gt;

&lt;p&gt;To shrink this oversized idea into a realistic five-hour project, drop the background workers, automated triggers, database connections, and pull request creation. Reduce it to a single script or web interface: a developer pastes one function and gets two unit tests. That smaller scope gives you a clear target you can finish and demo before time runs out. When you focus on a single input and output, you cut complexity and make a working feature much more likely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up your toolbox in thirty minutes
&lt;/h2&gt;

&lt;p&gt;If setup takes more than 30 minutes, switch to a simpler route.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Route&lt;/th&gt;
&lt;th&gt;What it needs&lt;/th&gt;
&lt;th&gt;Who it suits&lt;/th&gt;
&lt;th&gt;Main catch&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local open-weight model (LM Studio)&lt;/td&gt;
&lt;td&gt;Local memory and storage&lt;/td&gt;
&lt;td&gt;Developers prioritizing privacy&lt;/td&gt;
&lt;td&gt;Downloads large files before starting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosted open-weight model (Groq, OpenRouter)&lt;/td&gt;
&lt;td&gt;Internet connection and API key&lt;/td&gt;
&lt;td&gt;Anyone needing quick responses&lt;/td&gt;
&lt;td&gt;Dependent on active network connection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI coding assistant as pair programmer&lt;/td&gt;
&lt;td&gt;Code editor extension&lt;/td&gt;
&lt;td&gt;Developers seeking boilerplate code&lt;/td&gt;
&lt;td&gt;Generates code that requires debugging&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Hugging Face Spaces is a different kind of hosted route: a place to publish and share a demo of your project.&lt;/p&gt;

&lt;p&gt;I am not sponsored by, paid by, or affiliated with any tool or company named in this article.&lt;/p&gt;

&lt;p&gt;My laptop has integrated graphics, shown in Windows Task Manager as AMD Radeon 650 (TM). On this machine, I ran several models locally in LM Studio: &lt;code&gt;google/gemma-4-12b-qat&lt;/code&gt;, &lt;code&gt;google/gemma-4-e4b&lt;/code&gt;, &lt;code&gt;qwen/qwen3.5-9b&lt;/code&gt;, &lt;code&gt;mistralai/mistral-nemo-instruct-2407&lt;/code&gt;, and &lt;code&gt;mistralai/mistral-7b-instruct-v0.3&lt;/code&gt;. The QAT in &lt;code&gt;google/gemma-4-12b-qat&lt;/code&gt; stands for quantization-aware training, a method that makes a model smaller so it needs less memory.&lt;/p&gt;

&lt;p&gt;These local models were slow. They were slow enough that you could leave, make another cup of tea, and come back to compile the code. Even so, they were usable for long work, and I could keep giving them tasks for a whole day. The real limit was the context window, which did not last a full day of continuous work. Slow local models suit patient tasks that run in the background, while a hosted route is usually the better choice when you need quick back-and-forth during a five-hour hack day.&lt;/p&gt;

&lt;p&gt;For hosted options, I have used Hugging Face Spaces and Groq for my own projects. OpenRouter also offers free models as an option for readers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build your project in thin working slices
&lt;/h2&gt;

&lt;p&gt;To finish a functional project in five hours, break your time into structured blocks and commit your code about every 30 minutes.&lt;/p&gt;

&lt;p&gt;At our event, check-in, the opening and the demos use part of the day, so the build window is closer to three hours. Keep the same order and shrink each block: an end-to-end version in the first hour, and features frozen about 45 minutes before the wrap-up.&lt;/p&gt;

&lt;p&gt;Spend the first 30 minutes on preliminary planning and setup: complete your 10-minute search, write your one-sentence idea, choose your toolbox route, and set up a public repository.&lt;/p&gt;

&lt;p&gt;From 0:30 to 1:30, focus entirely on building the ugliest end-to-end version possible. This version only needs to take sample input, send it to a real model, and print the raw output on screen. Do not spend time styling buttons or polishing text.&lt;/p&gt;

&lt;p&gt;From 1:30 to 3:30, refine the core logic so it works on real input. Fix basic execution errors, clean up output parsing, and ensure your core user flow completes reliably every time.&lt;/p&gt;

&lt;p&gt;From 3:30 to 4:15, freeze all new features. Stop adding extra buttons or options, and focus on fixing the specific path you plan to show in your demonstration.&lt;/p&gt;

&lt;p&gt;From 4:15 to 5:00, finish documentation and presentation details. Write your minimum README, push your final code, run through two full rehearsals to check your timing, and record a clear backup video.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publish your code as open source
&lt;/h2&gt;

&lt;p&gt;Create a public repository within your first 30 minutes, right after your idea check, rather than waiting until the end of the day. Publishing early encourages you to write clean code, keep secrets safe, and maintain a clear commit history throughout the event. Pick an open-source license early by reviewing &lt;a href="https://choosealicense.com/" rel="noopener noreferrer"&gt;choosealicense.com&lt;/a&gt;. An open-weight model shares its trained weights, while open-source software grants full rights to inspect and modify code. License terms vary across model providers, so always check the license before building.&lt;/p&gt;

&lt;p&gt;Your README file needs four essential elements: a clear statement of what the project does, step-by-step instructions on how to run it locally, one screenshot showing the output, and the exact model identifier you used. Keeping a tidy README makes it easy for other participants to understand your work.&lt;/p&gt;

&lt;p&gt;Never commit API keys or secret credentials to a public repository. Store secrets in a local environment file and block that file from git tracking with a &lt;code&gt;.gitignore&lt;/code&gt; file. Create both before your first &lt;code&gt;git add&lt;/code&gt;. This simple setup prevents secret leaks and ensures anyone can clone your project safely:&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;.env&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;API_KEY=your_secret_key_here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;.gitignore&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First, create an empty repository on GitHub, with no README or license file on the GitHub side, so your first push is not rejected. Then run these commands in your project folder, using the HTTPS address that GitHub shows you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"initial commit"&lt;/span&gt;
git branch &lt;span class="nt"&gt;-M&lt;/span&gt; main
git remote add origin https://github.com/username/repository.git
git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, push small updates on a regular schedule.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deliver a clean two-minute demo
&lt;/h2&gt;

&lt;p&gt;A great project can fail if the presentation is messy. Structure your two-minute presentation using a strict timing script:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem (15 seconds): State the specific user pain point you set out to solve.&lt;/li&gt;
&lt;li&gt;Live run (60 seconds): Show your application processing a single input and generating an output in real time.&lt;/li&gt;
&lt;li&gt;How it was built (30 seconds): Explain your choice of model, interface, and framework.&lt;/li&gt;
&lt;li&gt;What comes next (15 seconds): Share one logical next step for future development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To protect yourself against live technical failures, prepare one specific input that you know works perfectly. Do not test a new query live on stage.&lt;/p&gt;

&lt;p&gt;Shared venue Wi-Fi can be slow when many people use it at once. Record a screen video of your working demonstration before the final deadline. If the local Wi-Fi drops, you can play your backup recording and present your project without interruption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five ways a hack day goes wrong
&lt;/h2&gt;

&lt;p&gt;Avoid these five common failure modes during your build day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scope too big: You attempt a complex multi-page web app. Fix: Stick to one user, one input, and one output.&lt;/li&gt;
&lt;li&gt;Setup eats two hours: Drivers fail to configure properly. Fix: Switch to a hosted API if setup exceeds 30 minutes.&lt;/li&gt;
&lt;li&gt;Rewriting instead of finishing: You change frameworks midway. Fix: Stick with your chosen stack until done.&lt;/li&gt;
&lt;li&gt;Nobody commits until the end: Code progress gets lost or overwritten. Fix: Push small updates every 30 minutes.&lt;/li&gt;
&lt;li&gt;Nobody rehearses: Your demo exceeds the strict time limit. Fix: Practice twice and save a backup video.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A checklist for your build day
&lt;/h2&gt;

&lt;p&gt;Use this checklist to track your progress throughout the five hours:&lt;/p&gt;

&lt;p&gt;☐ One-sentence idea checked against a 10-minute search&lt;br&gt;
☐ Public repository created with a minimum README&lt;br&gt;
☐ Working end-to-end version completed by the 1:30 mark&lt;br&gt;
☐ API keys and private secrets excluded from the repository&lt;br&gt;
☐ One reliable demo input tested and ready&lt;br&gt;
☐ Backup screen recording saved locally&lt;/p&gt;

&lt;h2&gt;
  
  
  Join us in Baku on 17 October
&lt;/h2&gt;

&lt;p&gt;If you are in Baku, come join us for &lt;a href="https://events.mlh.com/events/15529-hacktoberfest-hack-day-baku-x-tea-compile" rel="noopener noreferrer"&gt;Hacktoberfest Hack Day Baku x Tea &amp;amp;&amp;amp; Compile&lt;/a&gt;. We are meeting on Saturday, 17 October 2026, from 10:00 to 15:00, at Coffee Moffie in Baku. The event is free to attend for ages 18 and over. Seats are limited, so register on the MLH event page first.&lt;/p&gt;

&lt;p&gt;I host this event to promote open-source models and open-source ideas in Baku, and to let people try them by building something real.&lt;/p&gt;

&lt;p&gt;If you cannot attend in Baku, follow these steps wherever you are. Share what you build in the comments below so we can see your work.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>opensource</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why Next.js Feels Like Flask, Rewritten in TypeScript</title>
      <dc:creator>whaiman</dc:creator>
      <pubDate>Sun, 30 Aug 2026 10:59:04 +0000</pubDate>
      <link>https://dev.to/whaiman/why-nextjs-feels-like-flask-rewritten-in-typescript-1g1b</link>
      <guid>https://dev.to/whaiman/why-nextjs-feels-like-flask-rewritten-in-typescript-1g1b</guid>
      <description>&lt;p&gt;I spent over a year writing backend code in Flask. When I started a new project, I decided to try Next.js. The first thing I noticed was déjà vu. This felt like Flask, rewritten in TypeScript with a newer take on rendering.&lt;/p&gt;

&lt;p&gt;React itself works well for me - a tidy component library, nothing more. Next.js is what I fell for, the App Router most of all. The deeper I dig, the more it looks like a classic server-side framework, with extras Flask would never build on its own.&lt;/p&gt;

&lt;p&gt;My Flask experience isn't from tutorials. I built &lt;a href="https://github.com/whaiman/FileServer" rel="noopener noreferrer"&gt;FileServer&lt;/a&gt; on it (the project is moving to FastAPI now, since the old code stopped scaling). That work is what showed me how much these two tools overlap in concept.&lt;/p&gt;

&lt;h2&gt;
  
  
  Templating and layouts
&lt;/h2&gt;

&lt;p&gt;In Flask with Jinja, you build a &lt;code&gt;base.html&lt;/code&gt; with a &lt;code&gt;{% block content %}&lt;/code&gt; block, and &lt;code&gt;users.html&lt;/code&gt; extends that template. Header, footer, navigation - written once, not copied on every page.&lt;/p&gt;

&lt;p&gt;Next.js does the same job with &lt;code&gt;layout.tsx&lt;/code&gt;. You set it at the folder level, and every page inside wraps in it, no extra code needed. App Router lets you nest layouts at any depth - &lt;code&gt;/admin&lt;/code&gt; gets its own layout on top of the shared one. Flask can do this too, through several levels of &lt;code&gt;{% extends %}&lt;/code&gt;, but by hand it feels less clean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Server rendering by default
&lt;/h2&gt;

&lt;p&gt;My first guess: TSX is Jinja with a different syntax. Close, but not exact.&lt;/p&gt;

&lt;p&gt;A component in Next.js defaults to a &lt;strong&gt;Server Component&lt;/strong&gt;. It renders on the server, and the browser gets finished HTML, the same way it does after Jinja.&lt;/p&gt;

&lt;p&gt;A component turns client-side only when you add &lt;code&gt;'use client'&lt;/code&gt; at the top of the file. That's the real parallel with Flask. Flask never gives you the choice - everything runs on the server. Next.js gives you the choice, and you can mix server markup with interactive pieces in the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data fetching
&lt;/h2&gt;

&lt;p&gt;In Flask, you write the data-fetching logic right in the route, then pass it to the template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/users&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;users&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_all_users&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;users.html&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Next.js, Server Components let you do the same thing inside the component itself, with no extra API endpoint to build:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// app/users/page.tsx&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;UsersPage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findMany&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It still feels like writing backend code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dynamic routes
&lt;/h2&gt;

&lt;p&gt;Flask: &lt;code&gt;@app.route('/user/&amp;lt;int:user_id&amp;gt;')&lt;/code&gt;, and &lt;code&gt;user_id&lt;/code&gt; arrives in the function as an argument.&lt;/p&gt;

&lt;p&gt;Next.js uses the same idea with square brackets in the folder name: &lt;code&gt;app/user/[id]/page.tsx&lt;/code&gt;, and you pull it out as &lt;code&gt;params.id&lt;/code&gt;. Different syntax, same idea - a piece of the URL becomes a variable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Form handling
&lt;/h2&gt;

&lt;p&gt;In Flask, you build a form, set &lt;code&gt;method="POST"&lt;/code&gt;, and catch the data on the backend through &lt;code&gt;request.form&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Next.js added &lt;strong&gt;Server Actions&lt;/strong&gt;. You write an async function on the server and attach it to the &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt; tag with no extra wiring:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;createUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;formData&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;FormData&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;formData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt; &lt;span class="na"&gt;action&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;createUser&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Create&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's the same old POST request, packaged in newer syntax. You don't need a separate API route for simple mutations.&lt;/p&gt;

&lt;h2&gt;
  
  
  API and HTML in one app
&lt;/h2&gt;

&lt;p&gt;A single Flask app holds &lt;code&gt;/users&lt;/code&gt;, which renders HTML, next to &lt;code&gt;/api/users&lt;/code&gt;, which runs &lt;code&gt;jsonify(...)&lt;/code&gt; and returns plain JSON. One server, two kinds of response.&lt;/p&gt;

&lt;p&gt;Next.js works the same way: &lt;code&gt;app/users/page.tsx&lt;/code&gt; returns a JSX page, and the neighboring &lt;code&gt;app/api/users/route.ts&lt;/code&gt; returns JSON. This is also how I plan to build the FastAPI backend for FileServer - API on one side, frontend on the other, an idea I picked up from the Flask version of the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Request lifecycle: middleware
&lt;/h2&gt;

&lt;p&gt;Who sees a request before it reaches your code? In Flask, &lt;code&gt;@app.before_request&lt;/code&gt; handles that - a function that runs before every route. Useful for checking auth or logging.&lt;/p&gt;

&lt;p&gt;Next.js has &lt;code&gt;middleware.ts&lt;/code&gt; at the project root for the same job. It catches the request before it reaches the page, and that's where you handle redirects or check a cookie. It matches &lt;code&gt;before_request&lt;/code&gt; almost exactly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Grouping routes
&lt;/h2&gt;

&lt;p&gt;Next.js has Route Groups - a folder in parentheses like &lt;code&gt;(auth)&lt;/code&gt; that groups routes logically without showing up in the URL.&lt;/p&gt;

&lt;p&gt;Flask solves the same problem with Blueprints: move the auth routes into one blueprint, the admin routes into another, then register both on the main app. The mechanics differ, but the motivation matches - don't dump every route into one flat pile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caching and static files
&lt;/h2&gt;

&lt;p&gt;In Flask, to keep from hitting the database on every request, you add a &lt;code&gt;@cache.cached(timeout=50)&lt;/code&gt; decorator.&lt;/p&gt;

&lt;p&gt;Next.js builds this into the core, under the name ISR (Incremental Static Regeneration). You export a config variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;revalidate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Redirects and request context
&lt;/h2&gt;

&lt;p&gt;In Flask, you use &lt;code&gt;redirect(url_for('login'))&lt;/code&gt; to send a user elsewhere. For headers, you import the global &lt;code&gt;request&lt;/code&gt; object.&lt;/p&gt;

&lt;p&gt;In Next.js server code, you do the same thing through dedicated functions instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;redirect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next/navigation&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;headers&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next/headers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;session&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/login&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;People often file Next.js under "yet another SPA framework." Under the hood, App Router runs a solid server framework that does what Flask does, then lets you drop in client-side JavaScript exactly where you need it. If you know Flask well, Next.js won't take long to pick up. The concepts stay the same. Only the syntax changed.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>flask</category>
      <category>react</category>
    </item>
    <item>
      <title>Why the "AI" Badge Doesn't Matter and How to Restore Trust in Our Code</title>
      <dc:creator>whaiman</dc:creator>
      <pubDate>Sun, 16 Aug 2026 12:01:43 +0000</pubDate>
      <link>https://dev.to/whaiman/why-the-ai-badge-doesnt-matter-and-how-to-restore-trust-in-our-code-16ia</link>
      <guid>https://dev.to/whaiman/why-the-ai-badge-doesnt-matter-and-how-to-restore-trust-in-our-code-16ia</guid>
      <description>&lt;p&gt;Hello, DEV community! 👋&lt;/p&gt;

&lt;p&gt;This is my first post here. I've been reading articles on this platform for a while, but a recent article by &lt;a class="mentioned-user" href="https://dev.to/pascal_cescato_692b7a8a20"&gt;@pascal_cescato_692b7a8a20&lt;/a&gt; - &lt;a href="https://dev.to/pascal_cescato_692b7a8a20/the-ai-badge-doesnt-measure-what-you-think-it-does-3ne9"&gt;"The "AI" Badge Doesn't Measure What You Think It Does"&lt;/a&gt; - finally pushed me to join the conversation.&lt;/p&gt;

&lt;p&gt;It touches on a topic that's been on my mind for a while: the "AI-generated" badge, which is being actively pushed across media platforms, doesn't actually tell us anything useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Whose thought is it anyway?
&lt;/h2&gt;

&lt;p&gt;As Pascal brilliantly breaks down, we constantly conflate three fundamentally different ways of working:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assisted. When the idea, structure, and artificial decisions belong entirely to the human. A model is used to rephrase, translate, fix regex, or pressure-test arguments.&lt;/li&gt;
&lt;li&gt;Generated. A human gives a prompt, but the model produces the actual thought and text.&lt;/li&gt;
&lt;li&gt;Produced. Automated pipelines generating content at an industrial scale without human oversight.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A binary badge (or statistical watermark) treats all three identically. An engineer who spends hours architecting a system, writing core logic, and using LLM to polish a comment or write boilerplate get shoved into the same bucket as an automated spam farm.&lt;br&gt;
The real line of ownership isn't drawn by how much a model intervened, but by who kept their hand on the decisions. Who designed the solution? Who discarded the bad outputs? Who took responsibility for the final architecture?&lt;/p&gt;




&lt;h2&gt;
  
  
  Proof of work instead of broken labels
&lt;/h2&gt;

&lt;p&gt;Detectors and badges look at the final shape of a file and guess its origin. But as Pascal proved by running his 2021 pre-LLM article through ZeroGPT (getting scores ranging from 97% to 8.6%), detectors merely chase stylistic neutrality, not actual origin.&lt;/p&gt;

&lt;p&gt;We are seeing the exact same flaw happening in programming. Today, there are various code analyzers and enterprise tools designed to detect "AI-generated code". While writing software is fundamentally different from writing prose, the detection methodologies share the exact same underlying bias.&lt;/p&gt;

&lt;p&gt;Just as text detectors flag well-structured, pedagogical paragraphs as "AI," code detectors often flag clean, canonical, and boilerplate code. If an engineer writes a textbook algorithm, strictly follows naming conventions, or implements standard design patterns, they risk being falsely flagged. The detector mistakes professional standardization for machine generation. It judges the final shape without knowing the process.&lt;/p&gt;

&lt;p&gt;This exact problem led me to create &lt;strong&gt;&lt;a href="https://github.com/whaiman/dev-ledger" rel="noopener noreferrer"&gt;dev-ledger&lt;/a&gt;&lt;/strong&gt; - an open-source VS Code extension designed as a conceptual evolution of time-trackers like WakaTime.&lt;/p&gt;

&lt;p&gt;But unlike traditional trackers that send your activity to a third-party server, dev-ledger is 100% local-first. All data collection and behavioral analysis happen directly on your machine - no APIs, no telemetry, no cloud. To guarantee the authenticity of your timeline, it secures your local event log with a cryptographic hash chain. It gives you a mathematically tamper-proof "Proof of Work" that you fully control, without sacrificing your privacy.&lt;/p&gt;

&lt;p&gt;Instead of slapping a meaningless "100% Human" or "AI Generated" badge on a project, this approach shifts the focus back to transparency. By unobtrusively recording keystrokes, active editing time, and structural modifications, it documents the actual process - the iterations, the refactoring, and the human effort behind a codebase. It then converts this data into automated reports and visual SVGs for your README.md, backed by an integrity hash.&lt;/p&gt;

&lt;p&gt;When someone looks at a repository equipped with this kind of timeline, they don't have to blindly trust a flawed detector or guess the code's origin based on its "final shape." They can actually see the chain of decisions and the problem-solving process that went into building it.&lt;br&gt;
We probably can't stop platforms from implementing broken AI detectors or pushing binary badges. But as engineers, we can choose to shift the conversation back to what actually matters: the depth of our thought and the transparency of our work.&lt;/p&gt;

&lt;p&gt;If you share this philosophy and want to secure the integrity of your own coding sessions, you can check out the source code and try the extension here:&lt;br&gt;
👉 &lt;a href="https://github.com/whaiman/dev-ledger" rel="noopener noreferrer"&gt;github.com/whaiman/dev-ledger&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Feedback, GitHub stars, and PRs are deeply appreciated!)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What Metrics Cannot Fix
&lt;/h2&gt;

&lt;p&gt;Building a cryptographic ledger for development activity solves the technical problem of proving effort, but it doesn't fix the social one.&lt;br&gt;
Having a verified hash chain won't stop a cynical reviewer on Reddit or Hacker News from glancing at a clean, well-structured repository and dismissing it as "LLM slop." Just as in writing, the technical demonstration and the social judgment are two completely different things. Often, the reflexive rejection of code as "AI-generated" has nothing to do with the code itself - it’s just a blunt reaction to the anxiety of our industry's current transition.&lt;/p&gt;

&lt;p&gt;If badges can't measure origin, and enterprise code detectors can't measure thought, then the question in modern software engineering isn't "who typed this line?" but "who holds the steering wheel?"&lt;/p&gt;

&lt;p&gt;Software architecture is fundamentally about making trade-offs, not just generating syntax. An LLM might help write a boilerplate function or figure out a tricky regex, but it doesn't conceptualize a local-first system. It doesn’t weigh the security implications of a cryptographic hash chain against a centralized database. The engineering intent - the real heavy lifting - remains entirely human.&lt;/p&gt;

&lt;p&gt;When we reduce a developer's contribution to a binary label, we erase the unseen hours spent designing data models, debugging AI hallucinations, and rejecting bad abstractions. We erase the actual engineering.&lt;/p&gt;

&lt;p&gt;Code analyzers and enterprise detectors will only ever scan the final repository. They parse the Abstract Syntax Tree (AST) looking for generic patterns, completely blind to the iterative struggle that brought that structure into existence. But true ownership of software isn't found in the finalized syntax. It lives in the problem-solving, the discarded ideas, and the chain of architectural choices that made that code necessary in the first place.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>opensource</category>
      <category>writing</category>
    </item>
  </channel>
</rss>
