# Dan Holloran > Personal blog and portfolio for Dan Holloran — a senior full-stack developer and photographer based in St. Louis, MO. The site covers front-end and full-stack web development (Vue, React, TypeScript, CSS, build tooling, and more), Obsidian and productivity workflows, and travel photography from national parks and beyond. Dan has 14+ years of experience building performant, scalable web applications and leading engineering teams, with deep expertise in Vue.js, React, Laravel, and modern JavaScript tooling. The blog mixes technical deep-dives, career reflections, and dispatches from the road. ## Main Pages - [Home](https://danholloran.me/): Landing page and overview. - [Blog](https://danholloran.me/posts): Index of all posts — technical articles, career reflections, and travel photography. - [Resume](https://danholloran.me/resume): Professional experience, skills, and projects. ## Development - [CSS text-box-trim: The End of Fudging Vertical Padding](https://danholloran.me/posts/css-text-box-trim-the-end-of-fudging-vertical-padding): Buttons that look bottom-heavy at padding: 12px aren't your fault, they're half-leading. text-box-trim finally lets CSS cut that invisible space, and it goes Baseline this month. - [Trusted Types Is Baseline: DOM XSS Is Now a Type Error](https://danholloran.me/posts/trusted-types-is-baseline-dom-xss-is-now-a-type-error): Firefox 148 shipped Trusted Types in February 2026, making it Baseline. Here's how to turn every dangerous innerHTML assignment in your app into a TypeError you can actually catch. - [The Long Animation Frames API: Find What Actually Broke Your INP](https://danholloran.me/posts/long-animation-frames-api-find-what-actually-broke-your-inp): Your field data says INP is 400ms. Your local profile says everything is fine. The Long Animation Frames API closes that gap by naming the script, the function, and the character position that stalled the frame. - [GraphQL Trusted Documents: Stop Letting Strangers Write Your Queries](https://danholloran.me/posts/graphql-trusted-documents-stop-letting-strangers-write-your-queries): Disabling introspection is not security. Trusted documents let your server execute only the operations your own developers wrote, and you probably already have the tooling for it. - [CSS contrast-color(): Let the Browser Pick Your Text Color](https://danholloran.me/posts/css-contrast-color-let-the-browser-pick-your-text-color): The contrast-color() function went Baseline in April 2026 and kills the luminance-math helper every design system eventually writes. Here is how it works, the mid-tone problem nobody warns you about, and how to work around it. - [The Sanitizer API: Safe HTML Injection Without DOMPurify](https://danholloran.me/posts/the-sanitizer-api-safe-html-injection-without-dompurify): The browser can now strip XSS from an HTML string during parsing. Here's how setHTML works, why its config can only narrow the allowlist, and how to ship it before Safari catches up. - [Laravel 13 PHP Attributes: Config That Lives With Your Code](https://danholloran.me/posts/laravel-13-php-attributes-config-that-lives-with-your-code): Laravel 13 expands first-party PHP attributes across controllers, authorization, and queued jobs. Here is what actually changed, and where attributes are still the wrong tool. - [CSS sibling-index() and sibling-count(): Native Staggering Without nth-child Hacks](https://danholloran.me/posts/css-sibling-index-and-sibling-count-native-staggering-without-nth-child-hacks): CSS sibling-index() and sibling-count() turn an element's position into a number you can drop into calc(), replacing walls of nth-child rules and inline JavaScript for staggered animations and math-driven layouts. - [Animate to height: auto in CSS with interpolate-size and calc-size()](https://danholloran.me/posts/animate-to-height-auto-with-interpolate-size-and-calc-size): Transitioning an element to height: auto used to mean JavaScript measurements or fragile max-height hacks. interpolate-size and calc-size() finally make it a one-line CSS opt-in. - [JavaScript Iterator Helpers: Stop Converting to Arrays First](https://danholloran.me/posts/javascript-iterator-helpers-stop-converting-to-arrays): Iterator helpers bring map, filter, take, and drop to any iterator without spreading into an array first. They went Baseline in 2025, and they change how you handle Maps, Sets, and generators. - [CSS :has() in Practice: The Parent Selector You Can Finally Ship](https://danholloran.me/posts/css-has-in-practice-the-parent-selector-you-can-finally-ship): The :has() selector is Baseline and fast in 2026. Here's how to use it for parent styling, sibling reactions, and quantity queries without reaching for JavaScript. - [CSS @function: Reusable Logic Comes Native to the Browser](https://danholloran.me/posts/css-function-reusable-logic-comes-native-to-the-browser): CSS finally has real, reusable functions. The new @function at-rule lets you define typed helpers that run in the browser with live values — here is how it works and where it is supported today. - [The Soft Navigations API: Core Web Vitals Finally Work in SPAs](https://danholloran.me/posts/soft-navigations-api-core-web-vitals-finally-work-in-spas): Chrome ships the Soft Navigations API unflagged in 151, giving single-page apps a standardized way to measure LCP, INP, and CLS per route change instead of only on the first load. - [Declarative Shadow DOM: Web Components That Render Before Your JavaScript Does](https://danholloran.me/posts/declarative-shadow-dom-server-rendered-web-components): Shadow DOM used to mean a blank page until your bundle loaded. The shadowrootmode attribute changed that, and it has been in every major browser since early 2024. - [OPFS: A Real File System in the Browser](https://danholloran.me/posts/opfs-a-real-file-system-in-the-browser): The Origin Private File System gives you byte-level, synchronous file I/O in the browser. Here's how it works, when to reach for it, and why it's the reason SQLite runs well on the web now. - [CSS light-dark(): Stop Duplicating Your Dark Mode Colors](https://danholloran.me/posts/css-light-dark-stop-duplicating-your-dark-mode-colors): The CSS light-dark() function collapses your two dark-mode palettes into a single declaration. Here is how it works, the color-scheme gotcha that trips everyone up, and how to wire up a manual theme toggle. - [URLPattern: The Browser Finally Has a Built-In Router](https://danholloran.me/posts/urlpattern-the-browser-finally-has-a-built-in-router): URLPattern went Baseline in late 2025, giving the platform a native, framework-free way to match and parse URLs. Here is how it works and where it earns its place. - [CSS Grid Lanes: Native Masonry Has Finally Landed](https://danholloran.me/posts/css-grid-lanes-native-masonry-has-landed): Masonry layout is coming to CSS as grid-lanes, and Safari shipped it first. Here's how the new display value works, why it beats the JavaScript libraries, and what it fixes for keyboard users. - [Invoker Commands: Wiring Buttons to Dialogs and Popovers Without JavaScript](https://danholloran.me/posts/invoker-commands-buttons-dialogs-popovers-without-javascript): The Invoker Commands API lets a button declare what it controls with command and commandfor, replacing modal and popover glue code with plain HTML. - [CSS field-sizing: Auto-Growing Textareas Without a Line of JavaScript](https://danholloran.me/posts/css-field-sizing-auto-growing-textareas-without-javascript): The auto-growing textarea has been a JavaScript rite of passage for years. A single CSS declaration now does the whole job, and it works on inputs and selects too. - [Fallow: A Codebase Truth Layer for Agent-Written Code](https://danholloran.me/posts/fallow-a-codebase-truth-layer-for-agent-written-code): Fallow is a Rust-native tool that maps your whole TS/JS codebase to catch dead code, duplication, and architecture drift. Here's how it fits alongside ESLint, Prettier, and agent guidelines when you're reviewing PRs you didn't write. - [Building a Claude Code Status Line With Usage Bars and a Clickable Repo](https://danholloran.me/posts/building-a-claude-code-status-line-with-usage-bars-and-a-clickable-repo): A walkthrough of a custom Claude Code status line that renders context and rate-limit usage as colored bars and turns your repo name into a clickable link. - [The Navigation API: Stop Wrestling with history.pushState](https://danholloran.me/posts/the-navigation-api-stop-wrestling-with-history-pushstate): The Navigation API hit Baseline in early 2026, giving SPAs a single, purpose-built place to intercept and manage routing. Here's why it finally replaces the History API. - [Grimicorn Neon: When a Calm Theme Goes Loud](https://danholloran.me/posts/grimicorn-neon-when-a-calm-theme-goes-loud): The high-voltage variant of Grimicorn keeps every semantic role and swaps in eight electric hexes. Here's what changes, what doesn't, and the contrast tradeoff that makes neon-on-black a deliberate choice. - [scheduler.yield(): The One-Liner That Fixes Your INP](https://danholloran.me/posts/scheduler-yield-the-one-liner-that-fixes-your-inp): A practical look at scheduler.yield(), the browser API that breaks up long tasks and keeps the main thread responsive without the setTimeout penalty. - [Building Grimicorn: One Palette, Fourteen Tools](https://danholloran.me/posts/building-grimicorn-one-palette-fourteen-tools): How I turned a single calm, low-fatigue color palette into matching dark and light themes for VS Code, terminals, Obsidian, Claude Code and ten other tools — all generated from one source of truth. - [GraphQL Fragments: Let Each Component Own Its Data](https://danholloran.me/posts/graphql-fragments-let-each-component-own-its-data): GraphQL fragments let each component declare exactly the fields it needs, eliminating overfetching and the hidden dependencies that make GraphQL codebases painful to refactor. - [CSS @property: Typed, Animatable Custom Properties](https://danholloran.me/posts/css-property-typed-animatable-custom-properties): Unregistered CSS custom properties can't animate — they just snap. @property fixes that by giving the browser a type, a default, and an inheritance rule, unlocking smooth transitions for gradients, counters, and design tokens. - [CSS @scope: Component-Scoped Styles Are Now Native](https://danholloran.me/posts/css-scope-native-component-styles): CSS @scope reached full browser support in December 2025 — here's how to use it to write component-scoped styles without CSS Modules, BEM, or a build step. - [Turning a Base M4 Mac Mini Into an Always-On Automation Box](https://danholloran.me/posts/turning-a-base-m4-mac-mini-into-an-always-on-automation-box): Why I bought the cheapest M4 Mac mini, configured it to never sleep, and wired it up so I can run and control all my scheduled automations from my phone. - [WCAG 2.2: What Frontend Developers Actually Need to Fix](https://danholloran.me/posts/wcag-2-2-what-frontend-developers-need-to-fix): WCAG 2.2 became the enforcement standard in 2026. Here are the nine new success criteria that matter most for frontend developers — and what to actually do about them. - [CSS @starting-style: Animate Elements as They Enter the DOM](https://danholloran.me/posts/css-starting-style-entry-animations): The @starting-style rule gives CSS transitions a starting point when elements first appear, enabling smooth entry animations from display:none or fresh DOM insertion — no JavaScript required. - [CSS User Preference Media Queries: Build Accessible Experiences Without JavaScript](https://danholloran.me/posts/css-user-preference-media-queries): A practical guide to prefers-reduced-motion, prefers-color-scheme, prefers-contrast, and forced-colors — the CSS media queries that respect user accessibility settings with zero JavaScript. - [Vue 3.6 Vapor Mode: Opt Out of the Virtual DOM](https://danholloran.me/posts/vue-3-6-vapor-mode-opt-out-of-the-virtual-dom): Vue 3.6 Vapor Mode eliminates the virtual DOM for opted-in components, delivering SolidJS-level performance without rewriting a single line of your template logic. - [CSS if(): Inline Conditionals for Smarter Styling](https://danholloran.me/posts/css-if-function-inline-conditionals): CSS finally has native conditional logic with the new if() function — write style queries, media checks, and feature detection directly inside property declarations without extra selectors or JavaScript. - [A Deep Dive into Vue 3's Suspense Component](https://danholloran.me/posts/a-deep-dive-into-vue-3s-suspense-component): How Vue's Suspense component coordinates async setup, fallback content, and error handling — and the patterns that keep it from becoming a loading-spinner mess. - [CSS ::search-text: Style the Browser's Find-in-Page Highlights](https://danholloran.me/posts/css-search-text-style-find-in-page-highlights): The new ::search-text pseudo-element lets you style the highlights from Ctrl+F find-in-page, so they finally match your site instead of clashing with it. - [SvelteKit Remote Functions: Goodbye, API Boilerplate](https://danholloran.me/posts/sveltekit-remote-functions-goodbye-api-boilerplate): SvelteKit's remote functions let you call type-safe server code straight from your components — no +server.ts endpoints, no fetch wrappers, no manually synced types. - [Tailwind CSS v4: Ditch the Config File, Embrace @theme](https://danholloran.me/posts/tailwind-css-v4-theme-directive-config): Tailwind CSS v4 moves design token configuration out of tailwind.config.js and into your CSS with the @theme directive — here's what that means for your workflow. - [JavaScript's using Keyword: Automatic Resource Cleanup in ES2026](https://danholloran.me/posts/javascript-using-explicit-resource-management-es2026): ES2026 introduces the using and await using keywords for automatic resource cleanup — no more forgetting to close that database connection or file handle in a finally block. - [The Speculation Rules API: Instant Page Navigations Without a Framework](https://danholloran.me/posts/speculation-rules-api-instant-page-navigations): The Speculation Rules API lets you tell the browser which pages to prefetch or fully prerender in the background — delivering near-instant navigations with a few lines of JSON and no framework required. - [Astro Actions: Type-Safe Server Functions Without the Boilerplate](https://danholloran.me/posts/astro-actions-type-safe-server-functions-without-the-boilerplate): Astro Actions let you define backend functions once and call them from HTML forms or client JavaScript with full type safety — no REST endpoints, no manual fetch, no type casting. - [Vite 8 + Rolldown: Rust-Powered Builds That Are 10–30x Faster](https://danholloran.me/posts/vite-8-rolldown-rust-powered-builds): Vite 8 replaces its dual esbuild/Rollup pipeline with Rolldown, a Rust-based bundler that delivers 10–30x faster production builds — and real teams are already seeing dramatic results. - [CSS Scroll-Driven Animations: No JavaScript Required](https://danholloran.me/posts/css-scroll-driven-animations-no-javascript-required): CSS scroll-driven animations let you create silky-smooth scroll effects — progress bars, reveal animations, parallax — using pure CSS with zero JavaScript. - [Connecting Wallets the Right Way: wagmi v2 and EIP-6963](https://danholloran.me/posts/wagmi-v2-eip-6963-multi-wallet-dapps): The old window.ethereum trick breaks when users have multiple wallets installed. Here's how EIP-6963 and wagmi v2 solve multi-wallet discovery cleanly, with real TypeScript examples. - [TypeScript 7.0: The Go Compiler That Makes TS 10x Faster](https://danholloran.me/posts/typescript-7-go-compiler-10x-faster): TypeScript 7.0 rewrites the compiler in Go, cutting build times by up to 10x. Here's what changed, what it means for your projects, and how to try it right now. - [React Compiler v1.0: Automatic Memoization Without the Headache](https://danholloran.me/posts/react-compiler-v1-automatic-memoization-without-the-headache): React Compiler v1.0 landed in production-ready form and it automatically handles the memoization patterns you used to write by hand — here's what changed, how to set it up, and what it means for your day-to-day React code. - [Svelte 5 Runes: Reactive State That Actually Makes Sense](https://danholloran.me/posts/svelte-5-runes-reactive-state-that-actually-makes-sense): An introduction to Svelte 5 runes — the explicit reactive primitives ($state, $derived, $effect, $props) that replace Svelte 4's magic $: syntax and make reactivity predictable, composable, and no longer limited to .svelte files. - [CSS Anchor Positioning: Stop Using JavaScript for Tooltips](https://danholloran.me/posts/css-anchor-positioning-stop-using-javascript-for-tooltips): A deep dive into the CSS Anchor Positioning API — how anchor-name, position-anchor, position-area, and position-try-fallbacks let you build tooltips and floating elements entirely in CSS, no JavaScript or Floating UI required. - [CSS Customizable Select: Finally Style It Without the Hacks](https://danholloran.me/posts/css-customizable-select-finally-style-it-without-the-hacks): A guide to the CSS customizable select — how appearance: base-select unlocks full styling of native dropdowns including custom icons, rich option content, and picker pseudo-elements, without sacrificing accessibility or dropping in a JS library. - [Biome: The Fast All-in-One ESLint and Prettier Replacement](https://danholloran.me/posts/biome-the-fast-eslint-and-prettier-replacement): Biome is a Rust-based toolchain that replaces ESLint and Prettier with a single fast binary. Here's what it does well, where it falls short, and how to migrate. - [JavaScript Temporal API: Dates Are Finally Fixed](https://danholloran.me/posts/javascript-temporal-api-dates-are-finally-fixed): A practical introduction to the JavaScript Temporal API — the ES2026 replacement for Date that gets types right, handles timezones properly, and makes date arithmetic readable without moment.js or date-fns. - [CSS Cascade Layers: Finally Taking Control of Specificity](https://danholloran.me/posts/css-cascade-layers-taking-control-of-specificity): The @layer rule gives you explicit control over which CSS wins when rules conflict. Here's how cascade layers work and how they change the way you structure stylesheets. - [Edge Functions: Running Code Where Your Users Are](https://danholloran.me/posts/edge-functions-cloudflare-workers-and-the-edge-runtime): Edge functions run your code in data centers close to users, eliminating the latency of a centralized origin server. Here's what they're good for and how to build with them. - [Progressive Web Apps in 2026: Offline-First Patterns That Actually Work](https://danholloran.me/posts/progressive-web-apps-in-2026-offline-first-patterns): PWAs have matured significantly. Between Workbox's caching strategies, the Background Sync API, and the Web App Manifest improvements, building offline-capable apps is more practical than ever. - [Node.js 22 LTS: The Features Worth Knowing About](https://danholloran.me/posts/nodejs-22-lts-features-worth-knowing): Node.js 22 became the active LTS in October 2024, bringing a native test runner, built-in watch mode, require() for ES modules, and much more. Here's what's useful in practice. - [Zustand: Lightweight State Management That Stays Out of Your Way](https://danholloran.me/posts/zustand-lightweight-state-management-that-stays-out-of-your-way): Zustand is a minimal global state library for React that skips the boilerplate entirely. Here's how it works, when to reach for it, and patterns that scale well. - [TanStack Query v5: Data Fetching Done Right](https://danholloran.me/posts/tanstack-query-v5-data-fetching-done-right): TanStack Query v5 cleaned up the API, unified the mental model, and added first-class support for infinite queries and streaming. Here's what changed and why the library remains the standard. - [Web Workers: Keeping Your UI Smooth When the Work Gets Heavy](https://danholloran.me/posts/web-workers-offloading-heavy-computation-from-the-main-thread): JavaScript is single-threaded, but that doesn't mean your UI has to freeze during heavy computation. Web Workers give you real parallel execution — here's how to use them well. - [Vitest: Modern Unit Testing That Doesn't Fight Your Toolchain](https://danholloran.me/posts/vitest-modern-testing-for-vite-projects): Vitest brings Jest-compatible testing to Vite projects with native TypeScript support, in-source tests, and a dramatically faster watch mode. Here's how to get started. - [Astro 5: Content Collections v2 and Server Islands Explained](https://danholloran.me/posts/astro-5-content-collections-and-server-islands): Astro 5 ships a redesigned Content Layer and a powerful Server Islands feature that brings dynamic personalization to static sites. Here's what changed and why it matters. - [Bun vs Node.js: Should You Actually Switch?](https://danholloran.me/posts/bun-vs-nodejs-should-you-switch): Bun is fast, ships with a bundler and test runner, and is Node-compatible. But is it actually worth switching your production backend or toolchain? Here's an honest take. - [React 19: The Stable Features You Should Actually Be Using](https://danholloran.me/posts/react-19-stable-features-you-should-be-using): React 19 went stable in December 2024. Actions, the use() API, new hooks, and document metadata support are all production-ready. Here's what's worth adopting first. - [Nuxt 4: What's Changing and How to Prepare Your App](https://danholloran.me/posts/nuxt-4-upgrade-guide-and-new-features): Nuxt 4 brings a restructured project layout, improved data fetching, and a cleaner compatibility layer. Here's what to expect and how to migrate without pain. - [JavaScript Signals: The New Reactivity Primitive Coming to the Platform](https://danholloran.me/posts/javascript-signals-the-new-reactivity-primitive): Signals are already powering reactivity in Solid, Preact, and Angular. Now there's a TC39 proposal to bring them to the JavaScript language itself — here's what that means. - [The View Transitions API: Smooth Page Animations Without a Framework](https://danholloran.me/posts/view-transitions-api-smooth-page-animations): The View Transitions API lets you animate between page states with just a few lines of CSS and JavaScript. Here's how it works and where it shines. - [AI in the Browser: Running Real Models with Transformers.js](https://danholloran.me/posts/ai-in-the-browser-transformers-js): You don't need a backend to run AI anymore. Transformers.js lets you run Hugging Face models directly in the browser or Node.js — here's how to get started. - [Vite 6: What's New and Why the Environment API Changes Everything](https://danholloran.me/posts/vite-6-whats-new): Vite 6 arrived in late 2024 with the new Environment API at its core. Here's what changed, what it means for framework authors, and what you need to update in your projects. - [CSS Container Queries: A Practical Guide for Component-Based Layouts](https://danholloran.me/posts/css-container-queries-practical-guide): Container queries finally give us components that adapt to their context, not just the viewport. Here's how to use them effectively in real projects. - [Next.js 15 App Router: Patterns Worth Adopting Now](https://danholloran.me/posts/nextjs-15-app-router-patterns): Next.js 15 shipped with a stabilized App Router and a cleaner async model. Here are the patterns that actually improve your day-to-day development. - [TypeScript 5.7: What's New and Why It Matters](https://danholloran.me/posts/typescript-5-7-whats-new): TypeScript 5.7 landed with some genuinely useful additions — from stricter initialization checks to path rewriting in emit. Here's what you need to know. - [Mastering Vue.js Development: A Guide for Beginners](https://danholloran.me/posts/mastering-vuejs-development-a-guide-for-beginners): A beginner's guide to Vue.js — covering the Vue instance, reactivity, components, Vuex state management, and Vue Router to build dynamic and interactive web applications. - [The Power of Javascript: Unlocking the Potential of Web Development](https://danholloran.me/posts/the-power-of-javascript-unlocking-the-potential-of-web-development): An overview of JavaScript's role in modern web development — from cross-browser compatibility and async programming to the React, Angular, and Vue ecosystem that makes building interactive applications more productive. - [The Power of Tailwind.css: A Modern Approach to Efficient CSS Styling](https://danholloran.me/posts/the-power-of-tailwindcss-a-modern-approach-to-efficient-css-styling): An introduction to Tailwind CSS's utility-first methodology — how its pre-built classes, responsive design tools, and flexible configuration help developers build clean, maintainable UIs faster. - [Taming the Winds of Web Design with Tailwind.css!](https://danholloran.me/posts/taming-the-winds-of-web-design-with-tailwindcss): An enthusiastic introduction to Tailwind CSS — how its utility-first approach removes the pain of complex class names and specificity battles while staying fully customizable for any design system. - [Unveiling the Magic of Vue.js Development](https://danholloran.me/posts/unveiling-the-magic-of-vuejs-development): A whimsical take on Vue.js — its elegant syntax, effortless integration with Vuex and Vue Router, and the welcoming community that makes building reactive, component-driven UIs feel like a superpower. - [How to Optimize Website Performance in Front-End Development](https://danholloran.me/posts/how-to-optimize-website-performance-in-front-end-development): Practical tips for front-end performance optimization — from writing clean and efficient code to image and asset optimization, lazy loading, and reducing unnecessary server requests. - [The Evolution of Front-End Development: Past, Present, and Future](https://danholloran.me/posts/the-evolution-of-front-end-development-past-present-and-future): A look at how front-end development has evolved from table layouts and inline styles to responsive design, component frameworks, and the modern web — with a peek at where it might be heading next. - [Avoid Using Else](https://danholloran.me/posts/avoid-using-else): A case for eliminating else from your code — why it leads to cleaner refactors, pairs well with small named functions, and makes logic easier to read and understand. - [Questions to ask before choosing a static site generator](https://danholloran.me/posts/questions-to-ask-before-choosing-a-static-site-generator): A link to an Ample blog post covering the key questions to ask when selecting a static site generator — comparing common SSGs to help you pick the right one for your next project. - [Just How Niche is Headless WordPress?](https://danholloran.me/posts/just-how-niche-is-headless-word-press): Thoughts on a CSS-Tricks post about headless WordPress — when it makes sense, why the broader WordPress community may not benefit from it, and how tools like Strattic can bring Jamstack benefits without the developer overhead. - [target=blank (CSS-Tricks)](https://danholloran.me/posts/target-blank-css-tricks): A CSS-Tricks tip on the difference between target="blank" and target="_blank" — and how the version without the underscore lets you reuse the same tab across multiple link clicks. - [No, Utility Classes Aren't the Same As Inline Styles (by Sarah Dayan)](https://danholloran.me/posts/no-utility-classes-aren-t-the-same-as-inline-styles): A link to Sarah Dayan's post making the case that utility classes are fundamentally different from inline styles — and why the rise of Tailwind CSS has made this distinction more important than ever. - [VisBug (Dev Tools for Designers)](https://danholloran.me/posts/visbug): A quick look at VisBug, the browser extension that gives designers and developers a visual layer on top of any site — inspecting accessibility, tweaking colors, and moving elements around without touching the inspector. - [Laracon Online 2019 Notes and Thoughts](https://danholloran.me/posts/laracon-online-2019-notes-and-thoughts): Notes and takeaways from Laracon Online 2019 — covering event sourcing in Laravel, writing less complex code, Livewire, and other highlights from the conference sessions. - [Testing mocked email in WordPress with PHPUnit](https://danholloran.me/posts/testing-mocked-email-in-word-press-with-php-unit): A quick tip on using WordPress's built-in MockPHPMailer in PHPUnit tests to intercept and assert against outgoing emails without sending anything to real recipients. - [Setting Up Your Shell Configuration and OHMyZSH](https://danholloran.me/posts/setting-up-your-shell-configuration-and-ohmyzsh): A follow-up to the shell setup guide — how to configure your .zshrc with aliases and PATH entries, and use OhMyZSH plugins and themes to make your terminal faster and more enjoyable to work in. - [Setting up Mailhog on MAMP](https://danholloran.me/posts/setting-up-mailhog-on-mamp): How to install and configure Mailhog on MAMP so all outgoing mail is intercepted locally during development — preventing test emails from reaching real users while you build and debug. - [Launchcode Mentorship](https://danholloran.me/posts/launchcode-mentorship): Reflections on mentoring through LaunchCode — why passion and self-driven learning matter more than formal education, and what it means to help someone break into development the way you had to figure it out yourself. - [Looking Into Statamic Flat File CMS](https://danholloran.me/posts/looking-into-statamic-flat-file-cms): First impressions of Statamic — a flat-file CMS built on Laravel that bridges the gap between WordPress, static site generators, and a full framework, with a Vue-powered admin that feels like WordPress without the baggage. - [St Louis WordCamp 2016](https://danholloran.me/posts/st-louis-wordcamp-2016): Notes and session summaries from St. Louis WordCamp 2016 at Washington University — covering plugin development, security, REST API patterns, and other developer-focused talks. - [Laravel and WebSockets](https://danholloran.me/posts/laravel-and-websockets): A step-by-step guide to setting up real-time WebSockets with Laravel using Redis, Socket.io, and Supervisor — broadcasting Laravel events to the browser without relying on a hosted service like Pusher. - [Laravel Forge, Digital Ocean and WebSockets](https://danholloran.me/posts/laravel-forge-digital-ocean-and-websockets): A follow-up to the Laravel WebSockets setup guide — how to configure Redis and Socket.io daemons on a Digital Ocean server using Laravel Forge and open the right firewall port to make it all work in production. - [Why Does ExpressionEngine Save Templates in the Database?](https://danholloran.me/posts/why-does-expressionengine-save-templates-in-the-database): A curious look at ExpressionEngine's decision to store templates in the database — the tradeoffs around version control, file-based overrides, and why allowing database queries in views feels uncomfortable. - [Quickly Install Applications on Your Mac With Homebrew and Cask](https://danholloran.me/posts/quickly-install-applications-on-your-mac-with-homebrew-and-cask): How to use Homebrew and Cask to bulk-install Mac applications from a script — a reliable way to get your machine back up and running quickly after a clean OS install. - [Why Would You Use a Fixed Header?](https://danholloran.me/posts/why-would-you-use-a-fixed-header): A take on why fixed headers are almost never the right choice — how they cover content, frustrate users, and only make sense in the narrow case of single-page anchor navigation. - [Vue.js Component Messaging Continued](https://danholloran.me/posts/vues-js-component-messaging-continued): A follow-up to the Vue.js component messaging post — exploring a prop-based approach to namespaced events so multiple instances of the same component on a page can each respond to their own events independently. - [Vue.js Component Messaging](https://danholloran.me/posts/vues-js-component-messaging): A walkthrough of how to pass events between sibling Vue.js components — using the root Vue instance as a message bus to dispatch alerts from any component without creating tight parent-child coupling. - [Experimenting With Laravel and Vue.js](https://danholloran.me/posts/experimenting-with-laravel-and-vue-js): First impressions of Laravel and Vue.js coming from the WordPress world — covering Elixir, Homestead, Blade templates, and Vue's reactive data model, with thoughts on when each tool belongs. - [Setting Up Your Shell](https://danholloran.me/posts/setting-up-your-shell): A beginner-friendly guide to setting up a better terminal on Mac — installing iTerm2, switching to zsh, and customizing colors and fonts so the command line feels less intimidating and more powerful. - [Don't Fear The Shell](https://danholloran.me/posts/dont-fear-the-shell): An encouragement for developers intimidated by the command line — why the CLi isn't as scary as it looks, and how tools like zsh, iTerm2, and OhMyZSH can make it genuinely enjoyable to work in. - [Installing Linters Atom](https://danholloran.me/posts/installing-linters-atom): A walkthrough for setting up and configuring linter plugins in the Atom text editor — covering both the Preferences UI and the APM command-line tool for package installation. - [Installing Linters Sublime Text 3](https://danholloran.me/posts/installing-linters-sublime-text-3): How to install and configure SublimeLinter and its language-specific plugins in Sublime Text 3 via Package Control — the right way to get real-time linting in your editor. - [Linting Your Code: Installing the Linters](https://danholloran.me/posts/linting-your-code-installing-the-linters): A guide to installing the prerequisite linters for your development workflow — PHPCS with WordPress Coding Standards, JSHint, JSCS, and SCSS-Lint — before wiring them into your editor. - [Base Environment Setup](https://danholloran.me/posts/base-environment-setup): A step-by-step Mac developer environment setup covering Node.js, Ruby, Git, Homebrew, PHP, and Composer — the foundation needed before adding tools like Sass, Grunt, or Bower. - [Has WP_Query Abstracted To Much?](https://danholloran.me/posts/has-wp-query-abstracted-to-much): A look at whether WP_Query hides too much from WordPress developers — the performance blind spots that come from treating the database as a black box, and why using Query Monitor is eye-opening. - [Using Trello to Manage Your Blog Posts](https://danholloran.me/posts/using-trello-to-manage-your-blog-posts): How using Trello as a blog idea bank makes it easier to write consistently — capturing random ideas in a card-based format so you always have something to write about when you sit down. - [Change URLs On Your WP Engine Install](https://danholloran.me/posts/change-urls-on-your-wp-engine-install): A guide to all the places you need to update your site URL after migrating to WP Engine — the database, wp-config.php, and the WP Engine dashboard — and why settings alone won't cut it. - [Is Apple Pay, Coin, etc. Helpful?](https://danholloran.me/posts/is-apple-pay-coin-etc-helpful): A practical look at card-consolidating payment tools like Apple Pay and Coin after months of daily use — weighing their convenience against real-world adoption gaps and the security tradeoffs between them. - [Shortcode API You're Doing It Wrong](https://danholloran.me/posts/shortcode-api-youre-doing-it-wrong): A look at the WordPress shortcode API changes in the 4.2.3 security release — why some common patterns were never correct to begin with, and the right way to think about shortcode attributes and nesting. - [WordCamp USA City Chosen](https://danholloran.me/posts/wordcamp-usa-city-chosen): Thoughts on Philadelphia being selected as the host city for the first WordCamp USA — and whether it's worth the trip when WordCamp San Francisco is already an annual tradition. - [My 5ish Favorite Atom Plugins](https://danholloran.me/posts/my-5ish-favorite-atom-plugins): A roundup of the top Atom editor plugins worth installing — covering code beautification, docblock generation, linting integration, file icons, and a few other productivity boosters after switching from Sublime Text. - [Check Out Ghost Inspector](https://danholloran.me/posts/check-out-ghost-inspector): An introduction to Ghost Inspector, a record-and-replay browser regression testing tool that makes automated UI testing more accessible for small teams without writing Selenium tests by hand. - [WP Better Attachments v1.3.11 Released](https://danholloran.me/posts/wp-better-attachments-released): Release notes for WP Better Attachments v1.3.11 — adding a use_caption_for_title option, a second attachments button at the bottom of the meta box, and a PHP warning fix. - [WPBA Thoughts and Road Map](https://danholloran.me/posts/wpba-thoughts-and-road-map): A candid look at the WP Better Attachments rewrite — the settings architecture debt, the case for spinning off the crop editor as an add-on, and thoughts on how to sustainably support an open-source plugin with thousands of active installs. - [Setup Vhosts in MAMP](https://danholloran.me/posts/setup-vhosts-in-mamp): How to configure Apache Virtual Hosts in MAMP so each local project is accessible via its own custom .dev domain instead of navigating subdirectories of localhost. - [Display PHP Errors in MAMP](https://danholloran.me/posts/display-php-errors-in-mamp): A quick tip for enabling PHP error display in MAMP by flipping display_errors to On in php.ini — so you get real error messages instead of the white screen of death. - [Moving From Sublime to Atom](https://danholloran.me/posts/moving-from-sublime-to-atom): A comparison of Atom and Sublime Text after switching editors — where Atom shines with active development and HTML/CSS/JS extensibility, and where Sublime still wins on speed and search. - [Moving From WordPress to Ghost to Jekyll](https://danholloran.me/posts/moving-from-wordpress-to-ghost-to-jekyll): The journey from WordPress to Ghost to Jekyll — why each platform was a step closer to the ideal developer blogging setup, and what finally made a static site the right choice. - [Check Out Hyperpolygot](https://danholloran.me/posts/check-out-hyperpolygot): A recommendation for Hyperpolyglot, a site that puts JavaScript, PHP, Python, and Ruby side-by-side to show how similar languages really are at a syntax level — great for picking up a new language faster. - [Why I Decided to Use a Themeforest Theme](https://danholloran.me/posts/why-i-decided-to-use-a-themeforest-theme): Why buying a Themeforest theme beat spending another weekend at 85% on a custom design — freeing up time and energy for writing and building things that actually matter. - [Easily Retrieve Browser Information](https://danholloran.me/posts/easily-get-your-clients-browser-information): A tip for getting exact browser and OS details from clients using yourbrowser.is — useful for reproducing cross-browser bugs with tools like Browserstack when you can't replicate the issue yourself. - [What I Miss From WordPress & What Ghost Does Better](https://danholloran.me/posts/what-i-miss-from-wordpress): An honest comparison list after switching from WordPress to Ghost — the features and familiarity left behind, and the things Ghost genuinely does better for a developer who just wants to write. - [How I (Almost...) Setup My Ghost Pro Custom Domain Name](https://danholloran.me/posts/setup-ghost-pro-custom-domain-name): A candid account of attempting to point a custom domain to Ghost Pro — the DNS rabbit hole, what almost worked with CloudFlare and Hover, and why sometimes forwarding the domain is good enough. - [St. Louis WordCamp 2015 Notes](https://danholloran.me/posts/st-louis-wordcamp-2015): Personal notes and session schedule from St. Louis WordCamp 2015 — highlights include a talk on Atomic Design Principles and a podcasting panel that made for a nice change of pace. - [A minute with a Ghost...](https://danholloran.me/posts/a-minute-with-a-ghost): A first look at Ghost CMS after years on WordPress — covering its speed, built-in Markdown support, and writer-focused experience that makes blogging feel fresh again. - [Missing Content](https://danholloran.me/posts/missing-content): A showcase of the Missing Content WordPress plugin — a shortcode-based placeholder tool that generates lorem ipsum, bacon ipsum, hipster ipsum, Blokk font blocks, and placeholder images during development. - [WP Multi File Uploader](https://danholloran.me/posts/new-plugin-wp-multi-file-uploader): An announcement for WP Multi File Uploader, a WordPress plugin that lets users upload multiple files at once through a frontend form, automatically creating media library attachments for each upload. - [WP Github Recent Commit Widget](https://danholloran.me/posts/wp-github-recent-commit-widget): An announcement for the WP Github Recent Commit Widget — a WordPress sidebar widget that displays your most recent commits from a public GitHub repository, complete with a random Octocat for good measure. - [WP Better Attachments](https://danholloran.me/posts/wp-better-attachments): An overview of WP Better Attachments, a WordPress plugin for adding, editing, sorting, and managing file attachments directly from the post editor — with full support for custom post types and image crop control. ## Obsidian & Productivity - [One Vault or Many? What Splitting an Obsidian Vault Actually Costs You](https://danholloran.me/posts/one-vault-or-many-what-splitting-an-obsidian-vault-actually-costs-you): Splitting your Obsidian vault feels like tidying up, but a vault boundary is a hard wall your search, links, and queries cannot cross. Here is what you actually give up, and when it is worth it. - [Obsidian Search Operators: Find Anything Without a Plugin](https://danholloran.me/posts/obsidian-search-operators-find-anything-without-a-plugin): Obsidian's core Search has a real query language hiding behind the search box. Here's how file, path, line, block, section, task, and property operators replace half the plugins people install to find things. - [Obsidian Block Embeds: Stop Copy-Pasting Your Own Notes](https://danholloran.me/posts/obsidian-block-embeds-stop-copy-pasting-your-own-notes): Whole-note embeds are the easy part. Block references are where transclusion in Obsidian actually pays off, and where one misplaced caret silently breaks everything. - [Inline Dataview Queries: Live Numbers Inside Your Notes](https://danholloran.me/posts/inline-dataview-queries-live-numbers-inside-your-notes): Dataview code blocks give you tables. Inline queries give you a single live value in the middle of a sentence, which turns out to be the feature you reach for far more often. - [Your Obsidian Plugin List Is a Supply Chain](https://danholloran.me/posts/your-obsidian-plugin-list-is-a-supply-chain): Obsidian's 2026 Community directory added automated scans and safety scorecards for every plugin version. Here's what that changes, and how to actually audit the plugins already sitting in your vault. - [Obsidian QuickAdd: Capture, Templates, and Macros Without Leaving Your Keyboard](https://danholloran.me/posts/obsidian-quickadd-capture-templates-and-macros-without-leaving-your-keyboard): QuickAdd turns Obsidian into a keyboard-driven capture machine. Here is how its Captures, Templates, and Macros actually work, with copy-paste examples. - [Building an Obsidian Theme: A Practical Guide to CSS Variables](https://danholloran.me/posts/building-an-obsidian-theme-a-practical-guide-to-css-variables): You do not need to fight cascade specificity to restyle Obsidian. Override a handful of CSS variables and you have a real theme that respects light and dark mode. - [Obsidian Web Clipper: Clip the Web Straight Into Your Vault](https://danholloran.me/posts/obsidian-web-clipper-clip-the-web-straight-into-your-vault): The official Obsidian Web Clipper turns any web page into a clean, templated vault note. Here's how its templates, variables, and filters actually work. - [Obsidian on Mobile: Stop Fighting the Toolbar](https://danholloran.me/posts/obsidian-on-mobile-stop-fighting-the-toolbar): Most people give up on Obsidian mobile because the defaults don't match how they actually capture notes. The fix isn't plugins — it's ten minutes in the Mobile settings. - [Obsidian Sync vs. Git vs. iCloud: Choosing a Vault Sync Strategy](https://danholloran.me/posts/obsidian-sync-vs-git-vs-icloud-choosing-a-vault-sync-strategy): Your vault is just a folder of Markdown, which makes syncing it feel like a solved problem. It isn't. Here's how Obsidian Sync, Git, and iCloud actually behave once mobile and plugins enter the picture. - [Obsidian CSS Snippets: Customize Your Vault Without a Theme](https://danholloran.me/posts/obsidian-css-snippets-customize-your-vault-without-a-theme): Community themes are all-or-nothing. CSS snippets let you change one thing at a time, and Obsidian's built-in variables make it easier than you'd expect. - [Obsidian Publish: Turn Your Vault Into a Website Without a Static Site Generator](https://danholloran.me/posts/obsidian-publish-turn-your-vault-into-a-website): How Obsidian Publish turns selected notes into a live, searchable website with backlinks and graph view intact, and when it beats rolling your own digital garden. - [Obsidian Bases: Native Database Views Without Dataview](https://danholloran.me/posts/obsidian-bases-native-database-views-without-dataview): Bases is Obsidian's built-in core plugin for turning notes and their properties into live tables and cards. Here's how the syntax works and when to reach for it instead of Dataview. - [Obsidian for Developers: Make Your Vault Work Like Your Codebase](https://danholloran.me/posts/obsidian-for-developers-make-your-vault-work-like-your-codebase): Obsidian is plain-text markdown all the way down, which means the same tools you use on code work on your notes. Here's how to version your vault with Git, get real syntax highlighting, and run JavaScript inside your notes. - [Linking Your Thinking in Obsidian: How MOCs Replace Folders](https://danholloran.me/posts/linking-your-thinking-in-obsidian-how-mocs-replace-folders): Maps of Content (MOCs) are the organizing idea at the heart of the LYT framework — and once you understand them, you may never file a note into a folder again. - [Obsidian Callouts: Make Your Notes Scannable at a Glance](https://danholloran.me/posts/obsidian-callouts-make-your-notes-scannable-at-a-glance): Obsidian's callout feature turns plain blockquotes into visual highlights — warnings, tips, collapsible sections, and custom types — using nothing but Markdown. - [Zettelkasten in Obsidian: A Practical Guide to Atomic Thinking](https://danholloran.me/posts/zettelkasten-in-obsidian-a-practical-guide-to-atomic-thinking): Most people use Obsidian as a fancy folder system. The Zettelkasten method changes that — here's how to set one up without overcomplicating it. - [Daily Notes in Obsidian: Build a Workflow That Actually Sticks](https://danholloran.me/posts/daily-notes-in-obsidian-build-a-workflow-that-actually-sticks): How to set up a daily notes workflow in Obsidian that you will actually use, from the core plugin to Templater templates and Dataview queries. - [Making Obsidian's Graph View Actually Useful](https://danholloran.me/posts/making-obsidians-graph-view-actually-useful): The graph view looks great in screenshots, but most Obsidian users never get practical value from it. Here's how to change that. - [Templater for Obsidian: Stop Writing the Same Thing Twice](https://danholloran.me/posts/templater-plugin-stop-writing-the-same-thing-twice): The Templater plugin turns Obsidian's static template system into a real automation engine — dynamic dates, user prompts, folder triggers, and optional JavaScript make note creation genuinely effortless. - [The PARA Method in Obsidian: A Practical Guide to Organizing Your Vault](https://danholloran.me/posts/the-para-method-in-obsidian-a-practical-guide): Learn how to implement the PARA method in Obsidian to organize your vault by actionability — Projects, Areas, Resources, and Archives — and finally stop losing track of what matters. - [Excalidraw in Obsidian: Visual Thinking That Lives in Your Vault](https://danholloran.me/posts/excalidraw-in-obsidian-visual-thinking-that-lives-in-your-vault): A practical guide to the Excalidraw Community plugin for Obsidian — how to embed visual diagrams in your vault, link drawings to notes, and build a visual thinking workflow that actually integrates with your PKM. - [Using Dataview for Project Tracking in Obsidian](https://danholloran.me/posts/using-dataview-for-project-tracking-in-obsidian): Turn your Obsidian vault into a self-updating project tracker with Dataview: frontmatter conventions, a live dashboard, and task queries that never go stale. - [Obsidian Canvas: Turn Your Vault Into a Visual Thinking Space](https://danholloran.me/posts/obsidian-canvas-turn-your-vault-into-a-visual-thinking-space): How to use Obsidian's Canvas core plugin for project planning, brainstorming, and connecting notes spatially — plus a look at the open JSON Canvas format and the Advanced Canvas community plugin. - [Obsidian Properties and Frontmatter: Stop Treating Metadata as an Afterthought](https://danholloran.me/posts/obsidian-properties-and-frontmatter-a-practical-guide): Obsidian's Properties panel makes YAML frontmatter approachable for every note, and pairing it with typed fields and Dataview queries turns your vault into a genuinely queryable database. - [Obsidian Tasks: Query Your Entire Vault and Never Miss a Deadline](https://danholloran.me/posts/obsidian-tasks-plugin-query-your-vault): The Obsidian Tasks plugin turns scattered checkboxes into a vault-wide task management system — here's how to use its query syntax to build a dashboard that actually keeps you on top of things. - [Tags vs. Folders in Obsidian: How to Organize Your Vault Without Going Crazy](https://danholloran.me/posts/tags-vs-folders-in-obsidian-how-to-organize-your-vault): Folders and tags both have a place in Obsidian, but they solve fundamentally different problems. Here's how to use each one effectively so your vault stays navigable no matter how big it gets. ## Finance - [Payment Fraud Detection and the False Decline Problem](https://danholloran.me/posts/payment-fraud-detection-and-the-false-decline-problem): Card fraud systems score every transaction in well under a second, but the legitimate orders they wrongly reject cost merchants far more than the fraud they catch. A look at risk scoring, 3-D Secure, and the error nobody instruments. - [KYC in the Deepfake Era: Why a Selfie Stopped Being Proof](https://danholloran.me/posts/kyc-in-the-deepfake-era-why-a-selfie-stopped-being-proof): The document-plus-selfie onboarding flow every fintech copied is quietly failing. Here is how identity verification actually works, why injection attacks broke it, and what the layered replacement looks like. - [Self-Custody in 2026: The Seed Phrase Is No Longer the Only Way](https://danholloran.me/posts/self-custody-in-2026-the-seed-phrase-is-no-longer-the-only-way): Twelve words on a piece of paper used to be the whole story of crypto self-custody. Passkeys, MPC, and smart accounts have quietly changed what that phrase actually protects. - [Neobanks and the Sponsor Bank Model: Who Actually Holds Your Money](https://danholloran.me/posts/neobanks-and-the-sponsor-bank-model-who-actually-holds-your-money): Your favorite fintech app probably isn't a bank. Here's the sponsor bank plumbing underneath it, why the ledger matters more than the logo, and what the Synapse collapse exposed. - [How to Read an Earnings Report Without Trusting the Headline](https://danholloran.me/posts/how-to-read-an-earnings-report-without-trusting-the-headline): The number at the top of an earnings press release is the number the company chose to put there. Here is where the actual information lives: the reconciliation table, the cash flow statement, and the guidance. - [Dollar-Cost Averaging vs. Lump-Sum: What the Data Actually Says](https://danholloran.me/posts/dollar-cost-averaging-vs-lump-sum-what-the-data-actually-says): Investing a windfall all at once beats easing it in about two-thirds of the time. Here is what the research actually says, and when dollar-cost averaging still makes sense. - [How Staking Actually Works: Validators, Rewards, and Slashing](https://danholloran.me/posts/how-staking-works-validators-rewards-and-slashing-in-proof-of-stake): A plain-English look at what happens under the hood when you stake crypto: how validators secure a proof-of-stake network, where the yield comes from, and what slashing really risks. - [Open Banking: How Apps Actually Get Your Bank Data](https://danholloran.me/posts/open-banking-how-apps-actually-get-your-bank-data): The mechanics behind connecting a budgeting app to your bank account, why screen scraping is dying, and where the US open banking rules stand in 2026. - [Tax-Loss Harvesting: How Selling at a Loss Actually Works](https://danholloran.me/posts/tax-loss-harvesting-how-selling-at-a-loss-actually-works): Tax-loss harvesting turns a losing position into a deduction, but the mechanics are fussier than the pitch suggests. Here's how the netting order, the wash sale rule, and the cost-basis catch actually work. - [How Automated Market Makers Price Your Swap](https://danholloran.me/posts/how-automated-market-makers-price-your-swap): There is no order book behind a decentralized exchange swap. There is a formula. Here is the math that sets the price, and why liquidity providers can lose money while doing everything right. - [How a Card Swipe Actually Works: The Four-Party Model and Interchange](https://danholloran.me/posts/how-a-card-swipe-actually-works-the-four-party-model-and-interchange): Tap your card and the money looks instant, but four different companies and a fee called interchange are quietly settling up behind the scenes. Here's how that machinery works and why it's suddenly a political fight. - [Order Types Explained: Market, Limit, and Stop Orders](https://danholloran.me/posts/order-types-explained-market-limit-and-stop-orders): Market, limit, and stop orders each trade off price against execution in a different way. Here is how they actually work, with a worked example. - [Layer-2 Rollups: How Ethereum Scales Without Sacrificing Security](https://danholloran.me/posts/layer-2-rollups-how-ethereum-scales-without-sacrificing-security): Ethereum's mainnet can only handle so many transactions, but Layer-2 rollups solve that bottleneck without giving up the security guarantees that make the chain worth using. - [Buy Now, Pay Later: The Mechanics Behind the Checkout Button](https://danholloran.me/posts/buy-now-pay-later-the-mechanics-behind-the-checkout-button): BNPL looks simple at checkout, but the plumbing underneath is surprisingly complex. Here's how providers actually make money, and where the risks sit. - [How Stablecoins Keep Their Peg — And Why It's Harder Than It Looks](https://danholloran.me/posts/how-stablecoins-keep-their-peg): Stablecoins promise $1 forever, but the mechanics behind that stability vary wildly. Here's how fiat-backed, crypto-backed, and algorithmic designs each approach the peg — and what can go wrong. - [Options 101: Understanding Calls and Puts](https://danholloran.me/posts/options-101-understanding-calls-and-puts): A practical explainer on how stock options work — what calls and puts are, how they're priced, and what time decay means for buyers and sellers. - [Real-World Asset Tokenization: Putting Stocks, Bonds, and Real Estate On-Chain](https://danholloran.me/posts/real-world-asset-tokenization): Real-world asset tokenization is turning traditionally illiquid investments into blockchain tokens. Here is how it actually works and what risks come with it. - [How ETFs Work: The Mechanics Behind the Market's Favorite Fund](https://danholloran.me/posts/how-etfs-work-the-mechanics-behind-the-markets-favorite-fund): ETFs hold $13.4 trillion in assets and are reshaping how people invest — but most buyers don't know what actually happens when they hit the buy button. - [FedNow and Real-Time Payments: How Instant Settlement Actually Works](https://danholloran.me/posts/fednow-and-real-time-payments-how-instant-settlement-works): Most Americans still wait one to three days for bank transfers to clear. FedNow is the Federal Reserve's answer to that — but how does instant settlement actually work under the hood? ## Travel & Photography - [Diamond Lake, Oregon](https://danholloran.me/posts/travel-diamond-lake-oregon): A 3,000-acre alpine lake at 5,138 feet in the Oregon Cascades, flanked by Mount Thielsen and Mount Bailey, stocked with 300,000 rainbow trout annually. - [Heceta Head Lighthouse](https://danholloran.me/posts/travel-heceta-head-lighthouse): The most photographed lighthouse on the West Coast, built in 1894 above the Oregon Coast with a First Order Fresnel lens visible 21 miles at sea. - [Heceta Beach, Oregon](https://danholloran.me/posts/travel-heceta-beach-oregon): A long, windswept beach north of Florence where the Oregon Dunes begin and the Pacific delivers its full unfiltered character to anyone standing on the sand. - [Salt Creek Falls](https://danholloran.me/posts/travel-salt-creek-falls): A 286-foot plunge waterfall in the Oregon Cascades near Willamette Pass — one of the tallest in the state, with a viewing deck, rim trail, and winter snowshoeing season. - [Arcadia beach, Oregon](https://danholloran.me/posts/travel-arcadia-beach-oregon): A small, quiet Oregon Coast beach between Cannon Beach and Hug Point, with tide pools, sea stacks, and a forested headland that most visitors drive past. - [Grand Canyon of the Yellowstone](https://danholloran.me/posts/travel-grand-canyon-of-the-yellowstone): A 20-mile canyon of hydrothermally altered rock in brilliant yellows, oranges, and reds, with the 308-foot Lower Falls of the Yellowstone River at its head. - [Grand Teton: Mountains That Don't Wait to Impress You](https://danholloran.me/posts/travel-grand-teton-national-park): Grand Teton National Park in northwestern Wyoming rises abruptly from the valley floor without foothills — the jagged Teton peaks just appear, reflected in glacial lakes, with wildlife grazing in the meadows below. - [Mt. Rainier](https://danholloran.me/posts/travel-mt-rainier): An active stratovolcano at 14,410 feet dominating western Washington — glaciers, wildflower meadows at Paradise, and views that make the rest of the range look small. - [Zion National Park: Standing at the Bottom of the Sky](https://danholloran.me/posts/travel-zion-national-park): Zion National Park in southwestern Utah is a landscape of towering sandstone canyon walls, ancient cultural history, and hikes that range from gentle riverside strolls to vertiginous ridgeline scrambles above the clouds. - [Canyonlands National Park](https://danholloran.me/posts/travel-canyonlands-national-park): Utah's largest national park is a vast plateau carved into three separate districts by the Colorado and Green rivers — a landscape of mesas, canyons, and buttes that requires real commitment to see properly. - [Face Rock State Scenic Viewpoint](https://danholloran.me/posts/travel-face-rock-state-scenic-viewpoint): A Bandon, Oregon headland with a Native American legend, dramatic sea stacks named Cat and Kitten Rocks, and a stairway trail down to a wild stretch of protected beach. - [Hay Stack Rock Cannon Beach, Oregon](https://danholloran.me/posts/travel-hay-stack-rock-cannon-beach-oregon): A 235-foot basalt sea stack on Cannon Beach, home to nesting tufted puffins in spring and summer and some of the best tide pools on the Oregon Coast. - [Crater Lake: The Deepest Blue You've Ever Seen](https://danholloran.me/posts/travel-crater-lake-national-park): Crater Lake in Oregon is the deepest lake in the United States and one of the most pristine — a collapsed volcano filled over millennia by snowmelt, producing a shade of blue that seems almost artificially saturated. - [niagara Falls](https://danholloran.me/posts/travel-niagara-falls): Niagara Falls from the American side — the Horseshoe Falls and American Falls, the Maid of the Mist boat tour, and the improbable scale of moving water. - [Arches National Park: 2,000 Reasons to Go](https://danholloran.me/posts/travel-arches-national-park): Arches National Park in southeastern Utah holds the world's highest concentration of natural stone arches — over 2,000 of them — in a landscape so otherworldly it barely feels like it belongs to this planet. - [Bryce Canyon: The Park That Looks Like a Dream](https://danholloran.me/posts/travel-bryce-canyon-national-park): Bryce Canyon National Park in southern Utah holds the largest concentration of hoodoos on Earth — thousands of tall, narrow rock spires in shades of red, orange, and white that fill the amphitheater like a frozen crowd. - [Toketee Falls](https://danholloran.me/posts/travel-toketee-falls): A two-tiered 113-foot waterfall framed by perfect columnar basalt in Oregon's Umpqua National Forest — one of the most photographed waterfalls in the Pacific Northwest. - [Black Canyon of the Gunnison National Park](https://danholloran.me/posts/travel-black-canyon-of-the-gunnison-national-park): A 2,000-foot-deep canyon of 1.7-billion-year-old Precambrian rock in western Colorado — one of the most dramatic and least visited national parks. - [Neskowin Beach](https://danholloran.me/posts/travel-neskowin-beach): A quiet Oregon Coast town with a 2,000-year-old ghost forest of buried sitka spruce stumps emerging from the surf at low tide. - [Redwoods National Park](https://danholloran.me/posts/travel-redwoods-national-park): The tallest trees on earth along 37 miles of pristine California coastline — a place that requires standing still and looking up for several minutes before it makes sense. - [Glacier National Park: The Crown of the Continent](https://danholloran.me/posts/travel-glacier-national-park): Glacier National Park in northwestern Montana is one of the most dramatic landscapes in North America — alpine meadows, ancient glaciers, turquoise lakes, and wildlife around every bend on the Going-to-the-Sun Road. - [Pinnacles National Park](https://danholloran.me/posts/travel-pinnacles-national-park): California's volcanic spire park with California condors overhead, talus caves, and rock climbing on ancient lava formations moved by the San Andreas Fault. - [Great Basin National Park](https://danholloran.me/posts/travel-great-basin-national-park): Nevada's remote national park with 5,000-year-old bristlecone pines, Lehman Caves with 300 shield formations, and Wheeler Peak rising to 13,063 feet. - [Visiting Acadia National Park](https://danholloran.me/posts/travel-acadia-national-park): Exploring Acadia National Park on Maine's Mount Desert Island, where granite summits meet the Atlantic Ocean and the famous carriage roads wind through birch and pine. - [Visiting Sequoia National Park](https://danholloran.me/posts/travel-sequoia-national-park): Standing among the giant sequoias in Sequoia National Park, California, where the largest trees on Earth by volume redefine your sense of scale and time. - [Visiting Yellowstone National Park](https://danholloran.me/posts/travel-yellowstone-national-park): Exploring Yellowstone in October, when the crowds thin and the elk rut fills the valleys with bugling, and the geysers and hot springs feel all the more surreal against the cool autumn air. - [Visiting Kings Canyon National Park](https://danholloran.me/posts/travel-kings-canyon-national-park): Exploring Kings Canyon National Park in California's Sierra Nevada, where one of the deepest canyons in North America meets towering sequoias and pristine granite wilderness. - [Visiting North Cascades National Park](https://danholloran.me/posts/travel-north-cascades-national-park): A trip through North Cascades National Park in Washington, where jagged alpine peaks, the highest concentration of glaciers in the lower 48 states, and jade-green lakes make for some of the most dramatic mountain scenery in North America. - [Visiting Badlands National Park](https://danholloran.me/posts/travel-badlands-national-park): A November drive through Badlands National Park in South Dakota, where sharply eroded spires and layered clay formations rise abruptly from the prairie in a landscape that looks like it belongs on Mars. - [Visiting Lassen Volcanic National Park](https://danholloran.me/posts/travel-lassen-volcanic-national-park): A trip through Lassen Volcanic National Park in northern California, where active hydrothermal features, steaming fumaroles, and a still-recovering volcanic landscape make for an otherworldly experience. - [Visiting Olympic National Park](https://danholloran.me/posts/travel-olympic-national-park): Exploring Olympic National Park on Washington's Olympic Peninsula, where temperate rainforest, rugged Pacific coastline, and alpine wilderness coexist in one extraordinary park. - [Visiting Yosemite National Park](https://danholloran.me/posts/travel-yosemite-national-park): A visit to Yosemite Valley, where Half Dome and El Capitan frame a landscape so dramatic it almost feels engineered, and the waterfalls are at their thunderous peak in late June. - [Visiting Death Valley National Park](https://danholloran.me/posts/travel-death-valley-national-park): A trip to Death Valley, the hottest and driest national park in the United States, where the alien beauty of salt flats, sand dunes, and painted badlands stretches in every direction. - [Visiting Rocky Mountain National Park](https://danholloran.me/posts/travel-rocky-mountain-national-park): Exploring Rocky Mountain National Park in Colorado, where Trail Ridge Road cuts through alpine tundra above 12,000 feet and elk wander through meadows at dusk. - [Multnomah Falls](https://danholloran.me/posts/travel-multnomah-falls): Oregon's tallest waterfall drops 620 feet in two tiers along the Historic Columbia River Highway — the most visited natural site in the Pacific Northwest, and for good reason. - [Horsetail Falls, Columbia River Gorge, Oregon](https://danholloran.me/posts/travel-horsetail-falls-columbia-river-gorge-oregon): A 176-foot waterfall right next to the Historic Columbia River Highway, with a short trail to Ponytail Falls where you walk directly behind the cascade. - [Shoshone Falls](https://danholloran.me/posts/travel-shoshone-falls-state-park): Idaho's Niagara — a 212-foot waterfall on the Snake River that's wider than Niagara Falls, hidden in plain sight in the middle of southern Idaho's high desert. - [Scenic Overlook, Mount Rose Hwy](https://danholloran.me/posts/travel-scenic-overlook-mount-rose-hwy): A roadside pull-off at 7,562 feet on Nevada Highway 431 with one of the best panoramic views of Lake Tahoe — two dozen parking spots, zero admission, infinite sky. - [Visiting Great Smoky Mountains National Park](https://danholloran.me/posts/travel-great-smoky-mountains-national-park): A trip to the Great Smoky Mountains, the most visited national park in the country, where layers of blue-hazed ridgelines stretch to the horizon and old-growth forest fills every hollow. - [Bonneville Salt Flats](https://danholloran.me/posts/travel-bonneville-salt-flats): A perfectly flat expanse of salt stretching to the horizon in every direction — one of the most surreal landscapes in North America, where the ground looks like snow and the sky reflects in the surface like water. - [Bass Pro Shops at the Pyramid](https://danholloran.me/posts/travel-bass-pro-shops-at-the-pyramid): A 32-story steel pyramid on the Memphis riverfront that now holds a Bass Pro megastore, a cypress swamp, a bowling alley, live alligators, and a hotel inside the apex. - [Sand Harbor Beach, Lake Tahoe](https://danholloran.me/posts/travel-sand-harbor-beach): On the Nevada side of Lake Tahoe, Sand Harbor is a boulder-strewn beach with water so clear you can see the bottom at 20 feet — the kind of lake view that makes you question every other lake you've ever seen. - [Minnehaha Falls](https://danholloran.me/posts/travel-minnehaha-falls): A 53-foot waterfall tucked inside a park in the middle of Minneapolis — an unexpected natural landmark in an urban setting, with a creek gorge trail that makes you forget you're in a city. - [Las Vegas Strip](https://danholloran.me/posts/travel-las-vegas-strip): Four miles of iconic casino hotels, Cirque shows, rooftop pools, and the Bellagio fountains — the Strip distilled into one long walk you will not forget. - [Las Vegas, Nevada](https://danholloran.me/posts/travel-las-vegas-nevada): Las Vegas in June — the Strip at night, the desert heat, the casinos, and the particular energy of a city that operates at full volume around the clock. - [Wind Point Lighthouse](https://danholloran.me/posts/travel-wind-point-lighthouse): One of the oldest and tallest active lighthouses on the Great Lakes, built in 1880 on Lake Michigan north of Racine — tours available and the grounds are always open. - [Kinkaid Spillway](https://danholloran.me/posts/travel-kinkaid-spillway): A Shawnee National Forest spillway in southern Illinois where river otters, beavers, and pileated woodpeckers appear with surprising regularity. - [Little Missouri Falls Recreation Area](https://danholloran.me/posts/travel-little-missouri-falls-recreation-area): A series of cascading rock shelves on the Little Missouri River deep in Arkansas Ouachita National Forest — quiet, beautiful, and the start of the Eagle Rock Loop. - [Natural Falls State Park](https://danholloran.me/posts/travel-natural-falls-state-park): A 77-foot waterfall in the Oklahoma Ozarks, filming location for Where the Red Fern Grows, with lamp posts from the 1920s still lining the trail. - [Hot Springs, Arkansas: Gangsters, Geothermal Water, and a National Park in a City](https://danholloran.me/posts/travel-hot-springs-national-park): Hot Springs National Park in Arkansas is unlike any other national park — it sits inside a small city, and the park's thermal springs have drawn everyone from Native American tribes to 1930s gangsters to baseball players looking for a soak. - [Grand Waterfall Joplin Mo](https://danholloran.me/posts/travel-grand-waterfall-joplin-mo): Missouri's widest continuously running waterfall outside Joplin — 163 feet across solid chert, a local favorite for fishing and swimming for generations. - [Triple Falls Productions](https://danholloran.me/posts/travel-triple-falls-productions): Triple Falls in DuPont State Forest — three tiers of Little River waterfalls, a Hunger Games filming location, and some of the best hiking in western North Carolina. - [Whitewater Falls](https://danholloran.me/posts/travel-whitewater-falls): The highest waterfall east of the Rockies at up to 411 feet, plunging through Nantahala National Forest on the NC-SC border. - [Hooker Falls](https://danholloran.me/posts/travel-hooker-falls): A 14-foot waterfall in DuPont State Forest with one of the best swimming holes in western North Carolina — short hike, big payoff. - [Looking Glass Falls](https://danholloran.me/posts/travel-looking-glass-falls): A 60-foot roadside waterfall in Pisgah National Forest near Brevard, NC — most accessible and most beautiful, no hike required. - [The Blue Ridge Parkway: America's Best Road](https://danholloran.me/posts/travel-blue-ridge-parkway): The Blue Ridge Parkway runs 469 miles through the Appalachians from Virginia to North Carolina, with no stoplights, no trucks, and an overlook every 1.7 miles — one of the country's most celebrated scenic drives. - [Lon Sanders Canyon Conservation Area](https://danholloran.me/posts/travel-lon-sanders-canyon-conservation-area): A short Ozark hike through a rocky gorge with hand-cut stone steps, small waterfalls, and the alleged hideout of the Jesse James gang after the Gads Hill robbery. - [August A. Busch Memorial Conservation Area](https://danholloran.me/posts/travel-august-a-busch-memorial-conservation-area): Nearly 7,000 acres of St. Charles County habitat with 32 fishing lakes, diverse wildlife, and a history tied to the Anheuser-Busch family and Missouri conservation. - [Dillard Mill State Historic Site](https://danholloran.me/posts/travel-dillard-mill-state-historic-site): Missouri best-preserved water-powered gristmill, built in 1908 on Huzzah Creek — the red building, blue water, and intact original machinery make it unforgettable. - [Rocky Falls](https://danholloran.me/posts/travel-rocky-falls): An Ozark shut-in where Rocky Creek cascades 40 feet over billion-year-old rhyolite — one of Missouri's best natural swimming holes and an Ozark Trail trailhead. - [Tryst Falls Park](https://danholloran.me/posts/travel-tryst-falls-park): One of the few natural waterfalls near Kansas City, tucked into a Clay County park between Excelsior Springs and Kearney — small and beautiful and worth finding. - [Taum Sauk Mountain State Park](https://danholloran.me/posts/travel-taum-sauk-mountain-state-park): Missouri's highest point wrapped in 7,448 acres of Ozark wilderness — ancient volcanic rock, a reservoir, and the trail to Mina Sauk Falls. - [Taum Sauk Mountain](https://danholloran.me/posts/travel-taum-sauk-mountain): The highest point in Missouri at 1,772 feet, reached by an easy paved trail through the ancient St. Francois Mountains. - [Roosevelt National Forest](https://danholloran.me/posts/travel-roosevelt-national-forest): 1.5 million acres of north-central Colorado mountains, wilderness areas, and alpine trails — one of the most-visited national forests in the country. - [Red Rocks: Where the Geology Steals the Show](https://danholloran.me/posts/travel-red-rocks-park-and-amphitheatre): Red Rocks Park and Amphitheatre near Morrison, Colorado is one of the most striking natural formations in the country — towering sandstone monoliths that happen to double as one of the world's best concert venues. - [Boulder Falls](https://danholloran.me/posts/travel-boulder-falls): A 70-foot waterfall in Boulder Canyon just 11 miles from Boulder — a 100-yard walk to something genuinely dramatic tucked into the canyon walls. - [St Mary's Glacier](https://danholloran.me/posts/travel-st-mary-s-glacier): A year-round ice field near Idaho Springs, Colorado — a 1.5-mile hike at 11,000 feet where people ski in August and the alpine lake below is impossibly clear. - [Inspiration Point Park](https://danholloran.me/posts/travel-inspiration-point-park): A quiet overlook park in the Kansas City area with river views and trails through cedar bluffs — one of those places locals keep to themselves. - [St. Louis Riverfront Arch](https://danholloran.me/posts/travel-st-louis-riverfront-arch): The Gateway Arch from the St. Louis riverfront — a walk along the Mississippi that puts one of America's great monuments directly overhead. - [Mississippi River Overlook](https://danholloran.me/posts/travel-mississippi-river-overlook): A five-tiered observation platform in East St. Louis with the best straight-on view of the Gateway Arch and the St. Louis skyline across the Mississippi. - [St. Louis Arch](https://danholloran.me/posts/travel-st-louis-arch): The Gateway Arch at dusk, seen from the riverfront — 630 feet of stainless steel that earns its place as the most successful public monument in the country. - [Parkville Parks & Recreation](https://danholloran.me/posts/travel-parkville-parks-recreation): A charming historic town on the Missouri River with riverfront parks, a nature sanctuary, and a downtown that actually delivers on its small-town character promise. - [Line Creek Trail](https://danholloran.me/posts/travel-line-creek-trail): A paved multi-use greenway through the Kansas City Northland, following Line Creek through wooded corridors with a small waterfall tucked inside. - [Stephen Lake Park , Amphitheatre](https://danholloran.me/posts/travel-stephen-lake-park-amphitheatre): A 116-acre Columbia, Missouri park with a lake, ArbNet-certified arboretum, and an outdoor amphitheater that hosts summer concerts above the water. - [Saint Louis Zoo](https://danholloran.me/posts/travel-saint-louis-zoo): One of the top zoos in the country — completely free, in the middle of Forest Park, with over 14,000 animals across 90 acres. - [St. Louis, Missouri](https://danholloran.me/posts/travel-st-louis-missouri): St. Louis is a city of deep history, free world-class institutions, and a riverfront identity that rewards time spent actually looking. - [Horseshoe Lake](https://danholloran.me/posts/travel-horseshoe-lake): A 1927 Canada goose sanctuary near St. Louis that grew into one of Illinois most important wildlife refuges, now hosting up to 150,000 geese each winter. - [Columbia Bottom Conservation Area](https://danholloran.me/posts/travel-columbia-bottom-conservation-area): Where the Missouri meets the Mississippi — a 4,000-acre conservation area at one of North America's great river confluences, with 285 bird species recorded. - [Ha Ha Tonka State Park](https://danholloran.me/posts/travel-ha-ha-tonka-state-park): Castle ruins, a massive spring, a natural bridge, and karst topography that makes every trail a small geological revelation — Ha Ha Tonka earns its reputation. - [Grand Falls Plaza, Missouri](https://danholloran.me/posts/travel-grand-falls-plaza-missouri): Missouri's largest continuously running waterfall — 163 feet wide and 12 feet tall over solid chert, just outside Joplin. - [Abandoned Castle - Ha Ha Tonka](https://danholloran.me/posts/travel-abandoned-castle-ha-ha-tonka): A ruined stone castle on a bluff above the Lake of the Ozarks — one of Missouri's most dramatic and surprising landmarks. - [St. Louis Aquarium at Union Station](https://danholloran.me/posts/travel-st-louis-aquarium-at-union-station): Inside a restored historic train station, the St. Louis Aquarium packs sharks, stingrays, and river creatures into an unexpected downtown destination. - [Alley Spring, Missouri](https://danholloran.me/posts/travel-alley-spring-missouri): A bright red mill beside impossibly blue spring water in the Ozarks — Alley Spring is a perfect summer afternoon in Missouri. - [Missouri's Pink Granite Secret: Castor River Shut-Ins](https://danholloran.me/posts/travel-castor-river-shut-ins): The Castor River Shut-Ins near Fredericktown, Missouri are one of the Midwest's best-kept secrets — a swirling landscape of pink granite boulders, clear water channels, and natural swimming holes tucked deep in the Ozarks. - [Old Chain Of Rocks Bridge, Mississippi River](https://danholloran.me/posts/travel-old-chain-of-rocks-bridge-mississippi-river): The Route 66 bridge with a legendary bend in the middle, golden in late afternoon light over the Mississippi — a walk you won't forget. - [Creve Coeur Lake Memorial Park](https://danholloran.me/posts/travel-creve-coeur-lake-memorial-park): The largest county park in St. Louis, built around an oxbow lake where you can kayak, bike, and watch the Missouri River bend past. - [City Garden Downtown Stl](https://danholloran.me/posts/travel-city-garden-downtown-stl): A free, two-block sculpture park in the heart of downtown St. Louis with 24 international artists, 102 water jets, and a remarkably welcoming vibe. - [Chain of Rocks Bridge](https://danholloran.me/posts/travel-chain-of-rocks-bridge): A Route 66 bridge over the Mississippi, now open only to walkers and cyclists — the bend in the middle is real and worth the trip. - [Lone Elk County Park](https://danholloran.me/posts/travel-lone-elk-county-park): A 546-acre wildlife park west of St. Louis where elk and bison roam free — you drive a loop through their territory, not the other way around. - [The Gateway Arch St. Louis](https://danholloran.me/posts/travel-the-gateway-arch-st-louis): The Gateway Arch is 630 feet of stainless steel and ambition — an icon of American design that earns its place in the landscape. - [Mina Sauk Falls: Missouri's Tallest Drop](https://danholloran.me/posts/travel-mina-sauk-falls): Mina Sauk Falls is Missouri's tallest waterfall at 132 feet, tucked inside Taum Sauk Mountain State Park in the St. Francois Mountains — a challenging but rewarding hike through some of the state's wildest terrain. - [Downtown St. Louis](https://danholloran.me/posts/travel-downtown-st-louis): Downtown St. Louis anchors a city with more depth than most people expect — the riverfront, the Arch, the old buildings, and an energy that rewards walking. - [Bee Tree County Park](https://danholloran.me/posts/travel-bee-tree-county-park): A quiet 199-acre county park on the Mississippi bluffs where wildflowers bloom in spring and great blue herons stalk the shallows. - [Laumeier Sculpture Park](https://danholloran.me/posts/travel-laumeier-sculpture-park): A 105-acre open-air museum where giant sculptures live among the trees — Laumeier is one of St. Louis's best-kept secrets. ## Optional - [RSS Feed](https://danholloran.me/feed.xml): Full chronological feed of all posts. - [Sitemap](https://danholloran.me/sitemap.xml): Complete list of all pages on the site. - [GitHub](https://github.com/grimicorn): Open-source projects and code. - [LinkedIn](https://linkedin.com/in/dan-holloran/): Professional profile.