Hey, Team Vercel! I’d love to be

Vercel’s next Design Engineer

Throughout my professional life, I have been helping companies build digital products. I fell in love with Vercel years ago. Being able to work on it with you would be a dream come true.

Dom

Dom Habersack

Munich, Germany

Schedule a chat →
Figma
VS Code
me

At the intersection of design and development

I consider myself a developer with an eye for design. A day on which I can prototype features in Figma and make them come to life in VS Code is a good day.
14+

Years of professional experience

I started working on the web when table-based layouts, the sliding doors technique, and faking round corners with images were all the rage. Our lives are so much easier today.
TypeScriptNext.jsTailwind CSS

Overlap with your tech stack

Next.js has been a part of my preferred stack for the last four years. In combination with Tailwind CSS, conventions make moving between projects a breeze.
Munich

In a prime location

Living in a hub like Munich makes occasionally meeting colleagues and partners in person super easy.

Teaching everything I know

If I had not gone into development, I would have become a teacher. I share my knowledge on my blog, across social media, in live streams, and occasionally through speaking at meetups.
G

Geoff

5 minutes ago

Hey, who wants to take on this new project?

C

Chris

2 minutes ago

I’ll let others go first, I haven’t worked with this tech yet.

Dom

Dom is typing…

I’d love to!
Send

Always looking for a challenge

Taking on new responsibilities and even roles any chance I get is my modus operandi. I never shy away from the unknown.
Me on camera

Good on camera

If you’d love to have more educational videos for your documentation or social media, I’m your person. I have all the gear and experience, and I’m not afraid to use them!

Hey there!

My name is Dominik “Dom” Habersack. I live in Munich, Germany, with my wife, our two year old daughter, and our dog Cooper.

As a consultant and freelancer, I have supported companies from e-commerce startups to automotive corporations with hands-on design, development, and product work throughout my career. For the last eight years, the majority of my projects used a stack based on React.js. More recently, Next.js has become an integral part of my work.

After running my own company for a few years, I am now looking for a new challenge pursuing a shared mission together with a strong team. Your ad for a Design Engineer matches both what I am looking for and what I can offer. I hereby apply for that position and hope the following gives you a first impression of how I could contribute.

To pick up the conversation, you can schedule a chat via my booking link. I’m looking forward to getting to know you!

Cheers,
Dom Habersack

Some of my favorite projects

These are some of the most interesting projects I worked on so far.

Turning a household item “smart”

We helped a maker of household items evaluate a feature by faking most of it. They gave us a modified prototype with a Raspberry Pi integrated before the low-level bus, which acted as a middleman between web and mobile clients and the device. We ran a WebSocket server on it, through which the clients could control the device remotely and provide feedback on its performance. Based on user input, the Pi would make custom adjustments to the device’s “smart settings”.

I took on Product Owner, UI Designer, and Developer responsibilities in this project, which we worked on as a very small team. My tasks included requirements engineering, designing user flows, creating clickdummies, and implementing features in our client applications.

React.jsReact.js
styled-componentsstyled-components
ReduxRedux
PythonPython
Raspberry PiRaspberry Pi

My coffee was:

Perfect
Too hot
Too cold
Not strong enough
Too strong
Too sweet
Not sweet enough
Bitter

Based on your feedback, your next configuration code is:

0xA7F4ED

The project wasn’t about coffee, but it’s a close comparison.

Designing interactions for hospital equipment

This project had a special place in my heart, which is a pun that will make sense in a second.

This client manufactured medical equipment to measure electrical activity in a patient’s heart during open heart procedures. It was wild, doubly so for someone who easily faints at even the mention of blood. (Being able to occasionally turn down the volume during remote meetings was a godsend.)

They also developed a React.js application for visualizing the measurements and creating procedure protocols. I supported them as a UX Designer and Developer, exploring ways to make that interface more user-friendly and implementing the findings.

TypeScriptTypeScript
React.jsReact.js
GraphQLGraphQL
styled-componentsstyled-components
FigmaFigma
Fat marker sketches for the application’s user interface

Fat marker sketches allowed us to quickly and cheaply explore and compare different approaches.

Drawing lovely icons

When Font Awesome was everywhere, I was looking for an icon set to give my projects a more unique look. Not finding anything that matched my taste, I created one myself.

I have since grown the collection to over 180 icons that have helped me create a cohesive, custom appearance across projects.

SketchSketch
React.jsReact.js
Next.jsNext.js
Tailwind CSSTailwind CSS
GitHubGitHub
GitHub ActionsGitHub Actions

Doing shocking things with browser extensions

This client wanted to remind customers of their loyalty program when online shopping at partner stores. I helped build a browser extension to “enhance” the browsing experience on these sites, adding features such as custom notifications and checkout integration.

We developed the extension using Angular.js and Less. Because we couldn’t use iframes, we had to jump through a few hoops to ensure our styles wouldn’t interfere with the host pages and vice versa. Wild z-index values and MutationObservers helped us fix many one-off issues.

JavaScriptJavaScript
TypeScriptTypeScript
Angular.jsAngular.js
LessLess
GitHubGitHub

Save 20% on your next purchase

Turn on savings mode and earn cash while shopping here.

My personal collection of Tailwind components

As I often copied components from one personal project to the next, it made sense to collect them for easier reference. It provides basic components I need frequently, with new ones joining as I extend my projects.

The project has a website, and a basic version for use in React is available on npm as @yieldui/react. It served as a model for similar libaries I set up for clients.

TypeScriptTypeScript
React.jsReact.js
Tailwind CSSTailwind CSS
GitHubGitHub
npmnpm
https://
<div className="flex rounded-md shadow-sm">
  <span className="inline-flex items-center rounded-l-md border border-r-0 border-gray-300 bg-gray-50 px-3 text-gray-500">
    https://
  </span>

  <input
    className="w-full appearance-none rounded-l-none rounded-r-md border border-gray-300 bg-white px-3 py-2 text-base text-gray-700 focus:border-blue-600 focus:outline-none focus:ring-1 focus:ring-blue-600 focus:ring-offset-0 focus:ring-offset-white"
    placeholder="domhabersack.com"
    type="text"
  />
</div>

My heart beats for sharing knowledge

I live by ConvertKit’s “Teach everything you know”.

Blogging

On my blog, I write about what I learn in my work. While many articles focus on code and productivity, some cover design topics, such as how disecting layouts teaches us the invisible rules that make a good design great. Others talk about how we can make decisions that combine our professional curiosity with given business requirements.

Bootstrapping
Build in public
Career
CSS
Design
Education
GDPR
Git
JavaScript
Lifestyle Design
Programming
Project Management
SEO
Software Architecture
Uncategorized

Code snippets

Inspired by popular design and coding tweets, I shared a bunch of JavaScript and related code snippets of my own on Twitter. I collected them on my personal site, where you can browse all snippets.

// we can use this shorthand notation to map array items to another type
[4, 8, 15].map(String)          // ⇒ ["4", "8", "15"]
["16", "23", "42"].map(Number)  // ⇒ [16, 23, 42]
[1, 1, 0].map(Boolean)          // ⇒ [true, true, false]

Live streaming

When I don’t do client work, I enjoy live streaming coding and design sessions. Most include Next.js, Tailwind CSS, and third-party APIs. I throw in the occasional palate cleanser, like one in which I attempted LinkedIn Skill assessment quizzes that I had no business taking in the first place.

You might particularly enjoy the recording of this stream I did where I used the YouTube API to show my past recordings in my Next.js-based personal site.

“Reading from the YouTube API in Next.js” on YouTube

“Hello Together!”

Having worked in many multilingual teams, I saw many avoidable mistranslations cause misunderstandings. Words that look similar but have different meanings in two languages could lead to someone asking for the “real status” when they wanted to know the “current status”, for example.

Because of its positive reception, I expanded a company-internal talk on the topic into an email course. To this day, this short course’s titular lesson is the most visited page on my personal site.

Me giving the presentation on Hello Together at a company-internal event.

Public speaking

In most situations, I consider myself an introvert. Still, put me in front of a camera or on a stage, give me 30 seconds to get settled in, and I slay. I’m having the absolute best time once I get into Presenter Mode, where my drive to share knowledge takes over.

I have given talks on frontend development, the dangers of Dark Patterns (which I recreated for YouTube), real-world stories about User Experience design, and more. Given the chance, I’d enjoy speaking about Next.js and Vercel at events.

Me giving a presentation on Dark Patterns

Guest-post on Smashing Magazine

I wrote an article for Smashing Magazine on how to set up many-to-many relationships in a Next.js project. In it, I show how keys in Markdown frontmatter can reference other types of content. I could take the pattern I had already used in many projects, abstract it, and walk readers through the setup step by step.

As this was a very practical article, I made the code available on GitHub. The repository has been forked and starred by a few people since. What I find most intriguing is that some still occasionally do, years after the article went live, showing that it’s still relevant to developers today.

multi-author-blog/
├─ _authors/
│  ├─ dom-habersack.json
│  └─ dom-wearing-a-hat.json
├─ _posts/
│  ├─ hello-world.md
│  └─ styling-react-with-tailwind.md
├─ app/
│  └─ …
└─ public/
   ├─ dom-habersack.jpg
   └─ dom-wearing-a-hat.jpg

My favorite tools and technologies

Learning new skills has always been essential to my life. The following is a non-exhaustive list of what I work with most often.

Development

I first used React when class components and shouldComponentUpdate were the state of the art. Lacking conventions, every client project reinvented the wheel of data fetching, routing, and SSR in their own way. The out of the box experience of Next.js made my life so much easier.

TypeScriptTypeScript
React.jsReact.js
Next.jsNext.js
ReduxRedux
GraphQLGraphQL
Node.jsNode.js

Styling

BEM notation in combination with Sass was the gold standard for me for the longest time, thinking its pseudo-separation of concerns was the most reasonable option. My curiosity got the better of me, and I got hooked on Tailwind CSS and utility classes after a single project.

CSSCSS
Tailwind CSSTailwind CSS
Headless UIHeadless UI
SassSass
styled-componentsstyled-components

Prototyping and Design

I use Sketch in my personal projects. I even created a few plugins that speed up my workflows, like one that lets me add syntax highlighting to text layers with shiki. Still, Figma is unbeatable for collaboration. I use it heavily to make sure everyone across roles is on the same page before we implement a feature.

SketchSketch
FigmaFigma
StorybookStorybook

SEO and Analytics

While many clients have a hard time moving away from Google Analytics and its tight integration with Google Ads, I prefer more privacy-friendly alternatives. I have also worked in the mine field that is GDPR.

ahrefsahrefs
Google Tag ManagerGoogle Tag Manager
Google AnalyticsGoogle Analytics
Fathom AnalyticsFathom Analytics
Plausible AnalyticsPlausible Analytics

Continuous Integration and Delivery

GitHub Actions run all my workflows, like deploying new versions of this site to a VPS with each commit to main. Among other tasks, I also use them to publish new versions of libraries to npm. I’ll confidently tweak Docker images, but wouldn’t set one up from scratch without a reference.

GitHub ActionsGitHub Actions
DockerDocker

Version Control

This one probably goes without saying. I don’t miss the days of working with SVN. “How to undo commit” appears in my search history so much, I should probably get git reset HEAD~1 tattooed on my forearm by now.

gitgit
GitHubGitHub
GitLabGitLab
BitbucketBitbucket

Testing

Having seen too many projects where minor changes caused major regressions, I use TDD whenever I’m working with uncertainty. I have grown fond of Mock Service Worker for mocking third-party APIs to ensure my code reacts well to different responses.

JestJest
VitestVitest
Testing LibraryTesting Library
Mock Service WorkerMock Service Worker
PlaywrightPlaywright

Data Sources

A huge part of my work is reading data from one API, rendering it, and sending different data to another API. Having worked along the full web stack, I have created and consumed countless APIs connecting services together.

PrismaPrisma
MongoDBMongoDB
PostgreSQLPostgreSQL
ContentfulContentful
ShopifyShopify

Planning and Documentation

While I have seen teams follow “Scrum for Dummies” to the letter, the best and most efficient teams I was on adapted their processes to their specific needs. Take the good, skip the bad, make adjustments along the way. Everything else is tools.

JiraJira
TrelloTrello
ConfluenceConfluence
NotionNotion
ObsidianObsidian

What I’d love to do at Vercel

I think of myself as a product person that feels at home in both development and design. My work experience has equipped me with the ability to pick up new technologies and adapt to new challenges quickly.

Seeing an idea through from its inception to release and beyond is what I love most about my work. Making sure everybody involved understands the motivation and reasoning behind a project allows for much smoother collaboration. I enjoy working with stakeholders of all responsibilities to help establish that shared understanding.

I am convinced that a team performs best in an environment of productive feedback where everyone collaborates. The best ideas emerge when people tackle a problem together, each bringing their unique perspective and experience to the table.

Sharing knowledge through video and writing is a passion I would love to bring to Vercel. I am comfortable on camera, and could see myself work on educational content in several areas. One idea I have would be to show off the official starter templates in a series of videos, building full products with them.

Don’t just take my word for it

Here are some nice things people I worked with said about me.
Dom is one of my favorite colleagues to work with, with a curious mind and an incredibly strong foundation. He never tired of teaching and challenging the team while being an absolute joy to work with. I still reach out to him to discuss some topics because his input is so valuable! Grab him while you can!
Paul Arndt

Paul Arndt

Senior IT Consultant

Putting Dom in charge of the frontend of our platform was a no-brainer. He was always keen to drive initiatives and delivered high-quality results. He filled skill gaps in the team and supported others so they could contribute at the same level. I cannot recommend him highly enough.
Fozy Khoury

Fozy Khoury

CTO, Engineering Director

Dom has this way of making you eager to know more. He is empathetic, funny, and refreshingly humble. He always took on our most challenging tasks, broke them down into smaller parts, solved those, and shared his learnings. Our brainstorming sessions are some of my fondest professional memories. Together, we’d always find ingenious solutions to any issue. Working with Dom is about getting the job done while having tons of fun.
Marco Heine

Marco Heine

Fullstack Developer

Let’s talk!

I hope this has given you an idea of how I could contribute to Vercel. There is a lot more I couldn’t fit on this page.

Not only do I see a lot of overlap between my skills and what you’re looking for, I am also a huge fan of your work. Next.js has quickly become an integral part of my daily work. I would be absolutely honored to contribute to it and related projects.

I set up this booking page so you can pick a slot that works best for you. I am very much looking forward to meeting you.

Schedule a chat

Have a great day,
Dom Habersack

Debug
none
Grid overlay