<?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: AI Hater</title>
    <description>The latest articles on DEV Community by AI Hater (@aihater).</description>
    <link>https://dev.to/aihater</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%2F4165348%2F3990df8c-dfc4-44ff-a437-0533b3376f55.jpg</url>
      <title>DEV Community: AI Hater</title>
      <link>https://dev.to/aihater</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aihater"/>
    <language>en</language>
    <item>
      <title>My dog won't let me stay inside</title>
      <dc:creator>AI Hater</dc:creator>
      <pubDate>Mon, 12 Oct 2026 06:46:13 +0000</pubDate>
      <link>https://dev.to/aihater/my-dog-wont-let-me-stay-inside-5ae</link>
      <guid>https://dev.to/aihater/my-dog-wont-let-me-stay-inside-5ae</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Usually when I look at a challenge, I don't react much. Most of them have exactly the vibe I expected. This one was different. I kept giggling the whole time I read it. They actually want us, the devs, to build something that gets people to touch grass.&lt;/p&gt;

&lt;p&gt;It reminded me of every uni holiday, when my friends would say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;CompSci finally touches grass&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fi.pinimg.com%2F400x%2F13%2Fa6%2F9e%2F13a69eb0f3c8eb065daab95b80ebccaf.jpg" 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%2Fi.pinimg.com%2F400x%2F13%2Fa6%2F9e%2F13a69eb0f3c8eb065daab95b80ebccaf.jpg" width="400" alt="Image" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;There are &lt;strong&gt;thousands of reasons to get out the door&lt;/strong&gt;. The problem is, &lt;strong&gt;people just don't want to&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We make excuses, or our body simply decides it's done for the day. Doomscrolling and bedrotting start to sound like better choices.&lt;/p&gt;

&lt;p&gt;A hike or a day of planting trees sounds fun in theory, but I can come up with a hundred excuses to put it off:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Going alone feels kind of sad&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I'd need to buy gear first&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We can just do it tomorrow&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I'm working this weekend, I'll sort it out later&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Boooooo!&lt;/p&gt;

&lt;p&gt;People don't go outside because they don't feel like it, and nobody is there to drag them out. So instead of trying to motivate people all the time, why not go with an easier solution?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Give them someone who will force them to go outside.&lt;/strong&gt;&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%2Fi.pinimg.com%2F400x%2F09%2Fe2%2Fd0%2F09e2d0ae4f40bc9cd6b632b29034047d.jpg" 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%2Fi.pinimg.com%2F400x%2F09%2Fe2%2Fd0%2F09e2d0ae4f40bc9cd6b632b29034047d.jpg" width="400" alt="Image" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And I mean it. &lt;strong&gt;They'll have to go outside, because they need to walk their dog.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let me introduce you to &lt;strong&gt;GRASS DAWG&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Grass Dawg is a mobile app where you raise your own virtual pet. (I love dogs, so it's a dog.) Once you adopt your pup, you're responsible for its happiness.&lt;/p&gt;

&lt;p&gt;Skip going outside for too many days and your dog gets miserable. Eventually, it runs away. Every day it's gone adds more distance to the search, and you have to walk all of it to bring your dog home.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;When it comes to dogs, we don't play.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If dog walking sounds boring, don't worry. Grass Dawg keeps every walk interesting, whether you want to explore your city or just get your body moving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complete side quests to feed your dog&lt;/li&gt;
&lt;li&gt;Visit a lookout because your dog has never seen one&lt;/li&gt;
&lt;li&gt;Snap a photo after each activity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnxcye99zq0bwljyl4fos.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnxcye99zq0bwljyl4fos.png" alt="outdoor detect" width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the end of the walk, you get a recap of your day, just like the stories you'd post anyway, so you can see how good your day actually was.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frhpcymejic6v465yvnwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frhpcymejic6v465yvnwn.png" alt="walk recap" width="457" height="823"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  About screen time
&lt;/h3&gt;

&lt;p&gt;I'll be honest: &lt;strong&gt;Grass Dawg can't get your screen time to zero.&lt;/strong&gt; The whole app is built around you and your dog, and that relationship lives on your phone.&lt;/p&gt;

&lt;p&gt;What it does is &lt;strong&gt;keep the screen part short&lt;/strong&gt;. During a side quest, your dog sulks with its back turned and won't come out until the quest is done. And let's be real: given the choice between staring at a dog that refuses to look at me, or looking at the street and the view, I'm putting my phone away until I find something worth photographing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj35atok46wa6k4slmd96.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj35atok46wa6k4slmd96.png" alt="screen time" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I took Grass Dawg out for a proper test run, and the screen time numbers told the whole story.&lt;/p&gt;

&lt;p&gt;At 9am, I had barely rolled out of bed and my phone already showed 50 minutes of screen time. Half of that was TikTok (I didn't mean that I swear...). Honestly, seeing it laid out like that was a bit depressing.&lt;/p&gt;

&lt;p&gt;Then I headed out with Pickle. By 1pm, my total was only 1 hour and 3 minutes. That means across four hours outside, I spent just 13 minutes on my screen, and most of those were the 10 quick unlocks to check my next quest.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who it's for
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Everyone!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;People who know they should get out more. People who have a free day and no idea what to do with it. Or anyone who just wants a pet and a little sense of progress in their life.&lt;/p&gt;

&lt;p&gt;And here's my favourite part of building it: The app &lt;em&gt;actually kept me outside&lt;/em&gt;, because I had to test whether it worked.&lt;/p&gt;

&lt;p&gt;Honestly, &lt;strong&gt;if it can get a developer in the middle of a build to touch grass, it can get anyone.&lt;/strong&gt;&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%2Fi.pinimg.com%2F400x%2F4f%2Fbf%2F8b%2F4fbf8b8595ac476f4549190b5808ff6f.jpg" 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%2Fi.pinimg.com%2F400x%2F4f%2Fbf%2F8b%2F4fbf8b8595ac476f4549190b5808ff6f.jpg" width="400" alt="Image" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, what do you think?&lt;/p&gt;

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

&lt;p&gt;This app is designed to be a mobile app so open the URL with your phone to have the best experience.&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://grass-dawg.onrender.com/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;grass-dawg.onrender.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;Have a look at my code in here.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/hong-nhung-nguyen" rel="noopener noreferrer"&gt;
        hong-nhung-nguyen
      &lt;/a&gt; / &lt;a href="https://github.com/hong-nhung-nguyen/grass-dawg" rel="noopener noreferrer"&gt;
        grass-dawg
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Fetch Quest&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A virtual pet dog that refuses to come out until you go outside. All AI runs on your phone using open-weight models, so it works offline after the first load and your photos never leave the device.&lt;/p&gt;
&lt;p&gt;Entry for the DEV Hacktoberfest Open-Source AI Challenge, Week 1: Touch Grass.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What works so far (step 1 and 2)&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Home screen with the pet sulking, facing the wall&lt;/li&gt;
&lt;li&gt;Camera snapshot checked by CLIP (Transformers.js) to decide indoor vs outdoor&lt;/li&gt;
&lt;li&gt;Pet wakes up and celebrates when you're outside&lt;/li&gt;
&lt;li&gt;System check panel: WebGPU support, on-device language model download (Gemma 3 1B by default, with Qwen2.5 alternatives), and a test line from the pet&lt;/li&gt;
&lt;li&gt;Pet stats saved between sessions&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run it&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install
npm run dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The dev server prints a Network URL like &lt;code&gt;https://192.168.x.x:5173&lt;/code&gt;. Open that on your phone (same Wi-Fi). It uses a self-signed certificate, so accept the browser warning…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/hong-nhung-nguyen/grass-dawg" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;The idea was simple: &lt;strong&gt;make a walk around the neighbourhood feel like a little adventure, with a dog that actually cares whether you go outside.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The brain behind Pickle is &lt;strong&gt;Gemma 3 1B&lt;/strong&gt;, an open-weight model that runs entirely in the browser through WebLLM. The first launch downloads the model, and after that everything happens on your phone. &lt;strong&gt;When Pickle comes up with a quest for you, it’s generated right there on your device, with no cloud AI call involved&lt;/strong&gt;. I loved that part, because it means your walks and photos stay with you.&lt;/p&gt;

&lt;p&gt;Quests only matter if they happen in the real world, so the rest of the app is about getting you out the door. When you snap a photo for a quest, &lt;strong&gt;CLIP ViT-B/32&lt;/strong&gt; running through &lt;strong&gt;Transformers.js&lt;/strong&gt; checks whether you actually found what Pickle asked for. &lt;strong&gt;No sneaky photos of your bedroom wall&lt;/strong&gt;. To give Pickle somewhere worth sending you, OpenStreetMap and SerpApi pull in interesting spots nearby, like parks, cafés and lookouts you might never have noticed.&lt;/p&gt;

&lt;p&gt;The whole thing is built with React and Vite and ties together on-device AI, your camera and a map of your city. Underneath all the tech, it’s really just one very good boy giving you a reason to get some fresh air.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Grass Dawg only works the way it does because the AI runs on the phone itself. The dog's eyes are CLIP ViT-B/32 running through Transformers.js, and its voice and quest ideas come from Gemma 3 1B running through WebLLM. &lt;strong&gt;Both download once, then run entirely in the browser&lt;/strong&gt;. That one decision shaped everything else about the app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It keeps working where people actually walk.&lt;/strong&gt; Parks, bush tracks, tunnels and the far end of a beach are exactly where signal drops out. With a closed API, every photo check and every dog reaction would be a network request, and the dog would freeze the moment the walk got interesting. Because the models live on the device, tap-to-look, quest photo matching and the dog's lines all keep working with no connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your walks stay yours.&lt;/strong&gt; A walking app that uses the camera builds a detailed picture of someone's life: where they live, when they leave the house, which routes they take, and photos of the streets around them. Sending that to a third-party server for every check was something I didn't want to ask anyone to accept. In Grass Dawg, quest photos are matched on the device, the route and recap are stored locally, and nothing is shared unless the user chooses to share their walk recap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It costs nothing per walk.&lt;/strong&gt; A single active walk can involve dozens of model calls: checking whether you're outside, reacting to what you show the dog, verifying quest photos and writing quest suggestions. With a paid API, the more someone walks, the more the app costs to run, which is the opposite of what an app about getting outside should reward. Running locally, the hundredth walk costs the same as the first: nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I could control and change the model.&lt;/strong&gt; Owning the model meant I could constrain it tightly. Quests are limited to categories CLIP can actually verify, so the language model can't invent a mission the app can't check. It also meant I could swap models freely during development. I started with Qwen2.5 and moved to Gemma 3 1B when it suited the quest writing better, without changing providers, keys or pricing plans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The trade-offs, honestly.&lt;/strong&gt; Running on-device means a large first download, so the app shows a one-time setup screen and works best on Wi-Fi the first time. Phone browser support for WebGPU also varies. And not everything is local: finding Explore destinations uses OpenStreetMap and SerpApi, which need a connection, so the app pre-downloads destination data for the user's city while they're online. The core loop of going outside, showing the dog the world and completing quests runs entirely on open models on the phone.&lt;/p&gt;

&lt;p&gt;On my own test walk, [4 hours outside, 12 minutes of screen time]. That's the point of the whole build: the open models do their work quietly in the pocket, so the walk can be the main event.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I found out about DevRelay too late to record my agent session properly. Instead, I worked with my agent to put together a structured summary of the whole development process: every phase, from understanding the challenge and shaping the idea to the final build, along with the key decisions made along the way.&lt;/p&gt;

&lt;p&gt;It isn't a verbatim transcript of my prompts and messages, but it should give you a clear picture of how Grass Dawg came together.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Grass Dawg development session"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"session-summary"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"coverage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"From the first request to explain the Touch Grass challenge, through ideation, design, the first code and the fixed dog interactions, then from the later Tap-to-look and outdoor camera work through the project discussion immediately before the first request to push the project to GitHub."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"transcript_note"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"This is a structured summary, not a verbatim transcript. It combines two parts of development: the early ideation and setup conversation, and the later build session. The full turn-by-turn transcript was not available for export, so missing replies have not been reconstructed."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"project"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Grass Dawg, a mobile-first dog companion app that encourages outdoor walks with quests."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timeline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Understanding the challenge"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Reviewed the DEV Hacktoberfest Open-Source AI Challenge, Week 1: Touch Grass, including the requirement that open-source AI must be what makes the project work."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Identified the key judging hint: the screen should be the shortest part of the experience, with bonus points for testing the build outside."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Clarified the difference between open AI (open-weight models and open-source frameworks that can be downloaded and run locally) and closed AI (models only reachable through a provider's API)."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Listed the open advantages to highlight in the post: offline use, on-device privacy, zero cost per use, and the freedom to swap, constrain or fine-tune models."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Choosing the idea"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Started from the user's idea of a virtual pet that must be walked outside."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Identified the main weakness: a step-counter pet does not need AI, so the open model had to become essential to the experience."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Compared alternatives (a Side Quest app and an offline coastal explorer) and ruled out edible plant identification for safety reasons."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"The user proposed combining the pet with side quests: the pet gets people outside, and quests reduce screen time."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Replaced the planned coin shop with rewards tied to what was found, since browsing a shop would add screen time."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Refining the concept"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Defined the core mechanic: the pet sulks facing the wall until the user goes outside, then comes alive."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"The pet sets a side quest and hides until it is completed, turning reduced screen time into part of the game rather than a rule."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Target users: people exploring their city on a free day."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Replaced continuous real-time camera analysis with tap-to-look snapshots to save battery and keep screen time short."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Planned outdoor detection with a CLIP indoor/outdoor check, with GPS distance from home as an optional second signal."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Added a growing pet diary with daily entries written by the local language model, plus pet stats."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Design document"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Wrote a design document covering the overview, core loop diagram, game mechanics, interaction table, architecture diagram, why open innovation matters, scope and risks, a 7-day build plan, a field test plan, a coding agent starter prompt and a submission checklist."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Planned the field test headline metric: total time outside compared with total screen-on time."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"UI direction and naming"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Wrote a Stitch AI prompt for six screens: breed selection, indoor sulking home, AR camera view, hidden side quest screen, quest complete and diary."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Kept the art style original rather than copying an existing game's characters."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Noted that Stitch produces static screens, so smooth dog movement must come from the implementation."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Explored app names, using Fetch Quest as the working name during early development."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Tech stack and models"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Chose a browser-based PWA (React and Vite) so judges can open a link and all AI runs on the phone after a one-time download."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Selected CLIP ViT-B/32 through Transformers.js for zero-shot image matching, and a small open-weight language model through WebLLM (initially Qwen2.5 1.5B with a 0.5B fallback) for quests, reactions and diary entries."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Discussed the user's request to use MongoDB: recommended a local-first design (RxDB on top of IndexedDB) with optional MongoDB Atlas sync, so photos and locations never leave the device."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Flagged the roughly 1 GB first download and WebGPU support on phones as the main risks."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Dog movement and 3D assets"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Explained that smooth dog movement comes from animation clips built into a rigged 3D model, played and cross-faded in three.js through React Three Fiber."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Compared sources: the free CC0 Quaternius Animal Pack Vol.2 dog, the Quaternius Farm Animal Pack, a paid 15-breed animated dog pack, and Sketchfab models with varying licenses."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Chose the free Quaternius dog for its CC0 license and small file size, with breed choice handled by recolouring one rigged model."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Noted that Mixamo only animates humanoid characters and that retargeting four-legged animations by hand is too slow for a one-week build."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"First code: outdoor wake-up"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Built the first version: a sulking home screen with an animated placeholder SVG dog, stat bars, and a camera snapshot checked by CLIP for indoor versus outdoor."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Added a System check panel to confirm WebGPU support, download the language model and time a test reply on the phone."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Ran WebLLM in a web worker so animations stay smooth, and served the dev server over HTTPS on the local network so phones allow camera access."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Walked through running the project locally and accepting the self-signed certificate warning."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Fixed dog interactions"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Defined a fixed interaction table: water bowl, fountain or pond, grass, bench, tree, dog, bird, flowers, street art, cafe, statue and bridge, each with an action, stat effect and fallback lines."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Added background labels (roads, cars, footpaths, walls, sky) so CLIP does not force ordinary scenery into an object."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Added a confidence threshold, half rewards for repeated objects, and a limit of three looks per round so the camera does not become the main activity."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Added interactions for a person, chair, table and jumpable shapes (low walls, steps, rocks, logs, crates), supporting several wordings per object."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Mapped each action to an animation clip name, to be updated once the real 3D dog clips were known."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Platform decision"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Discussed building a native mobile app: native would allow real AR ground tracking, better notifications and faster on-device inference."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Decided to stay with the PWA for the submission, because judges can open a link instantly and a native rewrite would not fit the deadline."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Noted Capacitor as a way to wrap the web app later, and a native React Native version with real AR as a post-challenge next step."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Outdoor camera and dog behavior"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Implemented Tap-to-look and indoor/outdoor mode behavior."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"For outdoor mode, keep the dog in the live camera view and let it perform actions for a short interval."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Added dog movement concepts such as running, drinking, sitting, and sunbathing."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Walk modes and quests"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Added relaxed and active walk concepts, with side quests available during active walks and occasional suggestions during relaxed walks."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Created daily item/activity quests and city-bounded Explore quests."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Explore destinations should favor specific, relaxing outdoor places and hikes, with commercial venues minimized."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Quest recommendations should refresh and completed quests should be recorded in history."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Camera, proof, and walk recap"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Quest completion uses a camera photo rather than an uploaded image, with photo matching for validation."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Walk recap tracks elapsed time and route shape, includes photos, and supports sharing/downloading."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Active walk recaps include quest photos and quest totals; the final cover photo is separate from the quest-photo collage."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Route tracking should represent meaningful position changes rather than stationary phone movement."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Dog profile and wellbeing"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Added a dog profile with editable name, happiness, weight, and an outside/home calendar."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Initial weight is 2 kg; the user proposed daily weight changes based on happiness and missed outdoor days, including a find-the-dog mechanic if weight reaches the minimum."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Completed quests automatically mark the day as an outside day."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Removed energy after discussing what happens when it reaches zero; retained happiness."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Offline AI and app behavior"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Discussed running open-weight AI locally in the browser after an initial model download."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Gemma 3 1B is used through WebLLM for local quest assistance; CLIP through Transformers.js is used for image matching."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Discussed offline capability and pre-downloading city destination data, while noting that some integrations need network access."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Camera and development settings"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Added camera switching and zoom controls, including pinch zoom capped at 5x."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Worked through camera access and startup responsiveness issues."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Adjusted indoor/outdoor detection and relaxed-walk quest reminder timing during development."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"phase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hosting discussion"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Discussed deploying the web app on Render and how to open it on a phone."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Troubleshot local network connection and certificate issues."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Discussed that deployment does not automatically preserve browser-local data."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"technologiesMentioned"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"React"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Vite"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Tailwind CSS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"WebLLM"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Qwen2.5 1.5B / 0.5B"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Gemma 3 1B"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Transformers.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"CLIP ViT-B/32"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"three.js / React Three Fiber"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Quaternius Animal Pack Vol.2 (CC0)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"RxDB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"MongoDB Atlas"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Web Speech API"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Stitch AI"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"OpenStreetMap"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"SerpApi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Render"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt; - Uses the open-weight Gemma 3 1B model with WebLLM for on-device quest generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render&lt;/strong&gt; - Deployed on Render, with a static web app and a places API service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SerpApi&lt;/strong&gt; - Uses Google Local results to help rank named places for Explore quests.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I think me and LeetCode are getting along now</title>
      <dc:creator>AI Hater</dc:creator>
      <pubDate>Thu, 08 Oct 2026 10:04:23 +0000</pubDate>
      <link>https://dev.to/aihater/i-think-me-and-leetcode-are-getting-along-now-1938</link>
      <guid>https://dev.to/aihater/i-think-me-and-leetcode-are-getting-along-now-1938</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Yeah I'm still doing LeetCode, and this post will be updated with all new tricks that I know.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What's up everybody&lt;/p&gt;

&lt;p&gt;Have you done any LeetCode this week? If not, I'm hoping that by the end of this post you'll want to jump straight into a problem.&lt;/p&gt;

&lt;p&gt;LeetCode is &lt;strong&gt;infamous&lt;/strong&gt;. Pretty much everyone who starts learning DSA is scared of it, even people who've never touched a data structure or algorithm in their life.&lt;/p&gt;

&lt;p&gt;Same for me.&lt;/p&gt;

&lt;p&gt;I used to have a mentor who was guiding me on how to realistically land a dev job. Before he could even get a word in, I warned him three times:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I have never done any LeetCode or DSA before.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those days were BADDDD. But slowly things changed, from &lt;strong&gt;BADDD&lt;/strong&gt; to &lt;strong&gt;baddd&lt;/strong&gt;, to &lt;strong&gt;bad&lt;/strong&gt;, to "&lt;strong&gt;not great&lt;/strong&gt;," to "&lt;strong&gt;fine&lt;/strong&gt;", to "&lt;strong&gt;oh wait, I think I actually get something now.&lt;/strong&gt;"&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%2Fi.pinimg.com%2F400x%2F15%2F27%2F36%2F15273682d4bb542651c968e00c0dc885.jpg" 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%2Fi.pinimg.com%2F400x%2F15%2F27%2F36%2F15273682d4bb542651c968e00c0dc885.jpg" width="400" alt="Image" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me be straightforward: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;We only start to like something once we know how it works.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What do I mean by that?&lt;/p&gt;

&lt;p&gt;I mean you'll never enjoy LeetCode if you keep solving problems blindly. You open a question, try to figure out what it's asking, then spend minutes (or hours) convincing yourself that if you just keep staring at the screen, the right approach will eventually pop into your head.&lt;/p&gt;

&lt;p&gt;Nope. That's not how it works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LeetCode isn't something you can brute-force with willpower.&lt;/strong&gt; The only way through is taking the time to actually understand it.&lt;/p&gt;

&lt;p&gt;Okay, enough yapping. Welcome to &lt;strong&gt;Finding the Beauty of LeetCode 101&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. LeetCode problems have patterns
&lt;/h2&gt;

&lt;p&gt;I know you already know this, but I'm saying it again because it's the most obvious thing and people still ignore it.&lt;/p&gt;

&lt;p&gt;Once you've solved enough problems, you start noticing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Tons of them are &lt;strong&gt;worded differently&lt;/strong&gt; but share the &lt;strong&gt;same pattern&lt;/strong&gt;, the &lt;strong&gt;same data structure&lt;/strong&gt;, the &lt;strong&gt;same algorithm&lt;/strong&gt;, and &lt;strong&gt;almost the same solution&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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%2Fi.pinimg.com%2F400x%2Fce%2F4e%2F79%2Fce4e798c3f102980c5356c697c461e25.jpg" 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%2Fi.pinimg.com%2F400x%2Fce%2F4e%2F79%2Fce4e798c3f102980c5356c697c461e25.jpg" width="400" alt="Image" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Turns out LeetCode isn't that "creative" after all.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;So how many problems is "enough" before you start recognising patterns?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It depends on you and how consistent you are, but my recommendation is to &lt;strong&gt;follow along with videos where people solve the most iconic, interview-focused questions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/lvO88XxNAzs?start=18773" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/T0u5nwSA0w0?start=37533" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Somewhere around halfway through (these videos are usually hours long), you'll notice something clicking. That's your intuition starting to kick in.&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%2Fi.pinimg.com%2F400x%2F84%2F8b%2F0b%2F848b0b6ac2c82be5e5b8cfb1593e6199.jpg" 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%2Fi.pinimg.com%2F400x%2F84%2F8b%2F0b%2F848b0b6ac2c82be5e5b8cfb1593e6199.jpg" width="399" alt="Image" height="222"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. The Big-O Pattern cheat sheet
&lt;/h2&gt;

&lt;p&gt;This is honestly one of the most impressive things I've ever come across.&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%2Fi.pinimg.com%2F400x%2F53%2F64%2F83%2F5364831dfb973d305347034b45a8dc1c.jpg" 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%2Fi.pinimg.com%2F400x%2F53%2F64%2F83%2F5364831dfb973d305347034b45a8dc1c.jpg" width="399" alt="Absolute Cinema" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Huge shout out to Bitflip&lt;/strong&gt;, who made a cheat sheet that helps you narrow down the pattern in under &lt;strong&gt;ONE&lt;/strong&gt; minute, &lt;strong&gt;just by looking at the input size constraint.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/LAnEeffb5zI" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Just figuring out the minimum time complexity your solution needs already does you a massive favour, because it rules out a bunch of patterns straight away.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is my FAVOURITE trick ngl.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Normalise admitting you can't solve it
&lt;/h2&gt;

&lt;p&gt;That was me a few months ago, sitting there for hours because I was sure my naive brain would crack it eventually.&lt;/p&gt;

&lt;p&gt;Back then, solving four questions in a day felt like a huge win, when realistically, four questions should take two hours max.&lt;/p&gt;

&lt;p&gt;The problem is we &lt;em&gt;think&lt;/em&gt; we'll figure it out, and then the solution turns out to use something we've never even heard of.&lt;/p&gt;

&lt;p&gt;LeetCode is ruthless about failing your solution for all sorts of reasons: time complexity not good enough, hidden edge cases you never thought of, or your code runs but it's not the approach the problem is looking for.&lt;/p&gt;

&lt;p&gt;Knowing all of that just takes experience.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Give it a real go for the first 15 minutes. If you're still stuck, look at hints for another 10 to 15 minutes. After that, read the full solution.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I did this while rushing to prep for an interview, and it worked really well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Just because something kinda makes sense in your head doesn't mean it's actually correct.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Consistency (and a little bit of fun)
&lt;/h2&gt;

&lt;p&gt;Super cliché, I know, but sadly it works every single time.&lt;/p&gt;

&lt;p&gt;Where I used to live, TikTok streaks were so common they were basically a must-have in most relationships.&lt;/p&gt;

&lt;p&gt;If you haven't seen it, it's a little fire icon that counts how many days in a row two people have messaged each other. Both of you have to interact within 24 hours, otherwise it resets to zero.&lt;/p&gt;

&lt;p&gt;That's honestly how a lot of friendships die.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftv0t58nili58419dt7qb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftv0t58nili58419dt7qb.png" alt="Image" width="511" height="900"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LeetCode has the same streak thing, and it might be one of their smartest moves.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp69girewbdh3fix3whg3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp69girewbdh3fix3whg3.png" alt="LeetCode Streak" width="799" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Yes, I definitely do LeetCode everyday if you promise me this after a year&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sometimes people solve problems not because they want to practise, but because they don't want to lose their streak, and that ends up making them practise anyway. Wow.&lt;/p&gt;

&lt;p&gt;So if you can stay consistent for a few days, you'll want to keep that streak going. You'll even go to bed feeling like your day isn't complete if you haven't solved anything. And voilà, LeetCode just got another person hooked. Honestly though, it's a win-win after all.&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%2Fexternal-preview.redd.it%2Fwrong-or-right-v0-y-p48OM6qiCzF8Fypd1K5gslPmAqXGEdP-cKgMzw04k.jpg%3Fauto%3Dwebp%26s%3D17cc2a9c78152f5a500229bd201b16e4e60bc5d1" 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%2Fexternal-preview.redd.it%2Fwrong-or-right-v0-y-p48OM6qiCzF8Fypd1K5gslPmAqXGEdP-cKgMzw04k.jpg%3Fauto%3Dwebp%26s%3D17cc2a9c78152f5a500229bd201b16e4e60bc5d1" width="700" alt="Wrong process correct result" height="875"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Brute force first, optimise later
&lt;/h2&gt;

&lt;p&gt;A lot of people chase the optimal Big-O straight away and forget the most important thing: &lt;strong&gt;getting a solution that actually works, even if it's brute force.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Never forget the #1 rule of developers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If it runs, don't touch it.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yeah, I know, DSA cares about more than that. But a win is a win, and starting with something that works makes the whole problem way less scary.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Go with whatever solution comes to mind first. If it's clearly brute force and you know there's a better way, write the brute force anyway, then work on improving it. Not sure if it can be optimised? Check the input constraints against the Big-O cheat sheet from earlier, or ask your AI agent whether there's a better time complexity. If the answer is yes, keep going.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before you can optimise anything, you've got to make it work first.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Keep an error log
&lt;/h2&gt;

&lt;p&gt;You'd be surprised how much longer you remember things when you write them down.&lt;/p&gt;

&lt;p&gt;Maybe not forever, but &lt;strong&gt;definitely longer than just assuming you'll remember.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I keep an error log for every question I solve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What pattern was it?&lt;/li&gt;
&lt;li&gt;How long did it take me before I gave up?&lt;/li&gt;
&lt;li&gt;Where did I get stuck?&lt;/li&gt;
&lt;li&gt;What did I assume?&lt;/li&gt;
&lt;li&gt;What was wrong, and what was right?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I look back at it, the memory of struggling through each problem comes flooding back. I might not remember the exact solution, but I remember my process and which approach made more sense. That's a great starting point.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Re-solve old problems
&lt;/h2&gt;

&lt;p&gt;I don't think this one needs much explaining, so I'll keep it short and leave the rest to your own self-reflection.&lt;/p&gt;

&lt;p&gt;Ask yourself this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Wouldn't it feel annoying and unsettling to keep grinding new questions while secretly wondering if you could still solve the old ones?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It would for me. So I re-solve them.&lt;/p&gt;

&lt;p&gt;Honestly, &lt;strong&gt;if you can't re-solve a question, it doesn't count.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Read the discussion
&lt;/h2&gt;

&lt;p&gt;I bet a lot of people care so much about getting the green "Accepted" that they skip the process completely. But the process matters way more than you'd think.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reading the discussion shows you how other people actually came up with their approaches&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What sparked the idea in their head?&lt;/li&gt;
&lt;li&gt;Which detail put them on the right track?&lt;/li&gt;
&lt;li&gt;Any personal tips or tricks?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A lot of these people will never be YouTubers, but they've got the kind of experience and tips you'd happily click on a video to watch.&lt;/p&gt;

&lt;p&gt;Plus, people complain in the discussion too. Sometimes I go there just for a bit of emotional support...&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%2Fi.pinimg.com%2F400x%2Fb2%2Fe9%2Fb1%2Fb2e9b17dc6341924409a3358dddac90c.jpg" 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%2Fi.pinimg.com%2F400x%2Fb2%2Fe9%2Fb1%2Fb2e9b17dc6341924409a3358dddac90c.jpg" width="399" alt="Image" height="250"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Never leave a question half-understood
&lt;/h2&gt;

&lt;p&gt;Say you couldn't solve a problem, so you check the solution. You copy it into your notes, and it &lt;em&gt;kinda&lt;/em&gt; makes sense. But you don't really get why recursion is called here and not there, or why it's even needed at all.&lt;/p&gt;

&lt;p&gt;Don't. Leave. It.&lt;/p&gt;

&lt;p&gt;Stick with it. &lt;strong&gt;Dry run it until you understand it inside out&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Otherwise, next time you come back, not only will you have forgotten how to solve it, you'll also have no clue why the solution was written that way.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; It's fine to forget the exact code, but never forget the core logic behind it. &lt;strong&gt;Something you've already studied should never feel like a blank sheet of paper again&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This one is important (and dangerous if you ignore it), so let me say it one more time:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never leave a question half-understood!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Anyways...
&lt;/h2&gt;

&lt;p&gt;This is just my journey. Yours might look different, but suggestions cost nothing, so if any of this sounds like it could work for you, open LeetCode right now and give it a shot.&lt;/p&gt;

&lt;p&gt;Don't feel discouraged if you don't pass on your first few tries.&lt;/p&gt;

&lt;p&gt;To be fair, &lt;strong&gt;it's nearly impossible to master something after a handful of attempts when other people have been grinding it for months or even years.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LeetCode is there to help you, not something to fear and avoid at all costs&lt;/strong&gt;. If you're a developer, questions like these are going to show up sooner or later anyway.&lt;/p&gt;

&lt;p&gt;So why wait until you're rushing for an interview? Start today.&lt;/p&gt;

&lt;p&gt;Pick a LeetCode interview questions video, follow along, and slowly turn it into a habit. Trust me, one day you'll look back and realise you and LeetCode are getting along too.&lt;/p&gt;

&lt;p&gt;You won't regret it!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>leetcode</category>
      <category>productivity</category>
      <category>dsa</category>
    </item>
    <item>
      <title>TikTok Backend Intern Interview</title>
      <dc:creator>AI Hater</dc:creator>
      <pubDate>Tue, 06 Oct 2026 05:59:30 +0000</pubDate>
      <link>https://dev.to/aihater/tiktok-backend-intern-interview-4em8</link>
      <guid>https://dev.to/aihater/tiktok-backend-intern-interview-4em8</guid>
      <description>&lt;p&gt;Hey guys, how's your internship season going?&lt;/p&gt;

&lt;p&gt;Mine? Not too promising. But I still have something to tell.&lt;/p&gt;

&lt;p&gt;This year, I got my first internship interview ever, and honestly, I didn't expect it to come from a company as big as TikTok.&lt;/p&gt;

&lt;p&gt;I sent out quite a few applications and only got two replies. One of them I don't really count, but the other one was TikTok.&lt;/p&gt;

&lt;p&gt;I didn't get the offer in the end, but I thought I'd share my experience anyway. Hopefully, it can help someone who's currently going through the TikTok interview process - or at least someone who's interested in applying.&lt;/p&gt;

&lt;p&gt;I had two interviews with TikTok, both for a Backend Developer Intern role. One was for the LIVE team, and the other was with Data Trust &amp;amp; Safety, although both interviews had a strong focus on LIVE.&lt;/p&gt;




&lt;h2&gt;
  
  
  Some Q&amp;amp;As
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Did LeetCode actually help?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. Absolutely. Totally. 100%.&lt;/p&gt;

&lt;p&gt;From my experience, TikTok's coding questions are quite similar to the usual LeetCode format. This is slightly different from some other companies, where the coding question might be modified to fit the team's specific work, which can sometimes make the problem harder to recognise, especially for the young candidates.&lt;/p&gt;

&lt;p&gt;TikTok's coding questions can range from medium-hard to hard. However, I only got one coding question across my two interviews, and it was around medium difficulty.&lt;/p&gt;

&lt;p&gt;I actually got the general approach pretty quickly after reading the problem. However, the problem itself wasn't clear enough that I only realized when I missed an edge case. I had to clarify it with the interviewer, and unfortunately, I didn't have enough time left to fix everything.&lt;/p&gt;

&lt;p&gt;My personal tip: If your interview is only a week away, &lt;strong&gt;use your AI agent to generate coding questions based on the job description.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not just for TikTok, but for pretty much any company.&lt;/p&gt;

&lt;p&gt;Companies often choose problems that are somewhat related to the type of work their team is doing. So instead of randomly grinding hundreds of LeetCode questions, you can use the JD to narrow down what you should practise.&lt;/p&gt;

&lt;p&gt;I tried this myself, and it actually worked pretty well.&lt;/p&gt;

&lt;p&gt;Of course, I can't guarantee that you'll get the exact same type of question. But if you only have one week to prepare, I think it's a pretty useful shortcut.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. What was the interview structure?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The email said it would be a technical interview with an opportunity to explain your work.&lt;/p&gt;

&lt;p&gt;So naturally, I thought: "Okay, probably just some coding."&lt;/p&gt;

&lt;p&gt;NOPE!!!&lt;/p&gt;

&lt;p&gt;TikTok is really the trendsetter of &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Don't let anyone guess your next move."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The first interview
&lt;/h3&gt;

&lt;p&gt;My first interview covered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Project deep dive&lt;/li&gt;
&lt;li&gt;CS fundamentals&lt;/li&gt;
&lt;li&gt;Behavioural questions&lt;/li&gt;
&lt;li&gt;System design&lt;/li&gt;
&lt;li&gt;Coding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And all of that happened within 55 minutes, with the last five minutes reserved for my questions.&lt;/p&gt;

&lt;p&gt;Now you can probably understand why I didn't have enough time to fix my last coding edge case 💀&lt;/p&gt;

&lt;p&gt;Everything moved incredibly fast.&lt;/p&gt;

&lt;p&gt;The positive side? I barely had time to feel nervous.&lt;/p&gt;

&lt;h3&gt;
  
  
  The second interview
&lt;/h3&gt;

&lt;p&gt;The second interview was quite different.&lt;/p&gt;

&lt;p&gt;It was only around 35 minutes, and there was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Project deep dive&lt;/li&gt;
&lt;li&gt;CS fundamentals&lt;/li&gt;
&lt;li&gt;A little system design connected to my project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There was no coding question.&lt;/p&gt;

&lt;p&gt;Honestly, I enjoyed the second interview much more.&lt;/p&gt;

&lt;p&gt;It felt more like a proper technical conversation where the interviewer was trying to understand how deeply I actually understood what I had built, rather than checking whether I could answer a bunch of different questions in a short amount of time.&lt;/p&gt;

&lt;p&gt;And yes, the project discussion was VERY deep.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3. Does TikTok prioritise Chinese speakers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Honestly, I have no idea.&lt;/p&gt;

&lt;p&gt;What I do know is that after reading hundreds of TikTok interview reviews, I noticed that the interviewers were very often Chinese.&lt;/p&gt;

&lt;p&gt;In my second interview, one of the first questions I was asked when the interviewer joined the call was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Mandarin or English?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That honestly confused me a little.&lt;/p&gt;

&lt;p&gt;I don't speak Chinese, but the interviewer's English was very good, and we still had a really good technical discussion. Personally, I don't think not speaking Chinese had anything to do with my rejection.&lt;/p&gt;

&lt;p&gt;I've also seen people mention having communication difficulties with some TikTok interviewers. But realistically, that's not something we can control.&lt;/p&gt;

&lt;p&gt;Just focus on what you &lt;em&gt;can&lt;/em&gt; control: your technical knowledge, your projects, your communication, and your preparation.&lt;/p&gt;




&lt;h2&gt;
  
  
  My personal thoughts and experience with TikTok's Backend Interview
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Practise LeetCode — seriously.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is basically non-negotiable.&lt;/p&gt;

&lt;p&gt;But don't just practise randomly. &lt;strong&gt;Practise with a timer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For my first interview, I had roughly 15 minutes from reading the problem, understanding it, discussing the approach, building test cases, and submitting the solution.&lt;/p&gt;

&lt;p&gt;That's not a lot of time.&lt;/p&gt;

&lt;p&gt;So when you practise, don't just ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can I solve this problem?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can I solve and explain this problem under interview pressure?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There's a big difference.&lt;/p&gt;

&lt;p&gt;Also, if you interview for a developer role, I would recommend you to &lt;strong&gt;discuss the performance scaling and system design with your agent after each question&lt;/strong&gt;. We all know interviewers love to make things difficult for the candidates. And besides, you will learn so many, trust me. &lt;/p&gt;

&lt;p&gt;And if you don't have much time before the interview, I'd rather practise 10 relevant problems properly than blindly grind 100 random ones.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. Know your projects inside out&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one is probably even more important than I expected.&lt;/p&gt;

&lt;p&gt;If you put a project on your resume, be prepared to defend every single thing you wrote about it.&lt;/p&gt;

&lt;p&gt;And I don't just mean:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What technologies did you use?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You should also be ready for questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why did you choose this architecture?&lt;/li&gt;
&lt;li&gt;What happens when multiple requests arrive at the same time?&lt;/li&gt;
&lt;li&gt;How does your system handle concurrency?&lt;/li&gt;
&lt;li&gt;What happens when the traffic increases?&lt;/li&gt;
&lt;li&gt;Where could the bottleneck be?&lt;/li&gt;
&lt;li&gt;How would you scale it?&lt;/li&gt;
&lt;li&gt;What happens if a service fails?&lt;/li&gt;
&lt;li&gt;How much load can your system handle?&lt;/li&gt;
&lt;li&gt;What would you change if you had to deploy this in production?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically, if you built it, understand why it works—not just how to make it work.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3. Don't underestimate your university subjects&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I definitely did.&lt;/p&gt;

&lt;p&gt;The CS fundamentals questions actually came from things I had studied at university.&lt;/p&gt;

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

&lt;p&gt;I remember being asked something that I had literally studied two or three months before the interview.&lt;/p&gt;

&lt;p&gt;And somehow, when the interviewer asked me about it, my brain decided:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Sorry, this information is no longer available."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So yeah.&lt;/p&gt;

&lt;p&gt;Don't completely ignore your uni subjects just because they don't feel immediately useful.&lt;/p&gt;

&lt;p&gt;Data structures, algorithms, operating systems, databases, networking, AI, etc. can absolutely come back during an interview.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4. There are (at least) two types of interviewers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is obviously just my personal observation, but I felt like I experienced two very different interviewer styles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type 1: The prepared interviewer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They have a list of questions prepared beforehand and work through them.&lt;/p&gt;

&lt;p&gt;If you get this type of interviewer, you might be slightly luckier because they tend to stick to their questions and don't necessarily go too far into follow-ups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type 2: The senior engineer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one is &lt;em&gt;scary&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;They don't even need to look at the questions.&lt;/p&gt;

&lt;p&gt;You introduce yourself.&lt;/p&gt;

&lt;p&gt;You talk about your project.&lt;/p&gt;

&lt;p&gt;And then they start asking questions based on literally everything you just said.&lt;/p&gt;

&lt;p&gt;Your own words then become your death certificate.&lt;/p&gt;

&lt;p&gt;So my advice is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't lie. Don't exaggerate.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you say you "designed the architecture", be prepared to explain the architecture.&lt;/p&gt;

&lt;p&gt;If you say you "implemented a scalable backend", be prepared to explain why it's scalable.&lt;/p&gt;

&lt;p&gt;If you say you "handled concurrency", be prepared to explain exactly how.&lt;/p&gt;

&lt;p&gt;At the same time, &lt;strong&gt;don't undersell yourself either&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You should be confident about what you genuinely know. Yes, your interviewers are probably very good at what they do, and that can be intimidating. But confidence goes both ways, human instinct will let the interviewer naturally perceive you as someone who knows what they're talking about. &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;5. Write down your interview reflections&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is something I wish I'd started doing earlier.&lt;/p&gt;

&lt;p&gt;After an interview, write down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What questions were asked?&lt;/li&gt;
&lt;li&gt;What did I answer well?&lt;/li&gt;
&lt;li&gt;Where did I get stuck?&lt;/li&gt;
&lt;li&gt;What did I forget?&lt;/li&gt;
&lt;li&gt;What would I answer differently next time?&lt;/li&gt;
&lt;li&gt;What technical topics do I need to review?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You'd be surprised how much you can improve just by recalling the interview while it's still fresh.&lt;/p&gt;

&lt;p&gt;And if you're not particularly good at self-reflection or don't know how to organise it, just write down your raw thoughts and ask your AI agent to turn them into a reflection for a better upcoming interview.&lt;/p&gt;

&lt;p&gt;I did this after my first interview.&lt;/p&gt;

&lt;p&gt;Looking back, my first interview was honestly kind of a mess.&lt;/p&gt;

&lt;p&gt;But my second one was way more organised, partly because I had already reflected on what went wrong the first time.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;6. Read the interview reviews&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Have a look at &lt;strong&gt;Glassdoor&lt;/strong&gt; before your interview.&lt;/p&gt;

&lt;p&gt;There are thousands of interview reviews there, and while you obviously shouldn't assume you'll get exactly the same questions, they can give you a pretty good idea of what the process looks like.&lt;/p&gt;

&lt;p&gt;What I shared here is just one person's experience.&lt;/p&gt;

&lt;p&gt;Your interview could be completely different.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Do mock interviews and practice your speaking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yeah, again - if you don't have anyone to practise with, you can just do it with your AI agent.&lt;/p&gt;

&lt;p&gt;Prompt it carefully, make it behave like a real interviewer, and be strict with the timing, especially for the coding section. Don't give yourself 30 minutes to solve a problem when you know you'll only get 15 minutes in the actual interview.&lt;/p&gt;

&lt;p&gt;If you want to see the prompt I used (which was actually pretty useful), comment below and I'll send it to you.&lt;/p&gt;

&lt;p&gt;Now, about speaking skills.&lt;/p&gt;

&lt;p&gt;I would strongly recommend preparing stories around your projects so that whenever a project-related question comes up, you already know what you want to talk about.&lt;/p&gt;

&lt;p&gt;The project discussion shouldn't be something completely unexpected. You know your own projects, you know what's on your resume, and you should be prepared to explain them. If you can't talk about your own work smoothly, there's a pretty high chance the interviewer will think you're not ready for the interview.&lt;/p&gt;

&lt;p&gt;And... that's not good, you know that right? :(&lt;/p&gt;

&lt;p&gt;Also, don't just read, write, and convince yourself that you know everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speak. Out. Loud.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You'll quickly realise that what you think you understand in your head isn't always what comes out when you actually have to explain it.&lt;/p&gt;

&lt;p&gt;You want to be able to answer questions clearly, simply, and as concisely as possible. And honestly, that takes practice.&lt;/p&gt;

&lt;p&gt;One more thing: &lt;strong&gt;you can't really fake what you don't know when you're speaking.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you start explaining something out loud, the gaps in your knowledge become much more obvious. You'll notice where you hesitate, where your explanation gets messy, and where you actually don't understand something as well as you thought you did.&lt;/p&gt;

&lt;p&gt;And that's exactly why speaking practice is so useful.&lt;/p&gt;

&lt;p&gt;You find the weaknesses before the interviewer does.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Honestly, I wasn't particularly surprised or sad when I got rejected.&lt;/p&gt;

&lt;p&gt;I knew I hadn't prepared enough.&lt;/p&gt;

&lt;p&gt;And that's probably the biggest thing I took away from this experience.&lt;/p&gt;

&lt;p&gt;Getting rejected after my first-ever internship interview with a company like TikTok isn't really a bad result in my eyes. I got to experience what a real technical interview feels like, I know what I need to improve, and my second interview was already much better than my first.&lt;/p&gt;

&lt;p&gt;Also, TikTok seems to be opening quite a lot of internship positions right now, so give it a shot.&lt;/p&gt;

&lt;p&gt;You might think you're not ready.&lt;/p&gt;

&lt;p&gt;Apply anyway.&lt;/p&gt;

&lt;p&gt;You never know.&lt;/p&gt;

&lt;p&gt;Anyway, that's it from me.&lt;/p&gt;

&lt;p&gt;Good luck y'all! &lt;/p&gt;

</description>
      <category>backend</category>
      <category>career</category>
      <category>interview</category>
    </item>
  </channel>
</rss>
