Design works like software. You sketch something, mock it up, keep what lands, and throw out what doesn't. Then you go again, and again, until it stops feeling wrong.

When I started on my portfolio, I looked around at what other developers had built. Plenty of good templates out there. None of them felt like me. I wanted something personal, closer to a craft workshop than a landing page. Somewhere that looks like a person makes things there, on purpose: sophisticated, jewel-toned, terminal energy used as punctuation instead of the whole sentence.

Here's how I got there.

The Palette Journey.

I tried four directions before one of them stuck. The first was the default you land on when you don't make any choices at all. The next two were fine designs that just weren't mine, and weren't right for this.

//Direction 1

Plain Default.

No fuss, no decisions. Black text on white, system-ish sans, default everything.

About

Dustin VanKrimpen

Software engineer building things in Michigan. View my projects or get in touch.

White
#FFFFFF
Black
#000000
Mid Gray
#6B7280
Light Gray
#EEEEEE

The first instinct was to just not make decisions. White background, black text, gray secondary text, default sans-serif. The "I'm not a designer, I'm a developer who happens to need a website" approach. The thinking: don't pretend, don't perform, let the content speak for itself.

It's the safest possible direction. Nobody could call it tacky or overdesigned. It would fit any context, any device, any decade.

Verdict — moved on

Plain. Fine. Said nothing. On a portfolio it reads as "I couldn't be bothered," which isn't what I want a hiring manager walking away with.

//Direction 2

Modern Refined.

The "thoughtful SaaS" direction. Safe, modern, approachable.

The Developer

Dustin VanKrimpen, software engineer.

Me as a SaaS platform. Your software, delivered with care. Join now, free for the first 30 days.

Warm Cream
#FAF6EE
Soft Navy
#1A2536
Terracotta
#C2624A
Sage
#5D7A6B

I wanted color, so I built around a muted pairing of clay red and sage green. Terracotta (#c2624a) on the primary CTA carries the same energy as red but reads as craft and earth instead of civic or political. Sage (#5d7a6b) is the earthy grounding accent, used for labels and italics. Together they drop the page straight into "modern software" territory. I warmed the background to a buttery #faf6ee and softened the navy to #1a2536, a notch less stark than full navy.

The typography shifts. Headings switched to Fraunces, a variable serif, with italics for emphasis. Fraunces reads as thoughtful modern software. Sentence case on buttons and labels read as conversational rather than commanding. Pill-shaped buttons instead of hard rectangles are softer, more contemporary.

Verdict — moved on

Good, but not me. I'd built something you couldn't tell apart from a startup's marketing site. The craft was there. The personality wasn't. It felt like cosplaying another company's brand.

//Direction 3

Neon Cyberpunk.

The opposite swing. Electric purple, neon green, heavy glow, all monospace.

// SYS_ONLINE

_DUSTIN_VANKRIMPEN

> init l33t haXX0r skillz...

Void Black
#050510
Neon Green
#00FF80
Electric Purple
#B300FF
Hot Magenta
#FF00CC

If the refined direction was too safe, this was the overcorrection. Pure cyberpunk. Electric purple (#b300ff) and neon green (#00ff80) on void-black, heavy glow on every element, monospace all the way down.

Borrowed energy from cyberpunk movie posters, Defcon talks, hacker forum aesthetics. Buttons had glow on top of glow. Headlines had double text-shadows. The whole thing felt like a launch sequence.

Verdict — moved on

All volume, no quiet. Nowhere to rest your eyes. Fun as a vibe. Still not me.

//Direction 4 — the keeper

The Flannel Epiphany.

Unexpected inspiration from real life.

//Grand Rapids, MI

Dustin VanKrimpen.

Just a chill software dev in Michigan. Build logs, projects, and the occasional thought.

Charcoal
#1A1A22
Purple
#221F3D
Teal
#3A9B9D
Spark
#C2392E

I ran through several more rounds trying to split the difference between safe-and-mature and fun-and-techy. Nothing clicked. I wanted something grounded and humble that still carried color and a character of its own.

Then I looked down at the shirt I was wearing. A flannel I wear constantly: deep navy-purple base, charcoal, a jewel-tone teal, thin red stripes through it. I thought, this is the palette.

Not the plaid itself, but what the colors were doing together. The dark base wasn't pure black; it had warmth and depth. The teal sat muted and low, nothing like neon. The red was one thin stripe, used sparingly. And purple wasn't a background at all. It was a destination.

The charcoal (#1a1a22) carries a faint purple-warm undertone. That little bit of warmth keeps the whole thing from going cold and sterile. It reads as low-light workshop, not data center. The teal (#3a9b9d) is muted and shifted slightly green, away from bright cyan. It looks more like an old phosphor display than a neon sign. The spark red (#C2392E) shows up only for emphasis: a thin line above the hero, the primary button, and that's it.

Verdict — shipped

It worked because textile designers had already proven these colors can live together, for decades. Real-world objects come with color harmonies built in. It worked because every color had a job too: teal is the workhorse accent, purple the destination, spark red the action signal, charcoal the foundation.

Style Elements I Cut.

Beyond color, there were a dozen smaller choices I tried and cut. Some were generic anti-patterns I knew to dodge from the start. Others almost made the final cut before I caught them doing more harm than good.

Generic anti-patterns

My first attempts looked exactly like the thing I was trying to avoid. None of them said anything about me. They were templates I'd dropped my information into.

Skipped
DEV PORTFOLIO
Building things since 2020
Pure Black Background
Goes too dark. Feels cold and sterile, like a server room dashboard.
Skipped
$ whoami
> dev_xtreme
$ cat skills.txt
Acid/Lime Green Text
Too cartoonish. Reads as Defcon costume, not craftsperson.
Skipped
$ whoami
Blinking Cursor Animation
Theatrical. The static > and // markers convey terminal energy without being a costume.
Skipped
EVERYTHING GLOWS
even the body text glows softly
Glowing Button
Glow On Everything
If glow is everywhere, it stops meaning anything. Make it earn its place.
When everything glows, nothing does.
Almost made the cut

These four got closer. Each one ended up clarifying what the site is actually for.

Cut
HEADLINE TEXT
Body text underneath the heading
CRT Scanline Overlay
Tried it across the whole site. At full opacity it felt like a costume. Kept a faint version at 2.5%, felt more than seen.
Cut
[01]Cut the Unnecessary
[02]Priced for Small Biz
[03]Built to Work
Bracketed Numbers [01]
Too "look at me, I'm a terminal." Just 01 in mono is cleaner.
Cut
Card 1
Card 2
Card 3
Sliding-In Cards on Scroll
Theatrical and slows the reader down. Subtle fades are fine. Nothing more.
Cut
Hover Me
Wobbling Cards on Hover
Adds movement that doesn't communicate anything. Animations should be functional.

The pattern I noticed: every time I cut something, it was because the element was performing rather than communicating. Decorative motion that didn't tell you anything. Costume-coded type that screamed "look how terminal I am" rather than just being terminal-flavored. The good moves are the ones that get out of the way once you've absorbed them.

Typefaces Considered.

With the palette settled, I had to pick type. Four faces, each with one job, no overlap. Before I locked the display face, I tried three that didn't work. Each showed me a way the site shouldn't go.

Crafting quiet tools.
Fraunces
Variable Serif · Display
Cut
Beautiful and considered, but it's turned into the house serif for a lot of well-funded software. It made the site read like someone else's marketing. Borrowed authority.
Crafting quiet tools.
Inter
Modern Sans · Internet default
Cut
A default on a lot of dev portfolios. Genuinely good, genuinely characterless. Wanted something more distinct.
Crafting quiet tools.
Space Grotesk
Geometric Sans · Tech-launch energy
Cut
Has the modern startup-launch feel. Felt cliché, but I do like it.
CRAFTING QUIET TOOLS.
Bebas Neue
Condensed Display · Industrial signage
Kept — display
Reads as workshop signage, news headlines, industrial labels. No decoration, no nostalgia. It gets out of the way and lets the words do the work. Free, one weight, hard to misuse.
Crafting quiet tools — a workshop in Michigan, since 2026.
Barlow + Condensed
Humanist Sans · Body and labels
Kept — body
Pairs with Bebas Neue without competing. Quiet enough at body sizes that you forget it's there. Shares a family with Barlow Condensed for labels and UI, so the system unifies cleanly.
//crafting quiet tools
JetBrains Mono
Coder Monospace · Terminal accents only
Kept — terminal
The // comment-style eyebrows depend on this one. Real ligature support, drawn by people who actually write code. Used only as punctuation, never for body.

The rule that emerged: JetBrains Mono only for terminal-energy moments. Comment-style eyebrow text. Metadata. The numbers in numbered lists. Never body copy. The moment you put mono on long-form text, it goes from "this is from the terminal" to "this is uncomfortable to read."

Signature Moves.

A palette and a type system get you 80% of the way there. The last 20% is the small recurring elements that make a site feel like it belongs to a specific person, not a Figma template.

I built three of them. Each one earns its place.

// The logo lockup

The wordmark sets a teal forward-slash between my first and last name, last name in purple. The slash glows, just barely. It's the only place that slash-and-purple combo shows up anywhere on the site, which is what makes it work. It's my signature, not a motif I reuse until it turns into wallpaper.

// The status dot
AVAILABLE FOR WORK

A small pulsing teal dot in the nav, with a "STATUS" label in mono. It says "alive and present" without spelling anything out. The pulse is slow, a full 2.5 seconds, so it reads as ambient instead of anxious.

// Comment-marker eyebrows
//Grand Rapids, MI · Est. 2026

For the eyebrows above section headlines, I use a teal // marker followed by the label in mono. It frames the section like a code comment: "this is metadata about the thing below." Once you notice it, the whole site starts reading a little more like a code editor.

The Destination Rule

Purple Only Shows Up Once Per Page.

Purple is the destination color. One section per page gets it: the headline feature, the spot I most want a visitor to land. When purple finally shows up, it should feel like stepping into a velvet room in a slate-floored studio. Spread it everywhere and the hierarchy collapses, nothing feels special. The restraint is what makes the rare thing read as rare.

What I Learned.

Three things I came out of this with that I'll take into the next design:

  • Restraint is a feature. Every accent color, every glow, every animation has to earn its place. If everything is loud, nothing is loud.
  • Borrow from physical objects, not other websites. That flannel taught me more about a palette than an hour of scrolling Dribbble ever did. Things that already exist in the real world have survived the test of looking good together.
  • Rules beat decisions. "Purple only once per page" is easier to follow than "use purple thoughtfully." Codified constraints free you from having to make every choice from scratch.

The site you're reading this on isn't finished. It'll keep changing as I learn more. But the foundation feels right: it looks like somewhere a person actually makes things, not a template with my name dropped in. That was the entire goal.

I keep a reference doc for the whole design system and update it as I go. Drop me a line if you'd like a copy.