Dev.to · 5 min read

Slow Mode: the laziest way to go outside

Slow Mode: the laziest way to go outside

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady. What I Built Trailhead is a local-first Streamlit app that turns a few taps into a short outdoor outing. You pick an activity, how long you have, and where you are; it pulls live weather and remaining daylight from Open-Meteo, then asks a locally running open-weight model — Gemma 3 4B via Ollama — for an "outing card": a plain-language route, what to look and listen for this week, three off-screen challenges, and a one-line safety note. The card exports as printable HTML or PDF. For Week 3, I asked the sloth question: what if the app made every decision, and the correct answer was "less"? So in this story Trailhead gets Slow Mode: one button that refuses to let you plan anything. Meet Theo — invented, but you know him. Theo will spend forty minutes choosing a podcast for a twenty-minute walk. He has 6,412 unread emails and a browser with 31 tabs, three of which are "best walking routes near me." He does not need another planner. He needs a planner that quits early. Slow Mode is that. One click and it picks the lowest-effort option for every field: a walk (no gear), 15 minutes (the floor), the nearest green space, and a card whose only instruction is "walk to the end of your street and back. That's it." Then it drops him on the "Take me outside" screen — a single line, a return time, and no UI to get lost in. The whole product becomes a permission slip to do almost nothing. The Lazy Payoff The challenge asks how much effort the project actually saves. In the story, Theo timed his old routine against Slow Mode: Task Before With Slow Mode Choosing an activity 4 min 0 Picking a route 6 min 0 Checking the weather 2 min 0 (automatic) Deciding when to leave 3 min 0 (return time set) Total ~15 min 1 click Fifteen minutes of deliberation replaced by one click and a piece of paper. Theo's review, invented but plausible: "I wanted to argue with it and there was nothing to argue with." The real payoff isn't the minutes. It's that the app has no settings to fiddle with in Slow Mode — nothing to optimize, no feed to scroll, no "just one more tweak." It ends the planning by removing the choices. Demo In the story: Theo opens Trailhead, hits Slow Mode, and gets a card for a 15-minute walk to the end of his street. The printer makes one page. He takes it, walks for fifteen minutes, and comes back. The app never asks him for an account, a rating, or a streak. Code How I Built It The engine (real). Slow Mode isn't a separate model — it's the same engine with the decisions pre-filled. The model is constrained to a JSON schema and validated with Pydantic, so the output is structured rather than prose I have to parse: response = client.chat( model=OLLAMA_MODEL, # default: gemma3:4b messages=[{"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": prompt}], format=OUTING_CARD_JSON_SCHEMA, # Ollama constrains generation options={"temperature": 0.3}, ) data = json.loads(response.message.content) card = OutingCard(**data) # Pydantic validates Slow Mode (the story's idea). It's a preset plus a stricter prompt: pick the smallest outing, the nearest green space, and exactly one thing to notice. slow = UserInput( activity=Activity.WALK, time_available_minutes=15, location_name=nearest_green_space(lat, lon), ) card = generate_card(slow, prompt_variant="smallest possible outing") Everything else (real). Open-Meteo's geocoding and forecast APIs are free and keyless, so the only network call carries a city name or a coordinate. fpdf2 renders the PDF, render_html gives a print-CSS fallback, and SQLite keeps a local journal so past cards stay readable offline. Stack: Python 3.15, Streamlit, httpx, the official ollama client, Pydantic, fpdf2, SQLite. No Node, no build step, no custom JavaScript. Why Does Open Innovation Matter? For a tool built around doing less, open matters in four very practical ways: A small local model is enough. Slow Mode generates a deliberately tiny outing. A 4B model on a laptop handles that in seconds, with no cloud round trip and no account to create. The laziness extends to the setup. It works at the trailhead. Generating a card is local inference against a local ollama serve. There's no signal required at the moment the app is supposed to get you out the door. Nothing to monetize means nothing to optimize for. No telemetry, no usage stats (Streamlit's are disabled in config), no feed. Your walk isn't a data point. Swappable by design. OLLAMA_MODEL changes the brain in one env var. If you want a faster, dumber model for a 15-minute walk, that's a legitimate choice — and it's yours to make. The open part is why the app can be this boring. There's no growth team to satisfy. My Agent Session Prize Categories I'm entering Best Use of Gemma — every card is generated by Gemma 3 4B running locally through Ollama, constrained by a JSON schema and validated with Pydantic.

This is a summary aggregated from Dev.to. Read the complete article on the original site:

Read full article at Dev.to

More AI & Machine Learning News