[{"data":1,"prerenderedAt":1827},["ShallowReactive",2],{"tag-threads-en-ChordPro":3,"latest-articles-en":1179,"announcement-en":1582,"author-context":1746},[4,58,318,392,456,496,834,865,927,1056,1081,1132],{"id":5,"title":6,"animated":7,"body":8,"client":41,"cover":41,"css_code":41,"description":38,"extension":42,"html_code":41,"images":43,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":46,"navigation":44,"order":41,"path":47,"photos":48,"published_at":49,"reading_time":41,"related":41,"role":41,"seo":50,"slug":51,"source_hash":52,"status":41,"stem":53,"summary":54,"tags":55,"tech_stack":41,"translation_of":51,"type":56,"url":41,"video_url":41,"__hash__":57},"threads/threads/pages/about.en.md","About Me",false,{"type":9,"value":10,"toc":37},"minimark",[11,19,25,28,31,34],[12,13,14],"p",{},[15,16],"img",{"alt":17,"src":18},"Ivan Hsu","/avatar/me.jpeg",[20,21,22],"blockquote",{},[12,23,24],{},"Boys, be ambitious!",[12,26,27],{},"A web engineer who transitioned from the display panel industry. I spend most of my time writing code for machines, and here I write words for humans.",[12,29,30],{},"I'm fascinated by things that use limited materials yet leave behind great legacies. Like music and writing. And of course, code.",[12,32,33],{},"The keyboard is like the periodic table of the 21st century. Whether you're an engineer or a writer, all we have are the 26 letters in front of us and a few symbols, yet we have the chance to create products the whole world uses. To transform how people live, or to leave behind great ideas.",[12,35,36],{},"In an age of AI abundance, I'm building practical everyday SaaS products with just the right tech stack.",{"title":38,"searchDepth":39,"depth":39,"links":40},"",2,[],null,"md",[],true,"en",{},"/threads/pages/about.en",[],"2026-06-21",{"title":6,"description":38},"about","49a4ee37fe6deaddb7e0f2c874603336fd5f9124410cd820497483b623338dd5","threads/pages/about.en","Building practical everyday SaaS products with just the right tech stack.",[],"page","U5ALMaRLw2g59F-IVpPsr9ASOpf8_Tza84sOo-BLN0o",{"id":59,"title":60,"animated":7,"body":61,"client":41,"cover":295,"css_code":41,"description":38,"extension":42,"html_code":41,"images":296,"is_announcement":44,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":297,"navigation":44,"order":41,"path":302,"photos":303,"published_at":304,"reading_time":41,"related":41,"role":41,"seo":305,"slug":306,"source_hash":307,"status":308,"stem":309,"summary":310,"tags":311,"tech_stack":41,"translation_of":306,"type":315,"url":316,"video_url":41,"__hash__":317},"threads/threads/products/threadspage.en.md","Threadspage: Transform Your Creations Into Your Own Knowledge Hub",{"type":9,"value":62,"toc":293},[63,68,71,107,269,272,275,289],[20,64,65],{},[12,66,67],{},"Create once, let it work for you.",[12,69,70],{},"Threadspage consolidates your scattered content across platforms into a knowledge hub centered on you—one that grows on its own.",[72,73,74,83,91,99],"ul",{},[75,76,77,78],"li",{},"Convert YouTube videos to articles with one click\n",[72,79,80],{},[75,81,82],{},"You've already recorded the video; don't rewrite it. AI condenses your transcript into clean, readable articles with embedded videos, all hosted on your own domain.",[75,84,85,86],{},"Generate multiple languages instantly\n",[72,87,88],{},[75,89,90],{},"Write once, automatically translated into English and Japanese versions with independent URLs for sharing and search visibility. Reach English and Japanese-speaking audiences and students.",[75,92,93,94],{},"An AI assistant that answers questions\n",[72,95,96],{},[75,97,98],{},"Visitors ask questions directly on your site, and AI responds instantly using your content—like a 24/7 version of you, speaking in your voice.",[75,100,101,102],{},"Your own domain, your content forever\n",[72,103,104],{},[75,105,106],{},"No platform lock-in, no algorithm dependency. Code, content, and deployment are entirely in your hands, accumulating into a genuine long-term asset.",[108,109,113],"pre",{"className":110,"code":111,"language":112,"meta":38,"style":38},"language-bash shiki shiki-themes github-dark","# Add your recorded video\n$ threadspage add https://youtu.be/your-talk\n\n→ Extract transcript and condense into article ✓\n→ Generate en / ja versions (independent URLs) ✓\n→ Deploy your AI assistant (answers visitor questions) ✓\n→ Generate structured data · llms.txt · sitemap ✓\n\n# Everything lives on yourdomain.co, forever yours\n","bash",[114,115,116,125,141,147,174,204,232,258,263],"code",{"__ignoreMap":38},[117,118,121],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"sAwPA","# Add your recorded video\n",[117,126,127,131,135,138],{"class":119,"line":39},[117,128,130],{"class":129},"svObZ","$",[117,132,134],{"class":133},"sU2Wk"," threadspage",[117,136,137],{"class":133}," add",[117,139,140],{"class":133}," https://youtu.be/your-talk\n",[117,142,144],{"class":119,"line":143},3,[117,145,146],{"emptyLinePlaceholder":44},"\n",[117,148,150,153,156,159,162,165,168,171],{"class":119,"line":149},4,[117,151,152],{"class":129},"→",[117,154,155],{"class":133}," Extract",[117,157,158],{"class":133}," transcript",[117,160,161],{"class":133}," and",[117,163,164],{"class":133}," condense",[117,166,167],{"class":133}," into",[117,169,170],{"class":133}," article",[117,172,173],{"class":133}," ✓\n",[117,175,177,179,182,185,188,191,194,198,201],{"class":119,"line":176},5,[117,178,152],{"class":129},[117,180,181],{"class":133}," Generate",[117,183,184],{"class":133}," en",[117,186,187],{"class":133}," /",[117,189,190],{"class":133}," ja",[117,192,193],{"class":133}," versions",[117,195,197],{"class":196},"s95oV"," (independent ",[117,199,200],{"class":133},"URLs",[117,202,203],{"class":196},") ✓\n",[117,205,207,209,212,215,218,221,224,227,230],{"class":119,"line":206},6,[117,208,152],{"class":129},[117,210,211],{"class":133}," Deploy",[117,213,214],{"class":133}," your",[117,216,217],{"class":133}," AI",[117,219,220],{"class":133}," assistant",[117,222,223],{"class":196}," (answers ",[117,225,226],{"class":133},"visitor",[117,228,229],{"class":133}," questions",[117,231,203],{"class":196},[117,233,235,237,239,242,245,248,251,253,256],{"class":119,"line":234},7,[117,236,152],{"class":129},[117,238,181],{"class":133},[117,240,241],{"class":133}," structured",[117,243,244],{"class":133}," data",[117,246,247],{"class":133}," ·",[117,249,250],{"class":133}," llms.txt",[117,252,247],{"class":133},[117,254,255],{"class":133}," sitemap",[117,257,173],{"class":133},[117,259,261],{"class":119,"line":260},8,[117,262,146],{"emptyLinePlaceholder":44},[117,264,266],{"class":119,"line":265},9,[117,267,268],{"class":123},"# Everything lives on yourdomain.co, forever yours\n",[12,270,271],{},"Focus on creating; let us handle the technology.",[12,273,274],{},"You're not an engineer, and you shouldn't have to wrestle with migration, translation, and AI integration just to own your own content. That's exactly what Threadspage is here to handle for you.",[20,276,277],{},[12,278,279,280],{},"I've already spent time recording the video. Threadspage means I don't have to spend that time again rewriting it as an article.\n-- ",[281,282,288],"a",{"href":283,"target":284,"rel":285},"https://huanyinliu.com","_blank",[286,287],"noopener","noreferrer","HuanYin",[290,291,292],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":38,"searchDepth":39,"depth":39,"links":294},[],"/images/threadspage-cover.png",[],{"techStack":298},[299,300,301],"Nuxt","PocketBase","AWS S3","/threads/products/threadspage.en",[],"2026-06-13",{"title":60,"description":38},"threadspage","77df485ef4f1e9a11fc3ade052812374d34e6c6e29ac5487fca59cb7b8d1a4c7","active","threads/products/threadspage.en","You've already invested countless hours creating content on YouTube, Instagram, and Threads, but your work remains locked within others' platforms. Threadspage helps you move your content to your own domain with one click, automatically generates multilingual versions, and creates an AI assistant that answers visitor questions on your behalf.",[312,313,314],"SaaS","YouTube","auto-i18n","product","https://threadspage.com","nQ2EQWysSnsekZID864Zj5jqCRynw_6TzQpFL9VCzng",{"id":319,"title":320,"animated":7,"body":321,"client":41,"cover":41,"css_code":41,"description":325,"extension":42,"html_code":41,"images":377,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":378,"navigation":44,"order":41,"path":379,"photos":380,"published_at":381,"reading_time":41,"related":41,"role":41,"seo":382,"slug":383,"source_hash":384,"status":41,"stem":385,"summary":386,"tags":387,"tech_stack":41,"translation_of":383,"type":390,"url":41,"video_url":41,"__hash__":391},"threads/threads/articles/recap-2025.en.md","Fragments of 2025",{"type":9,"value":322,"toc":375},[323,326,329,332,335,338,341,344,347,350,353,356,358,361,364,367,369,372],[12,324,325],{},"I've maintained a solid habit this year: hitting the gym three times a week for an hour of cardio. Regular exercise and eating well really do bring that primal sense of happiness!",[12,327,328],{},"The endorphin rush and that light, energized feeling in your body? Absolutely incredible! No wonder everyone says your physique is your best business card—because working out genuinely takes serious time. 🤣",[12,330,331],{},"In October, I took my first international road trip abroad, driving through Silicon Valley to visit a friend and experience American time and lifestyle. While it cost me vacation days and money, I felt it was completely worth it because memories compound in value!",[12,333,334],{},"I've always believed that time has the ability to beautify memories, adding a filter to bitter ones and capturing the joy of happy ones.",[12,336,337],{},"I can vividly recall the excitement of being in Tokyo for the first time ten years ago, and I'm certain that years from now, I'll be able to relive the happiness of this American journey.",[12,339,340],{},"/",[12,342,343],{},"After discovering the indie hacking space last year, I've been attempting independent development for over a year now. In August this year, I launched my first product—a tool for writing chord charts in markdown called Chord Island. But it was too niche; hardly anyone used it.",[12,345,346],{},"I didn't have a distribution channel to keep the product visible. It created a small ripple during launch week, but by the following week, my GA4 graph had returned to silence.",[12,348,349],{},"That said, conducting user interviews introduced me to some seriously talented guitarists (the kind who can cover Marcin's compositions), which was a wonderful takeaway!",[12,351,352],{},"Independent development is like learning anything else—having access to others' experiences is one thing, but you really have to walk through it yourself and fall into the same pitfalls to truly learn. I think that's the relationship between knowledge and experience.",[12,354,355],{},"To build skills beyond development, I've consumed quite a few English books: My Indie Book, Snow Leopard, Obviously Awesome, The SaaS Playbook, and The Cold Start Problem. I'll write about relevant insights from future products later—execution comes first!",[12,357,340],{},[12,359,360],{},"This year I also started taking lessons with a guitar teacher I've admired for a long time. During classes, I frequently discover small details I wouldn't normally notice on my own, and they're packed with knowledge. Within six strings and a body the size of your arm, there's genuinely an entire universe!",[12,362,363],{},"Moments like these really drive home the value of in-person instruction. Sure, with YouTube and AI these days, you can self-teach almost anything, but experience and the ability to \"discover what you don't know\"—that still requires a teacher.",[12,365,366],{},"Times like these also make me feel that all the hard work earning money finally has meaning: I can pay for lessons to learn what I want to learn.",[12,368,340],{},[12,370,371],{},"My New Year's resolution for 2026 is the same as always: to hope that each year I don't make the same wish again.",[12,373,374],{},"So here's to that! 💪🏻",{"title":38,"searchDepth":39,"depth":39,"links":376},[],[],{},"/threads/articles/recap-2025.en",[],"2025-12-31T00:00:00.000Z",{"title":320,"description":325},"recap-2025","a2fef0ef5ec122b46630a96372a1e33a82b3a542ca886cd7de21b0717cbc7345","threads/articles/recap-2025.en","Time has the ability to beautify memories, adding a filter to bitter ones and capturing the joy of happy ones.",[388,389],"2025","recap","article","I_SFhTTb3OngcOfHET8bZpnTC25-WvAbV32YEitUIPA",{"id":393,"title":394,"animated":7,"body":395,"client":41,"cover":439,"css_code":41,"description":38,"extension":42,"html_code":41,"images":440,"is_announcement":44,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":441,"navigation":44,"order":41,"path":444,"photos":445,"published_at":446,"reading_time":41,"related":41,"role":41,"seo":447,"slug":448,"source_hash":449,"status":450,"stem":451,"summary":452,"tags":453,"tech_stack":41,"translation_of":448,"type":315,"url":431,"video_url":41,"__hash__":455},"threads/threads/products/reelly.en.md","Reelly Summarizes Your Instagram Food Reels for You!",{"type":9,"value":396,"toc":437},[397,402,405,408,411,414,417,420,423,426,434],[20,398,399],{},[12,400,401],{},"What's it like turning restaurants you want to try into a list in one second?",[12,403,404],{},"Heading to Tokyo next month and saved a bunch of matcha Reels, but too lazy to organize them on a map?",[12,406,407],{},"I made this hassle disappear! Reelly understands the content in IG Reels. Just hit \"share\" and the AI handles the rest 👏🏻",[12,409,410],{},"Before my Tokyo trip last year, Instagram kept recommending matcha shops to me.",[12,412,413],{},"I saved them with screenshots, bookmarks, and when I opened them before leaving — I couldn't find the one I originally saw 🫠",[12,415,416],{},"So I just built a tool myself. It's called Reelly. 🍜",[12,418,419],{},"Scroll through IG, find a restaurant you want to visit, hit share, and Reelly automatically reads the Reels content, organizing the restaurant name, address, and recommended dishes into your personal list.",[12,421,422],{},"Next time you need it, just search. 🔍",[12,424,425],{},"It also supports Japanese and Korean restaurants. Reelly is a Web App so you don't need to install anything — just add it to your home screen and use it like an app.",[12,427,428,429],{},"It's completely free right now. If you're interested, give it a try 👉🏻 ",[281,430,431],{"href":431,"rel":432},"https://reelly.life",[433],"nofollow",[12,435,436],{},"(If you're traveling next month, now's the perfect time to start saving! 🙌🏻)",{"title":38,"searchDepth":39,"depth":39,"links":438},[],"/images/reelly-cover.png",[],{"techStack":442},[299,300,443],"Cloudflare R2","/threads/products/reelly.en",[],"2025-11-20",{"title":394,"description":38},"reelly","52577c0a583cd7ce3cc8148b24ecfc9d316eb96dac8aeb7ad1a268f231dae998","building","threads/products/reelly.en","🍜 Found a delicious Reels video? Share it with me and I'll create a restaurant list for you 🧾",[312,454,299],"Food","1LbgD9Mbzjdz7_i2PuAfyNzN4-iiIm_yuTvCCG-3gxU",{"id":457,"title":458,"animated":7,"body":459,"client":41,"cover":477,"css_code":41,"description":471,"extension":42,"html_code":41,"images":478,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":479,"navigation":44,"order":41,"path":482,"photos":483,"published_at":484,"reading_time":41,"related":41,"role":41,"seo":485,"slug":486,"source_hash":487,"status":308,"stem":488,"summary":489,"tags":490,"tech_stack":41,"translation_of":486,"type":315,"url":494,"video_url":41,"__hash__":495},"threads/threads/products/cord-land.en.md","Write Your Own Real-Time Transposable Chord Charts in 10 Minutes!",{"type":9,"value":460,"toc":475},[461,472],[12,462,463,467],{},[15,464],{"alt":465,"src":466},"cord-land-mobile","/images/cord-land-mobile.png",[281,468,471],{"href":469,"target":284,"rel":470},"https://cord.land/cords/wmgkca0x82s802h",[286,287],"Cherries - Ai Otsuka",[12,473,474],{},"Create chord charts, chord diagrams, and custom annotations exactly as you want them. The final product is plain text that automatically adjusts its layout based on screen size and can be copied and pasted anywhere.",{"title":38,"searchDepth":39,"depth":39,"links":476},[],"/images/cord-land-cover.png",[],{"techStack":480},[481,300,301],"SvelteKit","/threads/products/cord-land.en",[],"2025-08-20",{"title":458,"description":471},"cord-land","3ddf1ffa8370af1bf4df15fceabf27cf78a1aca19167845410980bfe7bae9e39","threads/products/cord-land.en","Use ChordPro extended syntax to write guitar chord charts in plain text, with instant editing, one-click sharing, and automatic transposition.",[312,491,492,493],"ChordPro","Chord","Corduroy","https://cord.land/landing","MOMMqX2w4-hI-MNvJk7RZ1DotOezPmycFh-Q5kLCFao",{"id":497,"title":498,"animated":7,"body":499,"client":41,"cover":819,"css_code":41,"description":38,"extension":42,"html_code":41,"images":820,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":821,"navigation":44,"order":41,"path":822,"photos":823,"published_at":824,"reading_time":41,"related":41,"role":41,"seo":825,"slug":826,"source_hash":827,"status":41,"stem":828,"summary":829,"tags":830,"tech_stack":41,"translation_of":826,"type":390,"url":41,"video_url":41,"__hash__":833},"threads/threads/articles/effective-engineer-talks-at-google.en.md","The Effective Engineer by Edmond Lau: A Guide to Maximizing Your Impact in Silicon Valley",{"type":9,"value":500,"toc":805},[501,506,513,516,528,537,541,549,552,563,566,570,577,580,591,596,599,610,619,622,629,632,636,642,645,648,651,654,660,666,670,676,679,682,685,691,695,698,701,712,718,722,728,731,737,740,745,748,751,758,762,769,773,778,785,788,792,795,802],[502,503,505],"h2",{"id":504},"the-struggle-is-real","The Struggle is Real",[12,507,508,509],{},"It's evening, and you're staring at increasingly abstract code in VSCode while Terminal throws error messages at you. Then Slack pings with an urgent bug that needs fixing. Before you know it, another hour has vanished. It's already past quitting time, yet you've barely made a dent in today's work. You can't help but sigh—",[510,511,512],"strong",{},"working feels like climbing a mountain, and the descent is harder than the climb.",[12,514,515],{},"Have you ever been in a phase where work never ends? Tasks pile up, and by Friday you're staying until nearly midnight. Self-doubt creeps in: Is your technical skill lacking? Are you inefficient? Or is there just too much work?",[12,517,518,519,527],{},"Recently, several tech blogs recommended ",[281,520,523],{"href":521,"rel":522},"https://www.effectiveengineer.com/book",[433],[524,525,526],"em",{},"The Effective Engineer",", praising it highly. I decided to dive in, hoping to become an effective engineer myself.",[12,529,530,531,536],{},"I started with the author's ",[281,532,535],{"href":533,"rel":534},"https://www.youtube.com/watch?v=BnIz7H5ruy0",[433],"talk at Google",", which covers the book's main ideas. This article summarizes the key points from that talk. I'll write a separate post once I finish the book.",[502,538,540],{"id":539},"about-the-author","About the Author",[12,542,543,548],{},[281,544,547],{"href":545,"rel":546},"http://www.effectiveengineer.com/about",[433],"Edmond Lau"," has worked at major Silicon Valley companies like Google and startups like Quora. He once worked 80+ hours per week for two consecutive years, then spent another two years researching what makes an effective engineer.",[12,550,551],{},"He interviewed CTOs and technical leaders from 20+ Silicon Valley tech giants and startups (Facebook, Instagram, Dropbox, Etsy, etc.), asking three questions:",[72,553,554,557,560],{},[75,555,556],{},"What separates the most effective engineers you've worked with from everyone else?",[75,558,559],{},"What's the most valuable lesson you've learned in the past year?",[75,561,562],{},"What investment in your team has yielded the highest returns?",[12,564,565],{},"From these interviews, he distilled efficiency practices all software engineers can learn—what he calls the leverage framework.",[502,567,569],{"id":568},"the-core-concept-leverage","The Core Concept: Leverage",[12,571,572,573,576],{},"This book contains no code. Instead, it teaches how to ",[510,574,575],{},"maximize your impact by executing high-leverage activities",", amplifying your value and influence.",[12,578,579],{},"The author presents a harsh truth:",[108,581,585],{"className":582,"code":583,"language":584,"meta":38,"style":38},"language-javascript shiki shiki-themes github-dark","effort === impact // False\n","javascript",[114,586,587],{"__ignoreMap":38},[117,588,589],{"class":119,"line":120},[117,590,583],{},[20,592,593],{},[12,594,595],{},"Effort doesn't equal impact and contribution.",[12,597,598],{},"A staff engineer's output might be 10 times that of a junior engineer, but their hours aren't 10 times longer.",[12,600,601,602,605,606,609],{},"The book's core concept is ",[510,603,604],{},"leverage","—a multiplier that converts effort into enormous value and impact, and the ",[510,607,608],{},"fulcrum for breaking free from daily development drudgery",". Here's the formula:",[108,611,613],{"className":582,"code":612,"language":584,"meta":38,"style":38},"leverage = impactProduced / timeInvested\n",[114,614,615],{"__ignoreMap":38},[117,616,617],{"class":119,"line":120},[117,618,612],{},[12,620,621],{},"Engineering work follows the 80/20 rule: 20% of tasks create 80% of value, while 80% of tasks produce only 20% of results.",[12,623,624,625,628],{},"Identify tasks that take minimal time but create maximum value and impact, and prioritize them. These are called ",[510,626,627],{},"high-leverage activities",".",[12,630,631],{},"The talk covers five types of high-leverage activities:",[502,633,635],{"id":634},"_1-optimize-for-learning","1. Optimize for Learning",[12,637,638,639],{},"Maximize your learning ability—",[510,640,641],{},"learning compounds!",[12,643,644],{},"Because learning has compound effects, your growth curve is exponential: flat at first, then nearly vertical after a critical point. This makes sense: solving hard problems requires accumulating knowledge from different angles, and once connected, the solution emerges.",[12,646,647],{},"The classic example: improve 1% daily, and you'll improve 37x in a year.",[12,649,650],{},"Everyone knows learning matters, but the challenge is being buried in daily development tasks and bug fixes. How do you find time to learn?",[12,652,653],{},"Google implemented 20% Time: one day per week for non-core work—researching new tech, pursuing passion projects. Gmail came from 20% Time.",[12,655,656,657],{},"For regular employees, the author suggests: ",[510,658,659],{},"reserve one hour daily for your own 20% Time.",[12,661,662,663],{},"One final tip: start with topics you're interested in or problems you face at work, because ",[510,664,665],{},"motivation is the most important element for sustaining action.",[502,667,669],{"id":668},"_2-invest-in-iteration-speed","2. Invest in Iteration Speed",[12,671,672,673],{},"Accelerate repetitive tasks. It's like deciding whether to write code as a function: when you do something twice, ",[510,674,675],{},"automate the third time.",[12,677,678],{},"When the author asked CTOs what makes effective engineers different, they answered: \"Engineers who invest time in automation tools are always the most efficient.\"",[12,680,681],{},"This includes everything from shell scripts to full CI/CD infrastructure.",[12,683,684],{},"At Quora, the author deployed 40-50 times daily. Without CI/CD automation, that would consume enormous time.",[12,686,687,688],{},"Major Silicon Valley companies have dedicated teams building internal tools—Facebook created React.js. The author says: ",[510,689,690],{},"\"We all want to author the next trendy framework, but we can start with our daily development work!\"",[502,692,694],{"id":693},"_3-validate-your-ideas-aggressively-and-iteratively","3. Validate Your Ideas Aggressively and Iteratively",[12,696,697],{},"Verify feature feasibility before implementation to avoid wasting time and resources.",[12,699,700],{},"Etsy redesigned their search results page with infinite scroll. A/B testing showed click-through and conversion rates dropped 10% and 25% respectively. The feature never shipped—months of wasted effort.",[12,702,703,704,707,708,711],{},"After this, Etsy adopted a ",[510,705,706],{},"progressive approach",": break features into ",[510,709,710],{},"verifiable assumptions",", confirm they help the product, then develop.",[12,713,714,715],{},"The author emphasizes: ",[510,716,717],{},"execute uncertain, risky things first to avoid wasted effort later.",[502,719,721],{"id":720},"_4-minimize-operational-burden","4. Minimize Operational Burden",[12,723,724,725,628],{},"Reduce daily maintenance costs by focusing on ",[510,726,727],{},"complexity",[12,729,730],{},"When Facebook acquired Instagram, it served 40 million users with just 13 employees—only 5 engineers. By any measure, an incredibly efficient team.",[12,732,733,734],{},"Asked what made this possible, the CTO answered: ",[510,735,736],{},"\"We use the simplest approach to solve problems. Engineers question each other to ensure no added maintenance burden before developing.\"",[12,738,739],{},"Complexity cascades:",[20,741,742],{},[12,743,744],{},"code complexity → system complexity → product complexity → organization complexity",[12,746,747],{},"Complex code increases engineer comprehension and communication costs. System complexity increases maintenance costs. Product complexity makes future features harder. Organizational complexity impacts team efficiency.",[12,749,750],{},"The author once vacationed in Hawaii when a system only he understood broke. With no internet on the volcano, he became a single point of failure.",[12,752,753,754,757],{},"He then prioritized ",[510,755,756],{},"mentorship",": detailed onboarding docs and processes. Engineers who once needed three months to understand the codebase now contribute to production in their first week. Massive efficiency gain!",[502,759,761],{"id":760},"_5-building-a-great-engineering-culture","5. Building a Great Engineering Culture",[12,763,764,765,768],{},"Create a good development team culture. Engineers want to work in good environments. ",[510,766,767],{},"Focusing on leverage activities creates a positive cycle",", making efficiency increasingly smooth.",[502,770,772],{"id":771},"qa","Q&A",[774,775,777],"h3",{"id":776},"q-writing-tests-is-necessary-but-time-consuming-any-more-efficient-testing-methods","Q: Writing tests is necessary but time-consuming. Any more efficient testing methods?",[12,779,780,781,784],{},"A: ",[510,782,783],{},"Ensure critical paths have test coverage"," to prevent regressions during frequent changes.",[12,786,787],{},"You don't need 100% test coverage. Testing rarely-used areas can be wasteful.",[774,789,791],{"id":790},"q-your-examples-are-startups-or-small-companies-how-do-you-reduce-complexity-in-large-companies","Q: Your examples are startups or small companies. How do you reduce complexity in large companies?",[12,793,794],{},"A: Startups benefit from direct communication, but large companies have advantages like historical data.",[12,796,797,798,801],{},"Google is highly data-driven, so ",[510,799,800],{},"let data speak and influence decision-makers"," to pursue leverage activities.",[290,803,804],{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":38,"searchDepth":39,"depth":39,"links":806},[807,808,809,810,811,812,813,814,815],{"id":504,"depth":39,"text":505},{"id":539,"depth":39,"text":540},{"id":568,"depth":39,"text":569},{"id":634,"depth":39,"text":635},{"id":668,"depth":39,"text":669},{"id":693,"depth":39,"text":694},{"id":720,"depth":39,"text":721},{"id":760,"depth":39,"text":761},{"id":771,"depth":39,"text":772,"children":816},[817,818],{"id":776,"depth":143,"text":777},{"id":790,"depth":143,"text":791},"/images/effective-engineer.jpg",[],{"readingTime":260},"/threads/articles/effective-engineer-talks-at-google.en",[],"2023-05-11",{"title":498,"description":38},"effective-engineer-talks-at-google","a2b46b97e0bddf9485e4d8eb9e026812b05c371f96e78cc443ada860da0ad53d","threads/articles/effective-engineer-talks-at-google.en","Reserve one hour of work time each day to implement your own 20% Time and focus on high-leverage activities.",[831,832],"effective engineer","high leverage","n7c_HYN6PBBl7zChfn-4ga080WHQXeZ5ok_ZDRxhlo4",{"id":835,"title":836,"animated":7,"body":837,"client":41,"cover":847,"css_code":41,"description":841,"extension":42,"html_code":41,"images":848,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":849,"navigation":44,"order":41,"path":850,"photos":851,"published_at":853,"reading_time":41,"related":41,"role":41,"seo":854,"slug":855,"source_hash":856,"status":41,"stem":857,"summary":858,"tags":859,"tech_stack":41,"translation_of":855,"type":863,"url":41,"video_url":41,"__hash__":864},"threads/threads/gallery/tokyo-wide-sanpo.en.md","Tokyo Metropolitan Stroll",{"type":9,"value":838,"toc":845},[839,842],[12,840,841],{},"In April, Tokyo's Ueno Park is ablaze with Somei Yoshino cherry blossoms.",[12,843,844],{},"Crowds and petals drift together in the wind, and each year at this moment, the city sets aside its sense of efficiency.",{"title":38,"searchDepth":39,"depth":39,"links":846},[],"/images/gallery/uzawaechigo.jpeg",[],{},"/threads/gallery/tokyo-wide-sanpo.en",[847,852],"/images/gallery/urikamome.jpg","2023-04-21",{"title":836,"description":841},"tokyo-wide-sanpo","85063ae1e14ed7d92cae71220bbdf7ff51230d97adc9fcb3134afd198b1e255a","threads/gallery/tokyo-wide-sanpo.en","Spring 2023 Snapshots",[860,861,862],"旅遊","東京","春天","gallery","7mpI7DBqHiQkGl3M-XZRHJZWykCe8qpDKiS88FxjJCM",{"id":866,"title":867,"animated":7,"body":868,"client":41,"cover":911,"css_code":41,"description":912,"extension":42,"html_code":41,"images":913,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":914,"navigation":44,"order":41,"path":915,"photos":916,"published_at":917,"reading_time":41,"related":41,"role":41,"seo":918,"slug":919,"source_hash":920,"status":41,"stem":921,"summary":922,"tags":923,"tech_stack":41,"translation_of":919,"type":390,"url":41,"video_url":41,"__hash__":926},"threads/threads/articles/sankahakuu.en.md","A Walk Through Tokyo | Ryogoku",{"type":9,"value":869,"toc":909},[870,876,879,882,892,898,901,904],[12,871,872,873,628],{},"I've always loved Hokusai's ukiyo-e work ",[524,874,875],{},"The Great Wave off Kanagawa",[12,877,878],{},"Because those wave crests that bloom into countless white flowers are so vivid, as if many small hands were trying to snatch away the fragile little boat.",[12,880,881],{},"This somehow let me see that Hokusai, who had painted his whole life, finally encountered Prussian blue in his old age, and with it came the exhilaration of freely expressing the seas and skies of Edo on canvas.",[12,883,884,885,888,889,628],{},"But today at the Hokusai Museum, I saw ",[524,886,887],{},"Shower Below the Peak",". All at once it rose to become my ",[510,890,891],{},"favorite Hokusai work",[12,893,894,895,897],{},"In ",[524,896,887],{},", dark clouds gather and lightning flashes at the foot of the mountain, while Mount Fuji's peak pierces through the clouds and rain, standing tall against the clear sky above.",[12,899,900],{},"Within the limited canvas, to express Mount Fuji's majesty, Hokusai used the weather as contrast, emphasizing the three-dimensional height.",[12,902,903],{},"In good works, such ingenuity seems to be everywhere. Literature, photography, painting, music—each has its own way.",[20,905,906],{},[12,907,908],{},"I think that people who can realize their imagination using the tools at hand are the most remarkable, no matter what era they live in!",{"title":38,"searchDepth":39,"depth":39,"links":910},[],"/images/sankahakuu.png","I've always loved Hokusai's ukiyo-e work The Great Wave off Kanagawa.",[],{"readingTime":260},"/threads/articles/sankahakuu.en",[],"2023-03-17",{"title":867,"description":912},"sankahakuu","dfd535c07195c28dd88f9ddd3b5fd46c4c76c8d5bce83c02ff59d0a2819c75c9","threads/articles/sankahakuu.en","I seemed to see Hokusai, who had painted his entire life, finally encounter Prussian blue in his old age, and with it, the exhilaration of freely expressing the seas and skies of Edo on canvas.",[924,925],"葛飾北齋","富嶽三十六景","qDNXA3NY0qCLeT4MwuFXtUdvjJD5sW3JHTJNSi8NB1Q",{"id":928,"title":929,"animated":7,"body":930,"client":41,"cover":1043,"css_code":41,"description":38,"extension":42,"html_code":41,"images":1044,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1045,"navigation":44,"order":41,"path":1046,"photos":1047,"published_at":1048,"reading_time":41,"related":41,"role":41,"seo":1049,"slug":1050,"source_hash":1051,"status":41,"stem":1052,"summary":1053,"tags":1054,"tech_stack":41,"translation_of":1050,"type":390,"url":41,"video_url":41,"__hash__":1055},"threads/threads/articles/liuyi-english-school.en.md","Children's Nanyang Street and Adults' Cram Schools",{"type":9,"value":931,"toc":1041},[932,937,940,943,948,951,954,979,982,985,988,991,994,1000,1005,1020,1027],[20,933,934],{},[12,935,936],{},"\"The next four years of university will be the best days of your lives.\"",[12,938,939],{},"Wayne's teacher spoke with such conviction that it felt less like a prediction and more like a reminiscence. \"You'll discover that the grand productions and intense romances you thought were amazing in high school are actually trivial. At university, there's always something more exciting to do. You need to treasure this time dearly. Because the most carefree and exhilarating period of your life might truly be just these four years of university.\"",[12,941,942],{},"This was the most memorable thing I heard in Wayne's English class during my final year of high school. Wayne, ten years our senior, wasn't a figure of authority to us high schoolers—he was more like a peer. The memories he'd casually share during class were the future we gazed up at from behind our textbooks. After entering university, you become an adult. Freedom seems within reach—but what would that feeling actually be like?",[12,944,945,947],{},[524,946,929],{}," is a memoir documenting the youthful days of high school students while also chronicling the business ventures of adults running cram schools. Initially, I was a student listening from the audience. After the book's publication, I became a third-year student who should have started (but kept postponing) thinking about my future. Reading it again, I'm already a working professional two years into my career, having switched to my dream job. Each time I read this book, I have a different experience—it feels like the sensation of a young person listening to rain.",[12,949,950],{},"The biggest difference is that on my first reading, I focused entirely on the student section, thinking about how unique certain students were and relating to their worries. On my second reading, I found myself naturally drawn to Wayne's experiences at the cram school, the difficulties he faced navigating management.",[12,952,953],{},"I also realized that those Wednesday evenings I'd eagerly anticipated back then—the mock exam solution sessions that made me feel like I was glimpsing the free world of adults—were actually built on countless hours of hard work, bitterness, and even self-doubt before being presented to us. Only after entering the workforce did I notice the effort behind the polished exterior.",[12,955,956,957,960,961,964,965,964,968,964,971,974,975,978],{},"The author of this book, Tsai Shih-Wei ",[114,958,959],{},"@waynetsai1984",", is a cram school teacher and renowned English translator. Books he has translated include: ",[524,962,963],{},"Atomic Habits",", ",[524,966,967],{},"Crushing It!",[524,969,970],{},"Michael Jordan: The Life",[524,972,973],{},"The Mamba Mentality",", and ",[524,976,977],{},"The Daily Awakening",", among others.",[12,980,981],{},"The book is divided into three sections: \"What These Students Taught Me,\" \"Tales from the Cram School,\" and bonus content titled \"Casual Chats Between Classes.\"",[12,983,984],{},"\"What These Students Taught Me\" features the eccentric students Wayne taught at the cram school—there's Mori with his strict mother, a military enthusiast passionate about Isoroku Yamamoto, and a top-tier baker from Taipei First High School who excels at both exams and baking. Each high school student mentioned stands out remarkably within the standardized manufacturing process of high school education designed to meet the standards of the college entrance exams. Their distinctiveness comes from having particular passions, special skills, or even being exceptionally obedient and non-rebellious. After reading this section, I couldn't help but think of Pink Floyd's \"Another Brick in the Wall.\" Does education make us better, or is it simply a filtering mechanism?",[12,986,987],{},"\"Tales from the Cram School\" documents Wayne's experiences and encounters at Liu Yi English. From entering the industry to becoming the star teacher of the cram school, from the glamorous lecture platform to prep time after class, and navigating relationships with management. What impressed me most was when Liu Yi, the cram school owner, once told Wayne: \"I hate you!\" Despite this, Wayne expressed in the book that he deeply respects Liu Yi. The biggest reason is that he was moved by Liu Yi's passion for teaching English. Liu Yi once said on stage: \"If I suddenly died, it wouldn't matter—I've already prepared all the lecture materials, and other teachers can take over.\"",[12,989,990],{},"When I attended cram school in high school, I received newly compiled vocabulary books, grammar books, and sentence pattern books from Liu Yi's publishing house every semester. Though few people actually read them, this spirit of approaching something you care about with unwavering dedication deeply moved me.",[12,992,993],{},"\"Casual Chats Between Classes\" excerpts over a dozen passages that profoundly inspired Wayne, accompanied by his personal experiences as verification. This is my favorite part of the book. Kensuke Kensho, the founder of the Japanese publisher Gentosha, once said: \"What matters isn't what's written in the book, but how you feel about it.\" While reading the casual chats section, this quote suddenly came to mind.",[12,995,996,997,999],{},"Wayne loves reading and engages in dialogue with authors through his own life experiences. Reading ",[524,998,929],{}," lets you see the questions and answers that people ahead of us on life's journey have repeatedly pondered. It also shows you that you're not alone in having these worries. Though we must live our own lives by ourselves, we are not solitary. 😉",[20,1001,1002],{},[12,1003,1004],{},"The reading of all good books is like conversation with the finest men of past centuries. - René Descartes",[12,1006,1007,1008,1011,1012,1015,1016,1019],{},"The wave of digitalization sweeps across everything, and no one can stand apart from it. Let Readmoo guide you through the sea of words! Click the link below to ",[510,1009,1010],{},"register as a Readmoo member"," and enjoy a ",[510,1013,1014],{},"21% discount"," on your first purchase within 30 days, plus an extra ",[510,1017,1018],{},"$100 book voucher"," on orders over the threshold within 60 days!",[12,1021,1022,1023],{},"Register now 👉 ",[281,1024,1025],{"href":1025,"rel":1026},"http://moo.im/i/DbsBO",[433],[12,1028,1029,1030,1036,1037],{},"Buy now ",[281,1031,1034],{"href":1032,"rel":1033},"https://readmoo.com/book/210208251000101",[433],[524,1035,929],{}," and rekindle those summer memories of yearning for the adult world 👉 ",[281,1038,1039],{"href":1039,"rel":1040},"https://moo.im/a/3fglvC",[433],{"title":38,"searchDepth":39,"depth":39,"links":1042},[],"/images/wayne-english-teacher.png",[],{},"/threads/articles/liuyi-english-school.en",[],"2021-09-05T00:00:00.000Z",{"title":929,"description":38},"liuyi-english-school","ec0208e550a48a8b6bcbb5b4701d9994019a93adc2a312c41a363531c4ead9ad","threads/articles/liuyi-english-school.en","After entering university, you become an adult. Freedom seems within reach—but what would that feeling actually be like?",[],"QX91bDfu598KCew2UOsJCpUsYW8YQ32g8hBHDst3HZo",{"id":1057,"title":1058,"animated":44,"body":1059,"client":41,"cover":41,"css_code":1063,"description":38,"extension":42,"html_code":1064,"images":1065,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1066,"navigation":44,"order":41,"path":1067,"photos":1068,"published_at":1069,"reading_time":41,"related":41,"role":41,"seo":1070,"slug":1071,"source_hash":1072,"status":41,"stem":1073,"summary":1074,"tags":1075,"tech_stack":41,"translation_of":1071,"type":1079,"url":41,"video_url":41,"__hash__":1080},"threads/threads/cssart/face-mask.en.md","Mask Illustrated Guide",{"type":9,"value":1060,"toc":1061},[],{"title":38,"searchDepth":39,"depth":39,"links":1062},[],".mask-art * {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n  text-decoration: none;\n  list-style-type: none;\n  letter-spacing: 4px;\n  font-size: 20px;\n}\n\n.mask-art {\n  background-color: #a98e7c;\n  color: #ddd;\n  padding: 20px 0;\n}\n\n.mask-art .container {\n  margin: 0 auto;\n  width: 700px;\n  max-width: 100%;\n}\n\n.mask-art .prod-wrapper {\n  width: 100%;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.mask-art .prod-name {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  text-align: center;\n  padding: 30px 0;\n  margin: 20px 30px;\n  width: 30%;\n}\n\n.mask-art .mask-wrapper {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  text-align: center;\n  padding: 30px 0;\n  margin: 20px 0;\n  width: 40%;\n}\n\n.mask-art .desc {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  text-align: left;\n  margin: 20px 0 20px 70px;\n  width: 30%;\n  font-size: 16px;\n}\n\n/* 醫療口罩 */\n.mask-art .mask {\n  position: relative;\n  width: 200px;\n  height: 90px;\n  background-color: #87f0df;\n  border: 3px dotted #eee;\n  border-top: 4px solid #eee;\n  border-radius: 2px;\n  transition: all 0.7s;\n}\n\n.mask-art .mask:hover {\n  transform: translate(0, -5px);\n  box-shadow: 0px 20px 10px rgba(0, 0, 0, 0.4);\n}\n\n.mask-art .mask .iron-line {\n  margin: 6px auto;\n  width: 190px;\n  border: 2px solid #eee;\n}\n\n.mask-art .mask .line {\n  margin: 20px auto;\n  width: 190px;\n  border: 1px solid #eee;\n}\n\n.mask-art .mask::before {\n  content: \"\";\n  display: block;\n  width: 50px;\n  height: 80px;\n  position: absolute;\n  border: 2px solid #eee;\n  border-right: 2px dotted #eee;\n  left: -50px;\n  border-radius: 40px 0px 0px 40px;\n}\n\n.mask-art .mask::after {\n  content: \"\";\n  display: block;\n  width: 50px;\n  height: 80px;\n  position: absolute;\n  border: 2px solid #eee;\n  border-left: 2px dotted #eee;\n  top: 0;\n  right: -50px;\n  border-radius: 0px 40px 40px 0px;\n}\n\n/* 活性碳口罩 */\n.mask-art .carbon-mask {\n  position: relative;\n  width: 200px;\n  height: 90px;\n  background-image: radial-gradient(#778683 70%, #aab3b2 30%);\n  background-size: 2px 2px;\n  border: 3px dotted #ddd;\n  border-top: 4px solid #ddd;\n  border-radius: 2px;\n  transition: all 0.7s;\n}\n\n.mask-art .carbon-mask:hover {\n  transform: translate(0, -5px);\n  box-shadow: 0px 20px 10px rgba(0, 0, 0, 0.4);\n}\n\n.mask-art .carbon-mask .iron-line {\n  margin: 6px auto;\n  width: 190px;\n  border: 2px solid #ddd;\n}\n\n.mask-art .carbon-mask .line {\n  margin: 20px auto;\n  width: 190px;\n  border: 1px solid #aab3b2;\n}\n\n.mask-art .carbon-mask::before {\n  content: \"\";\n  display: block;\n  width: 50px;\n  height: 80px;\n  position: absolute;\n  border: 2px solid #eee;\n  border-right: 2px dotted #eee;\n  left: -50px;\n  border-radius: 40px 0px 0px 40px;\n}\n\n.mask-art .carbon-mask::after {\n  content: \"\";\n  display: block;\n  width: 50px;\n  height: 80px;\n  position: absolute;\n  border: 2px solid #eee;\n  border-left: 2px dotted #eee;\n  top: 0;\n  right: -50px;\n  border-radius: 0px 40px 40px 0px;\n}\n\n/* N95 口罩 */\n.mask-art .n95-mask {\n  position: relative;\n  width: 150px;\n  height: 150px;\n  background-image: radial-gradient(#eee, rgb(177, 177, 177));\n  background-size: cover;\n  border: 3px solid #ccc;\n  border-radius: 75px 40px 75px 75px;\n  transform: rotate(-45deg);\n  transition: 0.7s;\n}\n\n.mask-art .n95-mask:hover {\n  transform: translate(0, -10px) rotate(-45deg);\n  box-shadow: 0px 20px 10px rgba(0, 0, 0, 0.4);\n}\n\n.mask-art .n95-mask .iron-line-left {\n  position: absolute;\n  top: 8%;\n  left: 22%;\n  margin: 6px auto;\n  width: 90px;\n  border: 2px solid #ddd;\n  transform: rotate(5deg);\n}\n\n.mask-art .n95-mask .iron-line-right {\n  position: absolute;\n  top: 42%;\n  left: 54%;\n  margin: 6px auto;\n  width: 90px;\n  border: 2px solid #ddd;\n  transform: rotate(85deg);\n}\n\n.mask-art .n95-mask .filter {\n  position: absolute;\n  top: 6px;\n  left: 16px;\n  margin: 20px auto;\n  width: 30px;\n  height: 30px;\n  background-image: radial-gradient(#ddd 60%, rgb(177, 177, 177) 40%);\n  background-size: contain;\n  border: 2px dotted #ddd;\n  border-radius: 50%;\n}\n\n.mask-art .n95-mask .mark {\n  position: absolute;\n  top: 88px;\n  left: 2%;\n  width: 90px;\n  height: 20px;\n  background-color: #ddd;\n  border: 1px dotted #aab3b2;\n  transform: rotate(45deg);\n  font-size: 10px;\n  color: #666;\n  letter-spacing: 0;\n  font-weight: 600;\n}\n\n.mask-art .n95-mask::before {\n  content: \"\";\n  display: block;\n  width: 50px;\n  height: 80px;\n  position: absolute;\n  border: 2px solid #eee;\n  border-right: 2px dotted #eee;\n  top: -32px;\n  left: -16px;\n  border-radius: 40px 0px 0px 40px;\n  transform: rotate(45deg);\n}\n\n.mask-art .n95-mask::after {\n  content: \"\";\n  display: block;\n  width: 50px;\n  height: 80px;\n  position: absolute;\n  border: 2px solid #eee;\n  border-left: 2px dotted #eee;\n  top: 87px;\n  right: -17px;\n  border-radius: 0px 40px 40px 0px;\n  transform: rotate(45deg);\n}\n\n/* 國王的口罩（買不到） */\n.mask-art .no-mask {\n  position: relative;\n  width: 200px;\n  height: 90px;\n  background-color: transparent;\n  border: 1px dotted #eee;\n  border-radius: 2px;\n  transition: all 0.7s;\n}\n\n.mask-art .no-mask:hover {\n  transform: translate(0, -5px);\n}\n\n.mask-art .no-mask .line {\n  margin: 30px auto;\n  width: 190px;\n  color: #444;\n  text-decoration: line-through;\n}\n\n.mask-art .no-mask::before {\n  content: \"\";\n  display: block;\n  width: 50px;\n  height: 80px;\n  position: absolute;\n  border: 1px dotted #eee;\n  top: 2px;\n  left: -50px;\n  border-radius: 40px 0px 0px 40px;\n}\n\n.mask-art .no-mask::after {\n  content: \"\";\n  display: block;\n  width: 50px;\n  height: 80px;\n  position: absolute;\n  border: 1px dotted #eee;\n  top: 2px;\n  right: -50px;\n  border-radius: 0px 40px 40px 0px;\n}\n\n@media (max-width: 768px) {\n  .mask-art .container {\n    width: 90%;\n  }\n\n  .mask-art .prod-wrapper {\n    flex-direction: column;\n    margin: 0 auto;\n  }\n\n  .mask-art .prod-name {\n    width: 100%;\n    margin: 20px auto 0;\n    padding: 0;\n  }\n\n  .mask-art .mask-wrapper {\n    width: 100%;\n    margin-bottom: 30px;\n    padding: 0;\n  }\n\n  .mask-art .desc {\n    width: 60%;\n    margin: 0 auto 30px;\n  }\n}\n","\u003Cdiv class=\"mask-art\">\n  \u003Cdiv class=\"container\">\n    \u003Cdiv class=\"prod-wrapper\">\n      \u003Cdiv class=\"prod-name\">醫療口罩\u003C/div>\n      \u003Cdiv class=\"mask-wrapper\">\n        \u003Cdiv class=\"mask\">\n          \u003Cdiv class=\"iron-line\">\u003C/div>\n          \u003Cdiv class=\"line\">\u003C/div>\n          \u003Cdiv class=\"line\">\u003C/div>\n          \u003Cdiv class=\"line\">\u003C/div>\n        \u003C/div>\n      \u003C/div>\n      \u003Cdiv class=\"desc\">可有效阻擋大部分飛沫，適合一般民眾配戴。\u003C/div>\n    \u003C/div>\n    \u003Cdiv class=\"prod-wrapper\">\n      \u003Cdiv class=\"prod-name\">活性碳口罩\u003C/div>\n      \u003Cdiv class=\"mask-wrapper\">\n        \u003Cdiv class=\"carbon-mask\">\n          \u003Cdiv class=\"iron-line\">\u003C/div>\n          \u003Cdiv class=\"line\">\u003C/div>\n          \u003Cdiv class=\"line\">\u003C/div>\n          \u003Cdiv class=\"line\">\u003C/div>\n        \u003C/div>\n      \u003C/div>\n      \u003Cdiv class=\"desc\">可吸附異味，大多數無法隔絕飛沫，沒有防疫效果。\u003C/div>\n    \u003C/div>\n    \u003Cdiv class=\"prod-wrapper\">\n      \u003Cdiv class=\"prod-name\">N95 口罩\u003C/div>\n      \u003Cdiv class=\"mask-wrapper\">\n        \u003Cdiv class=\"n95-mask\">\n          \u003Cdiv class=\"iron-line-left\">\u003C/div>\n          \u003Cdiv class=\"iron-line-right\">\u003C/div>\n          \u003Cdiv class=\"filter\">\u003C/div>\n          \u003Ci class=\"mark\"> Warning 3M\u003C/i>\n        \u003C/div>\n      \u003C/div>\n      \u003Cdiv class=\"desc\">可有效阻絕 95％ 以上的病毒，適合長時間接觸患者的第一線醫療人員配戴。\u003C/div>\n    \u003C/div>\n    \u003Cdiv class=\"prod-wrapper\">\n      \u003Cdiv class=\"prod-name\">國王的口罩\u003C/div>\n      \u003Cdiv class=\"mask-wrapper\">\n        \u003Cdiv class=\"no-mask\">\n          \u003Cdiv class=\"iron-line\">\u003C/div>\n          \u003Cdiv class=\"line\">買不到\u003C/div>\n        \u003C/div>\n      \u003C/div>\n      \u003Cdiv class=\"desc\">身體健康、從事戶外運動，現階段可以不用戴口罩。\u003C/div>\n    \u003C/div>\n  \u003C/div>\n\u003C/div>\n",[],{},"/threads/cssart/face-mask.en",[],"2020-02-06T00:00:00.000Z",{"title":1058,"description":38},"face-mask","09fc4b54a8ddfeac422716eab19b996ac4c3f972a5c29d123b7a60692906c85c","threads/cssart/face-mask.en","When Taiwan's mask rationing system launched in 2020, we captured that era of nationwide mask shortages with pure CSS: medical masks, activated carbon masks, N95s, and the elusive 'King Mask' that nobody could buy.",[1076,1077,1078],"CSS Art","Pure CSS","2020","cssart","ndaa9je1Vc9qCN37Ljh5CpfzBJl93dPFZ5iS_IdwZ4c",{"id":1082,"title":1083,"animated":44,"body":1084,"client":41,"cover":41,"css_code":1116,"description":1088,"extension":42,"html_code":1117,"images":1118,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1119,"navigation":44,"order":41,"path":1120,"photos":1121,"published_at":1122,"reading_time":41,"related":41,"role":41,"seo":1123,"slug":1124,"source_hash":1125,"status":41,"stem":1126,"summary":1127,"tags":1128,"tech_stack":41,"translation_of":1124,"type":1079,"url":41,"video_url":41,"__hash__":1131},"threads/threads/cssart/bubble-tea.en.md","Pearl Milk Tea Shaker Cup",{"type":9,"value":1085,"toc":1114},[1086,1089,1092,1103,1106,1109],[12,1087,1088],{},"Vue.js cherry blossom pearl milk tea shaker cup — time to mix your perfect boba tea!",[12,1090,1091],{},"You can:",[72,1093,1094,1097,1100],{},[75,1095,1096],{},"Choose your cup style (thermal mug, shaker cup, coffee cup, mug)",[75,1098,1099],{},"Adjust the proportions of various ingredients (cream, milk, green tea, black tea)",[75,1101,1102],{},"Add or remove pearls",[12,1104,1105],{},"This ordering system offers 4 beverage options and 4 cup styles for customers to freely mix and match.",[12,1107,1108],{},"We recommend using an eco-friendly cup because",[20,1110,1111],{},[12,1112,1113],{},"The Earth is already too crowded—there's no room for even a bit more plastic!",{"title":38,"searchDepth":39,"depth":39,"links":1115},[],".bubble-tea-container {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  min-height: 200px;\n  background-color: #698474;\n  padding: 24px;\n}\n.label { color: #e5e4cc; margin-top: 12px; font-size: 14px; }\n.beverage { position: relative; margin-top: 30px; }\n.cup {\n  width: 60px; height: 100px; margin: 0 auto;\n  border: 4px solid #fff; border-top: none;\n  padding-top: 5px; position: relative;\n}\n.ingradients {\n  width: 100%; position: absolute; bottom: 0;\n  background-color: #9dab86; overflow: hidden; font-size: 0;\n}\n.thermos-height { max-height: 80px; }\n.bubbles {\n  width: 10px; height: 10px; background-color: #fbc1bc;\n  border-radius: 5px; display: inline-block;\n}\n.green-tea { width: 100%; height: 25px; background-color: #9dab86; }\n.milk { width: 100%; height: 25px; background-color: #f7d8bb; }\n.foam { width: 100%; height: 10px; background-color: #eee; }\n.black-tea { width: 100%; height: 0; background-color: #801a08; }\n.box { width: 100%; height: 10px; position: absolute; top: 0; overflow: hidden; z-index: 1; }\n.wave {\n  position: absolute; bottom: 47%; left: -147%;\n  background: #698474; width: 222px; height: 222px;\n  transform-origin: 50% 48%; border-radius: 43%;\n  animation: drift 5000ms infinite linear;\n}\n.wave.-three { animation: drift 7000ms infinite linear; }\n.wave.-two { animation: drift 9000ms infinite linear; opacity: .1; background: #f8b195; }\n@keyframes drift { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }\n.thermos { border-top: 4px solid #fff; border-radius: 2px; }\n.handle.top {\n  border: 4px solid #fff; width: 60px; height: 20px;\n  position: relative; left: 50%; transform: translateX(-50%); border-radius: 2px;\n}\n.handle.top::after {\n  content: \"\"; display: block; width: 10px; height: 20px;\n  border: 2px solid #fff; position: absolute; left: 60%; top: 40%; border-radius: 4px;\n}\n","\u003Cdiv class=\"bubble-tea-container\">\n  \u003Cdiv class=\"beverage\">\n    \u003Cdiv class=\"handle top\">\u003C/div>\n    \u003Cdiv class=\"cup thermos\">\n      \u003Cdiv class=\"ingradients thermos-height\">\n        \u003Cdiv class=\"box\">\n          \u003Cdiv class=\"wave -one\">\u003C/div>\n          \u003Cdiv class=\"wave -two\">\u003C/div>\n          \u003Cdiv class=\"wave -three\">\u003C/div>\n        \u003C/div>\n        \u003Cdiv class=\"foam\" style=\"height: 10px;\">\u003C/div>\n        \u003Cdiv class=\"milk\" style=\"height: 25px;\">\u003C/div>\n        \u003Cdiv class=\"green-tea\" style=\"height: 25px;\">\u003C/div>\n        \u003Cdiv class=\"black-tea\" style=\"height: 0px;\">\u003C/div>\n        \u003Cdiv class=\"bubbles\">\u003C/div>\n        \u003Cdiv class=\"bubbles\">\u003C/div>\n        \u003Cdiv class=\"bubbles\">\u003C/div>\n        \u003Cdiv class=\"bubbles\">\u003C/div>\n        \u003Cdiv class=\"bubbles\">\u003C/div>\n      \u003C/div>\n    \u003C/div>\n  \u003C/div>\n  \u003Cp class=\"label\">四季奶青加珍珠\u003C/p>\n\u003C/div>\n",[],{},"/threads/cssart/bubble-tea.en",[],"2019-12-31T00:00:00.000Z",{"title":1083,"description":1088},"bubble-tea","2d5c621a0c2d1d771b265fb1d4518ce771918da77871fe559957eb5da270a730","threads/cssart/bubble-tea.en","Vue 3 interactive pearl milk tea simulator — adjust the proportions of cream, milk, green tea, black tea, and pearls, choose your favorite cup style, and craft your perfect cup of boba tea.",[1076,1129,1130],"Vue 3","Interactive","nYCe66F0sns2KjChC26BLMioElE5RWYDPDhWU2uOdpo",{"id":1133,"title":1134,"animated":7,"body":1135,"client":41,"cover":41,"css_code":41,"description":38,"extension":42,"html_code":41,"images":1163,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1164,"navigation":44,"order":41,"path":1165,"photos":1166,"published_at":1167,"reading_time":41,"related":41,"role":41,"seo":1168,"slug":1169,"source_hash":1170,"status":41,"stem":1171,"summary":1172,"tags":1173,"tech_stack":41,"translation_of":1169,"type":390,"url":41,"video_url":1177,"__hash__":1178},"threads/threads/articles/encounter.en.md","Meeting",{"type":9,"value":1136,"toc":1161},[1137,1142,1145,1148,1151,1153,1155,1158],[20,1138,1139],{},[12,1140,1141],{},"An instrumental piece with no lyrics, yet you can hear everything.",[12,1143,1144],{},"I hear winter saying goodbye\nI wake up in some year, some month\nI think, I wait, I anticipate\nBut the future won't arrange itself for me",[12,1146,1147],{},"Grey skies, dusk, outside the car window\nSomeone in the future waits for me\nLeft, right, straight ahead\nHow many turns must love take to arrive?",[12,1149,1150],{},"Who will I meet? What will we say?\nWhere in the future is the one I'm waiting for?\nI hear the wind from the subway and the crowd\nI'm standing in line, holding love's ticket number",[12,1152,1147],{},[12,1154,1150],{},[12,1156,1157],{},"I fly forward, soaring across a sea of time\nWe've both been hurt in love before\nI look at the road, the entrance to dreams is narrow\nMeeting you is the most beautiful accident",[12,1159,1160],{},"One day, my mystery will be revealed",{"title":38,"searchDepth":39,"depth":39,"links":1162},[],[],{},"/threads/articles/encounter.en",[],"2019-09-17T00:00:00.000Z",{"title":1134,"description":38},"encounter","8483664d03ad880c099c4472a0d302f1d724ef857ebd4dcedd3aea55bc98db99","threads/articles/encounter.en","ukulele version",[1174,1175,1176],"ukulele","fingerstyle","cover","https://www.youtube.com/watch?v=U5YBtGQbHu4","XQllw4_99fZj14gLRXbT4Z2RRqnyJFEToJ2dJyK1HOM",[1180,1226,1437,1473,1554],{"id":319,"title":320,"animated":7,"body":1181,"client":41,"cover":41,"css_code":41,"description":325,"extension":42,"html_code":41,"images":1221,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1222,"navigation":44,"order":41,"path":379,"photos":1223,"published_at":381,"reading_time":41,"related":41,"role":41,"seo":1224,"slug":383,"source_hash":384,"status":41,"stem":385,"summary":386,"tags":1225,"tech_stack":41,"translation_of":383,"type":390,"url":41,"video_url":41,"__hash__":391},{"type":9,"value":1182,"toc":1219},[1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217],[12,1184,325],{},[12,1186,328],{},[12,1188,331],{},[12,1190,334],{},[12,1192,337],{},[12,1194,340],{},[12,1196,343],{},[12,1198,346],{},[12,1200,349],{},[12,1202,352],{},[12,1204,355],{},[12,1206,340],{},[12,1208,360],{},[12,1210,363],{},[12,1212,366],{},[12,1214,340],{},[12,1216,371],{},[12,1218,374],{},{"title":38,"searchDepth":39,"depth":39,"links":1220},[],[],{},[],{"title":320,"description":325},[388,389],{"id":497,"title":498,"animated":7,"body":1227,"client":41,"cover":819,"css_code":41,"description":38,"extension":42,"html_code":41,"images":1432,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1433,"navigation":44,"order":41,"path":822,"photos":1434,"published_at":824,"reading_time":41,"related":41,"role":41,"seo":1435,"slug":826,"source_hash":827,"status":41,"stem":828,"summary":829,"tags":1436,"tech_stack":41,"translation_of":826,"type":390,"url":41,"video_url":41,"__hash__":833},{"type":9,"value":1228,"toc":1418},[1229,1231,1235,1237,1244,1249,1251,1256,1258,1266,1268,1270,1274,1276,1284,1288,1290,1296,1304,1306,1310,1312,1314,1318,1320,1322,1324,1326,1330,1334,1336,1340,1342,1344,1346,1350,1352,1354,1356,1362,1366,1368,1372,1374,1378,1380,1384,1386,1388,1392,1394,1398,1400,1402,1406,1408,1410,1412,1416],[502,1230,505],{"id":504},[12,1232,508,1233],{},[510,1234,512],{},[12,1236,515],{},[12,1238,518,1239,527],{},[281,1240,1242],{"href":521,"rel":1241},[433],[524,1243,526],{},[12,1245,530,1246,536],{},[281,1247,535],{"href":533,"rel":1248},[433],[502,1250,540],{"id":539},[12,1252,1253,548],{},[281,1254,547],{"href":545,"rel":1255},[433],[12,1257,551],{},[72,1259,1260,1262,1264],{},[75,1261,556],{},[75,1263,559],{},[75,1265,562],{},[12,1267,565],{},[502,1269,569],{"id":568},[12,1271,572,1272,576],{},[510,1273,575],{},[12,1275,579],{},[108,1277,1278],{"className":582,"code":583,"language":584,"meta":38,"style":38},[114,1279,1280],{"__ignoreMap":38},[117,1281,1282],{"class":119,"line":120},[117,1283,583],{},[20,1285,1286],{},[12,1287,595],{},[12,1289,598],{},[12,1291,601,1292,605,1294,609],{},[510,1293,604],{},[510,1295,608],{},[108,1297,1298],{"className":582,"code":612,"language":584,"meta":38,"style":38},[114,1299,1300],{"__ignoreMap":38},[117,1301,1302],{"class":119,"line":120},[117,1303,612],{},[12,1305,621],{},[12,1307,624,1308,628],{},[510,1309,627],{},[12,1311,631],{},[502,1313,635],{"id":634},[12,1315,638,1316],{},[510,1317,641],{},[12,1319,644],{},[12,1321,647],{},[12,1323,650],{},[12,1325,653],{},[12,1327,656,1328],{},[510,1329,659],{},[12,1331,662,1332],{},[510,1333,665],{},[502,1335,669],{"id":668},[12,1337,672,1338],{},[510,1339,675],{},[12,1341,678],{},[12,1343,681],{},[12,1345,684],{},[12,1347,687,1348],{},[510,1349,690],{},[502,1351,694],{"id":693},[12,1353,697],{},[12,1355,700],{},[12,1357,703,1358,707,1360,711],{},[510,1359,706],{},[510,1361,710],{},[12,1363,714,1364],{},[510,1365,717],{},[502,1367,721],{"id":720},[12,1369,724,1370,628],{},[510,1371,727],{},[12,1373,730],{},[12,1375,733,1376],{},[510,1377,736],{},[12,1379,739],{},[20,1381,1382],{},[12,1383,744],{},[12,1385,747],{},[12,1387,750],{},[12,1389,753,1390,757],{},[510,1391,756],{},[502,1393,761],{"id":760},[12,1395,764,1396,768],{},[510,1397,767],{},[502,1399,772],{"id":771},[774,1401,777],{"id":776},[12,1403,780,1404,784],{},[510,1405,783],{},[12,1407,787],{},[774,1409,791],{"id":790},[12,1411,794],{},[12,1413,797,1414,801],{},[510,1415,800],{},[290,1417,804],{},{"title":38,"searchDepth":39,"depth":39,"links":1419},[1420,1421,1422,1423,1424,1425,1426,1427,1428],{"id":504,"depth":39,"text":505},{"id":539,"depth":39,"text":540},{"id":568,"depth":39,"text":569},{"id":634,"depth":39,"text":635},{"id":668,"depth":39,"text":669},{"id":693,"depth":39,"text":694},{"id":720,"depth":39,"text":721},{"id":760,"depth":39,"text":761},{"id":771,"depth":39,"text":772,"children":1429},[1430,1431],{"id":776,"depth":143,"text":777},{"id":790,"depth":143,"text":791},[],{"readingTime":260},[],{"title":498,"description":38},[831,832],{"id":866,"title":867,"animated":7,"body":1438,"client":41,"cover":911,"css_code":41,"description":912,"extension":42,"html_code":41,"images":1468,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1469,"navigation":44,"order":41,"path":915,"photos":1470,"published_at":917,"reading_time":41,"related":41,"role":41,"seo":1471,"slug":919,"source_hash":920,"status":41,"stem":921,"summary":922,"tags":1472,"tech_stack":41,"translation_of":919,"type":390,"url":41,"video_url":41,"__hash__":926},{"type":9,"value":1439,"toc":1466},[1440,1444,1446,1448,1454,1458,1460,1462],[12,1441,872,1442,628],{},[524,1443,875],{},[12,1445,878],{},[12,1447,881],{},[12,1449,884,1450,888,1452,628],{},[524,1451,887],{},[510,1453,891],{},[12,1455,894,1456,897],{},[524,1457,887],{},[12,1459,900],{},[12,1461,903],{},[20,1463,1464],{},[12,1465,908],{},{"title":38,"searchDepth":39,"depth":39,"links":1467},[],[],{"readingTime":260},[],{"title":867,"description":912},[924,925],{"id":928,"title":929,"animated":7,"body":1474,"client":41,"cover":1043,"css_code":41,"description":38,"extension":42,"html_code":41,"images":1549,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1550,"navigation":44,"order":41,"path":1046,"photos":1551,"published_at":1048,"reading_time":41,"related":41,"role":41,"seo":1552,"slug":1050,"source_hash":1051,"status":41,"stem":1052,"summary":1053,"tags":1553,"tech_stack":41,"translation_of":1050,"type":390,"url":41,"video_url":41,"__hash__":1055},{"type":9,"value":1475,"toc":1547},[1476,1480,1482,1484,1488,1490,1492,1506,1508,1510,1512,1514,1516,1520,1524,1532,1537],[20,1477,1478],{},[12,1479,936],{},[12,1481,939],{},[12,1483,942],{},[12,1485,1486,947],{},[524,1487,929],{},[12,1489,950],{},[12,1491,953],{},[12,1493,956,1494,960,1496,964,1498,964,1500,964,1502,974,1504,978],{},[114,1495,959],{},[524,1497,963],{},[524,1499,967],{},[524,1501,970],{},[524,1503,973],{},[524,1505,977],{},[12,1507,981],{},[12,1509,984],{},[12,1511,987],{},[12,1513,990],{},[12,1515,993],{},[12,1517,996,1518,999],{},[524,1519,929],{},[20,1521,1522],{},[12,1523,1004],{},[12,1525,1007,1526,1011,1528,1015,1530,1019],{},[510,1527,1010],{},[510,1529,1014],{},[510,1531,1018],{},[12,1533,1022,1534],{},[281,1535,1025],{"href":1025,"rel":1536},[433],[12,1538,1029,1539,1036,1544],{},[281,1540,1542],{"href":1032,"rel":1541},[433],[524,1543,929],{},[281,1545,1039],{"href":1039,"rel":1546},[433],{"title":38,"searchDepth":39,"depth":39,"links":1548},[],[],{},[],{"title":929,"description":38},[],{"id":1133,"title":1134,"animated":7,"body":1555,"client":41,"cover":41,"css_code":41,"description":38,"extension":42,"html_code":41,"images":1577,"is_announcement":7,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1578,"navigation":44,"order":41,"path":1165,"photos":1579,"published_at":1167,"reading_time":41,"related":41,"role":41,"seo":1580,"slug":1169,"source_hash":1170,"status":41,"stem":1171,"summary":1172,"tags":1581,"tech_stack":41,"translation_of":1169,"type":390,"url":41,"video_url":1177,"__hash__":1178},{"type":9,"value":1556,"toc":1575},[1557,1561,1563,1565,1567,1569,1571,1573],[20,1558,1559],{},[12,1560,1141],{},[12,1562,1144],{},[12,1564,1147],{},[12,1566,1150],{},[12,1568,1147],{},[12,1570,1150],{},[12,1572,1157],{},[12,1574,1160],{},{"title":38,"searchDepth":39,"depth":39,"links":1576},[],[],{},[],{"title":1134,"description":38},[1174,1175,1176],{"id":59,"title":60,"animated":7,"body":1583,"client":41,"cover":295,"css_code":41,"description":38,"extension":42,"html_code":41,"images":1740,"is_announcement":44,"is_pinned":7,"is_published":44,"key_points":41,"lang":45,"meta":1741,"navigation":44,"order":41,"path":302,"photos":1743,"published_at":304,"reading_time":41,"related":41,"role":41,"seo":1744,"slug":306,"source_hash":307,"status":308,"stem":309,"summary":310,"tags":1745,"tech_stack":41,"translation_of":306,"type":315,"url":316,"video_url":41,"__hash__":317},{"type":9,"value":1584,"toc":1738},[1585,1589,1591,1617,1725,1727,1729,1736],[20,1586,1587],{},[12,1588,67],{},[12,1590,70],{},[72,1592,1593,1599,1605,1611],{},[75,1594,77,1595],{},[72,1596,1597],{},[75,1598,82],{},[75,1600,85,1601],{},[72,1602,1603],{},[75,1604,90],{},[75,1606,93,1607],{},[72,1608,1609],{},[75,1610,98],{},[75,1612,101,1613],{},[72,1614,1615],{},[75,1616,106],{},[108,1618,1619],{"className":110,"code":111,"language":112,"meta":38,"style":38},[114,1620,1621,1625,1635,1639,1657,1677,1697,1717,1721],{"__ignoreMap":38},[117,1622,1623],{"class":119,"line":120},[117,1624,124],{"class":123},[117,1626,1627,1629,1631,1633],{"class":119,"line":39},[117,1628,130],{"class":129},[117,1630,134],{"class":133},[117,1632,137],{"class":133},[117,1634,140],{"class":133},[117,1636,1637],{"class":119,"line":143},[117,1638,146],{"emptyLinePlaceholder":44},[117,1640,1641,1643,1645,1647,1649,1651,1653,1655],{"class":119,"line":149},[117,1642,152],{"class":129},[117,1644,155],{"class":133},[117,1646,158],{"class":133},[117,1648,161],{"class":133},[117,1650,164],{"class":133},[117,1652,167],{"class":133},[117,1654,170],{"class":133},[117,1656,173],{"class":133},[117,1658,1659,1661,1663,1665,1667,1669,1671,1673,1675],{"class":119,"line":176},[117,1660,152],{"class":129},[117,1662,181],{"class":133},[117,1664,184],{"class":133},[117,1666,187],{"class":133},[117,1668,190],{"class":133},[117,1670,193],{"class":133},[117,1672,197],{"class":196},[117,1674,200],{"class":133},[117,1676,203],{"class":196},[117,1678,1679,1681,1683,1685,1687,1689,1691,1693,1695],{"class":119,"line":206},[117,1680,152],{"class":129},[117,1682,211],{"class":133},[117,1684,214],{"class":133},[117,1686,217],{"class":133},[117,1688,220],{"class":133},[117,1690,223],{"class":196},[117,1692,226],{"class":133},[117,1694,229],{"class":133},[117,1696,203],{"class":196},[117,1698,1699,1701,1703,1705,1707,1709,1711,1713,1715],{"class":119,"line":234},[117,1700,152],{"class":129},[117,1702,181],{"class":133},[117,1704,241],{"class":133},[117,1706,244],{"class":133},[117,1708,247],{"class":133},[117,1710,250],{"class":133},[117,1712,247],{"class":133},[117,1714,255],{"class":133},[117,1716,173],{"class":133},[117,1718,1719],{"class":119,"line":260},[117,1720,146],{"emptyLinePlaceholder":44},[117,1722,1723],{"class":119,"line":265},[117,1724,268],{"class":123},[12,1726,271],{},[12,1728,274],{},[20,1730,1731],{},[12,1732,279,1733],{},[281,1734,288],{"href":283,"target":284,"rel":1735},[286,287],[290,1737,292],{},{"title":38,"searchDepth":39,"depth":39,"links":1739},[],[],{"techStack":1742},[299,300,301],[],{"title":60,"description":38},[312,313,314],{"generatedAt":1747,"author":1748,"articles":1777,"products":1802,"projects":1817,"pages":1818,"cssarts":1822},"2026-07-11T15:24:04.380Z",{"name":1749,"handle":1750,"location":1751,"status":450,"statusText":1752,"quote":1753,"bio":1754,"featuredLink":1758,"links":1759,"site":1774},"徐可可","ivanhsu","Taipei, Taiwan","踊る暇があったら発明して","寫 Code 算是文字工作者嗎？🤔",[1755,1756,1757],"用剛剛好的 Tech Stack 開發實用的生活小物 SaaS。👨🏻‍💻","```npm i inspiration && npm run dev```","看到好吃的 Reels？分享給我，幫你摘要店家清單 👇🏻","https://reelly.life/u/ivanhsu.co/tenjin-shinya-shokudou",[1760,1763,1765,1768,1771],{"type":1761,"url":1762},"email","ivanhsu.ship@gmail.com",{"type":1764,"url":431},"website",{"type":1766,"url":1767},"github","https://github.com/ivan19940106",{"type":1769,"url":1770},"twitter","https://twitter.com/ivanhsuu",{"type":1772,"url":1773},"instagram","https://www.instagram.com/ivanhsu.co",{"name":1749,"url":1775,"description":1776},"https://ivanhsu.co","千里の道も一歩から。",[1778,1783,1788,1793,1797],{"title":1779,"slug":919,"publishedAt":917,"tags":1780,"excerpt":1781,"keyPoints":1782,"cover":911},"東京散步 ｜ 両国篇",[924,925],"我彷彿看見，北齋畫了一輩子，終於在年老時遇見了普魯士藍，得以在畫布上自由揮灑江戶的海與天空的狂喜。",[],{"title":1784,"slug":383,"publishedAt":381,"tags":1785,"excerpt":1786,"keyPoints":1787},"2025 年的碎片",[388,389],"時間有美化回憶的能力，時間為苦澀的回憶加上濾鏡，為開心的回憶按下快門。",[],{"title":1789,"slug":1050,"publishedAt":1048,"tags":1790,"excerpt":1791,"keyPoints":1792,"cover":1043},"孩子們的南陽街與大人們的補習班",[],"升上大學以後，就是個大人了。自由彷彿唾手可得，那會是什麼樣的感覺呢?",[],{"title":1794,"slug":1169,"publishedAt":1167,"tags":1795,"excerpt":1172,"keyPoints":1796,"videoUrl":1177},"遇見",[1174,1175,1176],[],{"title":1798,"slug":826,"publishedAt":824,"tags":1799,"excerpt":1800,"keyPoints":1801,"cover":819},"《 The Effective Engineer》作者 Edmond Lau 導讀，增加 impact！！ 矽谷工程師都在做的事。",[831,832],"每天預留 1 小時的工時，來實行自己的 20% Time。",[],[1803,1807,1812],{"title":1804,"slug":486,"excerpt":1805,"tags":1806,"url":494,"status":308},"10分鐘內編寫自己的 即時轉調 和弦譜！","使用 ChordPro 擴展語法，以純文字編寫吉他和弦譜，即時修改、一鍵分享、自動轉調。",[312,491,492,493],{"title":1808,"slug":448,"excerpt":1809,"tags":1810,"url":431,"status":308},"Reelly 幫你摘要 IG 美食 Reels！","🍜 看到好吃的 Reels？分享給我，幫你摘要店家清單🧾",[312,454,1811],"Reels",{"title":1813,"slug":306,"excerpt":1814,"tags":1815,"url":316,"status":308},"Threadspage 把你的創作，變成 真正屬於你的知識主場。","你已經在 YouTube、IG、Threads 花了大把時間創作，心血卻鎖在別人的平台上。Threadspage 幫你把內容一鍵搬到自己的網域、自動生成多語言，還變成一個會回答訪客問題的 AI 分身。",[312,1816,314],"YouTube-to-markdown",[],[1819],{"title":1820,"slug":51,"excerpt":1821},"關於我","用剛剛好的 Tech Stack 開發實用的生活小物 SaaS。",[1823,1825],{"title":1824,"slug":1124},"珍珠奶茶手搖杯",{"title":1826,"slug":1071},"口罩圖鑑",1783783500093]