Did you forget something at home?

What I do

Hand-Coded
Web Development

Custom websites built by hand, from a blank file. Nothing ships that isn't doing a job: no theme engine, no plugin stack, no software running on the server waiting to be attacked. The result is a site that loads in a blink, can't be hacked through its own tooling, and belongs to you. The site you're on right now is the pitch, and this page is how it works.

The approach

Built by hand.
Built for you.

The system

The Tooling Never Ships.

By default, every site here is built with a system that lives entirely off the web. The build tools, the dev server, the editor: all of it runs on a machine, not on your domain. What reaches the server is the finished page and nothing else, plain HTML, CSS and JavaScript.

If a project needs an editor or a CMS, that is usually one part added because the job calls for it, not the platform the site stands on, and when WordPress itself is the better fit, custom WordPress development follows the same rule. The consequence is the rest of this page. There is no software running on the public internet to attack, and nothing between your visitor and the page they came for. Where a build starts, and what each layer adds, is on the hand-coded website development page.

What stays offline and what reaches the server Two panels joined by a deploy arrow: the source files, build step, editor or CMS, and dev server all stay on your machine; only the finished HTML, CSS, JavaScript and images reach the server. YOUR MACHINE never ships SOURCE FILES BUILD STEP EDITOR / CMS DEV SERVER DEPLOY THE SERVER the finished page HTML CSS JAVASCRIPT IMAGES

One person, start to finish

Designed and built by the same person.

At most agencies a website changes hands three or four times before it reaches you: a salesperson takes the brief, a designer turns it into pictures, a developer turns the pictures into a site, and an account manager relays your questions between them. Every handoff loses something, and what goes missing is usually the part you cared about most.

Here the person who listens to you is the person who designs the site and writes the code. Nothing gets translated, so nothing gets lost: an idea from the first conversation reaches the page the way you meant it, a change takes one message instead of a meeting, and you watch the site take shape instead of waiting for a reveal. When a build needs another specialist, I bring in a vetted partner, and you still deal with me.

It runs the same way every time: a conversation, a fixed quote in writing, a build with a date on it, then launch, and a care plan after that.

How a project goes
One person from the first conversation to after launch A panel labeled You, joined by an arrow to one larger panel labeled One person, which holds four cells: the brief, the design, the code, and after launch. YOU one conversation, start to finish ONE PERSON nothing handed off THE BRIEF THE DESIGN THE CODE AFTER LAUNCH

Speed

Kilobytes, not megabytes.

A hand-coded page ships only what it uses. No theme engine, no plugin queue, no render-blocking third parties: the fonts live on this domain, the animation runs in your browser's compositor, and the JavaScript fits in a few kilobytes.

Google measures how fast a page paints and how quickly it responds, and ranks accordingly. This is where the system quietly wins: nothing loads that isn't doing a job, so there's nothing to wait for. The scores are just below, measured on this very page with every animation running. That is what hand-coded website development buys you, and it is why minimalist website design and speed keep turning out to be the same decision.

Hand-coded vs WordPress
Illustration on a blue-to-tan gradient: a white card with a closed green ring gauge reading 100 Performance, labeled "PageSpeed Insights · Mobile" and "lab test, August 2026", beside three white cards reading "A few kilobytes of JavaScript — no framework, no hydration, no jQuery", "0 third-party requests — fonts self-hosted, nothing render-blocking", and "Animation on the compositor — CSS the browser runs on its own thread", captioned "Nothing loads that isn't doing a job."

The proof

Almost Perfect.

Every claim on this page is measurable, so measure it. Run this page through Google's PageSpeed Insights and it scores 100 for accessibility, best practices and SEO, and 97 to 100 for mobile performance depending on the run; on desktop it is 100 across the board. Those numbers are with every animation you've just scrolled through still running.

The same build is why machines can read it as easily as people: every page is plain HTML on a real URL with nothing hidden behind a script. Fast for your visitors, legible to search engines, to answer engines and to the generative models that cite them, and no trick behind either.

This page's PageSpeed Insights scores Four panels: Performance 100, which runs between 97 and 100 on mobile and sits at 100 on desktop, Accessibility 100, Best Practices 100, and SEO 100 on both. Measured with PageSpeed Insights in August 2026. 100 PERFORMANCE mobile 97-100, desktop 100 100 ACCESSIBILITY mobile and desktop 100 BEST PRACTICES mobile and desktop 100 SEO mobile and desktop PageSpeed Insights, August 2026

Security

Nothing to hack. Nothing to patch.

Most hacked websites are hacked through the software around them: a stale plugin, a CMS core that missed an update, a database login. Lately it's worse than neglect, with attackers buying up legitimate plugins and shipping the break-in as an update. A site built this way isn't sitting on any of that. There is no admin panel to brute-force, no plugin stack to keep patched, no database between a visitor and the page, and nothing installed that answers to someone else's update server.

I host the site and look after it, and if you ever leave you take a copy of your files with you. That's not a ceiling: start from nothing, add only what a project actually needs, and it grows into a CMS, a database, a WordPress store, whatever the job calls for. Even then the rule holds: a bare-bones theme, only the plugins the job needs, and updates handled for you. Every part you don't ship is a part that can't break.

Start a build
Illustration on a blue-to-tan gradient: a white card with a blue shield holding a green check mark, reading "Static files. Nothing running to break into — plain HTML, CSS & JavaScript", beside a white Attack Surface card listing five crossed-out entries (/wp-login.php, CMS core updates, 23 plugins to patch, SQL database, admin dashboard), each tagged "doesn't exist" or "not installed", captioned "No admin panel. No attack surface."

The motion

Your Site, Your Controls.

The motion you're riding is scroll-driven animation, one tool in the kit, and the one with the worst reputation: most sites that use it take controls you've trusted for twenty years and give nothing back. The full guide to scrolljacking lays out those risks and the rules that avoid them.

Here the controls stay yours. Wheel, trackpad, touch and arrow keys all scroll the way you expect. The exception is the slide-deck mode, a choice in the menu for those who appreciate a bit of theater. Every page has a real URL: the back button works, any page can be shared or bookmarked, and search engines index all of it. If your system asks for reduced motion, the site quietly stands down to a normal, scrolling website, and the selector in the corner offers you that same choice outright, no settings dig required. Accessibility isn't the fallback here. It's the design, and whether scrolljacking is bad for accessibility is the long answer, ADA criteria included.

Four controls this site hands back Four ticked panels: the back button works again, the keyboard is fully mapped, scroll speed stays yours, and your motion settings are respected. BACK BUTTON works again KEYBOARD fully mapped SCROLL SPEED stays yours MOTION SETTINGS respected

The Better Website SystemFAQs

What makes a hand-coded site faster?

It ships only what it uses: no theme engine, no plugin queue, no framework a visitor has to download before the page works. The scores above are this page's own. Hand-coded versus WordPress covers the rest.

How is the site kept secure?

Mostly by what isn't there. On a hand-coded build the server holds finished pages and nothing else: no admin panel to brute-force, no plugin stack to patch, no database exposed to the internet. A WordPress build keeps its plugins to vetted essentials, hosted and maintained.

Do I own my website?

Yes. The domain is registered in your name and the content is yours. If you ever leave, you take a copy of your site files with you, and any developer can host them. No lock-in, by design.

How do site edits happen?

However suits you. Some clients want to post their own updates; others would rather send changes over and have them handled. If a build needs an editor or a mini-CMS, it's added for that job, and like the rest of the tooling it lives offline. We settle it together, early.

Does every site you build scrolljack?

No. It's one motion option, not a house style. Whether I recommend scrolljacking depends heavily on your brand and target market. what is scrolljacking explains it.

Is scrolljacking bad for SEO?

Not if it's built right. This site keeps real, crawlable URLs for every page, so the motion only changes the transition, not what search engines index. See the scrolljacking & SEO post.

That's the System

Your
move.

That's the whole method, and there isn't a secret second half: every site I ship is hand-written, and by default it is the same plain HTML, CSS and JavaScript this page is built from. If you'd rather see it than read about it, here's what I've built and who builds it. The blog is where I show my work, the FAQ answers the questions I always get, and the front door is still open. Run an architecture practice? That one is written for you, and so is luxury website design. Want to talk about your site instead? Say hello. Or take the rail below; the work is next.

The Better Website

The Better Website is a one-person web design studio in Raleigh, NC, serving the Triangle and clients nationwide. Every site is hand-coded: plain HTML, CSS and JavaScript by default, or a custom WordPress theme when that is the better fit.

Up Next Portfolio