# AS215248 - Notes

Build logs, lessons learned and updates from the AS215248 network project.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## The CSS rule that made a hidden field visible

DevFeed: [The CSS rule that made a hidden field visible](<https://devfeed.tech/articles/the-css-rule-that-made-a-hidden-field-visible-36155.md>)

Original publisher: [Read original article](<https://as215248.net/notes/the-hidden-attribute-lied/>)

Author: Bastiaan Brink

Published: 2026-08-02T00:00:00Z

Content type: opinion

Language: en

Sources: [AS215248 - Notes](<https://devfeed.tech/sources/as215248-notes.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [client](<https://devfeed.tech/topics/client.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [client](<https://devfeed.tech/tags/client.md>), [css](<https://devfeed.tech/tags/css.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [hidden](<https://devfeed.tech/tags/hidden.md>), [meta](<https://devfeed.tech/tags/meta.md>), [server](<https://devfeed.tech/tags/server.md>)

### AI overview

The article explains how a CSS rule overrode the HTML hidden attribute, making an operator-only field visible on a peering portal. The field was not a security leak because the server enforced an identity-based allowlist and returned 403 responses for unauthorized requests.

### Source excerpt

Every visitor could see an internal field on the peering portal. Not a leak -- the server never trusted it -- but a good reminder about how `hidden` actually works.

## Keeping the peering inventory honest

DevFeed: [Keeping the peering inventory honest](<https://devfeed.tech/articles/keeping-the-peering-inventory-honest-36152.md>)

Original publisher: [Read original article](<https://as215248.net/notes/keeping-the-inventory-honest/>)

Author: Bastiaan Brink

Published: 2026-07-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [AS215248 - Notes](<https://devfeed.tech/sources/as215248-notes.md>)

Topics: [Database](<https://devfeed.tech/topics/database.md>), [API](<https://devfeed.tech/topics/api.md>), [Job](<https://devfeed.tech/topics/job.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [automation](<https://devfeed.tech/tags/automation.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [database](<https://devfeed.tech/tags/database.md>), [ops](<https://devfeed.tech/tags/ops.md>), [peering](<https://devfeed.tech/tags/peering.md>), [python](<https://devfeed.tech/tags/python.md>), [scheduler](<https://devfeed.tech/tags/scheduler.md>)

### AI overview

The article describes keeping Peering Manager's inventory synchronized with router state by mirroring portal changes and running a 15-minute reconciliation job. It also documents API integration pitfalls and fixes a failed daily PeeringDB sync by pinning the service image to a digest.

### Source excerpt

A database that says you have a session is worthless if the router disagrees. A 15-minute reconcile keeps Peering Manager and the routers in step.

## Self-service peering with a PeeringDB login

DevFeed: [Self-service peering with a PeeringDB login](<https://devfeed.tech/articles/self-service-peering-with-a-peeringdb-login-36154.md>)

Original publisher: [Read original article](<https://as215248.net/notes/self-service-peering/>)

Author: Bastiaan Brink

Published: 2026-07-27T00:00:00Z

Content type: opinion

Language: en

Sources: [AS215248 - Notes](<https://devfeed.tech/sources/as215248-notes.md>)

Topics: [Networks](<https://devfeed.tech/topics/networks.md>), [OAuth](<https://devfeed.tech/topics/oauth.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [bgp](<https://devfeed.tech/tags/bgp.md>), [dashboard](<https://devfeed.tech/tags/dashboard.md>), [ipv4](<https://devfeed.tech/tags/ipv4.md>), [ipv6](<https://devfeed.tech/tags/ipv6.md>), [ixp](<https://devfeed.tech/tags/ixp.md>), [login](<https://devfeed.tech/tags/login.md>), [mail](<https://devfeed.tech/tags/mail.md>), [networks](<https://devfeed.tech/tags/networks.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [peering](<https://devfeed.tech/tags/peering.md>), [permission](<https://devfeed.tech/tags/permission.md>), [request](<https://devfeed.tech/tags/request.md>), [self-service](<https://devfeed.tech/tags/self-service.md>)

### AI overview

The article describes a self-service peering portal that uses PeeringDB OAuth to authenticate users, verify ASN update rights, and offer exchanges where both networks are present. Requests create disabled sessions for manual approval, with inherited filtering and validation policies, notifications, and approval-based removal.

### Source excerpt

Peering requests used to be mail ping-pong. Now you log in with PeeringDB on the peering page, pick an exchange, and the session is waiting for my approval.

## This site now runs on Astro, not WordPress

DevFeed: [This site now runs on Astro, not WordPress](<https://devfeed.tech/articles/this-site-now-runs-on-astro-not-wordpress-36151.md>)

Original publisher: [Read original article](<https://as215248.net/notes/hello-astro/>)

Author: Bastiaan Brink

Published: 2026-07-19T00:00:00Z

Content type: article

Language: en

Sources: [AS215248 - Notes](<https://devfeed.tech/sources/as215248-notes.md>)

Topics: [Astro](<https://devfeed.tech/topics/astro.md>), [WordPress](<https://devfeed.tech/topics/wordpress.md>), [data](<https://devfeed.tech/topics/data.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [astro](<https://devfeed.tech/tags/astro.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [dns](<https://devfeed.tech/tags/dns.md>), [git](<https://devfeed.tech/tags/git.md>), [meta](<https://devfeed.tech/tags/meta.md>), [network](<https://devfeed.tech/tags/network.md>), [rpki](<https://devfeed.tech/tags/rpki.md>), [static](<https://devfeed.tech/tags/static.md>), [static-site](<https://devfeed.tech/tags/static-site.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [website](<https://devfeed.tech/tags/website.md>), [wordpress](<https://devfeed.tech/tags/wordpress.md>)

### AI overview

The author explains why as215248.net was rebuilt from WordPress as a static Astro site. The site now generates static HTML without a database, PHP, or admin panel, while scripts fetch live network data from services including Globalping, PeeringDB, RIPEstat, RDAP, the NTP Pool, and Tor Metrics. A Git-based process rebuilds and republishes the site daily behind a Cloudflare Tunnel.

### Source excerpt

Why I rebuilt as215248.net as a static site, and what it does now -- a live Looking Glass, auto-synced PeeringDB data, and a world map of presence.

## Reaching 90+ internet exchanges as a one-person network

DevFeed: [Reaching 90+ internet exchanges as a one-person network](<https://devfeed.tech/articles/reaching-90-internet-exchanges-as-a-one-person-network-36153.md>)

Original publisher: [Read original article](<https://as215248.net/notes/remote-peering/>)

Author: Bastiaan Brink

Published: 2026-05-24T00:00:00Z

Content type: article

Language: en

Sources: [AS215248 - Notes](<https://devfeed.tech/sources/as215248-notes.md>)

Topics: [Internet](<https://devfeed.tech/topics/internet.md>), [Network](<https://devfeed.tech/topics/network.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>)

Tags: [bgp](<https://devfeed.tech/tags/bgp.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [hobby](<https://devfeed.tech/tags/hobby.md>), [internet](<https://devfeed.tech/tags/internet.md>), [ipv6](<https://devfeed.tech/tags/ipv6.md>), [irr](<https://devfeed.tech/tags/irr.md>), [network](<https://devfeed.tech/tags/network.md>), [operator](<https://devfeed.tech/tags/operator.md>), [peering](<https://devfeed.tech/tags/peering.md>), [personal](<https://devfeed.tech/tags/personal.md>), [remote-peering](<https://devfeed.tech/tags/remote-peering.md>), [rpki](<https://devfeed.tech/tags/rpki.md>)

### AI overview

This article explains how the one-person network AS215248 participates in more than 90 internet exchanges across two dozen countries using hardware in Amsterdam and remote peering. It describes an open peering policy, IPv6 support, and route validation with RPKI and IRR.

### Source excerpt

A hobby AS doesn't need a rack in every city. A little hardware in Amsterdam plus remote peering goes a surprisingly long way.