[ ->fletcher_holt ]

>

                          #*****++#%
                        #**++===;;=+%
                       ***++==;;;;;=*#
                     #**+++++==;;;=++##
                     *******++=;;;=++*##
                    *****#**+=;:;;=++++++    .@@@@@@.
                   *++*##***+=;:::;+*+++++++@@@@@@@@@@
                   +=+###**++=::::+%%++++++@@@@@@@;;@@                       *****#**#%
                   +==###***+=;:,+%@%++++++@@@@@@@@@@@++++                ******+++++**#%
                    ==+###**+=;::*%%@++++++@@@@@@@@@@@++++++++%         ++**++++==++=+++*%
                     ==*#**+==;;;+*#%+++++++:@@@@@@@@:++++++++###%   ***+++=======+++++++*
                       +***+==;;=;=+*++++++++ :@@@@: +++++++++####***+====+======++++++*+*
                        ++==;;===+++++++++++**********+++++###########++++++=====+++*****#
                            :===+++++++*+++***********++++#@@@@@@@@@@#++++++++++++****###
                             +;=++++++++++++**********++++@@::@@@@@@@@++++++++*****####%
                             =;=++++++++=+++**********++++@@@@@@@@@@@#++++++****######%
                              =++++++++=+++***********+++++#@@@@@@@@#+++++++######%#%
                              ++++++++==++++**********++++++#######+++++++++######%
                             **+++++++++++++*****************+=;;;===+++*#####**#
                            +++******+++++++****************++*+==;=+++++==+**
                           +=+++******+++++*****************+++++++++*+
                           ===++*****+++++**:==:#***********++++++++**
                           ===+++*****++++*=@@@@=#***********++++****+
                           ;;;=++*****+=+*@@@@@@@@*************++++*+
                           ;:,,;+***++=+**@@@@@@@@#***++********++++
                           =:,.:=+*++==+**#:@@@@:;;**++++******++++
                           +;:,.:=++=;=+*#,,,@@ @@,,*++********+++
                          +=:::,,:;;;;=+*#,,,@@ @@,,+********++++
                         ==;:::,,,,:::=+**,,=,==,=,,******+++++++
                        +=;;;:::::::,,:;=+*#;==++=;*****+===++++
                       +=;:::::::;:,..:+;==+++**++***+=;::;===++
                     ===;:,,,:::==,...++++==*#+:;;==;::;;===+++*
                    ++;==;:,,,,:=;,,.:**#*#%@@=:;;;===++++++++***
                    =====;:,,.,:;;;:,;=**#@@%+;=++++**+++**++*****
                   =======;,,.,::;;;::::;=+*+=+++++++++++++********
                   ====+++=;,,,,::::::;;===;==++++++++++*************
                   ====++++=;,,::;;;=====++===++++++++*********+*****+
                    ;;=**++++=======+++++++++==+++++**+******++++++***
                    ;;;=++++++++++++++++++++++=+++++****+****=;==+*****
                   =;::::;=++*+*****++++++++++++++++***++**++=.:+******************
                   ;;:::::;;=++***###**+=+++++++++++**+++=++=;;+++*****#############*************##*
                   ;::::::::;;=+***#%%%#*+=+++++++++++=++===++*+****#**#*********************++*****
                  ;;::::::::::;=++***###%#*++=+++++++=;;=+***********+**++======;;;;;;;======;=
                  ;:::::::::,,::;++***##%%%#*++++++;;;+************+++==
                  ;:::::::::,,,,:=****####%%#+++=;,;+************+++=
                   :,,,,:::::::,:;****#####%#*+=:,;+***********+++=;
                   :,,,,,::::::,,:+*****######=,.;+***++******++++;
                   ::,,,,:::::,,,,;+*****##*#*:..;++**+**++**+++++=
                   :::,,,:::::,,,,,;+******#+;;:,,:;=+==+++*++++++;
                    :::,,:::::::,,,,,;===+==;===;::,:=;;=+**++++++=
                    :::,,::::::::::::::;;;;;=====+=;====++*****+**=
                    ;:::,,:::::;;;;;============+++++===+++********
                   ;;:::,,,::;;;;;;;============+===++==+++++++***+
                ====;;:::,,,::;;;;;;;;;============+=====++++++**++=
            ++++**++=;=;;;,,,::;;;;;;;;;;;=========++=;==+++++=++++++
   +**+**********+++====;:;:,::;;;;;;;;;;;===============+==;;+++++++++
;=+++**************++====:::::,::;;;;;;;;;;;;=====;=====;;:::=+==+++++*+++
;===++****#******++++=;;;;,..,,,,:::;;;;;:::;;;;;===;;;:     ====+++*******+=
 :;+*+*******+**++===;          ...,,,:::::::::::::          :===*+=+**#******+
 :;==;=+****+++==                                            ,:=+*+:=****+++**#*
    ,:=++===                                                  ,;+**,;=*##*;
                                                               :+##= ;=+++
                                                               ,+++

guest@fholt ~ % fetch
─────────────────────────
name    fletcher holt
role    developer / graphic designer
base    north west, england
langs   swift · typescript · python · c
ships   websites, macos apps, tools
email   [email protected]
github  fletcherholt
discord _rokor
cv      read / print
status  building
you     first visit

#projects

formatted as man pages. one shipped, one launching soon, one i cannot talk about. bugs sections are honest.

frisk(1) security scanner for any public github repo

SYNOPSIS

friskit.dev/<owner>/<repo> — or swap github.com for friskit.dev in any repo url

DESCRIPTION

Free, no-login scan of a repository before you clone it: leaked secrets, malware, malicious packages, typosquats, vulnerable dependencies via OSV and bad binaries via VirusTotal. Paste a repo url, read the report.

frisk scan report showing a high risk verdict with severity counts and a leaked-secret finding
frisk scanning its own repo. the high risk verdict is its own test fixtures — fake keys planted to test the scanner. it found them. working as intended.

DESIGN

The URL trick came before the scanner. Swap github.com for friskit.dev and you are already scanning; I had the way in working before I had anything to show once you got there.

BUILT WITH

TypeScript

BUGS

Some college networks MITM it. That is the network's bug, not mine.

SEE ALSO

friskit.dev, github.com/fletcherholt/frisk

kryla-culture(7) editorial site for a ukrainian community art organisation

SYNOPSIS

krylaculture.co.uk (coming-soon page live, in english and ukrainian)

DESCRIPTION

Designed and built end to end for Kryla Culture CIC, a Ukrainian community art organisation in the North West of England: a bespoke editorial layout, bilingual throughout, with a self-hosted editor so the team run the site themselves without touching code.

kryla culture coming-soon page: logo and vyshyvanka ornament
the holding page, live now in english and ukrainian. the ornament is a vyshyvanka pattern; the full site is behind it.

DESIGN

The editor is the real product. A small organisation cannot ring a developer every time it wants to change a sentence, so the CMS is theirs to run: self-hosted, with no subscription tying them to me.

BUILT WITH

Astro

BUGS

None I will admit to before launch.

SEE ALSO

krylaculture.co.uk

████████(1) ██████ █████████ ████

SYNOPSIS

under nda

DESCRIPTION

There is a project here. It is █████████ ██ █ ██████████ and it involves ████ ███████████ █████, which is frankly the best part. More when the paperwork says so.

BUILT WITH

██████████

BUGS

Disclosing them would be one.

SEE ALSO

Nothing. You saw nothing.

#more

~/more
├── album-collections        album folders inside spotify
├── spicetify-playlist-undo  undo for spotify playlist edits
└── morphe-patches           patches for morphe.software

#files

this machine has files. some of them are for you.

~/.plan what i'm on right now
last update: 2026-07-09

current:   this site, and a project i cannot talk about
launching: krylaculture.co.uk
always:    frisk stays free

the rat is fed. the grain is calibrated. back to work.
/var/log/site.log this site's own history
2026-07-09 07:48 first boot. grid, man pages, boot rom
2026-07-09 08:01 restyled: iosevka, hashboxes, brackets
2026-07-09 08:15 field live: wake, ripples, ascii donut
2026-07-09 08:26 linux cursors drawn, then replaced
2026-07-09 08:31 with the real desktop set instead
2026-07-09 08:32 tux moved in
2026-07-09 08:39 tux evicted. the rat moved in
2026-07-09 08:54 rat rebuilt from a scan of the clay
2026-07-09 09:04 rat given his proper eyes
2026-07-09 09:07 rat given his proper mouth
2026-07-09 --:-- rat briefly given legs. revoked.
2026-07-09 --:-- he stays on the card now. calmer.
~/projects/frisk/notes.txt why frisk exists
you should not need an account to find out whether a
repo will hurt you. that was the whole reason i built it.

the url trick (swap github.com for friskit.dev) came
before the scanner did. i had the way in before i had
anything worth showing once you were through it.
~/.secret hm
you opened the dotfile. of course you did.

achievement unlocked: nosy (the good kind)

the konami code changes the phosphor. the console
has a message in it. the source has a drawing at
the top. you're one for three at best. off you go.

#about

I'm a developer and a graphic designer, both, on purpose. Everything above was designed and built by one person at one desk, which is why it hangs together.

I like small computers, terminals, and interfaces that have obviously been thought about. I dislike templates. This site runs on one typeface, one accent colour and no framework. Not much to it, but I chose all of it.

Right now: this site, and something I can't talk about yet.

the clay rat sculpture
the original.

#contact

contact
├── email     [email protected]
├── github    fletcherholt
└── discord   _rokor

Set in Iosevka. Everything sits on a character grid; the texture is a single SVG noise filter. It's one HTML file, one stylesheet and one script, with no framework and no build step. There's a print stylesheet too, in case you ever print it.

last built 2026-07-09 · 60kb of code · works without javascript

guest@fholt ~ % logout
connection to fholt closed.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.