Sign in

Dan Holloran

@grimicorn.bsky.social
89 followers 62 following 119 posts

Senior Full Stack Developer with 14+ years building performant, scalable web applications. Passionate about architecture, mentorship, and finding the right tool

PostsRepliesMedia
Dan Holloran @grimicorn.bsky.social · 13h
Nuxt 4.4's createUseFetch bakes base URL, auth headers, and 401 handling into one fully typed useFetch. 🔗 danholloran.me/posts/nuxt-c... #nuxt #vue
danholloran.me
Nuxt createUseFetch: One Typed API Client Without the Wrapper Boilerplate
Nuxt 4.4 added createUseFetch and createUseAsyncData, factories that bake your base URL, auth headers, and error handling into a fully typed useFetch you can call anywhere.
000
Dan Holloran @grimicorn.bsky.social · 04/10/2026
Bank transfers take days because ACH runs on batches and settlement windows. How the files move, and what Nacha's 2026 fraud-monitoring rules changed. 🔗 danholloran.me/posts/how-ac... #fintech #payments
danholloran.me
000
Dan Holloran @grimicorn.bsky.social · 04/10/2026
TypeScript 6 flipped half a dozen compiler defaults and TS 7 deleted what it deprecated. Here's the tsconfig audit for moving to the native compiler. 🔗 danholloran.me/posts/your-t... #typescript #webdev
danholloran.me
010
Dan Holloran @grimicorn.bsky.social · 03/10/2026
Obsidian Bases now has a native kanban layout. Drag a card and it rewrites that note's frontmatter, so the board can't drift from your notes. 🔗 danholloran.me/posts/obsidi... #obsidian #pkm #notetaking
danholloran.me
Obsidian Bases Kanban: A Board That Is Just Your Notes
Obsidian 1.14 adds a native kanban layout to Bases. Here's how to build a board where dragging a card rewrites a property, where it beats the Kanban plugin, and where it still falls short.
000
Dan Holloran @grimicorn.bsky.social · 01/10/2026
Pay-in-four costs the shopper nothing when it goes right, so someone else is paying. Mostly merchants. Here's how the BNPL money flows, and what changes as these loans start hitting credit reports. 🔗 danholloran.me/posts/buy-no... #fintech #personalfinance
danholloran.me
Buy Now, Pay Later: Who Actually Pays for Interest-Free
Pay-in-four loans cost the shopper nothing when things go right, so someone else is paying. Here's how the BNPL money flows, why merchants eat the cost, and what changes as these loans start hitting c...
000
Dan Holloran @grimicorn.bsky.social · 01/10/2026
Node.js now runs .ts files directly by erasing types, not compiling them. Fast and simple, with a few hard limits worth knowing before you drop your build step. 🔗 danholloran.me/posts/nodejs... #nodejs #typescript #webdev
danholloran.me
Node.js Type Stripping: Run TypeScript Without a Build Step
Node.js now runs .ts files out of the box by erasing types, not compiling them. Here's what that buys you, what it refuses to do, and the tsconfig that keeps you honest.
010
Dan Holloran @grimicorn.bsky.social · 30/09/2026
Obsidian has been quietly snapshotting your notes every few minutes. File recovery can bring back a paragraph you wiped by accident, but it still isn't a backup. 🔗 danholloran.me/posts/obsidi... #obsidian #pkm
danholloran.me
Obsidian File Recovery: The Undo Button You Forgot You Had
Obsidian quietly snapshots your notes every few minutes. Here's how File recovery works, how to restore a lost paragraph, and why it still isn't a backup.
101
Dan Holloran @grimicorn.bsky.social · 28/09/2026
A redeploy can ship as a few-KB delta: compression dictionaries let the browser tell your server which bundle it already has cached. 🔗 danholloran.me/posts/compre... #webdev #performance
danholloran.me
Compression Dictionaries: Ship Only the Diff When Your Bundle Changes
Compression Dictionary Transport (RFC 9842) lets the browser tell your server which cached file it already has, so a redeployed bundle can arrive as a few-kilobyte delta instead of a full download.
000
Dan Holloran @grimicorn.bsky.social · 27/09/2026
Staking ETH isn't a savings account. The yield pays for chain security, shrinks as more ETH stakes, and carries slashing and liquidity risk. 🔗 danholloran.me/posts/ethere... #ethereum #crypto
danholloran.me
Ethereum Staking Explained: What Validators Actually Earn and Risk
Staking gets pitched as a savings account for crypto. Here's how Ethereum validators really earn rewards, why the yield keeps shrinking, and what slashing, queues, and liquid staking tokens add to the...
000
Dan Holloran @grimicorn.bsky.social · 26/09/2026
Obsidian 1.12 ships an official CLI: capture notes, query tasks and Bases, and run vault health checks straight from shell scripts. 🔗 danholloran.me/posts/the-ob... #obsidian #pkm #cli
danholloran.me
The Obsidian CLI: Script Your Vault From the Terminal
Obsidian 1.12 ships an official command line interface. Here's how to use it to capture notes, query tasks and Bases, and run vault health checks from shell scripts.
100
Dan Holloran @grimicorn.bsky.social · 25/09/2026
Uint8Array's new toBase64() and toHex() finally kill the String.fromCharCode + btoa dance for encoding bytes in JavaScript. 🔗 danholloran.me/posts/uint8a... #javascript #webdev
danholloran.me
000
Dan Holloran @grimicorn.bsky.social · 24/09/2026
Fundamental analysis asks what a business is worth. Technical analysis asks what the price is doing. Different questions, not rival teams. 🔗 danholloran.me/posts/techni... #investing #stocks
danholloran.me
Technical vs. Fundamental Analysis: Two Questions, Not Two Teams
Fundamental analysis asks what a business is worth. Technical analysis asks what the price is doing. Here's how each one works, what the research says, and why the rivalry is mostly a category error.
000
Dan Holloran @grimicorn.bsky.social · 22/09/2026
Obsidian's Bookmarks plugin isn't just for files. Pin saved searches, headings, blocks, and tab groups, and the dashboard note maintains itself. 🔗 danholloran.me/posts/obsidi... #obsidian #pkm
danholloran.me
Obsidian Bookmarks: The Core Plugin That Replaces Your Dashboard Note
Bookmarks is a core plugin most people use to pin three notes and forget about. It can pin saved searches, headings, blocks, and whole tab groups, which makes the hand-maintained dashboard note redund...
100
Dan Holloran @grimicorn.bsky.social · 21/09/2026
await import() moves work later but turns your call stack async. ES2026's import defer evaluates on first property access instead, and stays synchronous. 🔗 danholloran.me/posts/import... #javascript #webdev
danholloran.me
import defer: Lazy Modules Without Going Async
ES2026's import defer evaluates a module the first time you touch its namespace, not at startup, so you can move heavy work off the cold path without turning half your call stack async.
010
Dan Holloran @grimicorn.bsky.social · 20/09/2026
Turbopack's persistent build cache is on by default in Next.js 16.3, but most CI sees none of it. The cache is a directory the container throws away on exit. 🔗 danholloran.me/posts/turbop... #webdev
danholloran.me
Turbopack's Persistent Build Cache Only Helps If Your CI Keeps It
Next.js 16.3 turned on Turbopack's persistent build cache by default and published numbers as high as 5.5x. Most CI pipelines will see exactly zero of that, because the cache is a directory and contai...
000
Dan Holloran @grimicorn.bsky.social · 19/09/2026
Robo-advisors advertise one advisory fee, usually a quarter of a percent. It is real, and it is nowhere near the full cost of the machine managing your money. 🔗 danholloran.me/posts/the-ro... #investing #fintech
danholloran.me
The Robo-Advisor Fee Is the Smallest Number That Matters
Robo-advisors advertise a single advisory fee, usually a quarter of a percent. That number is real, and it is nowhere near the full cost. Here is what the machine is actually doing with your money, an...
000
Dan Holloran @grimicorn.bsky.social · 19/09/2026
Obsidian drops pasted images wherever the default setting points, usually your vault root. Attachment location and link format interact in ways worth understanding before the pile grows. 🔗 danholloran.me/posts/obsidi... #obsidian #pkm
danholloran.me
Obsidian Attachments: Take Control of Where Your Files Actually Go
Obsidian drops pasted images wherever its default setting says, which for most vaults means the root folder. Here is how the attachment location and link format settings interact, and how to clean up ...
000
Dan Holloran @grimicorn.bsky.social · 19/09/2026
Grid and flexbox reorder a layout without touching the DOM, which quietly breaks keyboard tab order. CSS reading-flow lets you fix it. 🔗 danholloran.me/posts/css-re... #webdev #css #a11y
danholloran.me
CSS reading-flow: Fix the Tab Order Your Layout Broke
Grid and flexbox let you rearrange a layout without touching the DOM, which quietly breaks keyboard navigation. The reading-flow and reading-order properties finally let CSS tell the browser which ord...
051
Dan Holloran @grimicorn.bsky.social · 16/09/2026
DAOs promise governance without a boardroom. The turnout numbers and delegate concentration tell a more complicated story. 🔗 danholloran.me/posts/what-d... #crypto #governance
danholloran.me
What DAO Vote Counts Say About Decentralized Governance
DAOs promise governance without a boardroom. The actual turnout numbers, delegate concentration, and a few expensive attacks tell a more complicated story about how these organizations really run.
000
Dan Holloran @grimicorn.bsky.social · 16/09/2026
Linked mentions show the connections you remembered to make. Unlinked mentions show the ones you didn't. 🔗 danholloran.me/posts/obsidi... #obsidian #pkm #notetaking
danholloran.me
Obsidian Unlinked Mentions: The Half of the Backlinks Pane You Ignore
Linked mentions show the connections you remembered to make. Unlinked mentions show the ones you made without noticing, and they are the more interesting half.
100
Dan Holloran @grimicorn.bsky.social · 15/09/2026
Most laptops shipped in the last two years have an NPU sitting idle. WebNN is the only web standard that can actually reach it. 🔗 danholloran.me/posts/webnn-... #webdev #ai
danholloran.me
WebNN: The Only Web API That Can Reach Your NPU
Almost every laptop shipped in the last two years has a neural processing unit sitting idle. WebNN is the only web standard that can actually talk to it, and it just hit an updated Candidate Recommend...
000
Dan Holloran @grimicorn.bsky.social · 14/09/2026
That exactly-one-of-these-arguments rule you've been enforcing in resolver code? OneOf input objects make it the schema's job. New in the Sept 2025 GraphQL spec. 🔗 danholloran.me/posts/graphq... #graphql #webdev
danholloran.me
GraphQL @oneOf: Exactly One Input, Enforced by the Schema
OneOf Input Objects landed in the September 2025 GraphQL spec, which means the exactly-one-of-these-arguments rule you've been enforcing in resolver code is now something the type system can do for yo...
000
Dan Holloran @grimicorn.bsky.social · 12/09/2026
Blockchains publish every transaction, so on-chain data feels like proof. Most charts built on it are inferences, and some famous thresholds were calibrated on a market that no longer exists. 🔗 danholloran.me/posts/on-cha...
000
Dan Holloran @grimicorn.bsky.social · 12/09/2026
Note Composer merges notes and extracts selections into new ones, rewriting your links as it goes. A core plugin, nothing to install. 🔗 danholloran.me/posts/obsidi... #obsidian #pkm
danholloran.me
Obsidian's Note Composer: Refactor Your Notes Without Copy-Paste
Note composer is a core Obsidian plugin that merges notes and extracts selections into new ones, rewriting your links as it goes. Here's how to actually use it.
000
Dan Holloran @grimicorn.bsky.social · 12/09/2026
Node's built-in test runner now does mocking, coverage, watch mode, and TypeScript files with nothing installed. Where it holds up and where it falls short. 🔗 danholloran.me/posts/node-t... #nodejs #testing
danholloran.me
node --test: The Test Runner You Already Have Installed
Node's built-in test runner has been stable since v20 and now handles mocking, coverage, watch mode, and TypeScript files. Here's what it does well and where it still falls short.
010
Dan Holloran @grimicorn.bsky.social · 10/09/2026
Your scheduling app isn't a bank, but it can still hand you a debit card. Three layers make that work, and only one of them holds a charter. 🔗 danholloran.me/posts/embedd... #fintech #banking
danholloran.me
Embedded Finance: What It Actually Takes to Put a Bank Inside Your App
Scheduling apps issue debit cards now, and invoicing tools offer loans. Here is the three-layer stack underneath embedded finance, where the money actually comes from, and what the Synapse collapse ch...
010
Dan Holloran @grimicorn.bsky.social · 09/09/2026
Obsidian search only finds notes when you remember the words you used. Embeddings surface the ones you'd never think to search for. 🔗 danholloran.me/posts/semant... #obsidian #pkm
danholloran.me
Semantic Search in Obsidian: What Embeddings Find That Keywords Miss
Obsidian's search operators are precise, but they only find notes when you remember the words you used. Here's what local embedding plugins add, where they quietly fail, and why hybrid ranking is the ...
010
Dan Holloran @grimicorn.bsky.social · 08/09/2026
Svelte snippets let you define reusable markup inline and render it like a function — no more extracting a component every time you repeat six lines. 🔗 danholloran.me/posts/svelte... #svelte #webdev
danholloran.me
Svelte Snippets: Reuse Markup Without a New Component
Snippets let you define reusable chunks of markup inline and render them like functions. They replace slots, kill the let: directive, and mean you stop extracting a component every time you repeat six...
020
Dan Holloran @grimicorn.bsky.social · 07/09/2026
Sector rotation is a good map and a bad clock. The taxonomy and the economic logic hold up fine — the timing is where the evidence gets uncomfortable. 🔗 danholloran.me/posts/sector... #investing #markets
danholloran.me
Sector Rotation: A Good Map and a Bad Clock
Sector rotation charts promise a map of the business cycle laid over the stock market. The taxonomy and the economic logic hold up well. The timing is where the evidence gets uncomfortable.
000
Dan Holloran @grimicorn.bsky.social · 06/09/2026
Sticky headers, snapped slides, and scroll shadows have been JavaScript's job for a decade. scroll-state() container queries hand that work back to CSS. 🔗 danholloran.me/posts/css-sc... #css #webdev
danholloran.me
CSS scroll-state() Queries: Styling Stuck, Snapped, and Scrollable
Sticky headers, snapped carousel slides, and scroll shadows have all been JavaScript jobs for a decade. Scroll-state container queries hand that work back to CSS.
592
Dan Holloran @grimicorn.bsky.social · 06/09/2026
Yield is a ratio: annual dividend over share price. The top of a high-yield screener is usually stocks that fell hard, not companies printing cash. 🔗 danholloran.me/posts/divide... #investing #finance
danholloran.me
Dividend Yield Is a Ratio, Not a Promise
A high dividend yield can mean a company is generating serious cash, or it can mean the share price is falling faster than the payout. Here's how to tell the difference.
000
Dan Holloran @grimicorn.bsky.social · 02/09/2026
Obsidian ships a URI protocol that lets scripts, browsers, and phone shortcuts read and write your vault without ever opening the app. 🔗 danholloran.me/posts/obsidi... #obsidian #pkm
danholloran.me
Obsidian URI: Your Vault Has an API You're Not Using
Obsidian ships with a custom URI protocol that lets scripts, browsers, and phone shortcuts read and write your vault without you touching the app. Here's how the core actions work and where the Advanc...
000
Dan Holloran @grimicorn.bsky.social · 30/08/2026
Svelte 5.36 lets you use await at the top level of a component, inside $derived, and directly in your markup. No more loading flags. 🔗 danholloran.me/posts/async-... #svelte #webdev
danholloran.me
Async Svelte: Using await Directly in Your Components
Svelte 5.36 lets you use await at the top level of a component, inside $derived, and in your markup. Here is how synchronized updates, boundaries, and $effect.pending() fit together.
110
Dan Holloran @grimicorn.bsky.social · 29/08/2026
Your card number isn't in your phone. Here's what a digital wallet actually stores, and why a stolen token is useless on its own. 🔗 danholloran.me/posts/whats-... #fintech #payments
danholloran.me
What's Actually in Your Phone When You Tap to Pay
Your card number isn't in your phone. Here's what a digital wallet actually stores, why a stolen token is useless on its own, and why merchants care about tokens for reasons that have nothing to do wi...
000
Dan Holloran @grimicorn.bsky.social · 29/08/2026
Bases covers most vault dashboards and DQL handles the rest. DataviewJS is what you reach for when neither can express the thing you want. 🔗 danholloran.me/posts/datavi... #obsidian #pkm
danholloran.me
DataviewJS: The Escape Hatch When Bases and DQL Run Out
Bases handles most vault dashboards now, and Dataview's query language covers the rest. DataviewJS is what you reach for when neither can express the thing you actually want.
000
Dan Holloran @grimicorn.bsky.social · 29/08/2026
Your app already runs in five tabs at once and they all think they're in charge. The Web Locks API gives the browser a real mutex. 🔗 danholloran.me/posts/the-we... #webdev #javascript
danholloran.me
The Web Locks API: One Tab Does the Work, the Rest Wait
Your app already runs in five tabs at once, and they all think they are in charge. The Web Locks API gives the browser a real mutex so only one of them does the work.
100
Dan Holloran @grimicorn.bsky.social · 29/08/2026
Custom elements can be real form controls. formAssociated, ElementInternals and setValidity retire the hidden-input hack. 🔗 danholloran.me/posts/form-a... #webdev
danholloran.me
Form-Associated Custom Elements: Web Components That Belong in a Form
Custom elements can be real form controls. Here is how formAssociated, ElementInternals, and setValidity retire the hidden-input hack for good.
000
Dan Holloran @grimicorn.bsky.social · 27/08/2026
For years, whether a token counted as a security came down to a lawyer's read of a 1946 orange grove case. The SEC's 2026 taxonomy sorts them into five buckets. 🔗 danholloran.me/posts/how-us... #crypto #fintech
danholloran.me
How US Regulators Sorted Crypto Into Five Buckets
For years, whether a token was a security came down to a lawyer's read of a 1946 orange grove case. In 2026 the SEC finally published a taxonomy, and then proposed rules to go with it.
120
Dan Holloran @grimicorn.bsky.social · 26/08/2026
Most Obsidian gaps get patched with a Templater script and a CSS snippet. The plugin API is usually the shorter path, and the surface area you need is tiny. 🔗 danholloran.me/posts/writin... #obsidian #pkm
danholloran.me
Writing an Obsidian Plugin Is Smaller Than You Think
Most people patch around a missing Obsidian feature with a Templater script and a CSS snippet. The plugin API is often the shorter path, and the surface area you actually need is tiny.
020
Dan Holloran @grimicorn.bsky.social · 24/08/2026
Next.js 16.3 stops firing a prefetch for every link in the viewport. It caches one reusable loading shell per route instead. 🔗 danholloran.me/posts/nextjs... #nextjs #webdev
danholloran.me
Next.js Partial Prefetching: One Shell Per Route, Not One Per Link
Next.js 16.3 stops firing a prefetch request for every link in the viewport and caches one reusable loading shell per route instead. Here's what changes and how to turn it on.
030
Dan Holloran @grimicorn.bsky.social · 22/08/2026
The SPIVA scorecards are the most-cited evidence in the passive vs active debate. What they actually measure matters more than any single year's headline. 🔗 danholloran.me/posts/index-... #investing
danholloran.me
Index Funds vs. Active Management: Reading the Scorecard Honestly
The SPIVA scorecards are the most-cited evidence in the passive-versus-active debate. Here is what they actually measure, why survivorship and persistence do more work than any single year's headline,...
000
Dan Holloran @grimicorn.bsky.social · 22/08/2026
Most Obsidian friction is the round trip from keyboard to mouse. The command palette plus a handful of earned hotkeys removes it. 🔗 danholloran.me/posts/obsidi... #obsidian #pkm
danholloran.me
Obsidian Hotkeys and the Command Palette: Building a Keyboard-First Vault
Most Obsidian friction is the round trip from keyboard to mouse and back. Here is how the command palette, a short list of hotkeys, and a little usage data get rid of it.
000
Dan Holloran @grimicorn.bsky.social · 22/08/2026
Chrome 148 can fill HTML placeholders out of order and stream markup into the DOM. No framework required. 🔗 danholloran.me/posts/declar... #webdev
danholloran.me
Declarative Partial Updates: Out-of-Order HTML Streaming Without a Framework
Chrome 148 ships experimental support for filling HTML placeholders out of order and streaming markup into the DOM. Here's how the new template-for and streamHTML APIs work, and what they replace.
100
Dan Holloran @grimicorn.bsky.social · 20/08/2026
On-chain lending swaps credit checks for collateral, a loan officer for a utilization curve, and collections for bots. 🔗 danholloran.me/posts/how-de... #defi #crypto #ethereum
danholloran.me
How DeFi Lending Works: Health Factors, Rate Curves, and Liquidation Bots
On-chain lending replaces credit checks with collateral, loan officers with a utilization curve, and collections with bots. Here is what each of those swaps actually costs you.
000
Dan Holloran @grimicorn.bsky.social · 20/08/2026
Obsidian's Workspaces plugin saves your entire pane layout under a name and restores it in one command. The catch: it never autosaves. 🔗 danholloran.me/posts/obsidi... #obsidian #pkm
danholloran.me
Obsidian Workspaces: Stop Rebuilding Your Layout Every Time You Switch Tasks
Workspaces is a core Obsidian plugin that saves your entire pane layout under a name and restores it in one command. Here's how to design layouts worth saving, and the gotcha that trips everyone up.
000
Dan Holloran @grimicorn.bsky.social · 18/08/2026
React 19.2's Activity component hides a subtree instead of unmounting it, so state, scroll position, and DOM survive the round trip. 🔗 danholloran.me/posts/reacts... #react #webdev
danholloran.me
React's Activity Component: Hide UI Without Losing Its State
React 19.2's Activity component hides a subtree instead of unmounting it, so state, scroll position, and DOM survive the round trip. Here's how it behaves, what it does to your Effects, and where it c...
010
Dan Holloran @grimicorn.bsky.social · 17/08/2026
Next.js 16 split cache invalidation in two: revalidateTag for content that can lag, updateTag for content the user just typed. 🔗 danholloran.me/posts/revali... #nextjs #webdev
danholloran.me
revalidateTag vs updateTag: Next.js Split Cache Invalidation in Two
Next.js 16 gave cache invalidation two different functions instead of one, and the split maps to a real distinction: content that can lag versus content the user just typed.
030
Dan Holloran @grimicorn.bsky.social · 15/08/2026
How much you put on matters more than where you got in, and the math is less forgiving than it looks. 🔗 danholloran.me/posts/positi... #investing #trading
danholloran.me
Position Sizing: The Trade Decision That Happens Before the Trade
Most trading education obsesses over entries and indicators. The arithmetic says how much you put on matters more than where you got in, and the math is less forgiving than it looks.
000
Dan Holloran @grimicorn.bsky.social · 15/08/2026
A vault boundary is a hard wall your search, links, and graph can't cross. Splitting feels like tidying up until you need a note from the other side. 🔗 danholloran.me/posts/one-va... #obsidian #pkm
danholloran.me
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.
000
Dan Holloran @grimicorn.bsky.social · 14/08/2026
Buttons that look bottom-heavy at padding: 12px aren't your fault. That's half-leading, and text-box-trim finally lets CSS cut it. 🔗 danholloran.me/posts/css-te... #css #webdev
danholloran.me
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.
010