1-50 of 1,416
2026 Dustin Snoap
Last activity: just now

Portfolio... A place for all the things

Dustin Snoap
to you

I built this portfolio around an inbox because most people already know what to do with one. A subject tells you what something is about, a preview he

I built this portfolio around an inbox because most people already know what to do with one. A subject tells you what something is about, a preview helps you decide whether to open it, and the full conversation waits until you’re interested. It seemed wasteful to throw away all the training we’ve received from people marking things urgent.


The frontend uses HTML, CSS, and vanilla JavaScript. HTML provides the structure, CSS handles the appearance, and JavaScript makes the controls do what their labels suggest. There’s no framework, bundler, or build step. Browser modules keep search, rendering, application state, and storage organized separately. Changing how a message looks shouldn’t alter whether it exists, a distinction I would prefer the software to maintain.


Compose and Reply share an editor, so formatting, links, inline photos, and attachments behave consistently. Failed submissions keep your draft available for another attempt. The interface waits for a successful save before treating it as successful; confidence alone is a poor storage strategy.


Search checks full message bodies, including earlier replies, within the section you’re browsing. You can narrow it by dates, people, labels, attachments, or particular phrases. Labels collect related conversations across the portfolio, and each conversation has an address you can bookmark or share. Stars, archive, and the other familiar mailbox controls let you organize your own view. Putting something in Trash hides it from your mailbox; it doesn’t quietly instruct the database to destroy the conversation.


On smaller screens, navigation moves into a drawer, conversations use the full screen, and the composer makes room for the keyboard. Swipe gestures and keyboard shortcuts provide other ways to get around. Themes, fonts, reading-pane placement, and motion settings are adjustable. A sidebar should open smoothly without requiring the reader to attend its opening ceremony.


Messages and uploads are saved by the backend. Sign in and your private conversations, preferences, and profile photo follow you across browsers. You can also send a message as a guest; creating an account attaches this browser’s guest mailbox to it. Unsent drafts remain in the current page session, so navigating elsewhere in the app preserves them, but reloading the page doesn’t.


The backend is an independent Go service within Starbase, with separate responsibilities for conversations, permissions, and uploaded files. DynamoDB holds message records, S3 holds files, EC2 runs the backend, and CloudFront delivers the public site’s files from locations closer to visitors. Amazon Cognito handles account credentials and email verification; the backend verifies that identity and establishes a browser session.


Amazon SES handles email notifications to me, batched after fifteen minutes of conversation inactivity. Signed-in visitors can also forward conversation text to a recipient who has explicitly agreed to receive it. Attachments and inline images stay out of those forwards. These are separate actions, which matters when a website starts taking its resemblance to email this seriously.


Norris adds contextual replies based on approved portfolio and career information. He remembers the conversation, with a “Forget me” control that clears his memory and pending replies while preserving your inbox history. Visitor conversations and their attachments are private to that visitor and me by default, with publication handled separately through owner review.


You can check it out at dustinsnoap.com. If you’re reading this there, the link will take you there again. I’ve included it for completeness and for anyone who enjoys arriving twice.


Dustin