Skip to content
View floreabogdan's full-sized avatar
🌴
On vacation
🌴
On vacation

Sponsoring

@andrejsshell

Organizations

@KickedRo

Block or report floreabogdan

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
floreabogdan/README.md

Bogdan Florea

I build the unglamorous infrastructure other people's uptime sits on.

Kicked SRL florea.xyz AS210622 LinkedIn X


whoami

Infrastructure engineer in Pitești, România.

I run Kicked SRL — hosting, platform engineering and network operations — and I operate AS210622, our own multi-homed autonomous system. I also keep letcon.ro alive, which sells dev boards and sensors to Romanian makers, because someone has to.

Almost everything I publish falls out of running that network. If I have to build a thing twice, it ends up here.


AS210622

origin:     AS210622 · Kicked-SRL · RO · RIPE
inetnum:    81.181.164.0/24
inet6num:   2a14:7580:ffeb::/48, 2a14:7583:e200::/40
upstreams:  AS8708 (DIGI) · AS6718 (NAV) · AS52025 (Paradox)
ix:         BGP.Exchange AMS · BGP.Exchange BCN
rpki:       valid — every originated prefix signed
as-set:     AS210622:AS-KICKED
policy:     open — no contract, no ratio, v6 required

Registered February 2026. Three independent carriers, three PoPs, ~12 Gbps of transit, dual-stack and RPKI-signed end to end. Peering is open and I answer my mail.

PeeringDB · bgp.tools · RIPE


What I'm building

birdy
Go
Opinionated single-router BIRD 2.x BGP manager. One static binary, embedded web UI, SQLite model, full bird.conf renderer. RFC 8212 default-deny, RPKI validation and leak prevention are not options you enable — they're what it emits.
nftably
Go
A web UI for nftables that runs on the router. Detects the backend, shows the live IPv4+IPv6 ruleset, imports your old iptables. Single binary + SQLite.
domain-ip-scan
Python
Finds the real origin behind a reverse proxy by sweeping ranges. Written for my own recon, published once it kept being useful.
strapi-upload-minio
JavaScript
2022's accident. Still the most-used thing I've ever written.

The OSS journey

I didn't set out to maintain anything.

  • 2018docker-hugo, a patch to redux-wait-for-action. Config files and drive-by fixes. This is how everyone starts, and it's fine.
  • 2022strapi-upload-minio. I needed Strapi to talk to MinIO, the official plugin wouldn't, so I wrote one and pushed it. Ten stars and seven forks is not a movement — it's also the first time strangers ran my code in production. That reframed the whole thing.
  • 2023inverter-app: reading a Voltronic solar inverter over serial, because I owned one and the vendor's software was Windows-only.
  • 2025domain-ip-scan, straight out of security work.
  • 2026birdy, nftably, platbor. A different category entirely. These exist because I now operate a network, and the tools I wanted either bill per router or assume you're running a fleet.

The thread through all of it: every repo here started as a problem I actually had, then got cleaned up enough to hand to someone else. I don't ship libraries hoping for stars. I ship the thing after the second time I need it.

Licensing is deliberately permissive — birdy is 0BSD. Take it, fork it, don't credit me. Attribution was never the point.


On AI-assisted development

I build with AI assistants, heavily, and I'd rather say so on the front page than have you infer it from a commit diff.

The reasoning is unglamorous. One person cannot operate an autonomous system, run a company and ship three Go projects on the old ratio. What changed isn't that I stopped writing code — it's which code gets my hours. Less of the fifth CRUD handler, the table-driven tests, the cross-compile matrix for six targets. More of the part that needs an opinion: what the tool should refuse to do, what the default policy is, which BIRD knob deliberately does not get exposed.

The rules I actually hold to:

  • I own every line. birdy writes bird.conf to production routers. If it drops your session at 03:00, "the model wrote it" is not an answer I get to give.
  • Generated code is a draft. Review is the job now, and it's harder than typing ever was.
  • Blast radius sets the bar. A settings page and a route-policy renderer do not get the same scrutiny.
  • Taste doesn't come out of a model. Default-deny, validate RPKI, refuse to leak — those are decisions, and they're mine.

The tooling changed. The accountability didn't. If that's a dealbreaker, the source is right there — read it.


Stack

Go .NET Python JavaScript SQLite Linux Docker Kubernetes Ceph Prometheus OpenTelemetry BIRD nftables BGP


birdy nftably platbor domain-ip-scan strapi-upload-minio followers


Peering requests, infrastructure work, or an argument about default-deny → kicked.ro · florea.xyz

Pinned Loading

  1. birdy birdy Public

    Opinionated single-router BIRD 2.x BGP manager: one static Go binary, embedded web UI, SQLite model, full bird.conf renderer. Beta.

    Go 43 1

  2. nftably nftably Public

    A web UI for nftables that runs on your router — detect the backend, view the live IPv4+IPv6 ruleset, import iptables. Single Go binary + SQLite.

    Go 2

  3. ledgerlab ledgerlab Public

    A self-hosted personal finance workspace for actuals, plans, forecasts, and liabilities.

    TypeScript 1

  4. domain-ip-scan domain-ip-scan Public

    This project helps in cybersecurity tasks by scanning IP ranges to identify the real server behind a domain, bypassing reverse proxies like Cloudflare. It matches the domain's title to confirm the …

    Python 3

  5. csharp-otlp csharp-otlp Public

    .NET OTLP Environment

    5

  6. strapi-upload-minio strapi-upload-minio Public

    Unofficial minio upload plugin.

    JavaScript 10 7