Die Nukleare Abschreckung in #EUropa verändert sich: #Frankreich weitet seine „Forward Deterrence“ auf Partnerstaaten aus und modernisiert sein Arsenal. Ziel ist eine zusätzliche europäische Absicherung neben der weiterhin zentralen Nuklearabschreckung durch die #USA.
warsight.com/2026/10/07/r...
Strategic shift: redefining Eu...
Search
1000 results for “R_Forwards”
-
-
Early start from Portland, on my way to Leeds for #FOSS4GUK Looking forward to it, it's a great line-up! Hear about gitRmap (www.nickbearman.com/gitRmap), working with QGIS and R together (w/ Barry Rowlingson ) and come along to the OSGeo:UK AGM to hear about what we've been up to, hear our plans and vote for your new committee members!
-
This reference manual documents the complete architecture, configurations, and commands required to spin up a standalone Splunk indexer and securely ingest host operating system events.
Part 1: Splunk Enterprise Server (Docker Compose)
We deployed a permanent Splunk Free environment on the
x86_64architecture. Using Docker volumes ensures all indexed data, search structures, and dashboards persist through restarts.- Deployment File Configuration
Create a dedicated working directory and save this file exactly as
docker-compose.yml:services:
splunk:
image: splunk/splunk:latest
container_name: splunk_free
environment:
# Accept the mandatory Splunk licensing terms
- SPLUNK_START_ARGS=--accept-license
- SPLUNK_GENERAL_TERMS=--accept-sgt-current-at-splunk-com# Activates the perpetual 500MB/day Free license immediately
- SPLUNK_LICENSE_URI=Free# Required for internal initialization protocols
- SPLUNK_PASSWORD=YourSecurePassword123!
ports:
- "8000:8000" # Splunk Web UI Browser Console
- "8088:8088" # HTTP Event Collector (HEC) API Ingestion
- "9997:9997" # Splunk Indexer - Receiving port for Forwarders
volumes:
- splunk_etc:/opt/splunk/etc # Stores configuration settings and custom apps
- splunk_var:/opt/splunk/var # Stores raw indexed log databases
restart: unless-stoppedvolumes:
splunk_etc:
splunk_var:- Operational Operations
- Start Stack:
docker compose up -d - Stop Stack:
docker compose down - Web UI URL: Access
http://localhost:8000(Free Mode automatically routes directly into the unauthenticated workspace).
- Server Configuration Constraint (Crucial Step)
Before any external machine can communicate with this container, the indexer engine must be instructed to listen on its data pipeline port:
- Navigate to Settings > Forwarding and receiving.
- Click Configure receiving under the Receive data column header.
- Select New Receiving Port, enter
9997, and click Save.
Part 2: Host Node Log Ingestion (Arch Linux)
Because Arch Linux relies natively on
systemd-journaldinstead of traditional structural text files (likesyslog), we implemented a direct, low-overhead native script architecture.- Install the Agent Binary via AUR
Install the stable binary tracking from the Arch User Repository:
paru -S splunkforwarder
- Initial Setup Credentials
Initialize the runtime parameters to establish the root control passwords:
sudo /opt/splunkforwarder/bin/splunk start --accept-license
(Provide username
adminand create a distinct local agent password when prompted, then stop the session viasudo /opt/splunkforwarder/bin/splunk stopto return control to systemd).- Establish System Target Routing
Map the outbound forwarding path toward the container server. If the agent runs on the same underlying operating system as Docker, target the internal loopback:
sudo /opt/splunkforwarder/bin/splunk add forward-server 127.0.0.1:9997 -auth admin:<YourForwarderPassword>
- Overcome Arch Systemd Journal Security Boundaries
The
splunkdaemon user created by the package must be explicitly allowed to look inside binary operating system logging streams:sudo usermod -aG systemd-journal splunk
- Configure Native Journal Ingestion File
Rather than fighting text-file translation limits, manually specify a high-performance native
journaldinput receiver stream.Open the system configuration manager:
sudo nvim /opt/splunkforwarder/etc/system/local/inputs.conf
Overwrite or append the exact parameters below:
[default]host = arch-workstation[journald://system_logs]
disabled = false
index = main
sourcetype = journald- Permission Realignment & Service Activation
Force a complete runtime ownership sync on application directories and hand engine lifecycle tracking to the native scheduler:
sudo chown -R splunk:splunk /opt/splunkforwarder
sudo chmod -R 755 /opt/splunkforwarder
sudo systemctl enable --now splunkforwarder.servicePart 3: Telemetry Analysis
To confirm telemetry streams are transmitting across isolation boundaries, load the Splunk Search Panel and run the following queries:
- Verify Infrastructure Logs Inbound:
index="main" sourcetype="journald"
- Verify Client-to-Server Health Interconnectivity:
index="_internal" sourcetype="splunkd"
And Congratulations, you have successfully installed Splunk Free Edition#splunk #docker #arch #linux #software #coding #development #engineering #inclusive #community
🚀 Splunk Core deployment Guide: Docker Server & Arch Linux Forwarder -
SCHOOL CLOSURES: Four more Carmarthenshire village schools face the axe, three of them in the Gwendraeth Valley
Three more Gwendraeth Valley village schools could close at the end of 2027, along with Ysgol Blaenau near Llandybie.
Ysgol Carwe, Ysgol Pontiets and Ysgol Bancffosfelen are all named in closure plans going before Carmarthenshire Council councillors on Tuesday, with 155 children across the four schools facing a move.
The council’s education scrutiny committee will be asked to back formal consultation on all four. Cabinet would make that call on 2 November.
It comes a day before full council takes the final vote on closing Ysgol Meidrim and Ysgol Y Fro in Llangyndeyrn.
Which Carmarthenshire schools could close, and where the pupils would go
Carway’s 58 pupils have been taught at Ysgol Gwynfryn in Pontyates for more than a year. The council wants to make that move permanent from 1 January 2028.
Their own building shut over safety fears in August 2025, and the council puts the cost of the work it needs at more than £2m over five years.
At Bancffosfelen, 48 pupils would move to Ysgol Pontyberem. The council says the school hall has been declared structurally unsafe and needs knocking down, after a 1960s classroom extension had already been taken out of use.
All teaching now happens in the original Victorian building, which the council says suffers persistent water coming in, damp and mould.
Pontiets’ 21 pupils would move to Ysgol Ponthenri, with nearly three-quarters of the school’s places empty, according to the council.
Ysgol Blaenau, near Llandybie, has 28 pupils, only four of whom live in its catchment, the council says. They would move to Ysgol Gymraeg Penygroes or Ysgol Llandybie.
Gwendraeth Valley village schools hit hardest
If they all go ahead, four of the six village schools facing closure in the county by the end of 2027 would be in the valley. Ysgol Y Fro in Llangyndeyrn is set to shut at Christmas if full council agrees on Wednesday.
Most of the children would stay in the valley, moving to Ysgol Gwynfryn, Ysgol Ponthenri or Ysgol Pontyberem.
The valley has been here before. Mynyddygarreg’s school was spared after its community campaigned for more than a year and gathered a petition of more than 1,000 signatures.
Pontyates has already fought to keep its GP surgery this year. Hywel Dda University Health Board dropped its plan to close Meddygfa’r Sarn in May after a four-month campaign, but campaigners now say no GP partnership has come forward to run it.
Blaenau and Pontiets have faced closure before
This is the second closure threat for Blaenau. In December 2021 the council put plans to close Blaenau and Mynyddygarreg on hold, with education cabinet member Glynog Davies calling for a fuller review first.
Pontiets was one of four rural primaries put under review last year, but its consultation was shelved while Carway’s future was unresolved.
What closing the four schools would save
The council says closing all four would save around £140,000 a year in running costs. Pontiets accounts for almost half of that, at £66,807.
Blaenau’s finances are the worst of the four: it ended 2025-26 £287,857 in deficit and is forecast to reach £362,556 this year, according to the council. Bancffosfelen is £62,924 in the red and heading for £107,773.
Carway and Pontiets were both in surplus in March, but the council expects both to slip into deficit this year.
It also points to building bills it would avoid, including £727,321 of work at Bancffosfelen and £310,802 at Blaenau over five years.
Cymdeithas yr Iaith says the plans are full of “errors”
Cymdeithas yr Iaith is urging all four schools to lobby scrutiny councillors before Tuesday to reject consultation.
The group’s Ffred Ffransis said: “By proposing to close four additional village schools even before the Council has made its decision on Meidrim, the Cabinet has shown that it is on a mission to close village schools throughout the county outside the towns and a few large villages.”
He said the officers’ “rushed work” had thrown up “numerous errors”, and that the Bancffosfelen document relies on an Estyn report from 2018 when the school was inspected again this year, with the report due next month.
The group also says promises to Carway and Bancffosfelen that money had been set aside for their buildings have been broken.
Ffransis added: “The future of our village schools and communities should not be taken so lightly.”
What happens at Tuesday’s scrutiny meeting
The committee meets at County Hall in Carmarthen at 10am on Tuesday 13 October.
If cabinet agrees on 2 November, a formal consultation would follow, with the closures taking effect on 31 December 2027.
Related stories from Swansea Bay News
MEIDRIM: Village school down to 24 pupils ahead of final vote on Christmas closure
Full council decides on Meidrim and Ysgol Y Fro on Wednesday.CARWAY: Council weighing village school’s long-term future as £1.8m classrooms stay on hold
Carway’s children bussed to Pontyates, with formal proposals promised.Carmarthenshire school closure plans put on hold… for now
Blaenau and Mynyddygarreg’s 2021 reprieve.PONTYATES: Campaigners urge GP teams to bid for Meddygfa’r Sarn as tender opens
#Bancffosfelen #Blaenau #Carmarthenshire #CarmarthenshireCouncil #Carway #CarwayPrimarySchool #CllrGlynogDavies #CymdeithasYrIaith #education #featured #GwendraethValley #HywelDdaUniversityHealthBoard #MeddygfaRSarn #ModernisingEducation #Pontyates #ruralSchools #schoolClosure #WelshMediumEducation #YsgolPontiets
The search for a new GP team to run the village surgery. -
Entry for Hacktoberfest 2026, Week 1: "Touch Grass" — build something with open-source AI that gets people off the screen and into the world.
Picture this: you're standing at the top of Chembra Peak, looking down at the heart-shaped lake, your phone showing zero signal bars. Your friend pulls up three different trekking apps and every single one is useless — no cached data, no offline briefings, and the one "AI trail assistant" needs the cloud just to tell you what to pack. That exact frustration is why I built Trek Buddy.
The premise is simple: if the whole point of an app is to help you on a trail, it has to work where trails actually are — offline. And once you commit to offline-first, the AI has to follow: no cloud calls, no API keys, no subscription. Just an open-weight model running on your own machine.
What I Built
- 10 curated Kerala trails — Chembra, Meesapulimala, Agasthyarkoodam, Kolukkumalai, Paithalmala, Ranipuram, Pakshipathalam, Brahmagiri, Dhoni Hills, Ilaveezhapoonchira. Filter by difficulty, and each one carries distance, duration, best months, highlights, and whether you need forest department permission.
- Weather check with a backbone — pulls forecasts from Open-Meteo (free, no API key), and it understands Kerala's monsoon: heavy rain, violent showers, and thunderstorms get flagged as rethink your plans, not just shown as an icon.
- A packing checklist that actually thinks — generated from the trail's difficulty, the season, and live weather. Pick a trail in July and it'll tell you to bring leech socks. Pick a moderate trail in pouring rain and rain gear jumps to the top. This is the kind of detail that makes or breaks a trek.
- An AI trail briefing from a model on your laptop — via Ollama and any open-weight model (I use gemma3). It writes a personalized briefing for your chosen trail: what to expect, how to pace, what to watch out for. No Ollama installed? It falls back to built-in guide notes, and everything else works identically.
- Fully offline mode — forecasts are cached as JSON, so with zero signal the app keeps working off your last check. Your diary of completed treks lives in a local file too. Nothing ever leaves your machine.
Demo
Here's a real session — browsing trails, picking Chembra Peak, and getting the weather-aware plan in one go:--- Trek Buddy 🥾 --- (type 'quit' to exit)
1. Browse trails
2. Filter by difficulty
3. View trek diaryWhat do you want to do? (1/2/3 or quit): 1
1. Chembra Peak (Wayanad) — moderate, 9 km
2. Meesapulimala (Idukki) — hard, 8 km
3. Agasthyarkoodam (Thiruvananthapuram) — hard, 28 km
... (10 Kerala trails total)Pick a trail (number): 1
🥾 Chembra Peak — Wayanad
Difficulty : moderate
Distance : 9 km
Duration : 4-5 hours round trip
Best months : Sep–May
Permission : Forest dept permission from Meppady office; limited daily slotsChecking weather...
🌦️ Light drizzle, 16.4°C — wind 6.9 km/h (live)
🌧️ Rain expected — pack rain gear and watch for slippery trails.🎒 Packing checklist:
[ ] 2L water (minimum)
[ ] Snacks / energy bars
[ ] First-aid kit
[ ] Fully charged phone + power bank
[ ] Trekking shoes with grip
[ ] Trekking pole
[ ] Raincoat / poncho
[ ] Dry bag for phone📖 Guide notes:
Difficulty is moderate — 4-5 hours round trip. Don't miss: heart-shaped
Hridaya Saras lake. Permission required: Forest dept permission from Meppady
office; limited daily slots. Leech territory — tuck your pants into your socks.With Ollama running, the guide notes are replaced by a personalized AI briefing written by gemma3 on your own machine. Without internet, the same screen renders from the cached forecast instead — the app never breaks.
Code
The whole thing is one Python file — 100% standard library, no dependencies to install:trek_buddy.py (370 lines — click to expand)
"""
Trek Buddy — your offline trekking companion for Kerala. 🥾Pick a trail, check the weather, get a packing checklist, and get a trail
briefing from a local AI running 100% on your own machine (no internet,
no API keys, no data leaving your laptop).How to run:
python trek_buddy.pyOptional AI layer:
1. Install Ollama from ollama.com
2. Pull a small open-weight model: ollama pull gemma3
3. Make sure Ollama is running (it starts automatically)Without Ollama the app still works fully — the briefing just comes from
the built-in guide notes instead of the local model.Trail coordinates are approximate (district level) — good enough for a
weather check, not for navigation. Always trek with a guide where required.
"""import datetime
import json
import os
import urllib.parse
import urllib.requestBASE_DIR = os.path.dirname(os.path.abspath(__file__))
TRAILS_FILE = os.path.join(BASE_DIR, "trails.json")
CACHE_FILE = os.path.join(BASE_DIR, "weather_cache.json")
LOG_FILE = os.path.join(BASE_DIR, "trip_log.json")WEATHER_URL = "https://api.open-meteo.com/v1/forecast"
OLLAMA_URL = "http://localhost:11434/api/generate"
OLLAMA_TAGS_URL = "http://localhost:11434/api/tags"# WMO weather codes -> description + emoji (same mapping as the weather app)
WEATHER_CODES = {
0: ("Clear sky", "☀️"), 1: ("Mainly clear", "🌤️"),
2: ("Partly cloudy", "⛅"), 3: ("Overcast", "☁️"),
45: ("Fog", "🌫️"), 48: ("Icy fog", "🌫️"),
51: ("Light drizzle", "🌦️"), 53: ("Drizzle", "🌦️"),
55: ("Heavy drizzle", "🌦️"), 61: ("Light rain", "🌧️"),
63: ("Rain", "🌧️"), 65: ("Heavy rain", "⛈️"),
71: ("Light snow", "🌨️"), 73: ("Snow", "🌨️"),
75: ("Heavy snow", "❄️"), 80: ("Light showers", "🌦️"),
81: ("Showers", "🌧️"), 82: ("Violent showers", "⛈️"),
95: ("Thunderstorm", "⛈️"), 96: ("Thunderstorm with hail", "⛈️"),
99: ("Thunderstorm with hail", "⛈️"),
}# Weather codes that should make you think twice about trekking
BAD_WEATHER = {65, 82, 95, 96, 99}
RAINY_WEATHER = {51, 53, 55, 61, 63, 80, 81}BASE_PACKING = [
"2L water (minimum)",
"Snacks / energy bars",
"First-aid kit",
"Fully charged phone + power bank",
"Sunscreen and cap",
]MONSOON_MONTHS = {"Jun", "Jul", "Aug", "Sep"}
# ---------- data loading ----------
def load_trails():
"""Read the curated trail database."""
with open(TRAILS_FILE) as f:
return json.load(f)["trails"]def load_cache():
"""Read cached weather forecasts (used when offline)."""
if not os.path.exists(CACHE_FILE):
return {}
try:
with open(CACHE_FILE) as f:
return json.load(f)
except (json.JSONDecodeError, OSError):
return {}def save_cache(cache):
"""Persist weather forecasts for offline use."""
with open(CACHE_FILE, "w") as f:
json.dump(cache, f, indent=2)def load_log():
"""Read the trip diary."""
if not os.path.exists(LOG_FILE):
return
[] try:
with open(LOG_FILE) as f:
return json.load(f)
except (json.JSONDecodeError, OSError):
return[]def save_log(entries):
"""Persist the trip diary."""
with open(LOG_FILE, "w") as f:
json.dump(entries, f, indent=2)# ---------- weather (Open-Meteo, cached for offline use) ----------
def fetch_weather(lat, lon):
"""Fetch the current weather from Open-Meteo (free, no key)."""
params = urllib.parse.urlencode({
"latitude": lat,
"longitude": lon,
"current": "temperature_2m,weather_code,wind_speed_10m",
"timezone": "auto",
})
with urllib.request.urlopen(f"{WEATHER_URL}?{params}", timeout=10) as r:
return json.loads(r.read().decode())["current"]def get_weather(trail):
"""Get weather for a trail — live if online, cached if offline.Returns (weather_dict, was_cached).
"""
cache = load_cache()
try:
weather = fetch_weather(trail["lat"], trail["lon"])
weather["fetched_at"] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
cache[trail["id"]] = weather
save_cache(cache)
return weather, False
except Exception:
# Offline — fall back to the last cached forecast
if trail["id"] in cache:
return cache[trail["id"]], True
return None, Truedef weather_warning(code):
"""Return a warning string for bad trekking weather, or None."""
if code in BAD_WEATHER:
return "⚠️ Heavy rain or thunderstorm — seriously consider postponing this trek."
if code in RAINY_WEATHER:
return "🌧️ Rain expected — pack rain gear and watch for slippery trails."
return None# ---------- local AI layer (Ollama, 100% on-device) ----------
def ollama_model():
"""Return the name of a usable local model, or None if Ollama is down."""
try:
with urllib.request.urlopen(OLLAMA_TAGS_URL, timeout=3) as r:
models = json.loads(r.read().decode()).get("models", [])
if models:
return models[0]["name"]
return None
except Exception:
return Nonedef ask_local_model(prompt, model):
"""Send a prompt to the local model and return its reply (no streaming)."""
body = json.dumps({
"model": model,
"prompt": prompt,
"stream": False,
}).encode()
req = urllib.request.Request(
OLLAMA_URL, data=body, headers={"Content-Type": "application/json"}
)
with urllib.request.urlopen(req, timeout=120) as r:
return json.loads(r.read().decode())["response"].strip()def ai_briefing(trail, weather, model):
"""Ask the local model for a trail briefing. Returns None on failure."""
text, _ = WEATHER_CODES.get(weather["weather_code"], ("Unknown", "🌡️"))
prompt = (
f"You are a friendly Kerala trekking guide. Trail: {trail['name']} "
f"({trail['district']}, {trail['difficulty']}, {trail['distance_km']} km, "
f"{trail['duration']}). Current weather there: {text}, "
f"{weather['temperature_2m']}°C. Highlights: "
f"{', '.join(trail['highlights'])}. "
"Give a short trail briefing: what to expect, one safety tip, "
"and one thing to look forward to. Under 120 words. "
"Warm tone, no fluff."
)
try:
return ask_local_model(prompt, model)
except Exception:
return Nonedef guide_notes(trail):
"""Rule-based briefing used when no local model is available."""
notes = [
f"Difficulty is {trail['difficulty']} — {trail['duration']}.",
f"Don't miss: {trail['highlights'][0].lower()}.",
]
if trail["permission_needed"]:
note = trail["permission_note"].rstrip(".")
notes.append(f"Permission required: {note}.")
if trail["leech_risk"]:
notes.append("Leech territory — tuck your pants into your socks.")
return " ".join(notes)# ---------- packing checklist ----------
def packing_checklist(trail, weather):
"""Build a packing list from trail difficulty, season, and live weather."""
items = list(BASE_PACKING)
month = datetime.datetime.now().strftime("%b")if trail["difficulty"] in ("moderate", "hard"):
items += ["Trekking shoes with grip", "Trekking pole"]
if trail["difficulty"] == "hard":
items += ["Headlamp", "Extra food for the long haul"]
if trail["leech_risk"] and month in MONSOON_MONTHS:
items += ["Leech socks", "Salt / sanitizer for leeches"]
if weather and weather["weather_code"] in RAINY_WEATHER | BAD_WEATHER:
items += ["Raincoat / poncho", "Dry bag for phone"]
if weather and weather["temperature_2m"] < 15:
items += ["Warm layer / jacket"]
return items# ---------- UI ----------
def show_trail(trail, index):
print(f" {index}. {trail['name']} ({trail['district']}) — "
f"{trail['difficulty']}, {trail['distance_km']} km")def show_trail_detail(trail):
print(f"\n🥾 {trail['name']} — {trail['district']}")
print("-" * 45)
print(f" Difficulty : {trail['difficulty']}")
print(f" Distance : {trail['distance_km']} km")
print(f" Duration : {trail['duration']}")
print(f" Best months : {', '.join(trail['best_months'])}")
if trail["permission_needed"]:
print(f" Permission : {trail['permission_note']}")
print(" Highlights :")
for h in trail["highlights"]:
print(f" • {h}")
print()def show_weather(weather, cached):
text, emoji = WEATHER_CODES.get(weather["weather_code"], ("Unknown", "🌡️"))
tag = f"(cached, {weather.get('fetched_at', 'unknown time')})" if cached else "(live)"
print(f"{emoji} {text}, {weather['temperature_2m']}°C "
f"— wind {weather['wind_speed_10m']} km/h {tag}")
warning = weather_warning(weather["weather_code"])
if warning:
print(warning)
print()def plan_trek(trail):
"""Walk through weather, checklist, and briefing for one trail."""
show_trail_detail(trail)print("Checking weather...")
weather, cached = get_weather(trail)
if weather is None:
print("No weather data and nothing cached — you're fully offline. "
"The rest still works.\n")
else:
if cached:
print("📴 Offline mode — showing the last cached forecast.\n")
show_weather(weather, cached)print("🎒 Packing checklist:")
for item in packing_checklist(trail, weather):
print(f" [ ] {item}")
print()model = ollama_model()
if model:
print(f"🤖 Asking your local AI ({model}) for a trail briefing...")
briefing = ai_briefing(trail, weather or {"weather_code": 0,
"temperature_2m": "?"},
model)
if briefing:
print(f"\n{briefing}\n")
else:
print("The local model didn't answer — here's the guide notes instead:\n")
print(guide_notes(trail) + "\n")
else:
print("💡 Tip: install Ollama (ollama.com) and run "
"'ollama pull gemma3' for AI briefings.\n")
print("📖 Guide notes:")
print(guide_notes(trail) + "\n")choice = input("Log this trek in your diary? (y/n): ").strip().lower()
if choice == "y":
entries = load_log()
entries.append({
"trail": trail["name"],
"date": datetime.datetime.now().strftime("%Y-%m-%d"),
"difficulty": trail["difficulty"],
})
save_log(entries)
print("Logged! 📓\n")
else:
print()def show_diary():
entries = load_log()
if not entries:
print("\nYour diary is empty — go touch some grass first. 🌱\n")
return
print("\n📓 Your trek diary:")
for e in entries:
print(f" • {e['date']} — {e['trail']} ({e['difficulty']})")
print()def main():
trails = load_trails()
print("\n--- Trek Buddy 🥾 --- (type 'quit' to exit)\n")while True:
print("1. Browse trails")
print("2. Filter by difficulty")
print("3. View trek diary")
choice = input("\nWhat do you want to do? (1/2/3 or quit): ").strip().lower()
if choice in ("quit", "q", "exit"):
print("See you on the trail! 🏔️")
breakif choice == "2":
level = input("Difficulty (easy/moderate/hard): ").strip().lower()
options = [t for t in trails if t["difficulty"] == level]
if not options:
print("No trails at that difficulty.\n")
continue
elif choice == "1":
options = trails
else:
print("Pick 1, 2, 3 or quit.\n")
continueprint()
for i, t in enumerate(options, start=1):
show_trail(t, i)
try:
pick = int(input("\nPick a trail (number): ").strip())
if 1 <= pick <= len(options):
plan_trek(options[pick - 1])
else:
print("Invalid number.\n")
except ValueError:
print("That's not a number.\n")if __name__ == "__main__":
main()Repo: [REPO LINK — dropping this in as soon as my GitHub account is back]
How I Built It
- Zero cost to run — a student-friendly budget (mine is effectively zero) can ship a real AI feature, because inference happens locally.
- Privacy by construction — your trail plans, your location, your diary never touch a server. For an app that knows where you hike, that matters.
- Graceful degradation — the app is designed live → cached → offline, and the AI layer follows the same philosophy: local model → built-in notes → still a great app.
Trek Buddy is 100% Python standard library — no dependencies to install, nothing to break on a friend's old laptop.
python trek_buddy.pyand you're in.The honest limitations
Trail coordinates are district-level (good enough for a weather check, not for navigation), and permissions and seasons change, so it reminds you to check with the forest department before heading out — especially for Agasthyarkoodam and Meesapulimala. And it won't replace a local guide on trails where one is required. Tech should make trekking safer, not dumber.Prize Categories
Best Use of Gemma — Trek Buddy's AI briefings run on gemma3 through Ollama, entirely on the user's own machine. No cloud, no API key, no data leaving the laptop — which is exactly the point for an app meant for places with zero signal.What's next
I'd love to add trail maps that render in the terminal, Malayalam-language briefings, GPX import for custom routes, and trails beyond Kerala. But for now: ten trails, honest weather, smart packing, and an AI that works where the internet doesn't.Cover photo: Chembra Peak by Aneesh Jose (CC BY-SA 3.0).#devchallenge #hf26challenge #python #opensource #software #coding #development #engineering #inclusive #community
Trek Buddy: an offline trekking companion that runs its AI on your laptop, not in the cloud 🥾 -
Another week, another conference
This time the 3rd International Conference on #LinguisticLandscape
I'm very much looking forward to sharing my linguistic picture taking passion (obsession?🙃) with colleagues in #Málaga
@[email protected]
@[email protected]
eventos.uma.es/147372/detai...
III Congreso Internacional sob... -
Thanks everyone who have chosen me and @[email protected] to do their DW pictures ❤️
This is absolutely insane schedule but I'm looking forward to capture all these gorgeous doggos and fluffers!
If you haven't had a chance to snap a slot, you are always welcome to riot.photos/bookings/ 😉
#pupplay #dw26 -
You don't have to be a C programmer to contribute to R.
R Core members Simon Urbanek, Kurt Hornik, and Heather Turner explain how to report bugs, propose features, improve docs and translations, join an R Dev Day, or submit a patch.
-
[KDE] Using KDE like a scrolling WM with Karousel
Publicado por #u_Zoomat en #r_unixporn
-
[KDE] My simple rice. made to look like windows 11 a bit
Publicado por #u_peridot2017 en #r_unixporn
#peridot2017 #uperidot2017 #unixporn #runixporn #RedditBot #BonitoBot
-
[LabWC] LabWC Blur + Sonia Assistant 100% Local AI No GPU + Noctalia
Publicado por #u_Leading_Yogurt7025 en #r_unixporn
#Leading_Yogurt7025 #uLeading_Yogurt7025 #unixporn #runixporn #RedditBot #BonitoBot
-
[Hyprland] hyprSur 0.3 spoiler — macOS behavior on Arch
Publicado por #u_miramwh en #r_unixporn
#miramwh #umiramwh #unixporn #runixporn #RedditBot #BonitoBot
-
[Cinnamon] Ajin Rice
Publicado por #u_MadHarry512 en #r_unixporn
#MadHarry512 #uMadHarry512 #unixporn #runixporn #RedditBot #BonitoBot
-
[adacomp] Happy Ada Lovelace Day! The desktop I've been building
Publicado por #u_EntertainmentFun3189 en #r_unixporn
#EntertainmentFun3189 #uEntertainmentFun3189 #unixporn #runixporn #RedditBot #BonitoBot
-
[KDE] My 1-week rice-hopping recap.
Publicado por #u_Lowpoly_AXL en #r_unixporn
#Lowpoly_AXL #uLowpoly_AXL #unixporn #runixporn #RedditBot #BonitoBot
-
[Hyprland] CachyOS, Hyprland, Noctalia Shell V5, 5120x1440p Ultrawide
Publicado por #u_Lopsided_Award_4489 en #r_unixporn
#Lopsided_Award_4489 #uLopsided_Award_4489 #unixporn #runixporn #RedditBot #BonitoBot
-
[OC] Chaldea - Quickshell Widget Library
Publicado por #u_Aleph1_9012 en #r_unixporn
#Aleph1_9012 #uAleph1_9012 #unixporn #runixporn #RedditBot #BonitoBot
-
[Hyprland] i like and i use for everything!
Publicado por #u_galinha_saltitante en #r_unixporn
#galinha_saltitante #ugalinha_saltitante #unixporn #runixporn #RedditBot #BonitoBot
-
[sway] my distro with my own filesystem
Publicado por #u_Gullible_Service_365 en #r_unixporn
#Gullible_Service_365 #uGullible_Service_365 #unixporn #runixporn #RedditBot #BonitoBot
-
GSK Sets 2027 Construction Start for $800M Pennsylvania Buildout
]]> ENR AT-A-GLANCE 5 Things to Know EXPAND ↓ COLLAPSE ↑ $800M-PLUS EXPANSION GSK plans to expand its…
#EuropeSays #Britain #Europe #EU #GSK #ManufacturingConstruction #Pennsylvania #pharmaceutical #philadelphia #r&d
https://www.europesays.com/britain/142945/ -
https://www.europesays.com/britain/142945/ GSK Sets 2027 Construction Start for $800M Pennsylvania Buildout #GSK #ManufacturingConstruction #Pennsylvania #pharmaceutical #philadelphia #r&d
-
[OC] Pawnix: a keyboard-first chess client for the terminal
Publicado por #u_ashygun en #r_unixporn
#ashygun #uashygun #unixporn #runixporn #RedditBot #BonitoBot
-
[Hyprland] CachyOS, Hyprland, Noctalia Shell V5, Ultrawide
Publicado por #u_Lopsided_Award_4489 en #r_unixporn
#Lopsided_Award_4489 #uLopsided_Award_4489 #unixporn #runixporn #RedditBot #BonitoBot
-
[r] _ antonio syxty legge rachel blau duplessis
#AntonioSyxty #lettura #RachelBlauDuPlessis #reading #scrittureDiRicerca #video
-
[r] _ rachel blau du plessis: selected poems 1980-2020 (chax press)
DuPlessis’s Selected Poems is a generous collection including early work “rewriting the lyric” through serial poems to a comprehensive selection from her long poem Drafts. The book includes work from Traces, with Days up to 2020, including a selection of one of her collage poems.
True to their name [Drafts], the poems accent provisionality, risk, the absence of guarantee, delving into words and word parts with a heteroglossic verve that seems vengeance at times. With recourse to an astonishing range of techniques and material devices, formal concern as inclination and qualm, these poems register, lament, react to and wrestle with erosions on multiple fronts—psychic, social, historical, somatic….They affirm and negate the toll history takes on letter and spirit, affirming and negating and navigating a way between.
— Nathaniel Mackey, Chancellors’ Reading List
These new books [from Traces, with Days] remain true to the sense of loss that haunted DuPlessis’s generation and still haunts us—lost people or “the disappeared” and, increasingly, the lost species climate change brings. I have focused on the politically engaged and materially embodied nature of DuPlessis’s recent works here, and how they speak to our “catapulted” contemporary state. I have looked back at how they move on from and connect with her previous serial poems and her deep classical, Jewish, and modernist roots, and considered her restless search for new-old forms that can mirror the complexity of our “Human Universe.”
— Harriet Tarlo, Chicago Review
Throughout her distinguished career, Rachel Blau DuPlessis has explored hybridity in its many forms, working at the interstices of modern/postmodern, sacred/secular, long poem/lyric, text/image.
— Paul Jaussenhttps://www.chax.org/product-page/selected-poems-of-rachel-blau-duplessis
#Drafts #experimentalWriting #HarrietTarlo #NathanielMackey #PaulJaussen #RachelBlauDuPlessis #scrittureDiRicerca -
[hyprland] I was doing a live git pull from ssh, and my theme glitched out from generic matrix theme to this
Publicado por #u_ErmingSoHard en #r_unixporn
#ErmingSoHard #uErmingSoHard #unixporn #runixporn #RedditBot #BonitoBot
-
[Hyprland] ii-p3drovfx | A redesigned and bloated version of end-4 ii
Publicado por #u_Sta1rwayToHeaven en #r_unixporn
#Sta1rwayToHeaven #uSta1rwayToHeaven #unixporn #runixporn #RedditBot #BonitoBot
-
[Hyprland] Finally finished my first hyprland rice
Publicado por #u_Zyx3la en #r_unixporn
-
[hyprland] first post here (they removed my post or something bruh)
Publicado por #u_Zhyhoe en #r_unixporn