From a3a6c652dfdc450f014df0a67b0890acdec4a7ce Mon Sep 17 00:00:00 2001 From: Bobby <30593201+luciferreeves@users.noreply.github.com> Date: Tue, 10 Mar 2026 23:31:47 +0530 Subject: Add bios and signatures pages to enhance personal website content - Created a new bios.html file featuring a collection of personal statements and interests, reflecting a nostalgic and creative approach to web design. - Added a signatures.html file with various playful and engaging messages, encouraging visitors to explore the site and embrace the spirit of the indie web. --- scripts/seed.sh | 287 +++++++++++++++++++++++++++++++++++++++++++++------ seed/bios.html | 109 +++++++++++++++++++ seed/signatures.html | 60 +++++++++++ 3 files changed, 422 insertions(+), 34 deletions(-) create mode 100644 seed/bios.html create mode 100644 seed/signatures.html diff --git a/scripts/seed.sh b/scripts/seed.sh index 59971dc..4cded48 100755 --- a/scripts/seed.sh +++ b/scripts/seed.sh @@ -2,60 +2,279 @@ set -euo pipefail DB_PATH="shrine/pagoda.db" +SEED_DIR="seed" if [ ! -f "$DB_PATH" ]; then echo "Database not found at $DB_PATH" exit 1 fi -HASH=$(npx -y bcryptjs-cli password 2>/dev/null) -OWNER_DATE=$(date -v-4m +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date -d "4 months ago" +"%Y-%m-%dT%H:%M:%SZ") - -echo "Generating 99 unique citizens..." -npx -y @faker-js/cli firstName >/dev/null 2>&1 -FAKER_MODULES=$(find ~/.npm/_npx -path "*/@faker-js/cli/bin/faker.js" -print -quit 2>/dev/null) -FAKER_MODULES="${FAKER_MODULES%/@faker-js/cli/bin/faker.js}" - -NAMES=$(NODE_PATH="$FAKER_MODULES" node -e " -var f = require('@faker-js/faker').faker; -var now = Date.now(); -var threeMonthsAgo = new Date(now); -threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3); -var range = now - threeMonthsAgo.getTime(); -var seen = new Set(); -while (seen.size < 99) { - var first = f.person.firstName(); - var username = first.toLowerCase().replace(/[^a-z]/g, ''); - if (username.length >= 3 && username.length <= 32 && !seen.has(username)) { - seen.add(username); - var last = f.person.lastName(); - var joinDate = new Date(threeMonthsAgo.getTime() + Math.random() * range).toISOString().replace(/\.\d{3}Z/, 'Z'); - console.log(username + '|' + first + ' ' + last + '|' + joinDate); - } +EXISTING=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM users;") +if [ "$EXISTING" -gt 0 ]; then + echo "Database already has $EXISTING users, skipping seed" + exit 0 +fi + +HASH=$(htpasswd -nbBC 10 "" password | cut -d: -f2) + +FIRST_NAMES=( + Aiko Bram Cleo Dax Elara Fern Gideon Hana Idris Jade + Kael Luna Milo Nyx Orion Piper Quinn Rune Sage Thorn + Uma Vesper Wren Xara Yuki Zara Asher Blaze Cedar Dove + Echo Flint Haven Ivy Jet Kit Lark Moss Nova Onyx + Pearl Quill Rain Sky Terra Vale Wolf Yew Zen Aria + Bay Coral Drift Elm Fox Gale Hawk Iris Juniper Kai + Leaf Maple Nimbus Oak Pine River Storm Thistle Umber Violet + Willow Birch Cliff Dawn Eve Frost Glen Heath Kite Lotus + Meadow Night Olive Petal Reed Sol Tide Vine Wynn Briar + Cloud Dune Fable Grove Haze Isle Kelp Lyric Mars Nectar + Opal Plum Robin Star Twig Veil Wave Yarrow Zinnia Aster + Brook Cinder Delta Ember Fjord Garnet Holly Indigo Jasper Lichen + Mist Nettle Orbit Poppy Reef Sable Talon Vapor Wisp Aspen + Brine Cobalt Dew Eon Flame Glint Heather Ink Knoll Lumen + Moth Nile Pixel Quartz Ripple Shade Torrent Umbra Verge Zephyr +) + +LAST_NAMES=( + Ashworth Blackwood Clearwater Duskfall Evergreen Foxglove Goldleaf Hawthorn + Ironbark Junewood Keelshore Larkspur Moonvale Nightbloom Oakshade Pinecrest + Quillstone Ravenhill Silverbrook Thornwick Underhill Verdant Westwind Zenith + Ashford Birchwood Copperfield Dawnstar Elderwood Fernside Greymist Holloway + Icemere Jadeheart Kestrel Lakeshore Mossglen Northlight Overbrook Peakwood + Quicksilver Rosewood Stonebridge Tidewater Umbervale Vineheart Wildmere Ashcroft + Brightwell Coldspring Deepwood Evenfall Frostmere Glendale Hartwood Ivybridge + Jasperfall Kirkwood Longmeadow Millbrook Newgrove Oldfield Ridgemont Sundale + Thistlewood Upland Valewood Wintermere Brookfield Creekside Dellwood Eastmore + Fairhaven Greenwood Highcliff Inkwell Lakewood Nightvale Pondcress Rustwood +) + +PRONOUNS=( + "zir/zem" "voi/vol" "qui/quem" "sol/solis" "lux/luxis" + "nim/nir" "dra/drem" "pix/pixis" "nyx/nyxis" "vex/vir" + "kal/kis" "ryn/rynis" "zel/zem" "orb/orbis" "mox/moxis" + "jin/jinis" "tav/tavis" "wren/wrenis" "flux/fluxis" "ash/ashis" + "glyph/glyphir" "hex/haxis" "nil/nilis" "arc/arcis" "cyr/cyris" + "dex/dexis" "fen/fenis" "kez/kezis" "nym/nymis" "thri/threm" +) + +LOCATIONS=( + "Portland, Oregon" "London, England" "Tokyo, Japan" "Berlin, Germany" "Melbourne, Australia" + "Toronto, Canada" "Brooklyn, New York" "Seattle, Washington" "Amsterdam, Netherlands" "Seoul, South Korea" + "Austin, Texas" "Glasgow, Scotland" "Lisbon, Portugal" "Chicago, Illinois" "Stockholm, Sweden" + "Vancouver, Canada" "Dublin, Ireland" "Paris, France" "Denver, Colorado" "Cape Town, South Africa" + "San Francisco, California" "Helsinki, Finland" "Singapore" "Oslo, Norway" "Montreal, Canada" + "Osaka, Japan" "Manchester, England" "Barcelona, Spain" "Wellington, New Zealand" "Reykjavik, Iceland" + "Buenos Aires, Argentina" "Prague, Czech Republic" "Bangkok, Thailand" "Taipei, Taiwan" "Nairobi, Kenya" + "Lima, Peru" "Kyoto, Japan" "Edinburgh, Scotland" "Bologna, Italy" "Zurich, Switzerland" + "Copenhagen, Denmark" "Marrakech, Morocco" "Hanoi, Vietnam" "Bogota, Colombia" "Tallinn, Estonia" + "Krakow, Poland" "Kuala Lumpur, Malaysia" "Mumbai, India" "Mexico City, Mexico" "Christchurch, New Zealand" +) + +BIOS=() +while IFS= read -r line; do + [ -n "$line" ] && BIOS+=("$line") +done < "$SEED_DIR/bios.html" + +SIGS=() +while IFS= read -r line; do + [ -n "$line" ] && SIGS+=("$line") +done < "$SEED_DIR/signatures.html" + +BIO_COUNT=${#BIOS[@]} +SIG_COUNT=${#SIGS[@]} + +TOTAL_USERS=$(( RANDOM % 31 + 120 )) +CITIZEN_COUNT=$(( TOTAL_USERS - 1 )) + +ADMIN_COUNT=$(( CITIZEN_COUNT * 2 / 100 )) +MOD_COUNT=$(( CITIZEN_COUNT * 3 / 100 )) +BANNED_COUNT=$(( CITIZEN_COUNT * 4 / 100 )) +DISABLED_COUNT=$(( CITIZEN_COUNT * 3 / 100 )) +UNVERIFIED_COUNT=$(( CITIZEN_COUNT * 5 / 100 )) +[ "$ADMIN_COUNT" -lt 1 ] && ADMIN_COUNT=1 +[ "$MOD_COUNT" -lt 1 ] && MOD_COUNT=1 +[ "$BANNED_COUNT" -lt 1 ] && BANNED_COUNT=1 +[ "$DISABLED_COUNT" -lt 1 ] && DISABLED_COUNT=1 +[ "$UNVERIFIED_COUNT" -lt 1 ] && UNVERIFIED_COUNT=1 + +SLOTS=() +for ((i=0; i0; i--)); do + j=$(( RANDOM % (i + 1) )) + tmp=${SLOTS[$i]}; SLOTS[$i]=${SLOTS[$j]}; SLOTS[$j]=$tmp +done + +BIO_MAP="" +for ((i=0; i0; i--)); do + j=$(( RANDOM % (i + 1) )) + tmp=${SIG_POOL[$i]}; SIG_POOL[$i]=${SIG_POOL[$j]}; SIG_POOL[$j]=$tmp +done + +SIG_MAP="" +for ((i=0; i/dev/null || date -d "3 months ago" +%s) +ONE_MONTH_AGO=$(date -v-1m +%s 2>/dev/null || date -d "1 month ago" +%s) +ONE_MONTH_AHEAD=$(date -v+1m +%s 2>/dev/null || date -d "1 month" +%s) +FOUR_MONTHS_AGO=$(date -v-4m +%s 2>/dev/null || date -d "4 months ago" +%s) + +OWNER_DATE=$(date -r $FOUR_MONTHS_AGO +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date -d "@$FOUR_MONTHS_AGO" +"%Y-%m-%dT%H:%M:%SZ") +OWNER_SEEN=$(date -u +"%Y-%m-%dT%H:%M:%SZ") +OWNER_BIO='

A really awesome cool slick ninja dinosaur thingy

' +OWNER_SIG='

Love and Ciao

' SQL_FILE=$(mktemp) trap "rm -f $SQL_FILE" EXIT -printf '%s' "INSERT OR IGNORE INTO users (username, email, password_hash, display_name, role, email_verified, created_at, updated_at) VALUES " > "$SQL_FILE" -printf '%s' "('cr', 'cr@pagoda.local', '${HASH}', 'Bobby', 'owner', 1, '${OWNER_DATE}', '${OWNER_DATE}')" >> "$SQL_FILE" +escape_sql() { + printf '%s' "$1" | sed "s/'/''/g" +} + +echo "BEGIN TRANSACTION;" > "$SQL_FILE" + +OWNER_BIO_ESC=$(escape_sql "$OWNER_BIO") +OWNER_SIG_ESC=$(escape_sql "$OWNER_SIG") +cat >> "$SQL_FILE" << OWNERSQL +INSERT OR IGNORE INTO users ( + username, email, password_hash, display_name, role, email_verified, + jade, honor, pronouns, location, bio, signature, birthday, last_seen_at, + ip, created_at, updated_at +) VALUES ( + 'master', 'master@pagoda.local', '${HASH}', 'Master', 'owner', 1, + 1000, 500, 'sol/solis', 'The Cloud', + '${OWNER_BIO_ESC}', '${OWNER_SIG_ESC}', + '1904-03-15T00:00:00Z', '${OWNER_SEEN}', + '127.0.0.1', '${OWNER_DATE}', '${OWNER_DATE}' +); +OWNERSQL + +echo "Generating $CITIZEN_COUNT citizens..." + +USED_USERNAMES="|" COUNT=0 -while IFS='|' read -r USERNAME DISPLAY JOIN_DATE; do - DISPLAY=$(echo "$DISPLAY" | sed "s/'/''/g") +for ((i=0; i/dev/null || date -d "@$JOIN_EPOCH" +"%Y-%m-%dT%H:%M:%SZ") + + SEEN_OFFSET=$(( RANDOM % (7 * 24 * 3600) )) + SEEN_EPOCH=$(( NOW_EPOCH - SEEN_OFFSET )) + LAST_SEEN=$(date -r $SEEN_EPOCH +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date -d "@$SEEN_EPOCH" +"%Y-%m-%dT%H:%M:%SZ") + + BDAY_EPOCH=$(random_date_between $ONE_MONTH_AGO $ONE_MONTH_AHEAD) + BDAY_MONTH=$(date -r $BDAY_EPOCH +"%m" 2>/dev/null || date -d "@$BDAY_EPOCH" +"%m") + BDAY_DAY=$(date -r $BDAY_EPOCH +"%d" 2>/dev/null || date -d "@$BDAY_EPOCH" +"%d") + BIRTHDAY="1904-${BDAY_MONTH}-${BDAY_DAY}T00:00:00Z" + + JADE=$(( RANDOM % 500 )) + HONOR=$(( RANDOM % 200 )) + + BIO="" + SIG="" + if [[ "$BIO_MAP" == *",${i}:"* ]]; then + BIO_IDX=$(echo "$BIO_MAP" | sed "s/.*,${i}:\([0-9]*\),.*/\1/") + BIO=$(escape_sql "${BIOS[$BIO_IDX]}") + fi + if [[ "$SIG_MAP" == *",${i}:"* ]]; then + SIG_IDX=$(echo "$SIG_MAP" | sed "s/.*,${i}:\([0-9]*\),.*/\1/") + SIG=$(escape_sql "${SIGS[$SIG_IDX]}") + fi + + ROLE="member" + EMAIL_VERIFIED=1 + BANNED=0 + BANNED_AT="" + BANNED_REASON="" + BANNED_BY="" + DISABLED=0 + DISABLED_AT="" + DISABLED_REASON="" + DISABLED_BY="" + LINE_NUM=$(( i + 1 )) + + if [ "$LINE_NUM" -le "$ADMIN_COUNT" ]; then + ROLE="admin" + elif [ "$LINE_NUM" -le "$((ADMIN_COUNT + MOD_COUNT))" ]; then + ROLE="moderator" + elif [ "$LINE_NUM" -le "$((ADMIN_COUNT + MOD_COUNT + BANNED_COUNT))" ]; then + BANNED=1 + BANNED_AT="'${JOIN_DATE}'" + BANNED_REASON="'Violated community guidelines'" + BANNED_BY=1 + elif [ "$LINE_NUM" -le "$((ADMIN_COUNT + MOD_COUNT + BANNED_COUNT + DISABLED_COUNT))" ]; then + DISABLED=1 + DISABLED_AT="'${JOIN_DATE}'" + DISABLED_REASON="'Account temporarily suspended'" + DISABLED_BY=1 + elif [ "$LINE_NUM" -le "$((ADMIN_COUNT + MOD_COUNT + BANNED_COUNT + DISABLED_COUNT + UNVERIFIED_COUNT))" ]; then + EMAIL_VERIFIED=0 + fi + + DISPLAY_ESC=$(escape_sql "$DISPLAY_NAME") + LOC_ESC=$(escape_sql "$LOC") - printf '%s' ", ('${USERNAME}', '${USERNAME}@pagoda.local', '${HASH}', '${DISPLAY}', 'member', 1, '${JOIN_DATE}', '${JOIN_DATE}')" >> "$SQL_FILE" + printf "INSERT OR IGNORE INTO users (username, email, password_hash, display_name, role, email_verified, jade, honor, pronouns, location, bio, signature, birthday, last_seen_at, account_banned, banned_at, banned_reason, banned_by, account_disabled, disabled_at, disabled_reason, disabled_by, ip, created_at, updated_at) VALUES ('%s', '%s@pagoda.local', '%s', '%s', '%s', %s, %s, %s, '%s', '%s', '%s', '%s', '%s', '%s', %s, %s, %s, %s, %s, %s, %s, %s, '127.0.0.1', '%s', '%s');\n" \ + "$USERNAME" "$USERNAME" "$HASH" "$DISPLAY_ESC" "$ROLE" "$EMAIL_VERIFIED" \ + "$JADE" "$HONOR" "$PRONOUN" "$LOC_ESC" "$BIO" "$SIG" \ + "$BIRTHDAY" "$LAST_SEEN" \ + "$BANNED" "${BANNED_AT:-NULL}" "${BANNED_REASON:-NULL}" "${BANNED_BY:-NULL}" \ + "$DISABLED" "${DISABLED_AT:-NULL}" "${DISABLED_REASON:-NULL}" "${DISABLED_BY:-NULL}" \ + "$JOIN_DATE" "$JOIN_DATE" >> "$SQL_FILE" COUNT=$((COUNT + 1)) - echo " [$COUNT/99] $USERNAME ($DISPLAY)" -done <<< "$NAMES" + STATUS="" + if [ "$BANNED" -eq 1 ]; then STATUS=" [banned]"; + elif [ "$DISABLED" -eq 1 ]; then STATUS=" [disabled]"; + elif [ "$EMAIL_VERIFIED" -eq 0 ]; then STATUS=" [unverified]"; + elif [ "$ROLE" != "member" ]; then STATUS=" [$ROLE]"; + fi + echo " [$COUNT/$CITIZEN_COUNT] $USERNAME ($DISPLAY_NAME)$STATUS" +done -echo ";" >> "$SQL_FILE" +echo "COMMIT;" >> "$SQL_FILE" echo "Inserting into database..." sqlite3 "$DB_PATH" < "$SQL_FILE" TOTAL=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM users;") -echo "Done. Total users: $TOTAL" \ No newline at end of file +echo "Done. Total users: $TOTAL (admins: $ADMIN_COUNT, mods: $MOD_COUNT, banned: $BANNED_COUNT, disabled: $DISABLED_COUNT, unverified: $UNVERIFIED_COUNT)" \ No newline at end of file diff --git a/seed/bios.html b/seed/bios.html new file mode 100644 index 0000000..0fd4b2d --- /dev/null +++ b/seed/bios.html @@ -0,0 +1,109 @@ +

just a small web enthusiast making things on the internet
i collect blinkies and web badges like they're going out of style (they did, that's the point)

+

dreaming in hex colors since 2003

html css and vibes. no javascript allowed on my lawn
current mood: ๐ŸŒ™

+

welcome to my corner of the web!

interests: pixel art, retro gaming, web design, cats
currently playing: something old and good

+

professional internet explorer (not the browser) ๐Ÿ”

i make websites for fun and refuse to learn react
the old web was better and i will die on this hill

+

hi i'm a digital gardener tending my little web plot ๐ŸŒฑ
if you like what you see, sign my guestbook!

+

STATUS: perpetually under construction ๐Ÿšง

webmaster, pixel pusher, css wizard
making the web weird again one div at a time

+

๐ŸŽต linux user, pixel artist, coffee drinker ๐ŸŽต

building my own little world out of html and spite
powered by ramen and determination

+

i put the fun in function

amateur coder who thinks tables for layout was peak web design

+

nostalgic for the early web โœจ geocities refugee

skills: html, css, ms paint, being online too much

+

โญ collector of web things โญ
buttons, blinkies, stamps, and bad opinions

i have mass amounts of bookmarks and zero regrets

+

hi!! i like drawing and making websites ๐ŸŽจ
my art is mediocre but my css is immaculate

+

yo i just think personal websites are neat

recovering social media addict. this is my therapy
๐Ÿ–ฅ๏ธ best viewed in 1024x768

+

you have entered my domain

i write code during the day and worse code at night
hobbyist web developer since dial-up was a thing

+

๐ŸŒธ amateur photographer and web designer ๐ŸŒธ

i believe in the small web and also in naps

+

web revival is real and i'm here for every pixel of it

musician, artist, professional overthinker
๐ŸŽธ check out my music page!

+

i spend too much time customizing my site and not enough time adding content

it's about the journey not the destination (the journey is CSS)

+

๐Ÿฑ cat parent, tea enthusiast, web builder

started making websites in middle school and never stopped
frames and marquees forever

+

just here to vibe and make weird little websites
my code is spaghetti and i wouldn't have it any other way ๐Ÿ

+

old soul on the new web ๐Ÿ’พ

fav things: bitmap fonts, tiled backgrounds, visitor counters
keeping the spirit of web 1.0 alive

+

๐Ÿฆ‡ creature of the night and the internet ๐Ÿฆ‡

gothic web design is an art form and i am its humble practitioner

+

hello world! ๐Ÿ‘‹
i like to tinker with things on the web

forever adding new pages to my site that i will never finish

+

part-time webmaster, full-time nerd ๐Ÿค“

i think every person deserves their own website
the algorithm-free web is the best web

+

๐ŸŒˆ making colorful things on the internet since forever

designer by trade, web nerd by choice

+

i don't have a brand, i have a website. there's a difference

current hyperfixation: CSS art
previous hyperfixation: also CSS art

+

๐Ÿ•น๏ธ retro game collector and web tinkerer

my website has more pages than visitors and that's ok

+

local weirdo making websites in the year 20XX
anti-minimalism activist ๐ŸŽช

more is more

+

๐Ÿต tea, code, repeat

freelance illustrator who spends more time on their personal site than on client work

+

in a committed relationship with my text editor

full stack web developer (html + css = full stack right?)

+

๐ŸŒป spreading good vibes across the world wide web

i believe in under construction gifs and background music autoplay

+

if you're reading this, you're cool ๐Ÿ˜Ž

internet archaeologist and web preservationist
save the web!

+

๐Ÿธ frog enthusiast and html hobbyist

my website is my magnum opus (it has three pages)

+

bookworm, writer, and amateur web designer ๐Ÿ“š

i write poetry and pretend people read it

+

hi i'm just here because social media is bad
now i have a website instead and it's significantly cooler

+

๐ŸŽฎ gamer, coder, professional procrastinator

speedrunning website development (badly)

+

the internet used to be a place of wonder and it can be again

โ˜€๏ธ optimist about the future of the personal web

+

๐ŸŽญ artist, writer, maker of things

my website is my gallery, my diary, and my soapbox all in one

+

aspiring web wizard ๐Ÿง™
currently learning: everything
currently knowing: approximately nothing

+

๐ŸŒŠ ocean lover and web surfer (literally)

surfing the web the way it was meant to be surfed

+

indie web advocate and pixel art dabbler

hot take: your website doesn't need to be useful, it just needs to be yours

+

๐Ÿ„ mushroom forager and website forager

i find cool websites in the wild and add them to my links page

+

night owl coder ๐Ÿฆ‰
best work happens between midnight and 4am

this is not a healthy lifestyle but it is mine

+

๐Ÿช space nerd with a website

my site has a starfield background and i will not apologize

+

plant parent ๐ŸŒฟ web parent ๐ŸŒ

both my plants and my websites need more attention than i give them

+

just vibing in my little html house ๐Ÿ 

established: whenever i felt like it

+

๐ŸŽต musician who codes and coder who musics ๐ŸŽต

my website has an embedded midi player and i think that's beautiful

+

critter enthusiast and web architect ๐Ÿพ

every website should have an animals page. this is not negotiable

+

๐Ÿ–Œ๏ธ illustrator by day, webmaster by night

my website is held together by willpower and z-index hacks

+

cottagecore but make it webcore ๐ŸŒพ๐Ÿ’ป

cozy websites for cozy people

+

๐Ÿ”ฎ digital witch brewing websites in my cauldron

ingredients: html, css, a sprinkle of javascript, and three newt eyes

+

i have opinions about fonts and i will share them

typography nerd and web design enthusiast ๐Ÿ“

+

๐Ÿ”๏ธ mountain dweller making websites from the wilderness

my internet connection is questionable but my website is not

+

recovering perfectionist learning to just ship it ๐Ÿš€

my website is done when i say it's done (it's never done)

+

๐Ÿงถ fiber artist who also weaves the web

knitting patterns and html have more in common than you think

+

chronically online since before it was a thing ๐Ÿ’€

achievement unlocked: 20+ years of being on the internet

+

๐ŸŽช ringmaster of my own little internet circus

step right up and see the amazing blinking text!

+

solarpunk web designer โ˜€๏ธ๐ŸŒฟ

building a better internet, one sustainable website at a time

+

๐ŸŽฒ tabletop gamer and web hobbyist

rolled a nat 20 on website building. rolled a nat 1 on updating it regularly

+

i think websites should sparkle โœจ

if your website doesn't have at least one gif, what are you even doing

+

๐Ÿงช mad scientist of web design

my experiments are questionable but my enthusiasm is unmatched

+

quiet person, loud website ๐Ÿ“ข

i let my html speak for me

+

๐ŸŒ™ nocturnal web builder

all of my best design decisions were made at 3am and most of them were bad

+

vintage web collector ๐Ÿ“ผ

i archive old websites like people archive vinyl records
preservation matters

+

๐Ÿ busy bee making honeycombs of html

my website is sweet and i'm proud of it

+

aspiring polymath, actual procrastinator ๐Ÿคท

interests: too many. websites: also too many. finished projects: zero

+

๐Ÿดโ€โ˜ ๏ธ sailing the indie web seas

arr, matey, have ye signed me guestbook?

+

film photography nerd and website builder ๐Ÿ“ท

both my photos and my websites have that grainy analog charm

+

๐ŸฆŠ fox lover and web tinkerer

firefox is the best browser and i accept no debate on this matter

+

i peaked when i learned how to center a div

it's all downhill from here (and i'm enjoying the ride)

+

๐ŸŒบ tropical vibes, digital life

making websites from paradise (my room with a desk fan)

+

the web is a canvas and i refuse to paint inside the lines ๐ŸŽจ

embrace chaos. embrace tables. embrace the blink tag

+

๐ŸงŠ cool and normal person with a cool and normal website

(the website has flame gifs and a skull cursor)

+

train enthusiast who also rides the information superhighway ๐Ÿš‚

next stop: my website

+

๐ŸŒต desert dweller with an oasis of a website

dry humor, warm climate, hot takes about web design

+

baker and coder ๐Ÿฐ

both involve following recipes, making a mess, and hoping for the best

+

๐ŸŽญ theater kid energy but for websites

every page is a stage and every visitor is my audience

+

i've been on the internet too long to remember what grass looks like ๐ŸŒพ

but at least my website is nice

+

๐Ÿชด slowly growing my website like a bonsai tree

patience, care, and strategic pruning of dead links

+

map nerd and web cartographer ๐Ÿ—บ๏ธ

exploring the indie web and charting its many wonders

+

๐Ÿ  introvert who built their dream house out of html

visitors welcome. shoes off at the door please

+

chaotic good web designer ๐ŸŽฒ

i follow no grid system and answer to no framework

+

๐Ÿ‰ here be dragons (and also my website)

fantasy nerd who builds websites instead of DnD campaigns now

+

my browser has 47 tabs open and one of them is my own website ๐Ÿท๏ธ

i will close them eventually (i will not)

+

๐ŸŽธ punk rock attitude, pixel art aesthetic

DIY websites for a DIY world. corporate web can get lost

+

friendly neighborhood webmaster ๐Ÿ•ธ๏ธ

with great html comes great responsibility

+

๐Ÿง life is short. eat cake. make websites

in that order. always in that order

+

haunting the internet like a friendly ghost ๐Ÿ‘ป

boo! (did i scare you? no? ok. look at my website instead)

+

๐ŸŽจ color theory obsessed web designer

i have spent 3 hours choosing between two shades of blue that are identical

+

robot in disguise ๐Ÿค–

just kidding. i'm a human who makes websites. beep boop

+

๐ŸŒป spreading sunshine across the world wide web

one cheerful webpage at a time

+

i write code like i write poetry: badly but with great passion ๐Ÿ“

roses are red, violets are blue, my div won't center, i don't know what to do

+

๐Ÿ—๏ธ keeper of links and curator of the obscure

if you need a website about something weird, i probably have it bookmarked

+

making websites is my love language ๐Ÿ’Œ

gifts of service (web services, specifically)

+

โ˜• fueled entirely by caffeine and nostalgia

daily routine: wake up, coffee, check neocities, code, sleep, repeat

+

๐ŸŒˆ life's too short for boring websites

if it doesn't have at least 5 colors on the homepage, i'm not interested

+

time traveler from web 1.0 ๐Ÿ•ฐ๏ธ

i've seen things you wouldn't believe. animated construction workers. dancing babies. webring after webring...

+

๐Ÿงต threading pixels together since forever

cross stitch enthusiast who learned that pixel art is basically the same thing

+

i take my websites seriously and nothing else ๐Ÿƒ

professional goofball, amateur webmaster

+

๐ŸŒง๏ธ rainy day web builder

there's no better time to code than when it's pouring outside
lo-fi beats and html sheets

+

small web, big dreams โœจ

one day my website will be cool. today is not that day. but soon

+

๐Ÿง penguin appreciator and open source advocate

free software, free web, free penguin stickers (while supplies last)

+

wanderer of the digital realm ๐Ÿ—ก๏ธ

i quest for cool websites and slay boring homepages

+

๐ŸŽช welcome to the show! my website is the main attraction

admission: free. exit: through the guestbook

+

minimalist in life, maximalist on the web ๐Ÿ–ผ๏ธ

my apartment is empty but my website has seventeen background images

+

just a chill person making chill websites ๐ŸงŠ

no pressure, no deadlines, just vibes

+

๐ŸŽต my website has a soundtrack and it slaps

autoplay midi is a feature not a bug

+

gardener of both real and digital gardens ๐ŸŒฑ

my tomatoes are doing better than my CSS but we don't talk about that

+

๐Ÿ”ง fixing things that aren't broken since 1999

if it works, don't touch it. unless it's your website. then touch it constantly

+

perpetual student of the web ๐Ÿ“–

every day i learn something new about CSS and every day i forget something old

+

๐Ÿ„ riding the wave of indie web creativity

cowabunga, dude. check out my rad homepage

\ No newline at end of file diff --git a/seed/signatures.html b/seed/signatures.html new file mode 100644 index 0000000..edb22a4 --- /dev/null +++ b/seed/signatures.html @@ -0,0 +1,60 @@ +

thanks for visiting my site!

+

keep the web weird

+

made with love and too much coffee

+

the internet is my playground

+

stay curious, stay creative

+

long live the personal web

+

web revival is real

+

embrace the cringe

+

see you in the webrings!

+

peace, love, and html

+

signed, a humble webmaster

+

be the website you want to see in the world

+

don't forget to sign my guestbook!

+

love and ciao

+

end of line

+

until next time!

+

happy surfing!

+

you've been visited by the webmaster fairy

+

small web, big heart

+

catch me in the nekoverse

+

stay hydrated. touch grass. update your website

+

this signature is under construction

+

powered by pixels and determination

+

your friendly neighborhood webmaster

+

404 signature not found (just kidding, here it is)

+

may your links never be broken

+

one website at a time

+

the web is what we make it

+

bytes and love

+

Ctrl+S and goodnight

+

keep clicking, keep creating

+

see you on the information superhighway

+

ad astra per html

+

semper web

+

logging off for now

+

xoxo, a creature of the internet

+

make websites not war

+

brb updating my site

+

in code we trust

+

no thoughts, just html

+

have a nice browse!

+

life is short, make weird websites

+

the revolution will be hyperlinked

+

click responsibly

+

farewell, fellow netizen

+

may your bandwidth be plentiful

+

go forth and hyperlink

+

cheers from the small web

+

never stop building

+

thanks for reading my posts!

+

my website misses you already

+

this message will self-destruct (it won't)

+

remember when the internet was fun? it still is

+

onwards and upwards!

+

the future is handmade

+

take care out there on the web

+

another day, another commit

+

view source for the truth

+

with love from my text editor

+

wishing you good CSS specificity

\ No newline at end of file -- cgit v1.2.3