Efe Marko Güldere

Junior Developer and IT Operations Specialist at JELD-WEN Eesti AS · Rakvere, Estonia

efemarko1@gmail.com · gren-95.github.io · github.com/Gren95 · LinkedIn

I build web applications, maintain IT infrastructure, and work on homelab and open source projects in my spare time.

Experience

Apr 2026 - present

Junior Developer and IT Operations Specialist, JELD-WEN Eesti AS

Building web applications and keeping the IT infrastructure behind them running.

Sep 2024 - Mar 2026

Web Developer (internship), JELD-WEN Eesti AS

The third internship at the same company and the first on the development side, which turned into the developer post above.

Feb 2023 - Aug 2024

IT Support Technician, JELD-WEN Eesti AS

Two internships at the same company, on the IT support side.

Education

2026 - present

Arukad süsteemid ja rakendusinfotehnoloogia, Tallinna Tehnikaülikool

Professional higher education in smart systems and applied information technology. Three and a half years at the Kohtla-Järve campus, taught in Estonian. Started August 2026, alongside the job.

2024 - 2026

Junior Developer, EQF level 4, Viljandi Kutsehariduskeskus

AI-driven development, and the programming groundwork that makes it work: object orientation and the basics you need to judge whether generated code is any good. Most of it was about directing the tools and catching their mistakes.

2021 - 2024

Junior IT Systems Specialist, EQF level 4, Rakvere Ametikool

Networks and hardware with hands on the kit: CAT 5e through CAT 7 terminated by hand, punched down to 110 blocks and keystone panels, and a rack of Cisco switches and routers cabled properly enough to keep using after it was graded. Also where I learned to coax a configuration page out of an access point too old for a modern browser to render one.

Open source

merged

X-Sense for Home Assistant #275

Every request to the recordings panel returned HTTP 500. A readiness check was shelling out to ffprobe on Home Assistant's event loop, once per cached clip. On an install with 85 clips that came to 130 blocking-call errors in three minutes. I traced the call chain, moved the check onto a flag recorded where blocking work is allowed, and the panel returned to HTTP 200 with none.

merged

zigbee-herdsman-converters #12992

A device definition for the EZVIZ CS-T10C leak sensor. The generated fallback published a raw alarm bitmap; this maps it to a water_leak sensor and drops the alarm bit the ZCL zone type never sets.

merged

zigbee2mqtt.io #5460

The photograph for that same sensor, cut to the documentation's 512 px transparent-PNG convention.

Projects

  • ha-relay-panel: Running a relay as a thermostat in Home Assistant means hand-writing an automation for every room. This panel puts relays on a board, binds each to a temperature sensor and a set point, and writes the automation itself. If a sensor goes unavailable, the relay switches off.
  • hyprland-dots: Most Hyprland setups stitch together other people's widgets, each with its own look and its own bugs. I wrote the whole shell in QML instead (bar, notifications, launcher and on-screen displays), so it all looks and behaves the same. It's what I run every day.
  • peaport: Running containers for other people means sharing SSH or handing out the engine socket, which is root on the host. Peaport puts Podman or Docker behind a web panel with per-user roles: containers, Compose stacks, images, volumes, networks and pods, plus encrypted secrets, an audit log, live metrics and a terminal in the browser.
  • cc2-commander: The Elegoo Centauri Carbon 2 has a single MQTT slot, so only one client can talk to it at a time. This service holds that slot and shares it: a web dashboard, Mainsail and Fluidd through a Moonraker-compatible API, Prometheus and Telegram all work at once. It began as a fork of runnane/elegoo-web.
  • wren: A file manager written from scratch with GTK4 and libadwaita. Tabs keep their own history, grid and list views show cached thumbnails, copies report progress and ask before overwriting, renames can be undone, and the keyboard shortcuts match Nautilus.
  • tailboard: A dozen self-hosted services means a dozen bookmarks and no idea which one is down. Tailboard puts them all on one page with their status, so I can see what's running and what's down in one place.
  • uptime-kuma-compact-theme: Uptime Kuma's status page wastes a wall-mounted screen: wide gaps, uptime numbers overlapping names, ragged heartbeat bars. This is one CSS file for the Custom CSS field that packs monitors into a full-width grid, with status-coloured uptime pills and bottom-aligned bars.
  • gcode-viewer: Checking a print before sending it meant opening a whole slicer just to look at the toolpath. Gcode Viewer opens a .gcode file on its own: orbit the model, scrub through layers, colour it by speed, feature or filament, and read off print time and filament use. It installs as the default app for .gcode files, with thumbnails in the file manager.
  • spawnpoint: Friends kept asking me to spin up Minecraft worlds, which meant an SSH session every time. Spawnpoint puts start, stop, backups and the server console in a browser, so they can do it without me.
  • ha-elering-ee: Estonian electricity prices swing hour to hour, but Home Assistant couldn't see them. This pulls Elering's hourly rates into a sensor, so an automation can hold the dishwasher until the cheap window.
  • estonian-id-decoder: An Estonian ID code holds a birth date, gender and checksum, but reading them by hand is easy to get wrong. This page decodes a code as you type: birth date, age, weekday, gender, serial number and whether the checksum holds. It runs entirely in the browser and sends nothing anywhere.
  • esc2pipe: Some keyboard layouts hide the pipe character behind a key combination a laptop can't produce. This plugin for fish makes Escape type a pipe instead.

Toolkit

Languages: Go, Python, TypeScript, JavaScript, Rust, PHP, Java, Shell, PowerShell, QML

Web and runtime: React, Next.js, Svelte, Node.js, Express, Bun, Gin, Vite, Tailwind CSS, jQuery, Nginx, Caddy, Apache

Data: MySQL, MariaDB, PostgreSQL, SQLite, Prisma, phpMyAdmin

Testing: Playwright, Vitest, Jest, pytest

Systems and networking: Linux, Windows, macOS, Active Directory, WireGuard, Tailscale, Cisco networking

Editors and tooling: Git, VS Code, VSCodium, Trello

Infrastructure and automation: Docker, Podman, Proxmox, Portainer, Ansible, Terraform, GitHub Actions, Prometheus, TrueNAS, DigitalOcean, ServiceNow

Self-hosted and smart home: Home Assistant, MQTT, Zigbee2MQTT, Node-RED, Uptime Kuma, Gitea, Jellyfin, Immich, AdGuard Home

Most used languages: JavaScript, HTML, Shell, TypeScript, Java, Python

Spoken languages: Estonian (Native), English (Professional working proficiency)