<?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: N.M.Abedeera</title>
    <description>The latest articles on DEV Community by N.M.Abedeera (@nishenmadawa15collab).</description>
    <link>https://dev.to/nishenmadawa15collab</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%2F4175847%2Fbb3cf6f0-13be-4ac4-be9b-3c74a270146f.jpg</url>
      <title>DEV Community: N.M.Abedeera</title>
      <link>https://dev.to/nishenmadawa15collab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nishenmadawa15collab"/>
    <language>en</language>
    <item>
      <title>Eliya: Gemma picks the best hour to go outside in Sri Lanka, then tells you to put the phone away</title>
      <dc:creator>N.M.Abedeera</dc:creator>
      <pubDate>Sat, 10 Oct 2026 19:14:01 +0000</pubDate>
      <link>https://dev.to/nishenmadawa15collab/eliya-gemma-picks-the-best-hour-to-go-outside-in-sri-lanka-then-tells-you-to-put-the-phone-away-2d5a</link>
      <guid>https://dev.to/nishenmadawa15collab/eliya-gemma-picks-the-best-hour-to-go-outside-in-sri-lanka-then-tells-you-to-put-the-phone-away-2d5a</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Eliya&lt;/strong&gt; is a tiny web app that has one job: get you outside for a short walk, then get out of your way.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Eliya&lt;/em&gt; (එළිය) means "light" in Sinhala, and it's the root of &lt;em&gt;eliyata yamu&lt;/em&gt;: "let's go outside". In Sri Lanka the weather decides everything. Go at 1 pm and you get 34 °C heat and UV 10. Go at 3 pm and you might walk straight into a monsoon shower. So "I'll go for a walk later" usually turns into another hour on my phone.&lt;/p&gt;

&lt;p&gt;Eliya fixes that in four steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick your town&lt;/strong&gt; (Colombo, Kandy, Galle, Ella, Jaffna… or your location), how much time you have, your mood and who's coming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It finds the best hour&lt;/strong&gt; in the next 12 by scoring the hourly forecast: rain chance, "feels like" heat above 30 °C, UV above 6, and darkness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma writes the plan, on your device.&lt;/strong&gt; You get a short walk idea for your town, &lt;strong&gt;5 things to notice&lt;/strong&gt; (sounds, smells, birds, sky), what to bring, and a &lt;strong&gt;phone-down challenge&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"I'm heading out — phone away"&lt;/strong&gt; turns the screen into a calm countdown that asks you to lock your phone. When you're back, tap &lt;em&gt;I'm back&lt;/em&gt; and the walk goes into a local log.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I built it for people in Sri Lanka with a mid-range laptop, patchy mobile data and no wish to sign up for yet another account.&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://nishenmadawa15-collab.github.io/eliya/" rel="noopener noreferrer"&gt;https://nishenmadawa15-collab.github.io/eliya/&lt;/a&gt; (Chrome or Edge on a laptop. The first run downloads Gemma, about 1.4 GB, then it's cached.)&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%2Fy6yqqdhgyohvjpl0ali3.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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy6yqqdhgyohvjpl0ali3.jpg" alt="Eliya running Gemma 2 2B in the browser: best hour 6am in Colombo, walk plan for Galle Face Green" width="800" height="333"&gt;&lt;/a&gt;&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/nishenmadawa15-collab" rel="noopener noreferrer"&gt;
        nishenmadawa15-collab
      &lt;/a&gt; / &lt;a href="https://github.com/nishenmadawa15-collab/eliya" rel="noopener noreferrer"&gt;
        eliya
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Go outside. Gemma runs in your browser, picks the best hour and plans a short phone-free walk in Sri Lanka.
    &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;Eliya — go outside&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Eliya&lt;/strong&gt; (එළිය — Sinhala for "light", and the root of &lt;em&gt;eliyata yamu&lt;/em&gt;, "let's go outside") is a tiny web app that gets you off your screen.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pick your town in Sri Lanka (or use your location), how much time you have, your mood and who's coming.&lt;/li&gt;
&lt;li&gt;Eliya checks the next 12 hours of weather and picks the &lt;strong&gt;best hour&lt;/strong&gt; to be outside — low rain chance, bearable heat, sensible UV.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 2 2B runs fully in your browser&lt;/strong&gt; (via WebLLM + WebGPU) and writes a short walk plan: where to go, 5 things to notice, what to bring, and a phone-down challenge.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;"I'm heading out — phone away"&lt;/strong&gt;: the screen becomes a calm timer that asks you to lock your phone.&lt;/li&gt;
&lt;li&gt;Come back, tap &lt;strong&gt;"I'm back"&lt;/strong&gt;, and your walk is logged locally.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No account, no server, no API keys. The model and…&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/nishenmadawa15-collab/eliya" 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 whole app is &lt;strong&gt;one &lt;code&gt;index.html&lt;/code&gt; file&lt;/strong&gt;: plain JavaScript, no build step, hosted free on GitHub Pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-weight model, fully local.&lt;/strong&gt; Eliya runs &lt;strong&gt;Gemma 2 2B Instruct&lt;/strong&gt; (4-bit, &lt;code&gt;gemma-2-2b-it-q4f16_1-MLC&lt;/code&gt;) in the browser with &lt;strong&gt;&lt;a href="https://github.com/mlc-ai/web-llm" rel="noopener noreferrer"&gt;WebLLM&lt;/a&gt;&lt;/strong&gt; on WebGPU. There's no API key, no server and no cost per request. Your location and plans never leave your device. Tokens stream into the page so the plan appears as Gemma writes it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;engine&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;webllm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;CreateMLCEngine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemma-2-2b-it-q4f16_1-MLC&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;initProgressCallback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;showProgress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;progress&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;engine&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;buildPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;420&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Weather → "best hour".&lt;/strong&gt; &lt;a href="https://open-meteo.com" rel="noopener noreferrer"&gt;Open-Meteo&lt;/a&gt; gives a free hourly forecast with no key. A small scoring function picks the hour that's nicest to be outside:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rain&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;feels&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;feels&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
                   &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;uv&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lower is better. In Colombo this usually lands on early morning or late afternoon, which is what locals would tell you anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompting a 2B model.&lt;/strong&gt; Small models wander, so the prompt passes hard facts (place, time, feels-like temperature, rain %, UV, minutes, mood, company). It also asks for &lt;strong&gt;exact headings&lt;/strong&gt; and a word limit. The page renders only those headings, bullets and paragraphs, and escapes everything first, so nothing the model writes can inject HTML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never a dead end.&lt;/strong&gt; If the browser has no WebGPU, Eliya falls back to a simple template plan and says so clearly. You still get the best hour and the phone-away timer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'd add next:&lt;/strong&gt; a Sinhala and Tamil language toggle (Gemma handles both reasonably well), offline caching of the last forecast, and a shareable "I went outside" card for friends.&lt;/p&gt;

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

&lt;p&gt;Because it means a developer in Sri Lanka can ship real AI with &lt;strong&gt;zero budget&lt;/strong&gt;. No API bill, no credit card, no data sent abroad. An open-weight model like Gemma plus open-source tools like WebLLM let anyone with a laptop run a capable model privately. Open weather data from Open-Meteo means the same app works in Jaffna as well as in Berlin. Closed APIs would have priced this idea out before it started. Open models let me build it in an evening and give it away under MIT.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt;: the app's core is Gemma 2 2B Instruct, running locally in the browser through WebLLM.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
