A normal workday in Kyiv during blackouts, hour by hour (with my power setup)
Generator, two power banks, Starlink, and a Danish team that learned to read my status emoji
Contents
Few people asked after my air raid deploy post how a normal day looks. So here is one. Not the worst day, not the best. Tuesday. I work remote for a Danish company, Go and Postgres, team of 6. Kyiv is one hour ahead of Copenhagen, which is the only easy part.
06:40
Wake up, before coffee I check the outage schedule in the energy company app and in our district Telegram channel. Kyiv is split in groups, my building is group 3. Today schedule says power until 10:00, then off until 14:00, then on, then off again in evening. Schedule is a suggestion. After a big attack, schedule is fiction.
07:00
Coffee while there is power. Everything with a battery goes on charge. Laptop, both power banks, headphones, phone, the power station, the head torch. This is a reflex now, like checking you have keys.
07:30 to 10:00
Heavy work while grid is on. This is the main trick of the whole post: do expensive things when power is cheap. Docker builds, pulling images, running full test suite, big git operations, updates. On battery I only write code and review.
10:00, power off
Lights go. Fridge stops. Router does not even blink, because router and fiber terminal (ONT) are on a small DC UPS, 12V output. Cost me around 30 dollars, it is the best 30 dollars I ever spent. Our fiber provider has batteries on their side too, so fiber usually lives for some hours. Laptop switches to battery, monitor goes to the power station (1 kWh, LiFePO4).
Laptop plus 27 inch monitor is around 60-70 W. So in theory 14 hours, in practice 10 because of inverter loss. Without monitor much longer, so when it is long outage I work on laptop screen only and feel old.
11:00, standup
Camera on if fiber is alive, camera off if I am on LTE. My team knows the emoji protocol, which I wrote once in our channel and never had to explain again:
- 🟢 grid power, full speed, normal me
- 🟡 on battery, I answer slower, no big calls
- 🔴 air raid alert, maybe offline, do not wait for me
I even automated the first two, because I forgot to change it all the time. Small script on cron every 2 minutes:
#!/usr/bin/env bash
# tell the team when I switch between grid and battery
STATE_FILE="$HOME/.power_state"
AC=$(cat /sys/class/power_supply/AC/online 2>/dev/null || echo 1)
PCT=$(cat /sys/class/power_supply/BAT0/capacity)
if [ "$AC" = "1" ]; then NOW="grid"; else NOW="battery"; fi
[ "$NOW" = "$(cat "$STATE_FILE" 2>/dev/null)" ] && exit 0
echo "$NOW" > "$STATE_FILE"
if [ "$NOW" = "grid" ]; then MSG="🟢 power back, full speed"; else MSG="🟡 on battery ($PCT%), slower replies"; fi
curl -s -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"oleksii: $MSG\"}" "$SLACK_WEBHOOK_URL" > /dev/null
Check ls /sys/class/power_supply/ first, on my ThinkPad it is AC, on other laptops it is ACAD or ADP1.
12:30, alert
Phone screams. I check monitoring channels what is flying and where. If it is drones far away, I stay and move to corridor (two walls rule). If it is missiles, I go to shelter in the basement of the next building with laptop and one power bank. I posted 🔴, nobody asked anything. Once I did a code review from the shelter, sitting on a child's chair. The review was very short and very honest.
14:00, power back
Charge order: power station first, then laptop, then everything else. Then all the heavy things I postponed. Pull, build, push. Small commits all day, by the way: if laptop dies, I lose 10 minutes, not a day.
The generator and Starlink
Our building has a shared generator downstairs that runs elevator and stairs light during outages. I have a small inverter generator too, it lives outside, never inside, I will not die from carbon monoxide after surviving all of this. Starlink is the last resort: it eats 50-70 W, so it only goes on when fiber and LTE are both dead, which happens after big attacks on infrastructure.
Evening
Second outage. Dinner by head torch. If night is loud, we sleep in corridor. My Danish manager once asked how I sleep. I said "in corridor, quite well actually". He moved the next morning meeting without me asking.
(not my photo, but exactly my evening mood)
What I learned, short version
- Expensive work when grid is on. Writing code is cheap, building it is expensive.
- Vendor your dependencies.
go mod vendorand the build does not care if the module proxy is reachable. - Small commits, push often.
- 12V DC UPS for router and ONT. Check what voltage your ONT wants.
- Explain your protocol to the team once, clearly, then never apologise again.
- LiFePO4 power station, not cheap lithium one. Many more cycles, and you will do many cycles.
That's it. A normal Tuesday. Postgres was fine. I was mostly fine)))
Written by
Oleksii Bondarenko
Backend dev, Go and Postgres. Kyiv, still here. Generator, two power banks, Starlink, coffee. Remote for a Danish company. Не здаємось.
Get the best of #remote_life weekly
One email each Monday with the most useful posts. No spam; unsubscribe in one click.
Comments
Sign in to join the conversation.
Sign in to comment