[{"data":1,"prerenderedAt":270},["ShallowReactive",2],{"post-when-a-second-monitor-helps":3,"blog-posts":14},{"_path":4,"title":5,"description":6,"date":7,"tags":8,"readingTime":12,"body":13},"\u002Fblog\u002Fwhen-a-second-monitor-helps\u002F","When a Second Monitor Actually Helps","A practical take on dual screens for coding, writing, and research—plus when a single good display is still the better desk.","2026-06-10",[9,10,11],"gadgets","productivity","workspace",4,"# When a Second Monitor Actually Helps\n\nA second monitor is marketed as instant productivity. Sometimes it is. Sometimes it is just more places to leave Slack unread.\n\n## Strong yes: reference plus focus\n\nDual screens pay off when one surface holds stable reference—docs, design, API pages, a running app—and the other holds the work you edit. The win is fewer alt-tab resets of your mental stack, not more pixels for decoration.\n\nWriters get a similar split: outline or source on one side, draft on the other. Coders often park the browser and terminal on the side display and keep the editor dominant. Researchers compare PDFs and notes without burying the sentence they were mid-writing. Streamers and support folks keep chat or tickets visible while the main task stays centered. In each case, two persistent contexts beat one crowded desktop.\n\nThe test is simple. If you repeatedly need two documents visible at once for more than a few minutes, dual screens earn their desk space. If you mostly hop between apps in sequence, a single sharp display plus virtual desktops may be cleaner. Extra glass does not invent focus; it only reduces the cost of a specific kind of comparison work.\n\nBe honest about what you put on the second screen. Reference and tools belong there. Infinite chat, news, and social feeds belong in a box you open on purpose. A second monitor that becomes a distraction billboard will make you slower while feeling “more set up.”\n\n## Soft no: laptop plus tiny hotel screen\n\nA short guest display that forces tiny text, color mismatch, or awkward neck angles can slow you down. If the second panel is dimmer, lower resolution, or stuck in portrait by accident, fix alignment first or leave it unplugged.\n\nLaptops already offer a second screen. Closing the lid onto one external monitor is often cleaner than stretching UI across mismatched panels. Mixed DPI setups—sharp laptop beside a soft 1080p panel—create constant visual tax as windows change size when dragged. That tax adds up in a workday.\n\nTravel setups deserve skepticism. A portable monitor can be great when sized and scaled well. A random hotel TV as “monitor two” is usually a neck injury with HDMI. If the temporary panel is worse than your laptop alone, do not force dual-screen cosplay. One good surface beats two bad ones.\n\nAlso reconsider dual screens for deep single-document work. Novel drafting, careful refactoring, or studying a dense diagram sometimes benefit from less peripheral motion. Use the second display when the task is comparative; dim or power it off when the task is immersive.\n\n## Set up the desk for the task\n\nMatch scaling so a window dragged across screens does not jump size. Park notifications on the secondary display. Keep the primary centered with your keyboard so your neck is not twisted toward email all day. Arrangement is half the product.\n\nPractical setup habits:\n\n- Align top edges so mouse travel feels predictable\n- Put the primary monitor centered on your body, not your laptop hinge\n- Use the secondary for stable panes, not for the thing you edit most\n- Keep brightness and color temperature roughly matched to reduce eye fatigue\n\nSoftware layout matters too. Full-screen the editor on primary. Pin docs or preview on secondary. Avoid maximizing Slack across the side monitor “just because it fits.” Window management shortcuts and virtual desktops still help; dual screens are not a substitute for intentional layout.\n\nIf you share a desk or switch between sitting and standing, re-check height. A second monitor mounted too high or too far becomes a reason to lean and crane. Comfortable geometry beats brochure resolutions.\n\n## Middle path: one great screen first\n\nBefore buying panel two, upgrade panel one if it is dim, tiny, or washed out. A single 27-inch display with decent text clarity can outperform a dual mishmash for many people. Ultrawides can mimic a soft split without a bezel in the middle—useful for some layouts, awkward for others. Try software splits before spending.\n\nWhen you do add a second monitor, buy for the job: text clarity for writing and code, color needs only if you actually do color work, refresh rate if motion matters. Matching panels look nicer and behave better, but a solid used display as reference-only can be enough.\n\n## Wrap-up\n\nAdd a second monitor when you routinely compare two persistent contexts. Skip it when the panel is poor or you only need more chat windows. The goal is fewer context switches—not a wider place to scatter tabs. Set up the desk so your neck and scaling agree, and treat dual screens as a tool for specific work rather than a default personality trait for your desk.",[15,25,32,41,48,56,58,66,73,80,87,95,102,109,116,124,130,138,147,155,161,168,174,182,190,197,203,209,216,222,228,234,241,248,255,263],{"_path":16,"title":17,"description":18,"date":19,"tags":20,"readingTime":24},"\u002Fblog\u002Fclient-side-tools-that-earn-trust\u002F","Client-Side Tools That Earn Trust","How to design browser tools that feel private by default—local processing, clear data boundaries, and UX that never asks people to guess where their files go.","2026-07-20",[21,22,23],"privacy","frontend","tools",5,{"_path":26,"title":27,"description":28,"date":29,"tags":30,"readingTime":12},"\u002Fblog\u002Fusb-c-cables-that-actually-matter\u002F","USB-C Cables That Actually Matter","How to buy USB-C cables by wattage and data speed so you stop guessing which cord charges slowly or fails a file transfer.","2026-07-14",[9,31,10],"hardware",{"_path":33,"title":34,"description":35,"date":36,"tags":37,"readingTime":24},"\u002Fblog\u002Fcolor-contrast-people-can-read\u002F","Color Contrast People Can Actually Read","Quick checks for text and UI colors that stay legible in light mode, dark mode, and on mediocre displays.","2026-07-07",[38,39,40],"accessibility","css","design",{"_path":42,"title":43,"description":44,"date":45,"tags":46,"readingTime":24},"\u002Fblog\u002Fportable-ssds-worth-carrying\u002F","Portable SSDs Worth Carrying","When a pocket SSD beats cloud sync for travel, backups, and large media—and how to pick one that stays fast and durable.","2026-06-26",[9,47,10],"storage",{"_path":49,"title":50,"description":51,"date":52,"tags":53,"readingTime":24},"\u002Fblog\u002Fwireless-earbuds-that-last-the-day\u002F","Wireless Earbuds That Last the Day","Simple charging and fit habits that stretch earbud battery life without babysitting the case every few hours.","2026-06-18",[9,54,55],"audio","habits",{"_path":4,"title":5,"description":6,"date":7,"tags":57,"readingTime":12},[9,10,11],{"_path":59,"title":60,"description":61,"date":62,"tags":63,"readingTime":12},"\u002Fblog\u002Fshort-session-game-picks\u002F","Short-Session Games That Respect Your Evening","Genres and design patterns that fit a 30-minute window without the “one more hour” trap.","2026-06-04",[64,55,65],"gaming","indie",{"_path":67,"title":68,"description":69,"date":70,"tags":71,"readingTime":24},"\u002Fblog\u002Fphone-charging-habits-that-age-better\u002F","Phone Charging Habits That Age Better","Practical charging routines that keep a phone useful longer—without obsessing over the perfect battery percentage.","2026-05-23",[9,72,55],"mobile",{"_path":74,"title":75,"description":76,"date":77,"tags":78,"readingTime":24},"\u002Fblog\u002Ffinishing-side-projects-without-burning-out\u002F","Finishing Side Projects Without Burning Out","A practical playbook for shrinking scope, shipping thin vertical slices, and keeping personal projects fun long enough to actually launch.","2026-05-14",[10,79,55],"side-projects",{"_path":81,"title":82,"description":83,"date":84,"tags":85,"readingTime":24},"\u002Fblog\u002Faccessible-forms-people-finish\u002F","Accessible Forms That People Actually Finish","Practical accessibility checks for labels, errors, and focus so your forms work for more users.","2026-05-07",[38,86,22],"html",{"_path":88,"title":89,"description":90,"date":91,"tags":92,"readingTime":24},"\u002Fblog\u002Fvue-composition-api-patterns\u002F","Practical Vue Composition API Patterns","Reusable patterns for composables, shared state, and cleaner component logic in Vue 3.","2026-04-27",[93,94,22],"vue","javascript",{"_path":96,"title":97,"description":98,"date":99,"tags":100,"readingTime":24},"\u002Fblog\u002Fdesigning-empty-states-that-teach\u002F","Designing Empty States That Teach the Product","Empty screens are not placeholders—they are onboarding. How to write, layout, and sequence first-run UI so people know what to do next.","2026-04-19",[101,22,40],"ux",{"_path":103,"title":104,"description":105,"date":106,"tags":107,"readingTime":24},"\u002Fblog\u002Fwhy-indie-games-keep-winning\u002F","Why Indie Games Keep Winning Attention","How small teams punch above their weight with focused design, personality, and smart scope.","2026-04-13",[64,65,108],"industry",{"_path":110,"title":111,"description":112,"date":113,"tags":114,"readingTime":24},"\u002Fblog\u002Fkeeping-component-props-simple\u002F","Keeping Component Props Simple","When to split a component, when to use slots, and how to avoid prop objects that grow forever.","2026-04-03",[93,22,115],"best-practices",{"_path":117,"title":118,"description":119,"date":120,"tags":121,"readingTime":24},"\u002Fblog\u002Fcalm-frontend-performance\u002F","A Calm Approach to Frontend Performance","Performance work that sticks: measure what users feel, fix the critical path first, and avoid optimization theater on personal and portfolio sites.","2026-03-26",[122,22,123],"performance","web",{"_path":125,"title":126,"description":127,"date":128,"tags":129,"readingTime":24},"\u002Fblog\u002Fcss-layout-without-the-hacks\u002F","CSS Layout Without the Hacks","Modern Flexbox and Grid techniques that replace brittle floats, magic numbers, and overflow tricks.","2026-03-17",[39,22,40],{"_path":131,"title":132,"description":133,"date":134,"tags":135,"readingTime":24},"\u002Fblog\u002Fcloud-gaming-what-gets-in-the-way\u002F","Cloud Gaming: What Still Gets in the Way","Latency, input feel, and library lock-in—why streaming games is impressive and still uneven.","2026-03-10",[64,136,137],"cloud-gaming","tech",{"_path":139,"title":140,"description":141,"date":142,"tags":143,"readingTime":24},"\u002Fblog\u002Fshipping-static-sites-with-nuxt\u002F","Shipping Static Sites with Nuxt","How I build and deploy a Nuxt site to Cloudflare Pages with predictable routes and content.","2026-03-02",[144,145,146],"nuxt","ssg","devops",{"_path":148,"title":149,"description":150,"date":151,"tags":152,"readingTime":24},"\u002Fblog\u002Fdebugging-faster-in-the-browser\u002F","Debugging Faster in the Browser","A short toolkit of DevTools habits—breakpoints, network filters, and DOM inspection—that cut debug time.","2026-02-24",[94,153,154],"devtools","debugging",{"_path":156,"title":157,"description":158,"date":159,"tags":160,"readingTime":24},"\u002Fblog\u002Fsmall-javascript-habits-that-scale\u002F","Small JavaScript Habits That Scale","Everyday habits—naming, early returns, and clearer async flow—that keep front-end codebases maintainable.","2026-02-18",[94,115,22],{"_path":162,"title":163,"description":164,"date":165,"tags":166,"readingTime":12},"\u002Fblog\u002Fhealthier-gaming-routine\u002F","Building a Healthier Gaming Routine","Simple habits for sessions that stay fun—breaks, goals, and knowing when to stop.","2026-02-02",[64,55,167],"wellness",{"_path":169,"title":170,"description":171,"date":172,"tags":173,"readingTime":24},"\u002Fblog\u002Fresponsive-images-without-layout-shift\u002F","Responsive Images Without Layout Shift","Width, height, srcset, and lazy loading patterns that keep pages stable while images load.","2026-01-22",[86,122,22],{"_path":175,"title":176,"description":177,"date":178,"tags":179,"readingTime":24},"\u002Fblog\u002Fgit-habits-for-small-teams\u002F","Git Habits for Solo and Small Teams","Branch naming, commit messages, and PR hygiene that keep history useful without slowing you down.","2026-01-09",[180,181,10],"git","workflow",{"_path":183,"title":184,"description":185,"date":186,"tags":187,"readingTime":24},"\u002Fblog\u002Fwhat-makes-a-game-stream-worth-watching\u002F","What Makes a Game Stream Worth Watching","Commentary, pacing, and community—why some streams click even when the gameplay is messy.","2025-12-14",[64,188,189],"streaming","content",{"_path":191,"title":192,"description":193,"date":194,"tags":195,"readingTime":24},"\u002Fblog\u002Fwhen-to-reach-for-typescript-vue\u002F","When to Reach for TypeScript on a Vue App","A pragmatic take on where TypeScript pays off in Vue—and where plain JS is still fine.","2025-11-30",[196,93,22],"typescript",{"_path":198,"title":199,"description":200,"date":201,"tags":202,"readingTime":24},"\u002Fblog\u002Fenvironment-variables-for-static-sites\u002F","Environment Variables for Static Sites","How to use build-time env vars in Nuxt and other static generators without leaking secrets or breaking CI.","2025-10-05",[144,146,22],{"_path":204,"title":205,"description":206,"date":207,"tags":208,"readingTime":24},"\u002Fblog\u002Fpicking-a-side-project-stack\u002F","Picking a Side Project Stack Without Overthinking It","How to choose tools for a personal project when the goal is shipping, not building the perfect architecture.","2025-09-18",[10,22,115],{"_path":210,"title":211,"description":212,"date":213,"tags":214,"readingTime":12},"\u002Fblog\u002Fco-op-games-for-busy-friends\u002F","Co-op Games That Work When Everyone Is Busy","Async-friendly and drop-in co-op picks for friend groups that rarely share the same free evening.","2025-08-22",[64,215,55],"co-op",{"_path":217,"title":218,"description":219,"date":220,"tags":221,"readingTime":24},"\u002Fblog\u002Fsemantic-html-still-matters\u002F","Semantic HTML Still Matters","Landmarks, headings, and native elements that make pages easier to use, style, and maintain.","2025-07-06",[86,38,22],{"_path":223,"title":224,"description":225,"date":226,"tags":227,"readingTime":24},"\u002Fblog\u002Fgit-without-the-jargon\u002F","Learning Git Without the Jargon","A plain-language mental model for commits, branches, and merges when tutorials assume you already know Git.","2025-05-14",[180,181,10],{"_path":229,"title":230,"description":231,"date":232,"tags":233,"readingTime":24},"\u002Fblog\u002Fwhy-loading-states-matter\u002F","Why Loading States Matter More Than Animations","Skeletons, disabled buttons, and honest feedback beat flashy spinners when data takes time to arrive.","2025-03-28",[101,22,40],{"_path":235,"title":236,"description":237,"date":238,"tags":239,"readingTime":24},"\u002Fblog\u002Fnaming-things-so-future-you-survives\u002F","Naming Things So Future You Survives","Practical rules for naming variables, components, and files so a codebase stays readable months after the clever jokes fade.","2025-03-10",[94,115,240],"maintainability",{"_path":242,"title":243,"description":244,"date":245,"tags":246,"readingTime":24},"\u002Fblog\u002Fsave-systems-that-respect-time\u002F","Save Systems That Respect the Player’s Time","Checkpoints, autosaves, and manual slots are design choices. How thoughtful saving reduces rage-quits without deleting tension from the game.","2025-02-28",[64,247,101],"game-design",{"_path":249,"title":250,"description":251,"date":252,"tags":253,"readingTime":24},"\u002Fblog\u002Fmicrocopy-that-makes-interfaces-human\u002F","Microcopy That Makes Interfaces Feel Human","Button labels, error lines, and helper text are product design. How to write UI words that reduce hesitation without sounding like a chatbot.","2025-01-22",[101,254,40],"writing",{"_path":256,"title":257,"description":258,"date":259,"tags":260,"readingTime":24},"\u002Fblog\u002Freadmes-that-get-projects-running\u002F","READMEs That Get Projects Running","How to write a README that helps someone—including future you—install, run, and understand a project without opening a support chat.","2024-12-18",[261,262,55],"documentation","open-source",{"_path":264,"title":265,"description":266,"date":267,"tags":268,"readingTime":24},"\u002Fblog\u002Fprogressive-enhancement-still-pays-off\u002F","Progressive Enhancement Still Pays Off","Build the core experience in HTML first, then layer CSS and JavaScript so your site stays useful when networks, scripts, or devices misbehave.","2024-11-05",[86,22,269],"architecture",1784620504461]