<?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: Malik P</title>
    <description>The latest articles on DEV Community by Malik P (@zaynudin).</description>
    <link>https://dev.to/zaynudin</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%2F4159094%2F95e02273-495f-43fc-a095-2ad8e84c6082.jpg</url>
      <title>DEV Community: Malik P</title>
      <link>https://dev.to/zaynudin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zaynudin"/>
    <language>en</language>
    <item>
      <title>"Boleh Gak, Pa?" — I built my dad a food buddy for the 3 seconds after a friend hands him ketoprak</title>
      <dc:creator>Malik P</dc:creator>
      <pubDate>Mon, 05 Oct 2026 06:38:26 +0000</pubDate>
      <link>https://dev.to/zaynudin/boleh-gak-pa-i-built-my-dad-a-food-buddy-for-the-3-seconds-after-a-friend-hands-him-ketoprak-1068</link>
      <guid>https://dev.to/zaynudin/boleh-gak-pa-i-built-my-dad-a-food-buddy-for-the-3-seconds-after-a-friend-hands-him-ketoprak-1068</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;My dad is 58 and has gout and high blood pressure. He knows the rules, more or less. Less jeroan (offal), no emping, go easy on salt.&lt;/p&gt;

&lt;p&gt;The rules aren't the hard part. The moment is.&lt;/p&gt;

&lt;p&gt;A friend buys a round of ketoprak, a Jakarta street dish of rice cake, tofu, and noodles drowned in peanut sauce and sweet soy, and puts a plate in front of him. In Indonesia, refusing food someone bought for you feels rude. So Papa has about three seconds to decide: Can I eat this? How much? How do I say no without offending him? And if I eat it anyway, what happens?&lt;/p&gt;

&lt;p&gt;Usually he just eats it. Then, a day or two later, his joints tell him how it went. Nobody wrote anything down, so nobody ever sees the pattern.&lt;/p&gt;

&lt;p&gt;So I built Boleh Gak, Pa? ("Is this okay, Dad?"), a PWA he opens on his phone in that exact moment:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Snap a photo or type the dish, even sloppily: "indomi ketoprak" is understood as instant noodles plus ketoprak.&lt;/li&gt;
&lt;li&gt;One screen answers everything:&lt;/li&gt;
&lt;li&gt;🚦 a traffic light for gout and blood pressure&lt;/li&gt;
&lt;li&gt;🍽️ a concrete safe portion ("half a plate, peanut sauce on the side")&lt;/li&gt;
&lt;li&gt;💡 things he can do right there at the warung&lt;/li&gt;
&lt;li&gt;🙏 three polite ways to say no, with a 🔊 button that reads them aloud&lt;/li&gt;
&lt;li&gt;⚠️ an honest "what if I eat the whole plate?&lt;/li&gt;
&lt;li&gt;One tap to log it: ate as advised / ate it all / managed to refuse 💪&lt;/li&gt;
&lt;li&gt;When a flare hits, he logs the joint, the pain level, and whether he has a fever. The app shows "about 3–4 days left", estimated from his own past flares, and tells him when to stop waiting and see a doctor.&lt;/li&gt;
&lt;li&gt;Weekly review: how many risky meals, how much salt, and which foods showed up in the 48 hours before each flare.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The plot twist: it wasn't the peanuts
&lt;/h2&gt;

&lt;p&gt;I started this thinking ketoprak was a gout problem. Peanuts, tofu, purine, right?&lt;/p&gt;

&lt;p&gt;When I put the food table together, the real issue was obvious: salt. Peanut sauce, sweet soy, and crackers make it a blood pressure problem far more than a gout one. Tofu's purines are plant-based, which the research generally finds much less risky than meat and offal.&lt;/p&gt;

&lt;p&gt;So the app judges every dish on two axes, purine and salt, because Papa has two conditions and the dish that is fine for one can be bad for the other.&lt;/p&gt;

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

&lt;p&gt;Screenshots from Papa's phone. The app runs on my laptop, so there's no public link: his health data stays at home.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check: "indomie ketoprak" is read as two dishes, and two high-salt dishes in one meal means red.&lt;/li&gt;
&lt;/ol&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%2Fuyyc64bzvcx6zd5wft7t.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%2Fuyyc64bzvcx6zd5wft7t.png" alt=" " width="606" height="911"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Polite refusals he can read out loud with one tap.&lt;/li&gt;
&lt;/ol&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%2Fxjdfnekg091ncctdjwhi.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%2Fxjdfnekg091ncctdjwhi.png" alt=" " width="605" height="910"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Food list: 271 entries, each rated for purine and salt.&lt;/li&gt;
&lt;/ol&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%2F78kc10dhvvmewzooedba.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%2F78kc10dhvvmewzooedba.png" alt=" " width="604" height="907"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Meal log: daily salt meter, a 7-day table, and his most frequent foods.&lt;/li&gt;
&lt;/ol&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%2Fej5cqwxenb3mfyyikf7l.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%2Fej5cqwxenb3mfyyikf7l.png" alt=" " width="604" height="909"&gt;&lt;/a&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fniruxbpqc6fiyy6u4sd5.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%2Fniruxbpqc6fiyy6u4sd5.png" alt=" " width="606" height="912"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Flare log: a pain scale with faces, a recovery estimate, and when to see a doctor.&lt;/li&gt;
&lt;/ol&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%2Fn2m3xyc80ko66nap7a5x.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%2Fn2m3xyc80ko66nap7a5x.png" alt=" " width="605" height="910"&gt;&lt;/a&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fioob9rdt0ru8f1x7hmtg.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%2Fioob9rdt0ru8f1x7hmtg.png" alt=" " width="605" height="912"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Photo check: what Gemma saw, plus one-tap alternatives when it's unsure.&lt;/li&gt;
&lt;/ol&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%2Ffw8byjip6s1iulz0ctq4.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%2Ffw8byjip6s1iulz0ctq4.png" alt=" " width="758" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Handing it over&lt;br&gt;
I sent Papa the link on WhatsApp and he added it to his home screen. The first thing he logged was nasi padang rendang, and he tapped "ate as advised".&lt;/p&gt;

&lt;p&gt;His verdict was honest, and that's why I'm sharing it as is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👍 He found it genuinely interesting and informative. What he liked most was seeing the purine and salt levels for the food he actually eats. Up to now, "watch your diet" had only ever been a vague instruction.&lt;/li&gt;
&lt;li&gt;👎 The AI isn't accurate enough yet, especially with photos. He's right. The photo recognition has misread ketoprak and candy (see above). Typing the dish works much better than photographing it.&lt;/li&gt;
&lt;li&gt;He didn't ask for anything else (yet). I'm counting "no complaints except the part I already know is weak" as a win.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That feedback is exactly why the app never lets the model decide the traffic light on its own, and why every photo guess comes with one-tap alternatives and a text box.&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/malikp66" rel="noopener noreferrer"&gt;
        malikp66
      &lt;/a&gt; / &lt;a href="https://github.com/malikp66/boleh-gak-pa" rel="noopener noreferrer"&gt;
        boleh-gak-pa
      &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;Boleh Gak, Pa? 🍽️&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;"Is this okay, Dad?"&lt;/em&gt;: a pocket food buddy for my dad, who has &lt;strong&gt;gout and high blood pressure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A friend hands him a plate of &lt;em&gt;ketoprak&lt;/em&gt;. He doesn't want to be rude, he doesn't know how much is safe, and nobody tracks what happens next. This PWA answers in one screen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚦 &lt;strong&gt;Traffic light&lt;/strong&gt;: decided by a curated table of Indonesian street food (purine + salt), not by the model&lt;/li&gt;
&lt;li&gt;🍽️ &lt;strong&gt;Safe portion&lt;/strong&gt; and on-the-spot tricks ("ask for the peanut sauce on the side")&lt;/li&gt;
&lt;li&gt;🙏 &lt;strong&gt;Polite ways to say no&lt;/strong&gt; that he can read out loud or copy (one in Sundanese)&lt;/li&gt;
&lt;li&gt;
⚠️ &lt;strong&gt;What happens if he eats it all anyway&lt;/strong&gt;: honest, not scary&lt;/li&gt;
&lt;li&gt;➕ &lt;strong&gt;Family food list&lt;/strong&gt;: add a dish (e.g. &lt;em&gt;nasi tutug oncom&lt;/em&gt;) with its ingredients, Gemma proposes purine/salt/portion calibrated against similar rows in the table, a human…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/malikp66/boleh-gak-pa" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;a href="https://github.com/malikp66/boleh-gak-pa" rel="noopener noreferrer"&gt;&lt;/a&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Open-source AI at the core: Gemma 3 running locally through Ollama, a stdlib-only Python server (no pip install), SQLite, and a vanilla-JS PWA.&lt;/p&gt;

&lt;p&gt;photo ──► Gemma 3 4B (vision) ──► "ketoprak?" ──► Papa confirms&lt;br&gt;
                                                   │&lt;br&gt;
foods.json (purine, salt, tricks) ──► rule ──► 🟡 traffic light (source of truth)&lt;br&gt;
                                                   │&lt;br&gt;
profile + table row + active flare + today's meals ─► Gemma ─► JSON&lt;/p&gt;

&lt;p&gt;A few decisions I'm proud of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The table decides, the model writes. I didn't want a 4B model deciding whether my father eats something. The traffic light comes from foods.json, a hand-made table of 271 dishes, drinks, fruits and vegetables (823 local names, from ketoprak and coto makassar to pizza, ramen, salak and jengkol) rated for purine and salt, with practical tricks for each one. Gemma's job is to turn that row into short, warm Bahasa Indonesia that my dad can read in three seconds, and to write refusals that sound like a person rather than a pamphlet. If Gemma and the table disagree, the table wins.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Structured output keeps a small model honest. Every call uses Ollama's JSON-schema format, so the UI always gets headline, portion, tips, refusals, if_forced, and why. There is no parsing of free text.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Context makes the advice personal. The prompt includes Papa's profile, whether a flare is active (the rules get stricter), and what he has already eaten today. A second salty meal gets called out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Recovery estimates that admit what they don't know. With no history, the app shows the general 3–10 day range for a gout flare. As Papa logs flares, it switches to the median of his durations. Red flags (more than 7 days, pain of 8+/10, fever, getting worse) always say "see a doctor". It never suggests medication.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't trust the label, check the ingredients. My first real photo test was a plate of ketoprak, and Gemma 4B confidently called it soto ayam (a chicken soup). The part I found interesting: its description of the plate was right (fried tofu, rice vermicelli, bean sprouts, crackers, no broth). Only the label was wrong. So photo recognition now works in two steps. Gemma first lists the visible components and whether the dish is in broth, then picks a name. The server checks that name against a small table of visual traits for dishes that often get confused. "Soto" with no broth and a pile of tofu and bean sprouts gets corrected to ketoprak, and Papa sees the alternatives as one-tap chips: ketoprak / gado-gado / pecel.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The second photo failure was funnier. I photographed a bag of Chupa Chups gummy candy and the app said "chicken steak". Gemma had actually seen "Chupa Chups Bites", but I had forced it to pick a name from my list, and candy wasn't on it, so it picked something at random. The fix: Gemma writes what it sees in its own words first (brand names included), the server matches that against the table, and Gemma is allowed to answer "something else". Now it says candy 🟢, "1–2 pieces only".&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;People don't eat one dish at a time, and they don't spell carefully. My first test sentence was "indomi ketoprak" (a typo, and two dishes). The first version matched only ketoprak and gave a yellow light. Now the matcher finds every dish in the sentence, fixes everyday spellings (telor → telur, indomi → indomie), and judges the combination: two high-salt dishes in one meal turn the light red, labeled "double salt". For a dad with high blood pressure, that's the most important rule in the app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A food list that grows with the family. 271 entries is a lot, but it's never our kitchen. So anyone can add a dish with its ingredients, for example nasi tutug oncom from West Java. Gemma proposes purine and salt levels, a safe portion, and tips, calibrated against the most similar rows in the table. Then a human checks it and saves it. In my first test, Gemma flagged the salted fish correctly but also invented a "peanut sambal" that wasn't in the ingredients. That's exactly why the human review step exists.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It degrades gracefully. If Ollama isn't running, the app still answers from the table alone and says so in the header.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;**Because this is my family's health data. **Papa's flares, his meals, the days he gave in: none of it needs to sit on a server I don't control. Everything here, the model, the logs, and the photos, stays on a laptop at home.&lt;/p&gt;

&lt;p&gt;**Because I could choose the model size to fit my life. **This really happened during the weekend: my internet was pulling the 3.3 GB Gemma 4B model at about 500 KB/s. With an open-weight model, I didn't have to wait or pay. I pulled Gemma 3 1B (815 MB) first, had the text features working within minutes, and the server switched to 4B with photo recognition automatically once it finished downloading. With a closed API, "your internet is slow" isn't something you can work around.&lt;/p&gt;

&lt;p&gt;**Because it costs nothing to run. **No subscription for a retired dad. No API bill if he checks every snack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Because I can make it ours.&lt;/strong&gt; The food table is a JSON file anyone can fix. The profile is a JSON file you can change for your own mom or uncle. Next I want to fine-tune a small Gemma on Indonesian street-food photos, which is something you simply can't do with a closed model.&lt;/p&gt;
&lt;h2&gt;
  
  
  What's next: one plate, one family
&lt;/h2&gt;

&lt;p&gt;My family is basically a cardiology waiting room. My uncle (om) has had stroke symptoms, my grandmother (omah) and my uwa (a parent's older sibling) have diabetes, and my mom has low blood pressure. The same plate of ketoprak should get four different answers: half a plate for Papa, less rice cake for Omah, a green light for Mom, and a "SeGeRa Ke RS" stroke-warning button for my uncle.&lt;/p&gt;

&lt;p&gt;And for Papa's photo complaint: the honest fix is fine-tuning a small Gemma on a few hundred photos of Indonesian street food. That's only possible because the weights are open. The profile system is ready for it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Gemma 3 by Google DeepMind (open weights): 4B for vision and text, 1B as the lightweight fallback&lt;/li&gt;
&lt;li&gt;Ollama (MIT) for local inference and JSON-schema structured output&lt;/li&gt;
&lt;li&gt;Fonts: Archivo Black and Space Grotesk (SIL Open Font License)&lt;/li&gt;
&lt;li&gt;Everything else (the Python server, PWA, food table, and rules) was written for this challenge, with help from an AI coding agent (Claude Code)&lt;/li&gt;
&lt;li&gt;The food table summarizes common low-purine and low-salt guidance. It is not lab data and not medical advice.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma: Gemma 3 4B (vision + text) and 1B run locally via Ollama with structured JSON output, grounded on a local food table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚕️ Not medical advice. Boleh Gak, Pa? is a helper for a family, not a doctor. The food table summarizes common low-purine / low-salt guidance.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>My First Hacktoberfest: A Developer's Journey Into Open Source</title>
      <dc:creator>Malik P</dc:creator>
      <pubDate>Sat, 03 Oct 2026 06:47:18 +0000</pubDate>
      <link>https://dev.to/zaynudin/my-first-hacktoberfest-a-developers-journey-into-open-source-97c</link>
      <guid>https://dev.to/zaynudin/my-first-hacktoberfest-a-developers-journey-into-open-source-97c</guid>
      <description>&lt;h2&gt;
  
  
  My First Hacktoberfest: A Developer's Journey Into Open Source 🎃
&lt;/h2&gt;

&lt;p&gt;Hello, DEV community! 👋&lt;/p&gt;

&lt;p&gt;My name is &lt;strong&gt;Malik Putra&lt;/strong&gt;, a developer from Indonesia 🇮🇩, and this is my very first post on DEV.to and what better way to start than with &lt;strong&gt;Hacktoberfest 2026&lt;/strong&gt;!&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Decided to Join Hacktoberfest
&lt;/h2&gt;

&lt;p&gt;Honestly? I've been coding for a while, using open source tools every single day frameworks, libraries, packages all built by people who decided to share their work with the world. But I'd never given anything back.&lt;/p&gt;

&lt;p&gt;This October, I said: &lt;em&gt;enough lurking. Time to contribute.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hacktoberfest felt like the perfect on-ramp. A structured event, a welcoming community, and a clear goal: make meaningful pull requests and be part of something bigger than my own projects.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'm Going Into This With
&lt;/h2&gt;

&lt;p&gt;I won't pretend I'm a seasoned open source contributor. Going into Hacktoberfest 2026, here's where I stand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ I work mostly with &lt;strong&gt;web technologies&lt;/strong&gt; and backend systems&lt;/li&gt;
&lt;li&gt;🔍 I'm still learning how to navigate large, unfamiliar codebases&lt;/li&gt;
&lt;li&gt;📝 I want to contribute &lt;strong&gt;code, documentation, and tests&lt;/strong&gt; not just typo fixes&lt;/li&gt;
&lt;li&gt;🌱 I believe every expert was once a beginner who dared to submit their first PR&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I'm Looking For in Projects
&lt;/h2&gt;

&lt;p&gt;I'm drawn to projects that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are actively maintained (recent commits, responsive maintainers)&lt;/li&gt;
&lt;li&gt;Solve real problems for developers or everyday users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have a project that fits this description and could use a fresh pair of eyes, &lt;strong&gt;drop it in the comments!&lt;/strong&gt; I'd love to check it out.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Do This Together
&lt;/h2&gt;

&lt;p&gt;If you're also doing Hacktoberfest 2026 whether it's your first time or your fifth I'd love to connect. Share your goals, your project recommendations, or just say hi.&lt;/p&gt;

&lt;p&gt;Here's to a month of learning, contributing, and growing together. 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>hacktoberfest</category>
    </item>
  </channel>
</rss>
