<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>~iany/ Journals</title><link>https://blog.iany.me/journal/</link><description>Recent content in Journals «~iany/»</description><language>en-US</language><managingEditor>me@iany.me (Ian Yang)</managingEditor><webMaster>me@iany.me (Ian Yang)</webMaster><copyright>CC-BY-SA 4.0</copyright><lastBuildDate>Mon, 30 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.iany.me/journal/index.xml" rel="self" type="application/rss+xml"/><item><title>What I Touched This Week 2026-03-30</title><link>https://blog.iany.me/journal/2026/03/what-i-touched-this-week-2026-03-30/</link><pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2026/03/what-i-touched-this-week-2026-03-30/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="convincing-vs-persuading-in-technical-work"&gt;Convincing vs Persuading in Technical Work&lt;/h2&gt;
&lt;p&gt;This week sharpened a useful distinction: being correct is only the starting point, while moving a system or a team requires persuasion tuned to real context. That frame maps directly to architecture work, migration plans, and cross-team decisions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.alaindichiappari.dev/p/convincing-is-not-persuading"&gt;Convincing Is Not Persuading&lt;/a&gt; highlights that proof and benchmarks convince, but adoption depends on trust, timing, and incentives.&lt;/li&gt;
&lt;li&gt;The practical takeaway is to pair correctness with audience-aware framing: what this change protects, what risk it removes, and what people can safely do next.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scale-first-ai-thinking-and-mental-models"&gt;Scale-First AI Thinking and Mental Models&lt;/h2&gt;
&lt;p&gt;The Readwise set this week converged on a coherent AI posture: favor general methods that scale with compute, then use explicit mental models to reason about systems and constraints.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cs.utexas.edu/~eunsol/courses/data/bitter_lesson.pdf"&gt;The Bitter Lesson&lt;/a&gt; reinforces a long-run strategy: approaches that scale with computation and learning tend to dominate handcrafted knowledge-heavy systems.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://muratbuffalo.blogspot.com/2026/03/tla-mental-models.html"&gt;TLA+ Mental Models&lt;/a&gt; contributed a systems lens (state, logs, replication) that is useful for evaluating reliability claims, not just feature velocity.&lt;/li&gt;
&lt;li&gt;This combination was a good backbone for AI reflection this week: keep abstractions general, but reason rigorously about behavior under change.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="boring-tech-better-practices-and-tooling-leverage"&gt;Boring Tech, Better Practices, and Tooling Leverage&lt;/h2&gt;
&lt;p&gt;A recurring theme across highlights and bookmarks was pragmatic leverage: pick stable tools, then innovate in process, automation, and integration points.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://buttondown.com/hillelwayne/archive/choose-boring-technology-and-innovative-practices/"&gt;Choose Boring Technology and Innovative Practices&lt;/a&gt; captures the principle well: conservatism in stack choice enables boldness in operational practice.&lt;/li&gt;
&lt;li&gt;Recent bookmarks aligned with this approach, including &lt;a href="https://github.com/doitian/RustTraining"&gt;RustTraining&lt;/a&gt;, &lt;a href="https://github.com/saber-notes/saber"&gt;Saber&lt;/a&gt;, and monitor-switch automation via &lt;a href="https://github.com/doitian/dotfiles-public/blob/master/src/monctl.js"&gt;monctl.js&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Weekly hygiene (bookmark triage, highlights cleanup, sync routines) made this strategy actionable rather than theoretical.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Alain&amp;#43;Di&amp;#43;Chiappari&amp;#43;-&amp;#43;Convincing&amp;#43;Is&amp;#43;Not&amp;#43;Persuading&amp;#43;%28Highlights%29"&gt;Alain Di Chiappari - Convincing Is Not Persuading (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Rich&amp;#43;Sutton&amp;#43;-&amp;#43;The&amp;#43;Bitter&amp;#43;Lesson&amp;#43;%28Highlights%29"&gt;Rich Sutton - The Bitter Lesson (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Computer&amp;#43;Things&amp;#43;-&amp;#43;Choose&amp;#43;Boring&amp;#43;Technology&amp;#43;and&amp;#43;Innovative&amp;#43;Practices&amp;#43;%28Highlights%29"&gt;Computer Things - Choose Boring Technology and Innovative Practices (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Murat&amp;#43;Demirbas&amp;#43;-&amp;#43;TLA%2B&amp;#43;Mental&amp;#43;Models&amp;#43;%28Highlights%29"&gt;Murat Demirbas - TLA+ Mental Models (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2026-03-21</title><link>https://blog.iany.me/journal/2026/03/what-i-touched-this-week-2026-03-21/</link><pubDate>Sat, 21 Mar 2026 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2026/03/what-i-touched-this-week-2026-03-21/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="software-maintenance-and-the-specification-problem"&gt;Software Maintenance and the Specification Problem&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://nearzero.software/p/warranty-void-if-regenerated"&gt;Scott Werner&amp;rsquo;s &amp;ldquo;Warranty Void if Regenerated&amp;rdquo;&lt;/a&gt; explores why software needs continuous tending, not just initial development. The core insight: specifications describe static relationships, but real-world inputs are alive—feeds from other systems that are constantly being updated, recalibrated, and regenerated.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The maintenance paradox&lt;/strong&gt;: Paying for maintenance means admitting vulnerability, while paying for repair means responding to an emergency. Humans find emergencies more motivating than vulnerabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domain knowledge is irreplaceable&lt;/strong&gt;: People who understood the domain and could diagnose specification problems were the most valuable. This knowledge is often embodied, contextual, and inarticulable—like knowing the clay underneath a greenhouse or how prevailing winds affect crop rows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Software Choreographer concept&lt;/strong&gt;: A role that maps your entire tool ecosystem, specifies interfaces between them, and builds a conformance layer so that when any tool regenerates, interfaces are verified before the new version goes live. Like shipping containers: the container was cheap; organizing the logistics was where all the value was.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Physical controls matter&lt;/strong&gt;: Always offer a physical control—a button, switch, or lever. Something the client can touch. This builds trust and allows graceful degradation when systems fail.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ai-agents-and-the-harness"&gt;AI Agents and the Harness&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://stratechery.com/2026/agents-over-bubbles/"&gt;Ben Thompson&amp;rsquo;s &amp;ldquo;Agents Over Bubbles&amp;rdquo;&lt;/a&gt; argues that the critical component of making agentic workloads work is the &amp;ldquo;harness&amp;rdquo;—the software that actually controls the model, not the model itself.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Abstraction layer&lt;/strong&gt;: Claude Code and OpenAI&amp;rsquo;s Codex abstract the user away from the model. You give instructions to an agent, which directs the model; the agent can also use deterministic tools to verify results.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Models lack goals&lt;/strong&gt;: Large language models are intelligent, but they do not have goals or values or drive. The harness provides the structure and verification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The opportunity&lt;/strong&gt;: How many apps or services haven&amp;rsquo;t been built, not because one person can&amp;rsquo;t imagine them, but because they haven&amp;rsquo;t had the resources, team, or coordination capabilities to ship them? Agents could change this dynamic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="simplifying-life-through-lifestyle-design"&gt;Simplifying Life Through Lifestyle Design&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://tim.blog/2026/03/11/how-to-simplify-your-life-2-transcript/"&gt;Tim Ferriss Show episode on simplifying life&lt;/a&gt; brought together insights from Maria Popova, Morgan Housel, Cal Newport, Craig Mod, and Debbie Millman on what it means to simplify.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Read history, not forecasts&lt;/strong&gt;: A good heuristic for your relationship with information is to read more history and fewer forecasts. As Kelly Hayes says, &amp;ldquo;When you haven&amp;rsquo;t engaged with history, everything feels unprecedented.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lifestyle design over triage&lt;/strong&gt;: Cal Newport argues that triage rules don&amp;rsquo;t work—too many things satisfy &amp;ldquo;good enough&amp;rdquo; criteria. Instead, think about lifestyle design: know what conditions of your day-to-day existence are best for you, and design a lifestyle that matches that.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Courage over confidence&lt;/strong&gt;: Debbie Millman distinguishes courage from confidence. Courage means taking risks and steps toward what you want despite how you feel. Confidence comes through repeated success. You don&amp;rsquo;t wait for confidence to arrive; you act from courage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Freedom over control&lt;/strong&gt;: What Millman wanted wasn&amp;rsquo;t more control, but more freedom. That freedom has allowed her to build a very different kind of life.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplicity as coherence&lt;/strong&gt;: Simplicity isn&amp;rsquo;t only about minimalism. It&amp;rsquo;s also about coherence—things fitting together in a way that makes sense.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nearzero.software/p/warranty-void-if-regenerated"&gt;Warranty Void if Regenerated&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stratechery.com/2026/agents-over-bubbles/"&gt;Agents Over Bubbles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tim.blog/2026/03/11/how-to-simplify-your-life-2-transcript/"&gt;How to Simplify Your Life in 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://collabfund.com/blog/engaging-with-history/"&gt;Engaging With History&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.creativeboom.com/inspiration/debbie-millman/"&gt;Debbie Millman on Courage Over Confidence&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Scott&amp;#43;Werner&amp;#43;-&amp;#43;Warranty&amp;#43;Void&amp;#43;if&amp;#43;Regenerated&amp;#43;%28Highlights%29"&gt;Scott Werner - Warranty Void if Regenerated (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Ben&amp;#43;Thompson&amp;#43;-&amp;#43;Agents&amp;#43;Over&amp;#43;Bubbles&amp;#43;%28Highlights%29"&gt;Ben Thompson - Agents Over Bubbles (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Tim&amp;#43;Ferriss&amp;#43;-&amp;#43;The&amp;#43;Tim&amp;#43;Ferriss&amp;#43;Show&amp;#43;857&amp;#43;How&amp;#43;to&amp;#43;Simplify&amp;#43;Your&amp;#43;Life&amp;#43;in&amp;#43;2026&amp;#43;%28Highlights%29"&gt;Tim Ferriss - The Tim Ferriss Show 857 How to Simplify Your Life in 2026 (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Podcasts/The&amp;#43;Tim&amp;#43;Ferriss&amp;#43;Show&amp;#43;-&amp;#43;857&amp;#43;How&amp;#43;to&amp;#43;Simplify&amp;#43;Your&amp;#43;Life&amp;#43;in&amp;#43;2026&amp;#43;%E2%80%94&amp;#43;New&amp;#43;Tips&amp;#43;From&amp;#43;Maria&amp;#43;Popova%2C&amp;#43;Morgan&amp;#43;Housel%2C&amp;#43;Cal&amp;#43;Newport%2C&amp;#43;Craig&amp;#43;Mod%2C&amp;#43;and&amp;#43;Debbie&amp;#43;Millman&amp;#43;%28Highlights%29"&gt;The Tim Ferriss Show - 857 How to Simplify Your Life in 2026 — New Tips From Maria Popova, Morgan Housel, Cal Newport, Craig Mod, and Debbie Millman (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Morgan&amp;#43;Housel&amp;#43;-&amp;#43;Engaging&amp;#43;With&amp;#43;History&amp;#43;%28Highlights%29"&gt;Morgan Housel - Engaging With History (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Katy&amp;#43;Cowan&amp;#43;-&amp;#43;Debbie&amp;#43;Millman&amp;#43;on&amp;#43;the&amp;#43;Power&amp;#43;of&amp;#43;Courage&amp;#43;Over&amp;#43;Confidence%2C&amp;#43;Embracing&amp;#43;Criticism&amp;#43;and&amp;#43;Overcoming&amp;#43;Fear&amp;#43;%28Highlights%29"&gt;Katy Cowan - Debbie Millman on the Power of Courage Over Confidence, Embracing Criticism and Overcoming Fear (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2026-02-07</title><link>https://blog.iany.me/journal/2026/02/what-i-touched-this-week-2026-02-07/</link><pubDate>Sat, 07 Feb 2026 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2026/02/what-i-touched-this-week-2026-02-07/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="haskell-typeclassopedia-io-and-documentation"&gt;Haskell: Typeclassopedia, IO, and Documentation&lt;/h2&gt;
&lt;p&gt;This week was heavily Haskell-focused. I worked through the &lt;a href="https://wiki.haskell.org/Typeclassopedia"&gt;Typeclassopedia&lt;/a&gt;, &lt;a href="https://learnyouahaskell.github.io/input-and-output.html"&gt;Learn You a Haskell Chapter 9 (Input and Output)&lt;/a&gt;, and &lt;a href="https://book.realworldhaskell.org/read/io.html"&gt;Real World Haskell Chapter 7 (IO)&lt;/a&gt;, plus the &lt;a href="https://haskell-haddock.readthedocs.io/latest/markup.html"&gt;Haddock markup guide&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monad vs Applicative&lt;/strong&gt;: The structure of an Applicative computation is fixed; a Monad’s structure can depend on intermediate results. That’s why &lt;code&gt;(&amp;gt;&amp;gt;=)&lt;/code&gt; (bind) is strictly more powerful than &lt;code&gt;(&amp;lt;*&amp;gt;)&lt;/code&gt;. Prefer Applicative when you don’t need that—it can allow parallelization where monadic code cannot.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reader, Writer, State&lt;/strong&gt;: The &lt;code&gt;(-&amp;gt;) e&lt;/code&gt; reader monad gives a read-only environment; &lt;code&gt;Writer&lt;/code&gt; accumulates a monoidal log; &lt;code&gt;State s a&lt;/code&gt; is &lt;code&gt;s -&amp;gt; (a,s)&lt;/code&gt; for stateful computations. All live in &lt;code&gt;Control.Monad&lt;/code&gt; and the mtl library.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IO in practice&lt;/strong&gt;: &lt;code&gt;getContents&lt;/code&gt; does lazy I/O; &lt;code&gt;interact&lt;/code&gt; captures the pattern of “read, transform, output.” Use &lt;code&gt;withFile&lt;/code&gt; for handle-based file I/O. Prefer &lt;code&gt;Maybe&lt;/code&gt;/&lt;code&gt;Either&lt;/code&gt; in pure code and reserve exceptions for the IO part; catch with &lt;code&gt;System.IO.Error.catch&lt;/code&gt; and predicates like &lt;code&gt;isDoesNotExistError&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Haddock&lt;/strong&gt;: Use &lt;code&gt;-- |&lt;/code&gt; before or &lt;code&gt;-- ^&lt;/code&gt; after declarations; document arguments inline. Headings with &lt;code&gt;-- *&lt;/code&gt;, &lt;code&gt;-- **&lt;/code&gt;; link identifiers with single quotes/backticks and modules with double quotes; code blocks with &lt;code&gt;@...@&lt;/code&gt; or bird tracks &lt;code&gt;&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="use-bun-for-shell-scripts"&gt;Use Bun for Shell Scripts&lt;/h2&gt;
&lt;p&gt;I published a post on &lt;a href="https://blog.iany.me/2026/02/use-bun-for-shell-scripts/"&gt;using Bun for cross-platform shell scripts&lt;/a&gt; on Windows. Bun avoids shebang and WSL/Git-bash setup while giving a single runtime for ad-hoc commands and full scripts.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Single binary&lt;/strong&gt;: &lt;code&gt;bun build ./script.ts --compile --outfile script&lt;/code&gt; produces a native executable, so no shebang or interpreter is needed on Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bun Shell&lt;/strong&gt;: &lt;code&gt;Bun.$&lt;/code&gt; builds shell commands from template literals (similar to zx). On Windows, Bun ships with MSYS for a consistent bash environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extras&lt;/strong&gt;: &lt;code&gt;Bun.secrets&lt;/code&gt; for the OS keystore, built-in globs, YAML, ANSI. Fast startup (~5ms vs Node’s ~25ms for simple scripts) helps for small, frequent scripts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2026/02/use-bun-for-shell-scripts/"&gt;♯ Use Bun for Shell Scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/d/Development&amp;#43;Environment/JavaScript&amp;#43;Shell&amp;#43;Scripting"&gt;JavaScript Shell Scripting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-i-estimate-work"&gt;How I Estimate Work&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.seangoedecke.com/how-i-estimate-work/"&gt;Sean Goedecke’s post&lt;/a&gt; reframes estimation as a political and constraint-satisfaction problem rather than a pure “how long will this take?” question.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Context first&lt;/strong&gt;: Gather political context before looking at code—pressure on the project, what kind of estimate the chain wants, whether this is a casual ask or a must-have.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inversion&lt;/strong&gt;: The job isn’t “break down work to get a duration.” It’s “find the set of software approaches that fit the timeline they already have in mind.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If you don’t estimate&lt;/strong&gt;: Someone less technical will estimate for you. Engaging with the process lets you steer which approaches are in scope.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Readwise&amp;#43;Syncs/Readwise&amp;#43;Sync&amp;#43;2026-02-07"&gt;Readwise Sync 2026-02-07&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Brent&amp;#43;Yorgey&amp;#43;-&amp;#43;Typeclassopedia&amp;#43;%28Highlights%29"&gt;Brent Yorgey - Typeclassopedia (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Miran&amp;#43;Lipova%C4%8Da&amp;#43;-&amp;#43;Learn&amp;#43;You&amp;#43;a&amp;#43;Haskell&amp;#43;for&amp;#43;Great&amp;#43;Good&amp;#43;Chapter&amp;#43;9.&amp;#43;Input&amp;#43;and&amp;#43;Output&amp;#43;%28Highlights%29"&gt;Miran Lipovača - Learn You a Haskell for Great Good Chapter 9. Input and Output (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Bryan&amp;#43;O%27Sullivan&amp;#43;et&amp;#43;al.&amp;#43;-&amp;#43;Real&amp;#43;World&amp;#43;Haskell&amp;#43;Chapter&amp;#43;7.&amp;#43;IO&amp;#43;%28Highlights%29"&gt;Bryan O&amp;rsquo;Sullivan et al. - Real World Haskell Chapter 7. IO (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Haddock&amp;#43;Authors&amp;#43;-&amp;#43;Documentation&amp;#43;and&amp;#43;Markup&amp;#43;%28Highlights%29"&gt;Haddock Authors - Documentation and Markup (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Sean&amp;#43;Goedecke&amp;#43;-&amp;#43;How&amp;#43;I&amp;#43;estimate&amp;#43;work&amp;#43;%28Highlights%29"&gt;Sean Goedecke - How I estimate work (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/d/Development&amp;#43;Environment/JavaScript&amp;#43;Shell&amp;#43;Scripting"&gt;JavaScript Shell Scripting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2026-02-01</title><link>https://blog.iany.me/journal/2026/02/what-i-touched-this-week-2026-02-01/</link><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2026/02/what-i-touched-this-week-2026-02-01/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="haskell-type-classes-functors-applicatives-and-monoids"&gt;Haskell Type Classes: Functors, Applicatives, and Monoids&lt;/h2&gt;
&lt;p&gt;This week I dove deep into Haskell&amp;rsquo;s type class hierarchy, working through Learn You a Haskell and the CIS 194 course materials. The key insight is understanding how these abstractions compose to enable powerful, generic programming.- &lt;strong&gt;Functors&lt;/strong&gt; are types that can be mapped over. The &lt;code&gt;fmap&lt;/code&gt; function can be viewed as &amp;ldquo;lifting&amp;rdquo; a function: &lt;code&gt;fmap :: (a -&amp;gt; b) -&amp;gt; (f a -&amp;gt; f b)&lt;/code&gt; transforms an ordinary function into one that works inside a functor context&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;functor laws&lt;/strong&gt; ensure predictable behavior: &lt;code&gt;fmap id = id&lt;/code&gt; (identity preservation) and &lt;code&gt;fmap (f . g) = fmap f . fmap g&lt;/code&gt; (composition preservation)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Applicatives&lt;/strong&gt; extend functors by allowing wrapped functions to be applied to wrapped values using &lt;code&gt;&amp;lt;*&amp;gt;&lt;/code&gt;. Lists as applicatives represent non-deterministic computations where &lt;code&gt;[(+3),(*2)] &amp;lt;*&amp;gt; [1,2]&lt;/code&gt; produces all combinations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ZipList&lt;/strong&gt; provides an alternative applicative instance for lists using pairwise application instead of all combinations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monoids&lt;/strong&gt; provide an identity element (&lt;code&gt;mempty&lt;/code&gt;) and an associative binary operation (&lt;code&gt;mappend&lt;/code&gt;). The &lt;code&gt;foldMap&lt;/code&gt; function reveals why monoids matter: the identity handles empty structures and the associative operation combines values reliably&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;foldl'&lt;/code&gt; from &lt;code&gt;Data.List&lt;/code&gt; instead of &lt;code&gt;foldl&lt;/code&gt; to avoid building huge thunks; &lt;code&gt;foldr&lt;/code&gt; is better when the folding function can short-circuit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learnyouahaskell.github.io/functors-applicative-functors-and-monoids.html"&gt;Learn You a Haskell: Functors, Applicative Functors and Monoids&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.seas.upenn.edu/~cis1940/spring13/lectures/04-higher-order.html"&gt;CIS 194: Higher-order programming and type inference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.haskell.org/Foldr_Foldl_Foldl%27"&gt;Haskell Wiki: Foldr Foldl Foldl&amp;rsquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="using-tmux-for-powershell-in-windows-terminal"&gt;Using tmux for PowerShell in Windows Terminal&lt;/h2&gt;
&lt;p&gt;I published a blog post on getting tmux session persistence in Windows Terminal while keeping PowerShell as the default shell. The solution runs tmux through WSL but configures it to spawn &lt;code&gt;pwsh.exe&lt;/code&gt; for new panes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create thin wrapper scripts (&lt;code&gt;tmux.ps1&lt;/code&gt;, &lt;code&gt;tmux.cmd&lt;/code&gt;) so &lt;code&gt;tmux&lt;/code&gt; from Windows means &lt;code&gt;wsl tmux&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A helper script &lt;code&gt;tmux-pwsh.ps1&lt;/code&gt; creates or attaches to named sessions with &lt;code&gt;pwsh.exe -nologo&lt;/code&gt; as the default command&lt;/li&gt;
&lt;li&gt;The key trick: send &lt;code&gt;set-option default-command&lt;/code&gt; via &lt;code&gt;tmux -C attach&lt;/code&gt; because running &lt;code&gt;wsl tmux set-option&lt;/code&gt; immediately after session creation has a race condition where the session isn&amp;rsquo;t ready&lt;/li&gt;
&lt;li&gt;After setup, splitting panes and creating windows in that session will all start PowerShell in the Windows environment&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="elite-performance-through-preparation"&gt;Elite Performance Through Preparation&lt;/h2&gt;
&lt;p&gt;An insightful &lt;a href="https://x.com/DrDeepMD/status/2015810417839227390/"&gt;thread by Sandeep Palakodeti&lt;/a&gt; on what separates elite performers from amateurs. The core message: greatness is not about taking risks but eliminating variance through preparation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When experts operate at their limit, they&amp;rsquo;re not &amp;ldquo;trying hard&amp;rdquo;—they&amp;rsquo;re executing scripts that have been debugged for decades through deliberate, high-fidelity repetition&lt;/li&gt;
&lt;li&gt;Fear is the biological response to the unknown; when you&amp;rsquo;ve accounted for every variable, fear is replaced by focus&lt;/li&gt;
&lt;li&gt;Elite performers aim &lt;em&gt;below&lt;/em&gt; the edge of their ability because that&amp;rsquo;s where consistency lives&lt;/li&gt;
&lt;li&gt;Every question gets answered upstream, every branch point gets a playbook—by the time the moment arrives, they&amp;rsquo;re executing state changes, not solving problems&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Don&amp;rsquo;t worship the risk. Worship the work that made the risk irrelevant.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/p/Programming/Haskell&amp;#43;Applicative"&gt;Haskell Applicative&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/p/Programming/Haskell&amp;#43;Pattern&amp;#43;Matching"&gt;Haskell Pattern Matching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/p/Programming/Haskell&amp;#43;High-Order&amp;#43;Function&amp;#43;Composition"&gt;Haskell High-Order Function Composition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Miran&amp;#43;Lipova%C4%8Da&amp;#43;-&amp;#43;Learn&amp;#43;You&amp;#43;a&amp;#43;Haskell&amp;#43;for&amp;#43;Great&amp;#43;Good&amp;#43;Chapter&amp;#43;11.&amp;#43;Functors%2C&amp;#43;Applicative&amp;#43;Functors&amp;#43;and&amp;#43;Monoids&amp;#43;%28Highlights%29"&gt;Miran Lipovača - Learn You a Haskell for Great Good Chapter 11. Functors, Applicative Functors and Monoids (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Miran&amp;#43;Lipova%C4%8Da&amp;#43;-&amp;#43;Learn&amp;#43;You&amp;#43;a&amp;#43;Haskell&amp;#43;for&amp;#43;Great&amp;#43;Good&amp;#43;Chapter&amp;#43;6.&amp;#43;Higher&amp;#43;Order&amp;#43;Functions&amp;#43;%28Highlights%29"&gt;Miran Lipovača - Learn You a Haskell for Great Good Chapter 6. Higher Order Functions (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Haskell&amp;#43;Authors&amp;#43;-&amp;#43;Foldl&amp;#43;%28Highlights%29"&gt;Haskell Authors - Foldl (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Tweets/Sandeep&amp;#43;Palakodeti&amp;#43;-&amp;#43;The&amp;#43;Tippy&amp;#43;Top&amp;#43;%28Highlights%29"&gt;Sandeep Palakodeti - The Tippy Top (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2026/01/use-tmux-for-powershell-in-windows-terminal/"&gt;♯ Use tmux for PowerShell in Windows Terminal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2026-01-24</title><link>https://blog.iany.me/journal/2026/01/what-i-touched-this-week-2026-01-24/</link><pubDate>Sat, 24 Jan 2026 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2026/01/what-i-touched-this-week-2026-01-24/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="erlang-state-machine-patterns-in-rust"&gt;Erlang State Machine Patterns in Rust&lt;/h2&gt;
&lt;p&gt;This week I created a presentation exploring how to implement Erlang OTP&amp;rsquo;s &lt;code&gt;gen_statem&lt;/code&gt; patterns in Rust using Tokio. The core insight is that Erlang&amp;rsquo;s behavior pattern separates the &lt;strong&gt;engine&lt;/strong&gt; (state machine framework) from the &lt;strong&gt;callback&lt;/strong&gt; (state-specific logic), following the strategy pattern.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The fundamental state transition follows: &lt;code&gt;State(S) × Event(E) → Actions(A), State(S')&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Erlang&amp;rsquo;s &amp;ldquo;everything is an event&amp;rdquo; philosophy means state entry, timeouts, and internal messages are all unified as events&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;enter event&lt;/strong&gt; triggers when entering a new state, useful for running initialization logic without duplicating code across multiple transition paths&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Postpone action&lt;/strong&gt; defers events to a later state when we can&amp;rsquo;t process them yet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeout actions&lt;/strong&gt; come in three flavors: event timeout (cleared on any event), state timeout (cleared on state change), and named timeout (manual clearing)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inserted events&lt;/strong&gt; enable preprocessing and state machine composition&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a href="https://github.com/doitian/from-statem-to-tokio"&gt;code examples&lt;/a&gt; progressively build from basic process simulation to full-featured state machines with all these capabilities.&lt;/p&gt;
&lt;h2 id="bft-consensus-protocol-comparisons"&gt;BFT Consensus Protocol Comparisons&lt;/h2&gt;
&lt;p&gt;I studied the differences between PBFT, Tendermint, HotStuff, and HotStuff-2. These are all &lt;strong&gt;safety-preferring&lt;/strong&gt; protocols where locked parties guard the safety of a &lt;em&gt;potential&lt;/em&gt; commit. The key questions each protocol answers are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What does the leader learn about system status at the start of a view?&lt;/li&gt;
&lt;li&gt;How does the leader convince other parties about system status to get votes?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Among 2t+1 locks in a status response, up to t can be malicious, up to t can be honest but not locked on the committed value, but at least one honest party must be locked on the committed value. This honest party won&amp;rsquo;t vote for conflicting proposals, thus guarding commit safety.&lt;/p&gt;
&lt;p&gt;HotStuff introduces an additional phase: &amp;ldquo;if some party locks, then ≥2t+1 parties know about this lock and hold a &lt;em&gt;key&lt;/em&gt; corresponding to it.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://decentralizedthoughts.github.io/2023-04-01-hotstuff-2/"&gt;What is the difference between PBFT, Tendermint, HotStuff, and HotStuff-2&lt;/a&gt; by Kartik Nayak and Dahlia Malkhi&lt;/li&gt;
&lt;li&gt;&lt;a href="https://decentralizedthoughts.github.io/2022-09-10-provable-broadcast/"&gt;Provable Broadcast&lt;/a&gt; by Ittai Abraham and Alexander Spiegelman&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ckb-virtual-transactions"&gt;CKB Virtual Transactions&lt;/h2&gt;
&lt;p&gt;I explored a design for implementing partial transactions in CKB through &amp;ldquo;Virtual Tx.&amp;rdquo; The approach mocks system calls so scripts access the virtual tx instead of the real current transaction.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Override syscalls in ckb-c-stdlib or ckb-std to redirect to virtual tx data&lt;/li&gt;
&lt;li&gt;Anyone can be economically incentivized to match partial txs since fees can be provided&lt;/li&gt;
&lt;li&gt;Use a special first input as the indicator that the tx is a vtx&lt;/li&gt;
&lt;li&gt;The first input&amp;rsquo;s type script witness specifies how each vtx maps to tx components (inputs, outputs, etc.)&lt;/li&gt;
&lt;li&gt;Inputs/outputs are handled exclusively, with mechanisms to tackle cell/header deps duplication&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/p/Programming/Gen&amp;#43;Statem&amp;#43;to&amp;#43;Tokio&amp;#43;-&amp;#43;Slides"&gt;Gen Statem to Tokio - Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/p/Programming/Gen&amp;#43;Statem&amp;#43;to&amp;#43;Tokio&amp;#43;Learn&amp;#43;State&amp;#43;Machine&amp;#43;Pattern&amp;#43;from&amp;#43;Erlang"&gt;Gen Statem to Tokio Learn State Machine Pattern from Erlang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/p/Programming/Erlang&amp;#43;gen_statem"&gt;Erlang gen_statem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Kartik&amp;#43;Nayak&amp;#43;et&amp;#43;al.&amp;#43;-&amp;#43;What&amp;#43;is&amp;#43;the&amp;#43;difference&amp;#43;between&amp;#43;PBFT%2C&amp;#43;Tendermint%2C&amp;#43;HotStuff%2C&amp;#43;and&amp;#43;HotStuff-2&amp;#43;%28Highlights%29"&gt;Kartik Nayak et al. - What is the difference between PBFT, Tendermint, HotStuff, and HotStuff-2 (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Ittai&amp;#43;Abraham&amp;#43;et&amp;#43;al.&amp;#43;-&amp;#43;Provable&amp;#43;Broadcast&amp;#43;%28Highlights%29"&gt;Ittai Abraham et al. - Provable Broadcast (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/c/CKB/CKB&amp;#43;Virtual&amp;#43;Tx"&gt;CKB Virtual Tx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2026-01-17</title><link>https://blog.iany.me/journal/2026/01/what-i-touched-this-week-2026-01-17/</link><pubDate>Sat, 17 Jan 2026 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2026/01/what-i-touched-this-week-2026-01-17/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="temporal-patterns-and-bitemporality"&gt;Temporal Patterns and Bitemporality&lt;/h2&gt;
&lt;p&gt;This week I explored the concept of bitemporality and temporal patterns in data modeling. The key insight is that we need to track two dimensions of time: &lt;strong&gt;actual time&lt;/strong&gt; (when something happened) and &lt;strong&gt;record time&lt;/strong&gt; (when we learned about it). This becomes crucial when we need to answer questions like &amp;ldquo;what did we think the state was two months ago?&amp;rdquo; or &amp;ldquo;what did we know six months ago about something that happened earlier?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tigerbeetle.com/blog/2026-01-14-bitemporality/"&gt;One for the Treble, Two for the Time&lt;/a&gt; by Lewis Daly&lt;/li&gt;
&lt;li&gt;&lt;a href="https://martinfowler.com/eaaDev/timeNarrative.html"&gt;Temporal Patterns&lt;/a&gt; by Martin Fowler&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="go-performance-optimization-techniques"&gt;Go Performance Optimization Techniques&lt;/h2&gt;
&lt;p&gt;I learned several advanced Go performance optimization techniques from VictoriaMetrics, a high-performance time-series database. The key strategies include using &lt;code&gt;sync.Pool&lt;/code&gt; for object reuse to reduce GC pressure, implementing channel-based object pools for more controlled resource management, and using sharding to reduce lock contention by splitting large data structures into independent shards.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;sync.Pool&lt;/code&gt; for object reuse to minimize garbage collection overhead&lt;/li&gt;
&lt;li&gt;Channel-based object pools provide more control than &lt;code&gt;sync.Pool&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Sharding large data structures reduces lock contention&lt;/li&gt;
&lt;li&gt;Localized worker pools with independent channels improve multi-core scalability&lt;/li&gt;
&lt;li&gt;Buffered channels can serve as semaphores for rate limiting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Source: &lt;a href="https://mp.weixin.qq.com/s/1svEokrz5C0FwBEA88YGqw"&gt;从入门到极致：VictoriaMetrics 教你写出最高效的 Go 代码&lt;/a&gt; by Tony Bai&lt;/p&gt;
&lt;h2 id="jdk-selection-guidelines"&gt;JDK Selection Guidelines&lt;/h2&gt;
&lt;p&gt;I reviewed best practices for choosing a Java Development Kit (JDK) version and distribution. The primary recommendation is to use &lt;strong&gt;Adoptium Eclipse Temurin 21&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="https://whichjdk.com/"&gt;Which Version of JDK Should I Use&lt;/a&gt; by Jochen Christ&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Lewis&amp;#43;Daly&amp;#43;-&amp;#43;One&amp;#43;for&amp;#43;the&amp;#43;Treble%2C&amp;#43;Two&amp;#43;for&amp;#43;the&amp;#43;Time&amp;#43;%28Highlights%29"&gt;Lewis Daly - One for the Treble, Two for the Time (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Martin&amp;#43;Fowler&amp;#43;-&amp;#43;Temporal&amp;#43;Patterns&amp;#43;%28Highlights%29"&gt;Martin Fowler - Temporal Patterns (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Tony&amp;#43;Bai&amp;#43;-&amp;#43;%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E6%9E%81%E8%87%B4%EF%BC%9AVictoriaMetrics&amp;#43;%E6%95%99%E4%BD%A0%E5%86%99%E5%87%BA%E6%9C%80%E9%AB%98%E6%95%88%E7%9A%84&amp;#43;Go&amp;#43;%E4%BB%A3%E7%A0%81&amp;#43;%28Highlights%29"&gt;Tony Bai - 从入门到极致：VictoriaMetrics 教你写出最高效的 Go 代码 (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Jochen&amp;#43;Christ&amp;#43;-&amp;#43;Which&amp;#43;Version&amp;#43;of&amp;#43;JDK&amp;#43;Should&amp;#43;I&amp;#43;Use&amp;#43;%28Highlights%29"&gt;Jochen Christ - Which Version of JDK Should I Use (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2026-01-10</title><link>https://blog.iany.me/journal/2026/01/what-i-touched-this-week-2026-01-10/</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2026/01/what-i-touched-this-week-2026-01-10/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="learning-c23-going-behind-the-curtain-of-modern-systems"&gt;Learning C23: Going Behind the Curtain of Modern Systems&lt;/h2&gt;
&lt;p&gt;This week I dove deep into &lt;a href="https://www.amazon.com/Why-Learn-Behind-Curtain-Systems-ebook/dp/B0FVKPKX6Y"&gt;Paul J. Lucas&amp;rsquo;s book on learning C23&lt;/a&gt;, which provides a comprehensive tour of the latest C standard and why understanding systems programming at this level matters. With 133 highlights, this was clearly a major focus of my learning.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modern C Features&lt;/strong&gt;: C23 introduces many modern conveniences like &lt;code&gt;bool&lt;/code&gt;, &lt;code&gt;nullptr&lt;/code&gt;, &lt;code&gt;constexpr&lt;/code&gt;, &lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;typeof&lt;/code&gt;, and compound literals. The language is evolving while maintaining its core philosophy of being &amp;ldquo;close to the machine.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;East const Convention&lt;/strong&gt;: A stylistic choice where &lt;code&gt;const&lt;/code&gt; is placed to the right (east) of the type, making pointer declarations more readable when reading from right to left. This consistency helps with complex pointer declarations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Type System Enhancements&lt;/strong&gt;: New types like &lt;code&gt;_BitInt&lt;/code&gt; for bit-precise integers, decimal floating types (&lt;code&gt;_Decimal32&lt;/code&gt;, &lt;code&gt;_Decimal64&lt;/code&gt;, &lt;code&gt;_Decimal128&lt;/code&gt;), and complex number support show C&amp;rsquo;s continued evolution for specialized use cases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Practical Systems Understanding&lt;/strong&gt;: The book emphasizes that C was designed to work directly with machine details—understanding memory layout, alignment, and how data structures map to hardware is still valuable even when working in higher-level languages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This connects to my broader interest in understanding how modern systems work under the hood, especially as I work with distributed systems and blockchain technology where performance and correctness matter deeply.&lt;/p&gt;
&lt;h2 id="time-management-and-reflective-living"&gt;Time Management and Reflective Living&lt;/h2&gt;
&lt;p&gt;Arnold Bennett&amp;rsquo;s classic &lt;a href="https://www.gutenberg.org/files/2274/2274-h/2274-h.htm"&gt;How to Live on 24 Hours a Day&lt;/a&gt; offers timeless wisdom about making the most of our daily time budget. The key insight is that we already have all the time there is—the challenge is how we use it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Inner Day&lt;/strong&gt;: Bennett suggests dedicating 7.5 hours per week (about 90 minutes per evening) to cultivating your mind. This &amp;ldquo;inner day&amp;rdquo; should begin at 6 p.m. and end at 10 a.m., separate from your workday.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Reflective Mood&lt;/strong&gt;: What&amp;rsquo;s most lacking in modern life is the reflective mood—taking time to examine conduct against principles, to think deeply rather than just consume information. The solitude of the evening commute is perfect for this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slow, Deep Reading&lt;/strong&gt;: When reading for cultivation, give at least 45 minutes to careful, fatiguing reflection on what you&amp;rsquo;re reading. Your pace will be slow, but that&amp;rsquo;s the point—the good stuff rises up to meet you in the extra time you give it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Topic Reading with Limits&lt;/strong&gt;: Choose a limited period, subject, or single author. Define the direction and scope of your efforts rather than reading aimlessly. Forget the goal; think only of the surrounding country, and you&amp;rsquo;ll find yourself in a lovely town on a hill.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This resonates with my experience that slowing down often yields better results than rushing, whether in reading, coding, or thinking through problems.&lt;/p&gt;
&lt;h2 id="formal-methods-exploring-quint-and-tla"&gt;Formal Methods: Exploring Quint and TLA+&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve been exploring formal specification languages, particularly &lt;a href="https://quint-lang.org/docs/language-basics"&gt;Quint&lt;/a&gt;, which provides a more accessible syntax for writing formal specifications compared to TLA+. This connects to my interest in distributed systems and ensuring correctness.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quint&amp;rsquo;s Design Philosophy&lt;/strong&gt;: Quint restricts the prime operator (&lt;code&gt;'&lt;/code&gt;) to assignments in the format &lt;code&gt;&amp;lt;var&amp;gt;' = &amp;lt;expr&amp;gt;&lt;/code&gt;, preventing hard-to-grasp expressions while maintaining the power of temporal logic. The tooling reports errors if you misuse &lt;code&gt;'&lt;/code&gt; or forget to update variables in some branches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State Machine Modeling&lt;/strong&gt;: Actions named &lt;code&gt;init&lt;/code&gt; and &lt;code&gt;step&lt;/code&gt; define the state machine—&lt;code&gt;init&lt;/code&gt; defines initial states, &lt;code&gt;step&lt;/code&gt; defines transitions. This makes the model structure clear and checkable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pure Functions and Actions&lt;/strong&gt;: Definitions prefixed with &lt;code&gt;pure&lt;/code&gt; are functional—same input always produces same output. Actions use the prime operator to modify state. This separation helps reason about what changes state and what doesn&amp;rsquo;t.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-determinism&lt;/strong&gt;: Quint supports non-deterministic definitions using &lt;code&gt;any&lt;/code&gt; and &lt;code&gt;oneOf&lt;/code&gt;, which can only be used inside actions before assignments. This is crucial for modeling systems with multiple possible behaviors.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The connection to &lt;a href="https://learntla.com/"&gt;TLA+&lt;/a&gt; is clear—both are tools for specifying and verifying system behavior, but Quint&amp;rsquo;s more familiar syntax might lower the barrier to entry for formal methods. This is particularly relevant as I work on systems where correctness is critical.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Books/Paul&amp;#43;J.&amp;#43;Lucas&amp;#43;-&amp;#43;Why&amp;#43;Learn&amp;#43;C&amp;#43;Go&amp;#43;Behind&amp;#43;the&amp;#43;Curtain&amp;#43;of&amp;#43;Modern&amp;#43;Systems&amp;#43;With&amp;#43;C23&amp;#43;%28Highlights%29"&gt;Paul J. Lucas - Why Learn C Go Behind the Curtain of Modern Systems With C23 (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Books/Arnold&amp;#43;Bennett&amp;#43;-&amp;#43;How&amp;#43;to&amp;#43;Live&amp;#43;on&amp;#43;24&amp;#43;Hours&amp;#43;a&amp;#43;Day&amp;#43;%28Highlights%29"&gt;Arnold Bennett - How to Live on 24 Hours a Day (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Quint&amp;#43;Authors&amp;#43;-&amp;#43;Language&amp;#43;Basics&amp;#43;%28Highlights%29"&gt;Quint Authors - Language Basics (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Quint&amp;#43;Authors&amp;#43;-&amp;#43;Lesson&amp;#43;0&amp;#43;-&amp;#43;Hello%2C&amp;#43;world&amp;#43;%28Highlights%29"&gt;Quint Authors - Lesson 0 - Hello, world (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/f/Formal&amp;#43;Method/Quint"&gt;Quint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/f/Formal&amp;#43;Method/TLA%2B"&gt;TLA+&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2026-01-03</title><link>https://blog.iany.me/journal/2026/01/what-i-touched-this-week-2026-01-03/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2026/01/what-i-touched-this-week-2026-01-03/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="training-the-idea-muscle-quantity-over-quality"&gt;Training the Idea Muscle: Quantity Over Quality&lt;/h2&gt;
&lt;p&gt;This week I came across a fascinating article about &lt;a href="https://sfalexandria.com/posts/rileys-ideas/"&gt;training the idea muscle&lt;/a&gt; that perfectly captures a principle I&amp;rsquo;ve been trying to internalize: if you reject your own ideas, the part of the brain that generates them will simply stop producing.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Never Reject During Generation&lt;/strong&gt;: The key insight is to generate ideas continuously without filtering them in the moment. You sort them out later. This is similar to the &lt;a href="https://kb.iany.me/para/lets/c/Creativity/Creativity&amp;#43;Faucet"&gt;Creativity Faucet&lt;/a&gt; concept—you need to let the bad ideas flow out first before the good ones emerge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do It While Learning&lt;/strong&gt;: &amp;ldquo;I don&amp;rsquo;t think I&amp;rsquo;ve ever done anything I&amp;rsquo;m not good enough to do because I get good at the thing while doing it.&amp;rdquo; This reframes the common fear of not being ready—you become ready by starting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fun as the Filter&lt;/strong&gt;: Only work on things you think are fun. This is the real filter, not whether you&amp;rsquo;re &amp;ldquo;good enough&amp;rdquo; or whether the idea is &amp;ldquo;good enough&amp;rdquo; initially.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ideas Require Action&lt;/strong&gt;: Ideas are everywhere, but most people don&amp;rsquo;t act on them. The muscle being trained isn&amp;rsquo;t just idea generation—it&amp;rsquo;s the habit of execution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This connects beautifully with &lt;a href="https://www.goodreads.com/book/show/59991434-the-motern-method"&gt;The Motern Method&lt;/a&gt;, a book about an artist who released 23,000+ songs by embracing quantity and rejecting perfectionism.&lt;/p&gt;
&lt;h2 id="slowing-down-to-go-deeper"&gt;Slowing Down to Go Deeper&lt;/h2&gt;
&lt;p&gt;David Cain&amp;rsquo;s article on &lt;a href="https://www.raptitude.com/2025/12/maybe-the-default-settings-are-too-high/"&gt;default settings being too high&lt;/a&gt; offers a counterintuitive productivity insight: slowing down often yields better results than rushing.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reading Aloud&lt;/strong&gt;: Limiting yourself to mouth-speed rather than eye-speed prevents rushing through text, missing important details, and losing interest. If you&amp;rsquo;re enjoying something, why would you want to be done with it sooner?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Vacuum Analogy&lt;/strong&gt;: Passing a vacuum too quickly over carpet means you miss half the dirt. Slow down, and you can hear how much more grit gets picked up. The same applies to reading and eating—the good stuff (meaning in text, pleasure in food) rises up to meet you in the extra time you give it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quality Over Speed&lt;/strong&gt;: This challenges the default assumption that faster is better. Sometimes our cultural &amp;ldquo;default settings&amp;rdquo; for speed are calibrated too high for actual comprehension and enjoyment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This resonates with my experience using AI tools—the temptation is to go faster, but often the value comes from slowing down and engaging more deeply with the material.&lt;/p&gt;
&lt;h2 id="learning-tacit-knowledge-copying-better"&gt;Learning Tacit Knowledge: Copying Better&lt;/h2&gt;
&lt;p&gt;Cedric Chin&amp;rsquo;s piece on &lt;a href="https://commoncog.com/blog/how-to-learn-tacit-knowledge/"&gt;acquiring tacit knowledge from experts&lt;/a&gt; provides a practical framework for learning skills that can&amp;rsquo;t be easily articulated.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Four Key Elements&lt;/strong&gt;: When observing experts, focus on their &lt;strong&gt;cues&lt;/strong&gt; (what they notice first), &lt;strong&gt;expectancies&lt;/strong&gt; (what they expect to happen next), &lt;strong&gt;goals&lt;/strong&gt; (their priorities), and &lt;strong&gt;actions&lt;/strong&gt; (courses of action that immediately come to mind).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prototypes vs. Options&lt;/strong&gt;: Experts rarely compare multiple options—they pick the first available option that fits their criteria because they&amp;rsquo;ve built up mental prototypes. If you find yourself doing option comparison in a situation where a colleague doesn&amp;rsquo;t, that&amp;rsquo;s a signal they have a prototype you lack.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Narrative Construction&lt;/strong&gt;: Experts construct narratives or simulations to explain what they&amp;rsquo;re seeing, matching patterns against different prototypes. This is fundamentally different from following explicit rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This framework is particularly relevant for software engineering, where so much expertise is tacit—knowing when to refactor, which abstractions to choose, how to structure systems. These aren&amp;rsquo;t things you can learn from documentation alone.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Aadil&amp;#43;Pickle&amp;#43;-&amp;#43;Training&amp;#43;the&amp;#43;Idea&amp;#43;Muscle&amp;#43;%28Highlights%29"&gt;Aadil Pickle - Training the Idea Muscle (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/David&amp;#43;Cain&amp;#43;-&amp;#43;Maybe&amp;#43;the&amp;#43;Default&amp;#43;Settings&amp;#43;Are&amp;#43;Too&amp;#43;High&amp;#43;%28Highlights%29"&gt;David Cain - Maybe the Default Settings Are Too High (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Cedric&amp;#43;Chin&amp;#43;-&amp;#43;Copying&amp;#43;Better&amp;#43;How&amp;#43;to&amp;#43;Acquire&amp;#43;the&amp;#43;Tacit&amp;#43;Knowledge&amp;#43;of&amp;#43;Experts&amp;#43;%28Highlights%29"&gt;Cedric Chin - Copying Better How to Acquire the Tacit Knowledge of Experts (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Sean&amp;#43;Goedecke&amp;#43;-&amp;#43;Software&amp;#43;Engineers&amp;#43;Should&amp;#43;Be&amp;#43;a&amp;#43;Little&amp;#43;Bit&amp;#43;Cynical&amp;#43;%28Highlights%29"&gt;Sean Goedecke - Software Engineers Should Be a Little Bit Cynical (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2025-12-27</title><link>https://blog.iany.me/journal/2025/12/what-i-touched-this-week-2025-12-27/</link><pubDate>Sat, 27 Dec 2025 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2025/12/what-i-touched-this-week-2025-12-27/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="state-machines-for-simplifying-complex-logic"&gt;State Machines for Simplifying Complex Logic&lt;/h2&gt;
&lt;p&gt;This week I dove into using state machines as a tool for managing complex application logic. Dave Thomas&amp;rsquo;s approach in his book &amp;ldquo;Simplicity&amp;rdquo; resonated with me: state machines aren&amp;rsquo;t as complicated as people make them out to be, and they&amp;rsquo;re a great way of turning deeply nested code into nice linear chunks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data Over Code&lt;/strong&gt;: The core insight is that data is easier to work with than code—it&amp;rsquo;s easier to reason about, manipulate, and change. You don&amp;rsquo;t need complex libraries or long-winded pattern-based approaches when you need a state machine; all you need is a lookup table.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State Transition Formula&lt;/strong&gt;: The fundamental model is &lt;code&gt;State(S) x Event(E) -&amp;gt; Actions(A), State(S')&lt;/code&gt;. This simple formula captures the essence of event-driven behavior in a declarative way.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event Generation&lt;/strong&gt;: Actions can return either new state values or generate new events. If an event is returned, the code immediately performs another transition—this allows for elegant chaining of state changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State Enter Calls&lt;/strong&gt;: Erlang&amp;rsquo;s &lt;code&gt;gen_statem&lt;/code&gt; has a powerful feature where the state callback is automatically called with special arguments whenever the state changes, making it easy to perform entry actions without cluttering transition logic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Postponing Events&lt;/strong&gt;: A clever pattern is the ability to postpone events—if an event arrives but shouldn&amp;rsquo;t be handled in the current state, you can defer it until a state change occurs when the event queue restarts from the oldest postponed event.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://articles.pragdave.me/p/simplify-logic-with-state-machines"&gt;Simplify Logic With State Machines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.erlang.org/doc/system/statem"&gt;gen_statem Behaviour&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tokio-and-async-rust-patterns"&gt;Tokio and Async Rust Patterns&lt;/h2&gt;
&lt;p&gt;Continuing my study of async Rust, I worked through the Tokio tutorials and explored patterns for shared state and concurrent data structures.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mutex Selection&lt;/strong&gt;: As a rule of thumb, using a synchronous mutex from within asynchronous code is fine as long as contention remains low and the lock is not held across calls to &lt;code&gt;.await&lt;/code&gt;. The Tokio mutex&amp;rsquo;s primary feature is that it can be held across an &lt;code&gt;.await&lt;/code&gt; without issues, but if contention becomes a problem, the best fix is rarely to switch to the Tokio mutex.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concurrent Hash Maps&lt;/strong&gt;: For high-contention scenarios, there are several excellent crate options: &lt;a href="https://docs.rs/dashmap"&gt;dashmap&lt;/a&gt; provides a sharded hash map implementation, while &lt;a href="https://docs.rs/leapfrog"&gt;leapfrog&lt;/a&gt; uses leapfrog probing, and &lt;a href="https://docs.rs/flurry"&gt;flurry&lt;/a&gt; is a port of Java&amp;rsquo;s &lt;code&gt;ConcurrentHashMap&lt;/code&gt;. I also discovered &lt;a href="https://docs.rs/papaya"&gt;papaya&lt;/a&gt;, which is optimized for read-heavy workloads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Async Trait Variants&lt;/strong&gt;: The &lt;a href="https://docs.rs/trait-variant"&gt;trait_variant&lt;/a&gt; and &lt;a href="https://docs.rs/dynosaur"&gt;dynosaur&lt;/a&gt; crates help with async trait patterns—useful for creating both sync and async versions of traits without code duplication.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing with tokio-test&lt;/strong&gt;: The &lt;a href="https://docs.rs/tokio-test/latest/tokio_test/io/struct.Builder.html"&gt;tokio_test::io::Builder&lt;/a&gt; provides mock I/O for testing async code, making it easier to write deterministic tests for network protocols.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://tokio.rs/tokio/tutorial/shared-state"&gt;Tokio Tutorial - Shared State&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="clean-code-maintenance-as-the-core-of-software"&gt;Clean Code: Maintenance as the Core of Software&lt;/h2&gt;
&lt;p&gt;I revisited Robert C. Martin&amp;rsquo;s &amp;ldquo;Clean Code&amp;rdquo; this week, and the framing around maintenance struck me differently in the AI era.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;80% is Maintenance&lt;/strong&gt;: In software, 80% or more of what we do is &amp;ldquo;maintenance&amp;rdquo;—the act of repair. Rather than the Western focus on producing good software, we should think more like home repairmen or auto mechanics: proactive maintenance rather than waiting for bugs to surface.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Million Selfless Acts&lt;/strong&gt;: Quality is the result of a million selfless acts of care—not just of any great method that descends from the heavens. These acts are simple but not simplistic, forming the fabric of greatness in any human endeavor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reading vs Writing Ratio&lt;/strong&gt;: The ratio of time spent reading vs. writing code is well over 10:1. We are constantly reading old code as part of the effort to write new code, so making code easy to read actually makes it easier to write.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LeBlanc&amp;rsquo;s Law&lt;/strong&gt;: &amp;ldquo;Later equals never.&amp;rdquo; We&amp;rsquo;ve all felt the relief of seeing our messy program work and deciding that a working mess is better than nothing, promising to clean it up later. This resonates especially with vibe-coded AI-generated solutions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Boy Scout Rule&lt;/strong&gt;: Leave the campground cleaner than you found it. Small continuous improvements compound over time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clean Code Characteristics&lt;/strong&gt;: Clean code reads like well-written prose, never obscures the designer&amp;rsquo;s intent, and is full of crisp abstractions and straightforward lines of control. It should make you smile the way a well-crafted music box or well-designed car would.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: Clean Code by Robert C. Martin&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Dave&amp;#43;Thomas&amp;#43;-&amp;#43;Simplify&amp;#43;Logic&amp;#43;With&amp;#43;State&amp;#43;Machines&amp;#43;%28Highlights%29"&gt;Dave Thomas - Simplify Logic With State Machines (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Erlang&amp;#43;Authors&amp;#43;-&amp;#43;gen_statem&amp;#43;Behaviour&amp;#43;%28Highlights%29"&gt;Erlang Authors - gen_statem Behaviour (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Books/Dave&amp;#43;Thomas&amp;#43;-&amp;#43;Simplicity&amp;#43;Sustainable%2C&amp;#43;Humane%2C&amp;#43;and&amp;#43;Effective&amp;#43;Software&amp;#43;Development&amp;#43;%28Highlights%29"&gt;Dave Thomas - Simplicity Sustainable, Humane, and Effective Software Development (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Tokio&amp;#43;Authors&amp;#43;-&amp;#43;Shared&amp;#43;state&amp;#43;%28Highlights%29"&gt;Tokio Authors - Shared state (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Books/Robert&amp;#43;C.&amp;#43;Martin&amp;#43;-&amp;#43;Clean&amp;#43;Code&amp;#43;%28Highlights%29"&gt;Robert C. Martin - Clean Code (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2025-12-20</title><link>https://blog.iany.me/journal/2025/12/what-i-touched-this-week-2025-12-20/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2025/12/what-i-touched-this-week-2025-12-20/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="the-ladder-of-abstraction-in-system-design"&gt;The Ladder of Abstraction in System Design&lt;/h2&gt;
&lt;p&gt;Bret Victor&amp;rsquo;s &amp;ldquo;The Ladder of Abstraction&amp;rdquo; explores how to design interactive systems by moving between levels of abstraction. The core insight is that the most powerful way to gain insight into a system is by stepping up and down the ladder—abstracting over variables to see high-level patterns, then stepping down to concrete representations to understand the details.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Abstracting Over Time&lt;/strong&gt;: Instead of watching a system evolve in real-time (which is limiting, like a film editor who can&amp;rsquo;t pause or rewind), we can abstract over time by turning time into a parameter. This creates a trajectory—a function that returns a point for any given time, showing the system&amp;rsquo;s behavior across all time values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stepping Up and Down&lt;/strong&gt;: We step up to an abstraction by devising a representation that depicts the system across all values of a parameter. We step down by interactively selecting one particular value, allowing us to explore regions of interest quickly. This corresponds to partial application in functional programming.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visual vs. Symbolic Abstractions&lt;/strong&gt;: The human brain excels at pattern matching with visual patterns but struggles with logical inferences. Visual abstractions leverage our natural strengths, making it easier to see high-level patterns and tune out low-level clutter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metrics and Patterns&lt;/strong&gt;: By choosing metrics—numbers that summarize system behavior in interesting ways—we can step up another level of abstraction. For example, plotting time to completion versus turning rate reveals patterns that aren&amp;rsquo;t visible in individual trajectories.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Starting Simple&lt;/strong&gt;: Beginning with the simplest possible algorithm and thoroughly exploring it helps us understand why and how it&amp;rsquo;s terrible, providing the foundation for better solutions. The tools we build for simple cases continue to serve us throughout the design process.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://worrydream.com/LadderOfAbstraction/"&gt;The Ladder of Abstraction&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="ai-investment-bubble-and-infrastructure-economics"&gt;AI Investment Bubble and Infrastructure Economics&lt;/h2&gt;
&lt;p&gt;Howard Marks examines whether AI is experiencing a financial bubble, distinguishing between technological hype and actual market bubbles. His analysis reveals the complex economics of AI infrastructure investment and the risks of debt-financed expansion.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bubbles vs. Technological Progress&lt;/strong&gt;: Market bubbles aren&amp;rsquo;t caused directly by technological developments but by excessive optimism applied to those developments. However, Marks notes that &amp;ldquo;inflection bubbles&amp;rdquo; based on revolutionary developments can accelerate technological progress while still destroying wealth—they&amp;rsquo;re both collective delusions and expressions of collective vision.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Compression Effect&lt;/strong&gt;: If people remained patient and value-insistent, novel technologies would take decades to build out. The hysteria of bubbles compresses this process into a short period, with some money going to life-changing investments in winners but a lot being incinerated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Circular Capital Flows&lt;/strong&gt;: OpenAI receives billions from tech companies but also sends billions back to pay for computing power. Nvidia&amp;rsquo;s $100 billion investment in OpenAI flows back as the startup buys or leases Nvidia&amp;rsquo;s chips, creating circular capital flows that raise questions about actual value creation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debt-Financed Expansion&lt;/strong&gt;: Major tech companies (Oracle, Meta, Alphabet) have issued 30-year bonds to finance AI investments. With close to half a trillion in expected spending next year but only $350bn collectively in the bank, heavy debt usage creates risks of overcapacity and depressed returns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Scale of Trillions&lt;/strong&gt;: A trillion dollars is a dollar a second for 31,700 years—a scale that&amp;rsquo;s difficult to comprehend but represents the magnitude of AI infrastructure investment being discussed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://readwise-assets.s3.amazonaws.com/media/wisereads/articles/is-it-a-bubble/1056.pdf"&gt;Is It A Bubble&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="becoming-ai-native-in-daily-workflows"&gt;Becoming AI-Native in Daily Workflows&lt;/h2&gt;
&lt;p&gt;Jeff Su&amp;rsquo;s video provides practical strategies for integrating AI into daily work, moving beyond simple prompting to building sustainable AI-native workflows that anchor conversations, leverage swipe files, and strategically allocate tasks between AI and manual work.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Anchoring Important Conversations&lt;/strong&gt;: If an AI conversation takes more than 10 minutes or produces something you&amp;rsquo;ll reference again, anchor it to your workspace immediately. This creates a searchable archive of valuable AI interactions and outputs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Swipe Files&lt;/strong&gt;: Create a dedicated folder for good examples—business proposals, code patterns, writing samples—that AI can reference. Instead of starting from scratch, you open your swipe folder to find examples that guide AI toward the quality and style you want. This acts as a curated reference library for AI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Task Breakdown and Allocation&lt;/strong&gt;: Before writing anything, break work into steps and microtasks. Then decide whether each microtask should be done manually or with AI, and specify the exact tool best suited for that task. For projects taking more than an hour, spend 5-10 minutes mapping steps and tagging which are AI or manual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Battle-Tested Prompts&lt;/strong&gt;: You don&amp;rsquo;t need a thousand random prompts—you need 10-15 battle-tested ones that you can use every day. Focus on quality and refinement rather than quantity.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;: &lt;a href="https://www.youtube.com/watch?v=E7YiKBeOneo"&gt;Give Me 9 Minutes, I&amp;rsquo;ll Make You AI-Native&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Bret&amp;#43;Victor&amp;#43;-&amp;#43;The&amp;#43;Ladder&amp;#43;of&amp;#43;Abstraction&amp;#43;%28Highlights%29"&gt;Bret Victor - The Ladder of Abstraction (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Howard&amp;#43;Marks&amp;#43;-&amp;#43;Is&amp;#43;It&amp;#43;A&amp;#43;Bubble&amp;#43;%28Highlights%29"&gt;Howard Marks - Is It A Bubble (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Jeff&amp;#43;Su&amp;#43;-&amp;#43;Give&amp;#43;Me&amp;#43;9&amp;#43;Minutes%2C&amp;#43;I%27ll&amp;#43;Make&amp;#43;You&amp;#43;AI-Native&amp;#43;%28Highlights%29"&gt;Jeff Su - Give Me 9 Minutes, I&amp;rsquo;ll Make You AI-Native (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2025-12-13</title><link>https://blog.iany.me/journal/2025/12/what-i-touched-this-week-2025-12-13/</link><pubDate>Sat, 13 Dec 2025 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2025/12/what-i-touched-this-week-2025-12-13/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="social-architecture-and-open-source-community-building"&gt;Social Architecture and Open Source Community Building&lt;/h2&gt;
&lt;p&gt;This week I dove deep into Pieter Hintjens&amp;rsquo; &amp;ldquo;Social Architecture,&amp;rdquo; a comprehensive guide to building sustainable open source communities. The book provides a framework for understanding how successful communities function, with direct relevance to my work on CKB Fiber and other open source projects.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The C4 Process&lt;/strong&gt;: An evolution of the GitHub Fork + Pull Model that emphasizes problem-first thinking. All patches must start by identifying a clear problem before proposing solutions. This creates a culture where contributors focus on real needs rather than speculative features.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimistic Merging&lt;/strong&gt;: Maintainers should merge patches rapidly, even if imperfect. This creates opportunities for mentoring—when a patch needs work, other contributors naturally step in to help, building relationships and improving code quality through collaboration rather than gatekeeping.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Free Entry and Non-Tribalism&lt;/strong&gt;: Successful communities welcome competition and experimentation. If starting a competing project gets a negative emotional response, the group is too tribal. Healthy communities applaud new competitors as spaces for learning and innovation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The 20 Principles&lt;/strong&gt;: From strong mission and transparency to minimalism and sense of humor, Hintjens identifies key characteristics of thriving communities. Particularly resonant: &amp;ldquo;Perfection precludes participation&amp;rdquo;—releasing buggy, half-finished work provokes contributions more effectively than polished releases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Economic Incentives&lt;/strong&gt;: We&amp;rsquo;re economic animals, and architecture must provide economic incentive to invest. Whether it&amp;rsquo;s reputation, money, or skill development, contributors need clear value propositions. Think of architecture as a marketplace, not just an engineering design.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://hintjens.wdfiles.com/local--files/books/social-architecture.pdf"&gt;Social Architecture&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="ai-assisted-development-and-learning"&gt;AI-Assisted Development and Learning&lt;/h2&gt;
&lt;p&gt;Multiple articles this week explored how to effectively use AI as a development and learning partner, moving beyond simple code generation to more sophisticated workflows.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Learning with AI&lt;/strong&gt;: Scott Young emphasizes using AI for book recommendations and practice problem generation rather than summaries. AI tutoring works better than teaching because specific questions constrain answers more effectively. For repetitive learning tasks, building applications can be more consistent than repeated prompting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Design Challenges&lt;/strong&gt;: Armin Ronacher highlights that differences between models are significant enough that you&amp;rsquo;ll likely need custom abstractions. Key insights include using static system prompts with dynamic messages for caching, and hiding execution failures from context by running potentially failing tasks in subagents until they succeed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CLAUDE.md Best Practices&lt;/strong&gt;: Kyle Mistele recommends keeping &lt;code&gt;CLAUDE.md&lt;/code&gt; under 300 lines (ideally under 60), with task-specific instructions in separate markdown files. Most importantly: &amp;ldquo;Never send an LLM to do a linter&amp;rsquo;s job&amp;rdquo;—use deterministic tools whenever possible since LLMs are expensive and slow compared to traditional tooling.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, Ed sent me an email to introduce his app, &lt;a href="https://grasp.study/"&gt;Grasp&lt;/a&gt;, which I found impressively aligned with these best practices and strategies from the past two weeks&amp;rsquo; articles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.scotthyoung.com/blog/2025/12/02/5-strategies-to-learn-better-with-ai-and-traps-to-avoid/"&gt;5 Strategies to Learn Better With AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lucumr.pocoo.org/2025/11/21/agents-are-hard/"&gt;Agent Design Is Still Hard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.humanlayer.dev/blog/writing-a-good-claude-md"&gt;Writing a good CLAUDE.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="git-workflow-improvements"&gt;Git Workflow Improvements&lt;/h2&gt;
&lt;p&gt;I published a blog post about backing up ignored files using Git remote branches, solving a problem I&amp;rsquo;ve had for years. The solution uses Git&amp;rsquo;s low-level plumbing commands to store ignored files (like local configs, IDE settings, or personal scripts) in a separate remote branch without affecting the main branch or working directory.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Problem&lt;/strong&gt;: Files that need backup but shouldn&amp;rsquo;t be in main branch history—local development settings, IDE configurations, personal notes, or workflow-specific scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Solution&lt;/strong&gt;: A &lt;code&gt;git-store-file&lt;/code&gt; script that uses a temporary Git index to commit ignored files to a remote branch (default: &lt;code&gt;origin/_store&lt;/code&gt;). This keeps everything in one repository while maintaining clear separation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Technical Approach&lt;/strong&gt;: Uses &lt;code&gt;GIT_INDEX_FILE&lt;/code&gt; for isolated index manipulation, &lt;code&gt;git read-tree&lt;/code&gt; to load branch state, &lt;code&gt;git add -f&lt;/code&gt; for ignored files, and &lt;code&gt;git commit-tree&lt;/code&gt; for direct commit creation—all without touching the working directory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://blog.iany.me/2025/12/backup-ignored-files-with-git-remote-branch/"&gt;♯ Backup Ignored Files with Git Remote Branch&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Pieter&amp;#43;Hintjens&amp;#43;-&amp;#43;Social&amp;#43;Architecture&amp;#43;%28Highlights%29"&gt;Pieter Hintjens - Social Architecture (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Scott&amp;#43;Young&amp;#43;-&amp;#43;5&amp;#43;Strategies&amp;#43;to&amp;#43;Learn&amp;#43;Better&amp;#43;With&amp;#43;AI&amp;#43;%28Highlights%29"&gt;Scott Young - 5 Strategies to Learn Better With AI (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Armin&amp;#43;Ronacher&amp;#43;-&amp;#43;Agent&amp;#43;Design&amp;#43;Is&amp;#43;Still&amp;#43;Hard&amp;#43;%28Highlights%29"&gt;Armin Ronacher - Agent Design Is Still Hard (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Kyle&amp;#43;Mistele&amp;#43;-&amp;#43;Writing&amp;#43;a&amp;#43;good&amp;#43;CLAUDE.md&amp;#43;%28Highlights%29"&gt;Kyle Mistele - Writing a good CLAUDE.md (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2025-12-06</title><link>https://blog.iany.me/journal/2025/12/what-i-touched-this-week-2025-12-06/</link><pubDate>Sat, 06 Dec 2025 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2025/12/what-i-touched-this-week-2025-12-06/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="fuzzing-strategies-from-tigerbeetle"&gt;Fuzzing Strategies from TigerBeetle&lt;/h2&gt;
&lt;p&gt;This week I dove deep into TigerBeetle&amp;rsquo;s fuzzing philosophy through several articles by Aleksey Kladov. The collection reveals a systematic approach to building testable systems from the ground up.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Design for Fuzzability First&lt;/strong&gt;: You don&amp;rsquo;t build a system and then add a fuzzer—the process is almost reversed. Start by sketching minimal interfaces that yield themselves to efficient fuzzing. Minimize the interface by eliminating accidental dependencies and leaving only essential ones.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data-Oriented Design&lt;/strong&gt;: Apply data-oriented design principles—think in terms of input data, output data, and the fundamental data transformation the system implements. This makes the code more easily fuzzable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Four Fuzzer Strategy&lt;/strong&gt;: Use multiple fuzzing approaches: (1) positive space fuzzing with ideal lab environments to verify correctness, (2) negative space fuzzing calling all public methods in random order to break things, (3) boundary testing for valid vs. almost-valid-but-invalid codes, and (4) whole subsystem fuzzing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Randomness in Tests&lt;/strong&gt;: Don&amp;rsquo;t always use hard-coded seeds. Zig&amp;rsquo;s approach is best—provide &lt;code&gt;std.testing.random_seed&lt;/code&gt; that&amp;rsquo;s different per run but generated outside the test process. Run tests twice: once with a hard-coded seed for regression testing, and once with a truly random seed for coverage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tigerbeetle.com/blog/2025-11-28-tale-of-four-fuzzers/"&gt;A Tale of Four Fuzzers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://matklad.github.io/2021/11/07/generate-all-the-things.html"&gt;Generate All the Things&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tigerbeetle.com/blog/2025-04-23-swarm-testing-data-structures/"&gt;Swarm Testing Data Structures&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="lightning-network-mobile-nodes-and-self-custody"&gt;Lightning Network Mobile Nodes and Self-Custody&lt;/h2&gt;
&lt;p&gt;Stephen DeLorme&amp;rsquo;s article on Lightning self-custody and mobile nodes provided valuable insights into the future of Bitcoin payments, with direct relevance to my work on CKB Fiber.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mobile Receiving Nodes&lt;/strong&gt;: For receiving-only nodes, you don&amp;rsquo;t need routing, meaning you don&amp;rsquo;t need all that database storage. This was pioneered by projects like Breez, Phoenix, Mutiny wallet, Blixt, and newer versions of Zeus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline Payments Problem&lt;/strong&gt;: Even the sharpest performing mobile lightning wallets suffer from a lack of offline payments, which has severely tarnished the perception of Lightning. BIP-353 user names distributed via DNS and recent LDK PRs for async payments are addressing this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capital Efficiency&lt;/strong&gt;: Splicing is a powerful tool for easing capital constraints for LSPs. The &lt;code&gt;option_zero_reserve&lt;/code&gt; allows channel partners to choose not to use a channel reserve balance—great for UX, though it requires solving minimal capacity restrictions (relevant for CKB Fiber).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Graduated Wallet Model&lt;/strong&gt;: A wallet that begins with a custodial service or trust-minimized technology, then graduates to a Lightning channel when the balance grows to a certain threshold. This helps LSPs avoid opening &amp;ldquo;non-productive&amp;rdquo; channels to users just experimenting with the app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dust Limit Considerations&lt;/strong&gt;: Amounts below the dust limit (like a 21 sat Nostr zap) wouldn&amp;rsquo;t be claimable on-chain anyway, suggesting alternative approaches for micro-transactions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://www.voltage.cloud/blog/lightning-self-custody-works"&gt;Lightning Self-Custody Works: Why Mobile Nodes Are the Future of Bitcoin&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="think-first-ai-second"&gt;Think First, AI Second&lt;/h2&gt;
&lt;p&gt;Ines Lee&amp;rsquo;s article on using AI as a thinking partner rather than a solution generator resonated deeply with my own experience using AI tools.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Active vs. Passive AI Use&lt;/strong&gt;: Active AI use means building understanding while collaborating with the model. Frame the problem yourself, make an initial pass, then use AI to challenge assumptions, uncover blind spots, and sharpen arguments. Studies show this approach maintains cognitive engagement even while using AI.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI as Coach, Not Cheerleader&lt;/strong&gt;: Shift AI from talking to you about your work (where it&amp;rsquo;s sycophantic) to talking to other editors about your work (where it&amp;rsquo;s professionally candid). You&amp;rsquo;re no longer the audience, so it drops the protective politeness.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Combat Illusion of Understanding&lt;/strong&gt;: AI explains things in ways that are easy to follow, making us susceptible to the &amp;ldquo;illusion of understanding.&amp;rdquo; We overestimate what we&amp;rsquo;ve learned. Real comprehension emerges when forced to articulate thinking, because explaining reveals gaps we didn&amp;rsquo;t know existed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Practical Prompts&lt;/strong&gt;: Use prompts like &amp;ldquo;Ask exactly 5 high-leverage questions before proposing solutions,&amp;rdquo; &amp;ldquo;Act as an editor recommending whether to publish this piece,&amp;rdquo; &amp;ldquo;Analyze my reasoning and create an architecture of my thinking,&amp;rdquo; &amp;ldquo;Switch to devil&amp;rsquo;s advocate mode and dismantle my thesis,&amp;rdquo; and &amp;ldquo;Ask me to explain this as if teaching it to someone else.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://every.to/emails/think-first-ai-second"&gt;Think First, AI Second&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Aleksey&amp;#43;Kladov&amp;#43;-&amp;#43;A&amp;#43;Tale&amp;#43;of&amp;#43;Four&amp;#43;Fuzzers&amp;#43;%28Highlights%29"&gt;Aleksey Kladov - A Tale of Four Fuzzers (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Aleksey&amp;#43;Kladov&amp;#43;-&amp;#43;Generate&amp;#43;All&amp;#43;the&amp;#43;Things&amp;#43;%28Highlights%29"&gt;Aleksey Kladov - Generate All the Things (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Aleksey&amp;#43;Kladov&amp;#43;-&amp;#43;Swarm&amp;#43;Testing&amp;#43;Data&amp;#43;Structures&amp;#43;%28Highlights%29"&gt;Aleksey Kladov - Swarm Testing Data Structures (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Stephen&amp;#43;DeLorme&amp;#43;-&amp;#43;Lightning&amp;#43;Self-Custody&amp;#43;Works&amp;#43;Why&amp;#43;Mobile&amp;#43;Nodes&amp;#43;Are&amp;#43;the&amp;#43;Future&amp;#43;of&amp;#43;Bitcoin&amp;#43;%28Highlights%29"&gt;Stephen DeLorme - Lightning Self-Custody Works Why Mobile Nodes Are the Future of Bitcoin (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Ines&amp;#43;Lee&amp;#43;-&amp;#43;Think&amp;#43;First%2C&amp;#43;AI&amp;#43;Second&amp;#43;%28Highlights%29"&gt;Ines Lee - Think First, AI Second (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2025-11-29</title><link>https://blog.iany.me/journal/2025/11/what-i-touched-this-week-2025-11-29/</link><pubDate>Sat, 29 Nov 2025 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2025/11/what-i-touched-this-week-2025-11-29/</guid><description>&lt;details open disabled class="kg-card kg-callout kg-callout-attention" data-callout-type="attention"&gt;
&lt;summary class="kg-callout-title" tabindex="-1"&gt;
&lt;i aria-hidden="true" class="kg-callout-type fas fa-exclamation-triangle"&gt;&lt;/i&gt;
This journal is generated by AI
&lt;/summary&gt;
&lt;/details&gt;
&lt;h2 id="software-design-insights-from-tigerbeetle"&gt;Software Design Insights from TigerBeetle&lt;/h2&gt;
&lt;p&gt;This week I went deep into several articles from Alexey Kladov (matklad) and TigerBeetle&amp;rsquo;s engineering blog. The collection offers practical wisdom on building robust systems.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Code Review Workflow&lt;/strong&gt;: Instead of reviewing diffs in a web UI, pull the branch locally, soft-reset to the base, then navigate through the diff using magit. Use the git staging area to mark files you&amp;rsquo;ve reviewed—treating the review process like authoring the code yourself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clockless Time Tracking&lt;/strong&gt;: Rather than injecting a &lt;code&gt;Clock&lt;/code&gt; dependency, push time into the system at fixed cadence via a &lt;code&gt;tick&lt;/code&gt; method. For single-instant needs, use Call Site Dependency Injection by passing &lt;code&gt;now: Instant&lt;/code&gt; directly to methods.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write Last, Read First&lt;/strong&gt;: When dealing with systems of record (source of truth) and systems of reference (derived data), write to the system of reference first, then write to the system of record last. Read in reverse order. This maintains application-level consistency.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Function Shape Matters&lt;/strong&gt;: Functions should have an &amp;ldquo;inverted hourglass&amp;rdquo; shape—large implementations relative to their interfaces. Hourglass-shaped functions (small body, large interface) are a code smell. The 100-column limit exists so you can fit two files side-by-side on modern displays. Functions should fit on a screen (~60-70 lines).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tigerbeetle.com/blog/2025-08-04-code-review-can-be-better"&gt;Code Review Can Be Better&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tigerbeetle.com/blog/2025-10-21-clockless-time"&gt;Clockless Time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tigerbeetle.com/blog/2025-11-06-the-write-last-read-first-rule"&gt;Write Last, Read First&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://matklad.github.io/2025/11/28/size-matters.html"&gt;Size Matters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="self-consistency-over-self-discipline"&gt;Self-Consistency Over Self-Discipline&lt;/h2&gt;
&lt;p&gt;An essay on achieving a good life without rigid self-discipline (&amp;ldquo;谈谈不自律的良好生活&amp;rdquo;) resonated with me this week. The author argues for balance over brute-force willpower.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Balanced Love&lt;/strong&gt;: Drawing from Fromm&amp;rsquo;s &lt;em&gt;The Art of Loving&lt;/em&gt;, healthy self-regard requires combining unconditional and conditional love. Pure unconditional love becomes indulgence; pure conditional love becomes self-attack.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Understanding Over Judgment&lt;/strong&gt;: When you break a diet for your favorite ice cream, the productive response isn&amp;rsquo;t self-criticism—it&amp;rsquo;s understanding &lt;em&gt;why&lt;/em&gt; you acted that way. Change requires awareness, care, creativity, and patience rather than pure constraint.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Goals as Direction&lt;/strong&gt;: Goals shouldn&amp;rsquo;t be used to judge or lock down your future. A proper goal is merely a direction—like pointing at a distant peak and saying &amp;ldquo;I want to go there.&amp;rdquo; This supports &lt;a href="https://www.youtube.com/watch?v=aAk9zvROJFk"&gt;Don&amp;rsquo;t Set a Goal For 2026 Until You Watch This&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Life&amp;rsquo;s Balance&lt;/strong&gt;: Abstract learning (philosophy) without grounding becomes detached from life&amp;rsquo;s simple pleasures. All socializing without solitude leaves no room for reflection and creativity. Life needs all five flavors, both meat and vegetables.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://sspai.com/post/103819"&gt;谈谈不自律的良好生活&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="effective-reading-strategies"&gt;Effective Reading Strategies&lt;/h2&gt;
&lt;p&gt;A practical guide on retaining what you read offered some actionable techniques worth implementing.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Preview First&lt;/strong&gt;: Spend 5-10 minutes per chapter skimming the table of contents, headings, introduction, and summary before diving into details. This builds a mental scaffold.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question-Driven Reading&lt;/strong&gt;: Before reading a section, convert the heading into a question (e.g., &amp;ldquo;What is X?&amp;rdquo;) and read to find the answer. This active approach improves engagement and retention.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concise Personal Notes&lt;/strong&gt;: Rather than transcribing passages verbatim, write brief paraphrases or bullet points in your own words. The act of reformulation strengthens memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://readwise-assets.s3.amazonaws.com/media/wisereads/articles/how-to-remember-everything-you/1031.pdf"&gt;How to Remember Everything You Read&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Alexey&amp;#43;Kladov&amp;#43;-&amp;#43;Code&amp;#43;Review&amp;#43;Can&amp;#43;Be&amp;#43;Better&amp;#43;%28Highlights%29"&gt;Alexey Kladov - Code Review Can Be Better (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Alexey&amp;#43;Kladov&amp;#43;-&amp;#43;Tracking&amp;#43;Time&amp;#43;Without&amp;#43;Clock&amp;#43;%28Highlights%29"&gt;Alexey Kladov - Tracking Time Without Clock (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Dominik&amp;#43;Tornow&amp;#43;-&amp;#43;The&amp;#43;Write&amp;#43;Last%2C&amp;#43;Read&amp;#43;First&amp;#43;Rule&amp;#43;%28Highlights%29"&gt;Dominik Tornow - The Write Last, Read First Rule (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Alex&amp;#43;Kladov&amp;#43;-&amp;#43;Size&amp;#43;Matters&amp;#43;%28Highlights%29"&gt;Alex Kladov - Size Matters (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Sylvan&amp;#43;Wang&amp;#43;-&amp;#43;%E8%B0%88%E8%B0%88%E4%B8%8D%E8%87%AA%E5%BE%8B%E7%9A%84%E8%89%AF%E5%A5%BD%E7%94%9F%E6%B4%BB&amp;#43;%28Highlights%29"&gt;Sylvan Wang - 谈谈不自律的良好生活 (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Polymath&amp;#43;Investor&amp;#43;-&amp;#43;How&amp;#43;to&amp;#43;Remember&amp;#43;Everything&amp;#43;You&amp;#43;Read&amp;#43;%28Highlights%29"&gt;Polymath Investor - How to Remember Everything You Read (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category><category domain="https://blog.iany.me/tags/ai-generated/">Ai Generated</category></item><item><title>What I Touched This Week 2025-11-22</title><link>https://blog.iany.me/journal/2025/11/what-i-touched-this-week-2025-11-22/</link><pubDate>Sat, 22 Nov 2025 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2025/11/what-i-touched-this-week-2025-11-22/</guid><description>&lt;p&gt;&lt;strong&gt;Focus&lt;/strong&gt;: &lt;a href="https://kb.iany.me/para/lets/l/Linear&amp;#43;Algebra&amp;#43;Done&amp;#43;Right/%E2%99%AF&amp;#43;Linear&amp;#43;Algebra&amp;#43;Done&amp;#43;Right"&gt;♯ Linear Algebra Done Right&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="ai-tools-im-using"&gt;AI Tools I&amp;rsquo;m Using&lt;/h2&gt;
&lt;p&gt;My selection prioritizes credit card payment compatibility.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chat:&lt;/strong&gt; &lt;a href="https://www.perplexity.ai/"&gt;Perplexity&lt;/a&gt; with &lt;a href="https://www.qianwen.com/"&gt;Qianwen&lt;/a&gt; as backup&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coding:&lt;/strong&gt; &lt;a href="https://github.com/features/copilot"&gt;Copilot&lt;/a&gt; and &lt;a href="https://github.com/google-gemini/gemini-cli"&gt;Gemini CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Command line:&lt;/strong&gt; &lt;a href="https://github.com/sigoden/aichat"&gt;aichat&lt;/a&gt;—shell mode (&lt;code&gt;aichat -e&lt;/code&gt;) is particularly useful&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Obsidian:&lt;/strong&gt; &lt;a href="https://github.com/logancyang/obsidian-copilot"&gt;obsidian-copilot&lt;/a&gt;—easily add multiple files by pasting a list of Obsidian links&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="work-stuff"&gt;Work Stuff&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/c/CKB&amp;#43;Fiber/Liquidity&amp;#43;Ads&amp;#43;Case&amp;#43;Study"&gt;Liquidity Ads Case Study&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/c/CKB&amp;#43;Fiber/Lightning&amp;#43;Loop&amp;#43;Swap&amp;#43;Case&amp;#43;Study"&gt;Lightning Loop Swap Case Study&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading"&gt;Reading&lt;/h2&gt;
&lt;h3 id="1-intentional-goals-vs-traditional-goal-setting"&gt;1. Intentional Goals vs. Traditional Goal-Setting&lt;/h3&gt;
&lt;p&gt;The concept of &amp;ldquo;intentional goals&amp;rdquo; offers a powerful paradigm shift in personal development philosophy. Unlike traditional goals that focus on future outcomes, intentional goals center on who you want to &lt;em&gt;be&lt;/em&gt; in the present moment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key Insights&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intentional goals function like &lt;strong&gt;lighthouses&lt;/strong&gt;—providing direction rather than being destinations&lt;/li&gt;
&lt;li&gt;They transform every moment into an opportunity to serve your greater vision&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;why does this matter?&amp;rdquo; exercise (asking five times) helps uncover deeper intentions&lt;/li&gt;
&lt;li&gt;Regular review processes ensure goals continue serving your core intentions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://www.youtube.com/watch?v=aAk9zvROJFk"&gt;Don&amp;rsquo;t Set a Goal for 2026 Until You Watch This&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="2-cursors-elite-engineering-culture"&gt;2. Cursor&amp;rsquo;s Elite Engineering Culture&lt;/h3&gt;
&lt;p&gt;The deep dive into Cursor reveals a fascinating company culture built as a &amp;ldquo;haven for self-motivated individual contributors&amp;rdquo; where intense collaboration and product obsession drive innovation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cultural Pillars&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;High-Agency Environment&lt;/strong&gt;: Individual contributors hold the highest status, making things happen through enthusiasm rather than management&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Fuzz&amp;rdquo; Rituals&lt;/strong&gt;: Silent, hour-long sessions where the entire team tries to break upcoming releases&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ceiling-First Design&lt;/strong&gt;: Building for the best developers rather than making incremental improvements&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-Imposed Excellence&lt;/strong&gt;: No mandated hours, but meaningful percentage of team works extensively due to passion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://joincolossus.com/article/inside-cursor/"&gt;Inside Cursor&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="3-human-ai-collaboration-in-knowledge-work"&gt;3. Human-AI Collaboration in Knowledge Work&lt;/h3&gt;
&lt;p&gt;This topic explores the evolving role of humans in AI-augmented workflows, emphasizing that &amp;ldquo;approval is thinking&amp;rdquo; in the AI era.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Collaboration Framework&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cognitive Handshake&lt;/strong&gt;: Using intuition and experience to approve AI&amp;rsquo;s logic chains&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traffic Light System&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Green Zone&lt;/strong&gt;: AI-driven tasks and automation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Yellow Zone&lt;/strong&gt;: AI as sparring partner for brainstorming and challenging ideas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Zone&lt;/strong&gt;: Human sovereignty over value judgments, emotional expression, and final decisions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Studio Mindset&lt;/strong&gt;: Valuing ideas (Fleeting Notes) and final works (Permanent Notes) over raw information&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://zhuanlan.zhihu.com/p/1974940265098782377"&gt;AI 时代，你的知识管理工具该扔了吗&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="obsidian-links"&gt;Obsidian Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Bullet&amp;#43;Journal&amp;#43;-&amp;#43;Don%27t&amp;#43;Set&amp;#43;a&amp;#43;Goal&amp;#43;for&amp;#43;2026&amp;#43;Until&amp;#43;You&amp;#43;Watch&amp;#43;This&amp;#43;%28Highlights%29"&gt;Bullet Journal - Don&amp;rsquo;t Set a Goal for 2026 Until You Watch This (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/Brie&amp;#43;Wolfson&amp;#43;-&amp;#43;Inside&amp;#43;Cursor&amp;#43;%28Highlights%29"&gt;Brie Wolfson - Inside Cursor (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/robot/Readwise&amp;#43;Library/Articles/%E7%8E%8B%E6%A0%91%E4%B9%89&amp;#43;-&amp;#43;AI&amp;#43;%E6%97%B6%E4%BB%A3%EF%BC%8C%E4%BD%A0%E7%9A%84%E7%9F%A5%E8%AF%86%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7%E8%AF%A5%E6%89%94%E4%BA%86%E5%90%97&amp;#43;%28Highlights%29"&gt;王树义 - AI 时代，你的知识管理工具该扔了吗 (Highlights)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2021-03-06</title><link>https://blog.iany.me/journal/2021/03/what-i-touched-this-week-2021-03-06/</link><pubDate>Sat, 06 Mar 2021 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2021/03/what-i-touched-this-week-2021-03-06/</guid><description>&lt;p&gt;🕯 R.I.P &lt;a href="https://zh.wikipedia.org/wiki/%E5%90%B3%E5%AD%9F%E9%81%94"&gt;达叔&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have finished the following books:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Computer Systems: A Programmer&amp;rsquo;s Perspective&lt;/li&gt;
&lt;li&gt;Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading"&gt;Reading&lt;/h2&gt;
&lt;h3 id="为了游戏世界里沉默的少数派她已经迈出了第一步---少数派"&gt;&lt;a href="https://sspai.com/post/65349"&gt;为了游戏世界里沉默的少数派，她已经迈出了第一步 - 少数派&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;多一些对少数群体的体谅。&lt;/p&gt;
&lt;h3 id="logseq"&gt;&lt;a href="https://github.com/logseq/logseq"&gt;logseq&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Recommended by &lt;a href="https://twitter.com/doitian/status/1367478486055739396"&gt;@laike9m&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A privacy-first, open-source(frontend now, backend later) platform for knowledge sharing and management.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Inspired by Roam Research, Workflowy, and Emacs org-mode.&lt;/p&gt;
&lt;h3 id="how-to-move-your-team-toward-async-first-communication"&gt;&lt;a href="https://blog.doist.com/async-first/"&gt;How to Move Your Team Toward Async-First Communication&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Async communication is about allowing team members to “consume and respond to messages on their own time instead of on the sender’s schedule.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="如何更好地保护手机数据隐私这-10-款-app-你可能用得上---少数派"&gt;&lt;a href="https://sspai.com/post/65277"&gt;如何更好地保护手机数据隐私？这 10 款 App 你可能用得上 - 少数派&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;EXIF，打码，网络浏览痕迹，临时手机号和邮箱&lt;/p&gt;
&lt;h3 id="andrew-ng-advice-on-reading-research-papers"&gt;&lt;a href="https://www.youtube.com/watch?v=733m6qBH-jI"&gt;Andrew Ng Advice on Reading Research Papers&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Compile list of papers and articles.&lt;/li&gt;
&lt;li&gt;Skip around the list. Read 10% of each paper and choose the ones worth the time to delve into.&lt;/li&gt;
&lt;li&gt;The bad way is reading from the first word to the last word.
&lt;ul&gt;
&lt;li&gt;Read the title, the abstract, and the figures.&lt;/li&gt;
&lt;li&gt;Read the intro, the conclusions, all figures and skim the rest.&lt;/li&gt;
&lt;li&gt;Skim related work.&lt;/li&gt;
&lt;li&gt;Read the paper but skip the math.&lt;/li&gt;
&lt;li&gt;Read whole things &lt;strong&gt;but skip parts that don&amp;rsquo;t make sense&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Read to answer the questions:
&lt;ul&gt;
&lt;li&gt;What did authors try to accomplish.&lt;/li&gt;
&lt;li&gt;What can you use yourself?&lt;/li&gt;
&lt;li&gt;What other references do you want to follow?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Math and code:
&lt;ul&gt;
&lt;li&gt;Re-derive/Re-implement from scratch.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="github-skyline"&gt;GitHub Skyline&lt;/h3&gt;
&lt;p&gt;Turn the contributions chart to a 3D model. &lt;a href="https://skyline.github.com/doitian/2020"&gt;Here&lt;/a&gt; is mine in 2020.&lt;/p&gt;
&lt;h3 id="foundational-distributed-systems-papers"&gt;&lt;a href="http://muratbuffalo.blogspot.com/2021/02/foundational-distributed-systems-papers.html"&gt;Foundational distributed systems papers&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A curated list of papers.&lt;/p&gt;
&lt;h3 id="conway"&gt;&lt;a href="https://en.wikipedia.org/wiki/Conway%27s_law"&gt;Conway&amp;rsquo;s law - Wikipedia&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization&amp;rsquo;s communication structure.&lt;/p&gt;
&lt;p&gt;— Melvin E. Conway&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="mistakes-i"&gt;&lt;a href="https://css-tricks.com/mistakes-ive-made-as-an-engineering-manager/"&gt;Mistakes I&amp;rsquo;ve Made as an Engineering Manager&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Mistake 1: Thinking people give feedback the way they want to receive it&lt;/li&gt;
&lt;li&gt;Mistake 2: Trying to do everything yourself as a manager is the best way to help&lt;/li&gt;
&lt;li&gt;Mistake 3: Communicating something one time is enough&lt;/li&gt;
&lt;li&gt;Mistake 4: You have to have everything together all the time&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="people-who-adopt-these-5-verbal-habits-in-2021-have-very-high-emotional-intelligence"&gt;&lt;a href="https://www.inc.com/bill-murphy-jr/people-who-adopt-these-5-verbal-habits-in-2021-have-very-high-emotional-intelligence.html"&gt;People Who Adopt These 5 Verbal Habits in 2021 Have Very High Emotional Intelligence&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&amp;ldquo;Tell me more.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Thanks for your understanding.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Hello.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Am I making sense?&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Absolutely nothing.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="卡片笔记法roam-research-与个人笔记体系的建立拯救写过就忘---少数派"&gt;&lt;a href="https://sspai.com/post/65224"&gt;卡片笔记法、Roam Research 与个人笔记体系的建立——拯救「写过就忘」 - 少数派&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;无论是写永久笔记还是瞬时笔记，把句子写得尽量清楚、完整。这样在回顾笔记的时候自己的想法一目了然。&lt;/li&gt;
&lt;li&gt;把所有的链接性语句也完整地写下来，这个过程可以更好地帮助自己发现思考中的漏洞，使得笔记内容更加严谨。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funny"&gt;Funny&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/breathing_funny/status/1365445702126501896"&gt;当你很享受很喜欢这份礼物时，却发现这不是给你准备的&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2021-02-27</title><link>https://blog.iany.me/journal/2021/02/what-i-touched-this-week-2021-02-27/</link><pubDate>Sat, 27 Feb 2021 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2021/02/what-i-touched-this-week-2021-02-27/</guid><description>&lt;p&gt;I have read 2 books:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extreme Ownership, by Jocko Willink and Leif Babin.&lt;/li&gt;
&lt;li&gt;Ikigai: The Japanese Secret to a Long and Happy Life, by Hector Garcia and Francesc Miralles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Extreme Ownership&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A leader must take the responsibility of team failures.&lt;/li&gt;
&lt;li&gt;A leader must help the team to reach high standards.&lt;/li&gt;
&lt;li&gt;A leader has to admit her own mistakes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Ikigai&lt;/p&gt;
&lt;p&gt;Ikigai means having a life purpose.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finding your Ikigai&lt;/li&gt;
&lt;li&gt;Finding Flow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ GNU Parallel&lt;/p&gt;
&lt;p&gt;&lt;a href="https://opensource.com/article/18/5/gnu-parallel"&gt;GNU Parallel&lt;/a&gt; is similar to &lt;code&gt;xargs&lt;/code&gt; but runs commands in parallel.&lt;/p&gt;
&lt;p&gt;┌ GitHub Actions Manual Trigger&lt;/p&gt;
&lt;p&gt;GitHub Actions can add &lt;a href="https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/"&gt;manual triggers&lt;/a&gt;. This &lt;a href="https://github.com/yihong0618/gitblog/issues/198"&gt;article&lt;/a&gt; introduces the API to fire the trigger.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;curl -H &amp;quot;Content-Type:application/json&amp;quot; \
-H &amp;quot;Authorization: token $GITHUB_ACCESS_TOKEN&amp;quot; \
-X POST -d '{&amp;quot;inputs&amp;quot;: {}, &amp;quot;ref&amp;quot;:&amp;quot;master&amp;quot;}' \
&amp;quot;https://api.github.com/repos/$ORG/$REPO/actions/workflows/$ACTION_ID/dispatches&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;┌ &lt;a href="https://blog.doist.com/ask-doist-student-productivity/"&gt;Ask Doist: How Can I Stay Productive and Organized as a Student While Maintaining Work-Life Balance&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Focus on the hard things. Get out of the comfort zones.&lt;/li&gt;
&lt;li&gt;Combine school and relationships by studying together.&lt;/li&gt;
&lt;li&gt;Take care of your home on breaks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ &lt;a href="https://stackoverflow.com/questions/6070179/switching-branches-without-touching-the-working-tree"&gt;Git - Switching Branches Without Touching the Working Tree&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git symbolic-ref HEAD refs/heads/debug-branch
git reset
&lt;/code&gt;&lt;/pre&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2021-02-21</title><link>https://blog.iany.me/journal/2021/02/what-i-touched-this-week-2021-02-21/</link><pubDate>Sun, 21 Feb 2021 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2021/02/what-i-touched-this-week-2021-02-21/</guid><description>&lt;p&gt;I published 2 posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2021/02/install-macos-big-sur-in-2021/"&gt;♯ Install macOS Big Sur in 2021&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2021/02/ssh-authentication-using-a-yubikey-on-windows-and-the-openssh-client/"&gt;♯ SSH Authentication Using a YubiKey on Windows And the OpenSSH Client&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;During the holiday, I have migrated my information hub from Diigo to Readwise.&lt;/p&gt;
&lt;p&gt;┌ &lt;a href="https://www.reclipped.com/"&gt;Reclipped&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Reclipped is a tool to take timestamped notes on videos. It supports popular video platforms, such as YouTube and Vimeo.&lt;/p&gt;
&lt;p&gt;┌ Hashed and Hierarchical Timing Wheels&lt;/p&gt;
&lt;p&gt;Keeping a lot of timers is a common problem in many distributed system. The paper “Hashed and Hierarchical Timing Wheels: Data Structures for the Efficient Implementation of a Timer Facility – Varghese &amp;amp; Lauck 1987” has listed 7 data structures and recommended the last two: Hashing Wheel with Unordered Timer Lists and Hierarchical Timing Wheels.&lt;/p&gt;
&lt;p&gt;The morning paper has a good &lt;a href="https://blog.acolyer.org/2015/11/23/hashed-and-hierarchical-timing-wheels/"&gt;summary&lt;/a&gt; and &lt;a href="https://reclipped.com/docs?q=uri:https:%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DAftX7rqx-Uc"&gt;this video&lt;/a&gt; have listed several implementations.&lt;/p&gt;
&lt;p&gt;┌ &lt;a href="https://en.pingcap.com/blog/how-to-efficiently-choose-the-right-database-for-your-applications"&gt;How to Efficiently Choose the Right Database for Your Applications&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this post, the author shared two decision trees to choose SQL and NoSQL databases. He also shared some tips for choosing a database.&lt;/p&gt;
&lt;p&gt;┌ &lt;a href="https://blog.doist.com/daily-schedule/"&gt;How to Craft the Perfect Daily Schedule (According to Science)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Know your energy pattern and match your tasks to your energy.&lt;/p&gt;
&lt;p&gt;┌ &lt;a href="https://software.rajivprab.com/2021/02/04/mutation-driven-testing-when-tdd-just-isnt-good-enough/"&gt;Mutation Driven Testing – When TDD Just Isn’t Good Enough&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Write tests and ensure they all pass.&lt;/p&gt;
&lt;p&gt;Repeat following procedure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mutate the code to introduce some bugs.&lt;/li&gt;
&lt;li&gt;Check whether the bug is captured by test. If not, modify the existing test cases or add new ones.&lt;/li&gt;
&lt;li&gt;Revert the bugs and ensure test is green again.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ &lt;a href="https://queue.acm.org/detail.cfm?id=2839461"&gt;Fail at Scale - ACM Queue&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ben Maurer shared several software reliability techniques used in Facebook.&lt;/p&gt;
&lt;p&gt;┌ &lt;a href="https://web.archive.org/web/20220205173824/https://fabxc.org/tsdb/"&gt;Writing a Time Series Database from Scratch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fabian Reinartz introduced how he designed the V3 storage structure of Prometheus.&lt;/p&gt;
&lt;p&gt;The essential of the design is splitting the data by time ranges.&lt;/p&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2021-02-06</title><link>https://blog.iany.me/journal/2021/02/what-i-touched-this-week-2021-02-06/</link><pubDate>Sat, 06 Feb 2021 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2021/02/what-i-touched-this-week-2021-02-06/</guid><description>&lt;p&gt;Picks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://copyconstruct.medium.com/monitoring-in-the-time-of-cloud-native-c87c7a5bfa3e"&gt;Monitoring in the time of Cloud Native | by Cindy Sridharan | Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Observability is about the ability to let maintainers understand how the system behaves in the production. It&amp;rsquo;s a super set of monitoring. Observability makes debugging possible in production.&lt;/p&gt;
&lt;p&gt;Three pillars of observability:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;li&gt;Metrics&lt;/li&gt;
&lt;li&gt;Traces&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/copyconstruct/status/1354557112731357191"&gt;@copyconstruct: Hashed and Hierarchical Timing Wheels: Data Structures for the Efficient Implementation of a Timer Facility, paper from 1987 that’s used in Kafka and rust’s tokio library.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The thread has listed several timing wheels implementations and a &lt;a href="https://youtu.be/AftX7rqx-Uc"&gt;seminar video&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://kb.iany.me/para/lets/m/macOS/Set&amp;#43;Up&amp;#43;a&amp;#43;New&amp;#43;Mac"&gt;Set Up a New Mac&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://chriskiehl.com/article/thoughts-after-6-years"&gt;Software development topics I&amp;rsquo;ve changed my mind on after 6 years in the industry&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Clever code isn&amp;rsquo;t usually good code. Clarity trumps all other concerns.&lt;/li&gt;
&lt;li&gt;So called &amp;ldquo;best practices&amp;rdquo; are contextual and not broadly applicable. Blindly following them makes you an idiot&lt;/li&gt;
&lt;li&gt;Designing scalable systems when you don&amp;rsquo;t need to makes you a bad engineer.&lt;/li&gt;
&lt;li&gt;In general, RDBMS &amp;gt; NoSql&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="devops"&gt;DevOps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://honeycomb.io/blog/dynamic-sampling-by-example"&gt;Dynamic Sampling by Example&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lightstep.com/"&gt;The DevOps observability platform | Lightstep&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scoutapm.com/"&gt;Application Monitoring for Ruby, PHP, Node.js, Python, and Elixir ~ Scout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://opentelemetry.io/"&gt;OpenTelemetry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sre.google/sre-book/monitoring-distributed-systems/"&gt;Site Reliability Engineering - Monitoring Distributed Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3820814357"&gt;Distributed Systems Observability&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=P4bQEvuNapk"&gt;芯片工程师的一天 | 我如何每天高效工作12小时？【经验分享】&lt;/a&gt;
一个普通芯片工程师在家高效工作的一天，从早8点到凌晨1点半，分享一下保持高效工作和学习的6个方法和技巧。 欢迎关注我的频道“老石谈芯”，我会持续带来更多专注于芯片的科普、硬核知识、以及偶尔极度硬核的技术分析与解读，我也会不断分享高效工作和学习的方法与技巧。更多内容，也欢迎关注公众号和微博。 公众号：老石谈芯 微博：老石谈芯的老石 Music: Ikson - Paradise&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="computer-setup"&gt;Computer Setup&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://alabeduarte.com/new-env-setup/"&gt;Setting up a new machine | Alabê&amp;rsquo;s Blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use brew bundle to restore Homebrew packages:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ brew bundle dump --file=Brewfile
$ brew bundle --file=Brewfile
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hearnofficial.medium.com/how-to-use-short-passwords-on-macos-mojave-4-characters-not-required-4c66a54183eb"&gt;How To Use Short Passwords On MacOS Big Sur. 4 Characters Not Required. (Updated) | by CHARLES HEARN | Medium&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pwpolicy -clearaccountpolicies
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://support.yubico.com/hc/en-us/articles/360016649059-Using-Your-YubiKey-as-a-Smart-Card-in-macOS"&gt;Using Your YubiKey as a Smart Card in macOS – Yubico&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To turn off the pairing user interface in macOS&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sc_auth pairing_ui -s disable
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="economics"&gt;Economics&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/pulse/what-i-really-think-bitcoin-ray-dalio"&gt;Ray Dalio: What I Really Think of Bitcoin&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Bitcoin is one hell of an invention&lt;/li&gt;
&lt;li&gt;there being a growing need for money or storehold of wealth assets that are limited in supply&lt;/li&gt;
&lt;li&gt;there is also a growing need for assets that can be privately held.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://f-droid.org/en/packages/im.vector.app/"&gt;Element (Riot.im) | F-Droid - Free and Open Source Android App Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/64819"&gt;逆「流」而动——如何建立你的数字音乐收藏&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spacy.io/"&gt;spaCy · Industrial-strength Natural Language Processing in Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/64837"&gt;9 件创意好物，情人节送 TA 也能送自己&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mecabricks.com/en/"&gt;Mecabricks.com&lt;/a&gt; Lego models.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funny"&gt;Funny&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/ashu_eth/status/1356231490997084160"&gt;@Aaaaaa_Shu: 已经出现超越 Bitcoin 的代币&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/andelf/status/1356138271638577152"&gt;@andelf: 给吃货的命令行上手指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-12-06</title><link>https://blog.iany.me/journal/2020/12/what-i-touched-this-week-2020-12-06/</link><pubDate>Sun, 06 Dec 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/12/what-i-touched-this-week-2020-12-06/</guid><description>&lt;p&gt;I have been setting up the QNAP NAS this week.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Emby as the media server.&lt;/li&gt;
&lt;li&gt;Install Transmission via Container Station for BT.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://changelog.com/posts/the-new-changelog-setup-for-2020"&gt;The new changelog.com setup for 2020&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/63736"&gt;权力和算法：电影革命要革谁的命？ - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ethresear.ch/t/dos-vectors-in-account-abstraction-aa-or-validation-generalization-a-case-study-in-geth/7937"&gt;DoS Vectors in Account Abstraction (AA) or Validation Generalization, a Case Study in Geth - Eth1.x Research - Ethereum Research&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/MpB-yYRzQOZh2MNKYPMfVA"&gt;以太坊 Layer 2 生态如何站队？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/Hl2J5qsvj_C4j7I2o8cyYw"&gt;观点 | 以太坊的路线图应该改变吗？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-10-11</title><link>https://blog.iany.me/journal/2020/10/what-i-touched-this-week-2020-10-11/</link><pubDate>Sun, 11 Oct 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/10/what-i-touched-this-week-2020-10-11/</guid><description>&lt;p&gt;Picks:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://medium.com/3pm-lab/marty-cagan-producttank-taipei-speech-933e7dfc13af"&gt;做產品真是哭夭難！ — Marty Cagan 演講 70 分鐘中文逐字翻譯 | by Jason HOU&lt;/a&gt; (&lt;a href="https://medium.com/3pm-lab/marty-cagan-producttank-taipei-speech-qna-f4c9a6434c7c"&gt;Q&amp;amp;A 中文逐字翻譯&lt;/a&gt; | &lt;a href="https://www.youtube.com/watch?v=99go9sKp70I"&gt;Video&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="product"&gt;Product&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.producttalk.org/2016/08/opportunity-solution-tree/"&gt;Why This Opportunity Solution Tree is Changing the Way Product Teams Work&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Work along both dimensions of product discovery&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;discovering opportunities&lt;/li&gt;
&lt;li&gt;discovering solutions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://svpg.com/flavors-of-prototypes/"&gt;Flavors of Prototypes&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There are in fact many very different forms of prototypes, each with different characteristics and each suited to testing different things.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://matklad.github.io//2020/10/03/fast-thread-locals-in-rust.html"&gt;Fast Thread Locals In Rust&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rust thread-locals are slower than they could be.&lt;/li&gt;
&lt;li&gt;Rust allows cross-language &lt;a href="https://doc.rust-lang.org/rustc/linker-plugin-lto.html"&gt;&lt;strong&gt;L&lt;/strong&gt;ink &lt;strong&gt;T&lt;/strong&gt;ime &lt;strong&gt;O&lt;/strong&gt;ptimization&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://tarquin-the-brave.github.io/blog/posts/rust_use_statements/"&gt;Why I Scatter Use Statements Throughout My Rust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I support limiting the scope of the extension traits:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-rust"&gt;let input: Data = {
use anyhow::Context as _;
serde_yaml::from_reader(std::io::stdin()).context(&amp;quot;couldn't read stdin&amp;quot;)?
};
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://samcurry.net/hacking-apple/"&gt;We Hacked Apple for 3 Months: Here’s What We Found&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting-stuff"&gt;Interesting Stuff&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1314481306852626433"&gt;有三分钟热度就有三分钟收获&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-09-26</title><link>https://blog.iany.me/journal/2020/09/what-i-touched-this-week-2020-09-26/</link><pubDate>Sat, 26 Sep 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/09/what-i-touched-this-week-2020-09-26/</guid><description>&lt;p&gt;My picks&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://jamesmcm.github.io/blog/2020/07/25/intro-dod/"&gt;An introduction to Data Oriented Design with Rust - Statistically Insignificant&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This article introduces several data-oriented patterns for better performance.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zapier.com/blog/how-to-deprioritize/"&gt;The art of deprioritization&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can&amp;rsquo;t have more than one top priority. You just can&amp;rsquo;t. Deciding to prioritize one thing means, by definition, deciding not to prioritize something else.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="techniques"&gt;Techniques&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://decentralizedthoughts.github.io/2020-09-19-living-with-asynchrony-brachas-reliable-broadcast/"&gt;Living with Asynchrony: Bracha&amp;rsquo;s Reliable Broadcast&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is one of the most important build blocks for Byzantine Fault Tolerant protocols in the Asynchronous model.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/8130692/how-can-query-string-parameters-be-forwarded-through-a-proxy-pass-with-nginx"&gt;How can query string parameters be forwarded through a proxy_pass with nginx? - Stack Overflow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Query args must be forwarded manually on location block matched by regex.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; proxy_pass http://apache/$1$is_args$args;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://matklad.github.io/2020/09/20/why-not-rust.html"&gt;Why Not Rust?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Situations when Rust is not a proper choice.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="painting"&gt;Painting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=kbKqIJcIUCw"&gt;【Krenz】繪畫地圖：一節課解析繪畫學習路徑，萌新從此不走彎路&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;关键词：&lt;strong&gt;准确&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;抽象能力，不同层级采用不同的抽象。容易模块化创建记忆库，而通过模块的组合就能进行创造。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=RA7Uud9gky4"&gt;Modeling &amp;amp; Painting Process - Piano&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A fancy piano modeled in Blender.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.adaic.org"&gt;Ada programming language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/62379"&gt;10 个 macOS 免费小工具，能帮你省下一大笔钱&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting-stuff"&gt;Interesting Stuff&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=8F9jXYOH2c0"&gt;Top Soccer Shootout Ever With Scott Sterling (Original)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=oY2nVQNlUB8"&gt;Best Volleyball Blocks Ever with Scott Sterling&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-09-19</title><link>https://blog.iany.me/journal/2020/09/what-i-touched-this-week-2020-09-19/</link><pubDate>Sat, 19 Sep 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/09/what-i-touched-this-week-2020-09-19/</guid><description>&lt;p&gt;I have read the book &lt;a href="https://www.goodreads.com/review/show/3553759014"&gt;Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers&lt;/a&gt; and several other books about painting.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3553293627"&gt;Daily Painting: Paint Small and Often To Become a More Creative, Productive, and Successful Artist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3553765315"&gt;Perspective Made Easy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3553762796"&gt;Pencil Sketching&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My picks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://thevaluable.dev/cognitive-bias-software-development/"&gt;8 Cognitive Biases in Software Development&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;What are cognitive biases and how they can pop up in our work, as software developers.&lt;/li&gt;
&lt;li&gt;Different techniques to prevent these biases, to take more logical decisions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="technique"&gt;Technique&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://thewalrus.ca/how-algorithms-are-changing-what-we-read-online/"&gt;How Algorithms Are Changing What We Read Online&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But, on your phone, you scroll through what’s been selected for you. And that selection likely reflects a ruthless narrowing of editorial values and priorities.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://increment.com/apis/land-before-modern-apis/"&gt;The land before modern APIs&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When we’re trying to build the future, it’s extremely helpful to look to the past.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://matklad.github.io//2020/09/13/your-language-sucks.html"&gt;Your Language Sucks, It Doesn’t Matter&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This post describes the author&amp;rsquo;s own pet theory of programming languages popularity.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Languages generally become popular when they bring innovative runtime, or when they have runtime exclusivity. The quality of the language itself is secondary.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://knowitlabs.no/rust-2020-testing-4ab3d80112ba"&gt;Rust 2020: Testing&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the crate &lt;a href="https://github.com/asomers/mockall"&gt;&lt;code&gt;mockall&lt;/code&gt;&lt;/a&gt; to auto-generate a mocked implementation that I instantiate in my test.&lt;/li&gt;
&lt;li&gt;But it turns out you can still do this, using the nightly compiler! Enter &lt;a href="https://github.com/CodeSandwich/Mocktopus"&gt;Mocktopus&lt;/a&gt;, a module-level mocking library.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://alexliesenfeld.com/posts/mocking-http-services-in-rust/"&gt;Rust HTTP Testing with httpmock | Alex Liesenfeld&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;According to the comparison matrix the most complete package is currently provided by &lt;a href="https://github.com/alexliesenfeld/httpmock"&gt;httpmock&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@glaubercosta_11125/c-vs-rust-an-async-thread-per-core-story-28c4b43c410c"&gt;C++ vs Rust: an async Thread-per-Core story | by Glauber Costa | Sep, 2020 | Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/graninas/22ab535d2913311e47a742c70f1d2f2b/c4e1b25cefe673a0c1d1bec4c24690121f31fa21"&gt;What killed Haskell, could kill Rust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An interesting essay about what Rust community should avoid.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/62624"&gt;如何让便利贴成为效率工具？&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;便利贴的 11 个用法和三个使用技巧&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="painting"&gt;Painting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=OcaYSToD1Q0"&gt;Affinity Designer iPad Node tool | Understanding how it works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=6vapw6n6FyU"&gt;Mind-Blowing Realistic Shading Tricks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-09-12</title><link>https://blog.iany.me/journal/2020/09/what-i-touched-this-week-2020-09-12/</link><pubDate>Sat, 12 Sep 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/09/what-i-touched-this-week-2020-09-12/</guid><description>&lt;p&gt;Last week picks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.doist.com/productivity-shame/"&gt;Productivity Shame: How To Stop Feeling Like You Haven&amp;rsquo;t Done &amp;lsquo;Enough&amp;rsquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.deprocrastination.co/blog/how-to-stop-procrastinating-by-using-the-fogg-behavior-model"&gt;How to stop procrastinating by using the Fogg Behavior Model&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Behavior = Motivation + Ability + Trigger&lt;/p&gt;
&lt;p&gt;The key is that we need to have all three at the same time in order to act.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.deprocrastination.co/blog/how-to-stop-procrastinating-by-using-the-fogg-behavior-model-part-2"&gt;How to stop procrastinating by using the Fogg Behavior Model - Part 2.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Removing any of three factors can avoid doing something.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/62340"&gt;如何读书更有效？——我的阅读经验&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/62337"&gt;如何做好复盘？这是我的经验&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/62521"&gt;不要只学「表面知识」&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不要停留在「表面知识」，而是应该追根溯源，理解它，亲手去尝试。做出丑陋的东西，让自己清楚地认识到他很丑，然后做出有进步的东西，认识到他仍然很丑，然后再让他进步一点点，你的审美才能以这种方法有效率地正确提升。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;p&gt;Bitcoin&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.coindesk.com/bitcoin-nodes-need"&gt;What Are Bitcoin Nodes and Why Do We Need Them?&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the number of nodes on the network is dropping, and core developers believe it may continue to do so.&lt;/li&gt;
&lt;li&gt;running a bitcoin node does not provide any incentive.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ethereum&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@danrobinson/ethereum-is-a-dark-forest-ecc5f0505dff"&gt;Ethereum is a Dark Forest&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Arbitrage bots monitor pending transactions and attempt to exploit profitable opportunities created by them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@pintail/ethereum-fee-market-reform-eip-1559-as-a-question-of-fairness-567c52dac017"&gt;Ethereum fee market reform: EIP-1559 as a question of fairness&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://notes.ethereum.org/@axic/evm384"&gt;EVM384 – Can we do Fast Crypto in EVM? - HackMD&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DeFi&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.0xproject.com/scaling-defi-layer-one-7eeb24aca4f0"&gt;Scaling DeFi — Layer One&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/coinmonks/should-you-use-uniswap-v1-or-v2-70f8e6cb3c2c"&gt;Should you use Uniswap v1 or v2?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/AruRlEa9m6R7llEs7Jb9mg"&gt;分叉史罕见案例：为什么YFII能取得成功？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="software"&gt;Software&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Windows 解压非 UTF-8 中文文件名的 zip 包&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;7z x files.zip -mcp=936
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="painting"&gt;Painting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=MnQO-xxp3j4"&gt;How To Color Sketches In Procreate w/o Using Outlines!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jepsen-io/jepsen"&gt;jepsen-io/jepsen: A framework for distributed systems verification, with fault injection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.uefa.tv"&gt;UEFA.tv&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting"&gt;Interesting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1302266917852381184"&gt;@kevinzhow: 看完了这个诺兰的知识预热，极大的提升了本次信条的观后体验&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-09-05</title><link>https://blog.iany.me/journal/2020/09/what-i-touched-this-week-2020-09-05/</link><pubDate>Sat, 05 Sep 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/09/what-i-touched-this-week-2020-09-05/</guid><description>&lt;p&gt;I have been reading the book &lt;em&gt;Zero to Monero: Second Edition&lt;/em&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/09/monero-dynamic-block-weight/"&gt;♯ Monero Dynamic Block Weight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.xmind.net/m/dtiuxs/"&gt;An index that links transaction fields with the related chapters in Zero to Monero: Second Version&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I started to study TLA+ from the last week.&lt;/p&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bitcoin.stackexchange.com/questions/98392/whats-the-most-efficient-way-to-create-a-raw-transaction-with-a-specific-fee-ra/98394#98394"&gt;Answer: What&amp;rsquo;s the most efficient way to create a raw transaction with a specific fee rate?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;References of Coin Selection algorithms.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="management"&gt;Management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1300099772959907841"&gt;@b0rk: what to talk about in 1:1s&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/paper-based-task-management/"&gt;Paper beats app: How this software company uses analog tools to get things done&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="painting"&gt;Painting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=35rju_APLqQ"&gt;12 x DIGITAL DRAWING exercise | Get better at digital drawing&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=mBI-i0ivD8s"&gt;7 iPad Apps Every Artist Needs (that are not drawing apps)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Manikin, Cooler, Board&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;p&gt;Some UI libraries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/spectresystems/spectre.console"&gt;spectresystems/spectre.console: A library that makes it easier to create beautiful console applications.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/willmcgugan/rich"&gt;willmcgugan/rich: Rich is a Python library for rich text and beautiful formatting in the terminal.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arwes.dev"&gt;Arwes - Sci-Fi Web UI Framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-08-29</title><link>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-29/</link><pubDate>Sat, 29 Aug 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-29/</guid><description>&lt;p&gt;I did research on Blockchain timestamp and timejacking attack last week.&lt;/p&gt;
&lt;p&gt;I have completed the course &lt;a href="http://web.stanford.edu/class/cs166/"&gt;Stanford CS166&lt;/a&gt; and shared &lt;a href="https://www.dropbox.com/sh/xztn2u8wq0x1n52/AADHN-itkC2jAEQTvr0e3KwFa?dl=0"&gt;my notes&lt;/a&gt; via Evernote.&lt;/p&gt;
&lt;h2 id="blockchain-timestamp-research"&gt;Blockchain Timestamp Research&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://talk.nervos.org/t/discussion-on-ckb-block-timestamp-improvements/4916"&gt;Discussion on CKB Block Timestamp Improvements&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.bitmex.com/bitcoins-block-timestamp-protection-rules/"&gt;Bitcoin’s Block Timestamp Protection Rules | BitMEX Blog&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Two hours is only a small fraction of the difficulty adjustment cycle, two weeks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://culubas.blogspot.com/2011/05/timejacking-bitcoin_802.html"&gt;culubas: Timejacking &amp;amp; Bitcoin&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Block timestamp is valid if
&lt;ul&gt;
&lt;li&gt;it is greater than median of previous 11 blocks&lt;/li&gt;
&lt;li&gt;it is less than or equal to network time + 2h&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Network time = local time + median offset from 5~200 peers
&lt;ul&gt;
&lt;li&gt;Max allowed adjustment is 70 minutes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Poison Pill&amp;rdquo; Block
&lt;ul&gt;
&lt;li&gt;Make a group of nodes 70 minutes faster, the target 70 minutes slower. That&amp;rsquo;s a 140 minutes gap, and the max allowed future block time offset is 2 hours.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Solutions
&lt;ul&gt;
&lt;li&gt;Use the node&amp;rsquo;s system time instead of the network time to determine the upper limit of block timestamps and when creating blocks.&lt;/li&gt;
&lt;li&gt;Tighten the acceptable time ranges.&lt;/li&gt;
&lt;li&gt;The node&amp;rsquo;s network time could be restricted to a value within 30 minutes.&lt;/li&gt;
&lt;li&gt;Use only trusted peers.&lt;/li&gt;
&lt;li&gt;Use the median block chain time exclusively when validating blocks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bitcoin.stackexchange.com/questions/98392/whats-the-most-efficient-way-to-create-a-raw-transaction-with-a-specific-fee-ra"&gt;wallet - What&amp;rsquo;s the most efficient way to create a raw transaction with a specific fee rate? - Bitcoin Stack Exchange&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Coin selection algorithms.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/OBlZEYmrr8HoP1vA7z21Ig"&gt;探索 DeFi 世界下一个宝藏领域：加密原生保险的机遇和挑战&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;「投机」在这里具备积极的社会意义：有助于为寻求「真实」投保范围的人实现流动市场的&lt;strong&gt;冷启动&lt;/strong&gt;，并为不同 DeFi 元素的安全性提供了&lt;strong&gt;晴雨表&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/PymTIDU7LnWQU8_YZIdEDQ"&gt;探索流动性挖矿的设计空间&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;谁获得奖励&lt;/li&gt;
&lt;li&gt;他们都获得多少奖励&lt;/li&gt;
&lt;li&gt;他们什么时候获得奖励&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/wFEhOJSs2cZrfojRJY2htg"&gt;2020年币圈下半场投资主题：公链的桥化和侧链化趋势&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/_vj2TDc-lMXsm0rZArNAbw"&gt;以太坊免费时代之死：智能钱包的机遇和挑战&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/enneagram-and-work/"&gt;Productivity Advice, Based on Your Enneagram Personality Type&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting"&gt;Interesting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ovJcsL7vyrk"&gt;This equation will change how you see the world (the logistic map)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.theverge.com/2020/8/27/21403760/ikea-lego-storage-boxes-bygglek-availability"&gt;Ikea and Lego built the storage boxes of your dreams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/62286"&gt;返校季 | 有壶热水就能做，顶饱又方便的宿舍美食&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/62308"&gt;比奶茶和快乐水更清凉低卡，用这杯冷泡茶留住你的夏天 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-08-22</title><link>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-22/</link><pubDate>Sat, 22 Aug 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-22/</guid><description>&lt;p&gt;I have posted:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/08/bitcoin-core-fee-estimate-algorithm/"&gt;♯ Bitcoin Core Fee Estimate Algorithm&lt;/a&gt;, a study on the fee estimate algorithm implemented in Bitcoin Core.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1295697713179361281"&gt;Illustration of &amp;ldquo;Bitcoin - New attack against LN payment atomicity related to Fee Bumping&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have finished three books&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/2726491992"&gt;Deep Work: Rules for Focused Success in a Distracted World&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3500653338"&gt;The Essentials of Modern Software Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3508955076"&gt;Measure What Matters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="okr"&gt;OKR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.trello.com/okrs-set-achieve-track-trello"&gt;All About OKRs: How To Set Them, Achieve Them, And Track Them In Trello&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/yousefghandour/okrs-brainstorming-canvas-c1b6e5f650a7"&gt;OKRs Brainstorming Canvas. OKR Brainstorming Canvas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.garyfox.co/canvas-models/okr-canvas-pdf-templates/"&gt;OKR Canvas - How To Harness Google&amp;rsquo;s Way Of Working&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dannorth.net/2017/05/01/applying-okrs/"&gt;Applying OKRs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/child-development-strategies-in-remote-work/"&gt;Collaborate like a kid: What preschoolers can teach us about adjusting to remote work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20210121055049/http://blog.thomasyao.wtf/2020/08/to-learn-computer-science-the-old-fashioned-way/"&gt;To Learn Computer Science the Old-Fashioned Way&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Learn what operating system really is first.&lt;/li&gt;
&lt;li&gt;Try out &lt;a href="http://www.linuxfromscratch.org/"&gt;Linux From Scratch&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Programming is Data Structure + Algorithm&lt;/li&gt;
&lt;li&gt;A true engineer need to know how things work and be creative&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Computer Systems: A Programmer’s Perspective&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting"&gt;Interesting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/61987"&gt;电影《星际穿越》中若干有趣的科学故事&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1295382377536069634"&gt;@DJIGlobal: On the plus side, if 2020 is the year the world ends, we&amp;rsquo;ll have some incredible shots of it&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1295434768763543552"&gt;@engineers_feed: Worth watching until the end&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/pingcap/tipocket"&gt;pingcap/tipocket: A toolkit for testing TiDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mysudo.com"&gt;MySudo - Email and Phone Number Proxy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-08-15</title><link>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-15/</link><pubDate>Sat, 15 Aug 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-15/</guid><description>&lt;p&gt;The picks&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.denizcemonduygu.com/philo/browse/"&gt;History of Philosophy - Summarized &amp;amp; Visualized&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is amazing and shows the power of linked notes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.ted.com/talks/laura_vanderkam_how_to_gain_control_of_your_free_time"&gt;TED - Laura Vanderkam: How to gain control of your free time&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you value something, plan in advance and ensure they have the highest priority.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.coindesk.com/two-reasons-cryptos-bull-market-is-coming"&gt;Two Reasons Crypto’s Bull Market Is Coming&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One will involve the rotation of capital from zombie projects to protocols where the underlying product is actually being used and accruing value.&lt;/li&gt;
&lt;li&gt;Decentralized finance (DeFi) is outshining alts&lt;/li&gt;
&lt;li&gt;The second bull market will be led by the usual suspect, bitcoin.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/p6WN2R9E6QkQrmHXKJkdWg"&gt;Echo | 工作量证明本质上是一个去中心化时钟&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工作量证明时钟提供滴答声&lt;/li&gt;
&lt;li&gt;使用区块作为 SHA256 输入把区块和时钟的滴答声联系在了一起&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/coinmonks/the-downside-of-daos-cdb91fd24376"&gt;The Downside of DAOs&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DAOs are meant to be run by the average user, but the reality seems to be that venture capital firms and other powerful investors rule the day for now.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@bramcohen/the-inevitable-demise-of-unconfirmed-bitcoin-transactions-8b5f66a44a35"&gt;The inevitable demise of unconfirmed Bitcoin transactions | by Bram Cohen | Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This article introduces two ways to exploit zeroconf transactions and the emerged problems relying on zeroconf transactions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/busywork-productivity-focus/"&gt;How to Vanquish Busywork and Spend More Time on What Matters&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Outsource&lt;/li&gt;
&lt;li&gt;Create templates where necessary&lt;/li&gt;
&lt;li&gt;Batch and single-task&lt;/li&gt;
&lt;li&gt;Change of scenery&lt;/li&gt;
&lt;li&gt;The art of saying “no”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://matklad.github.io//2020/08/12/who-builds-the-builder.html"&gt;Who Builds the Builder?&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TL;DR: if you have &lt;code&gt;Foo&lt;/code&gt; and &lt;code&gt;FooBuilder&lt;/code&gt;, consider adding a &lt;code&gt;builder&lt;/code&gt; method to &lt;code&gt;Foo&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.loadmill.com/7-reasons-why-your-staging-environment-sucks-953f8504fba3"&gt;7 Reasons Why Your Staging Environment Sucks&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your staging environment is not architecturally representative of your production environment.&lt;/li&gt;
&lt;li&gt;You only keep it running for a few minutes.&lt;/li&gt;
&lt;li&gt;You are not monitoring the staging behavior.&lt;/li&gt;
&lt;li&gt;It doesn’t contain real data.&lt;/li&gt;
&lt;li&gt;Nothing is happening in it.&lt;/li&gt;
&lt;li&gt;It is not facing the Internet.&lt;/li&gt;
&lt;li&gt;It is missing the element of surprise.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="open-source"&gt;Open Source&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://opensource.com/article/20/8/documentation-open-source-projects"&gt;5 tips for making documentation a priority in open source projects&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="economics"&gt;Economics&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://m.huxiu.com/article/374513.html"&gt;谁扼住了华为：美日半导体霸权的三张牌&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;美国手握的两把利剑：芯片设备和设计工具。这两把剑又和日本的材料一起，组成了威力极强的美日半导体霸权三张牌：设备、工具和材料。&lt;/li&gt;
&lt;li&gt;一切都回到了任正非此前无数次强调的基础科学。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="product"&gt;Product&lt;/h2&gt;
&lt;p&gt;Ink &amp;amp; Switch has some ideas about how to use iPad efficiently.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.inkandswitch.com/capstone-manuscript.html"&gt;Capstone, a tablet for thinking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@hirodusk/the-ipad-as-a-fast-precise-tool-for-creativity-21384ea18659"&gt;The iPad as a fast, precise tool for creativity&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting"&gt;Interesting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1292710000528302081"&gt;@ghosTM55: 这是我见过最动听的骂人方法 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1292823111533035520"&gt;@MediumSizeMeech: Absolutely fucking DYING at the end of this commercial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pomodor.app/timer"&gt;Pomodor Productivity Timer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uk.gamesplanet.com"&gt;Gamesplanet: Game keys for Steam, Origin, Uplay, GOG and more&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastcompany.com/90529784/the-25-best-new-productivity-apps-for-2020"&gt;The 25 best new productivity apps for 2020&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tried-it-out.de/en/digital-planner-2020/"&gt;Digital Planner 2020 - Tried-It-Out.de&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://onplanners.com/templates"&gt;Digital Plan Templates&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-08-09</title><link>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-09/</link><pubDate>Sun, 09 Aug 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-09/</guid><description>&lt;p&gt;Recommended in the last week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/mental-fatigue/"&gt;What to Do When You’re Mentally Exhausted&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acknowledging that fatigue is a natural result of challenging your brain can be freeing in and of itself.&lt;/li&gt;
&lt;li&gt;Different ways to handle fatigue, such as diet, sleep, exercise and work methods.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://fortelabs.co/blog/the-automation-of-note-taking-and-the-just-in-time-future-of-work/"&gt;The Automation of Note-Taking and the Just-In-Time Future of Work&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[See nodes in] random combinations. We need to be able to shuffle our notes around to generate new insights.&lt;/li&gt;
&lt;li&gt;It’s now more important to do the opposite: finding information that contradicts or disconfirms what we know. Discovering information that contradicts what we currently believe is the new frontier of learning.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61776"&gt;我们究竟需要怎样的时间管理工具&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我发现最合适的还是以笔记软件为主、轻量提醒工具为辅的组合（目前我的组合是 Notion + Dislike）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61235"&gt;效率提升：让你一天多出几个小时的做事方法！&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;提前规划，统筹安排&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@kgale/efficiency-is-not-our-goal-7ab1e8476adb"&gt;Efficiency Is Not Our Goal&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Value total organizational throughput.&lt;/li&gt;
&lt;li&gt;[Pay attention to] how much coordination and agreement cost must be spent preventing inefficiency&lt;/li&gt;
&lt;li&gt;There are other times when throughput is damaged in pursuit of efficiency.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/todoist-guide-freelancers/"&gt;The Freelancer’s Guide to Todoist&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;According to a &lt;a href="https://www.upwork.com/press/economics/freelancing-and-the-economy-in-2019/"&gt;2019 UpWork study&lt;/a&gt;, 57 million Americans, or 35% of the U.S. population, do freelance work.&lt;/li&gt;
&lt;li&gt;Labels usage examples:
&lt;ul&gt;
&lt;li&gt;and an “amplify” label to share content created by peers you admire whose work you want to signal boost.&lt;/li&gt;
&lt;li&gt;Use labels like &lt;code&gt;$&lt;/code&gt;, &lt;code&gt;$$&lt;/code&gt;, or &lt;code&gt;$$$&lt;/code&gt; to differentiate which tasks and assignments have the highest earning potential so you can gauge the worth of a to-do at a glance.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.johndcook.com/blog/2020/07/25/worst-tool-for-the-job/"&gt;Advantages of not using the best tool for the job&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;if you need a tool, buy the cheapest one you can find. If it’s inadequate, or breaks, or you use it a lot, then buy the best one you can afford.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.fastcompany.com/90535318/this-simple-but-powerful-analog-method-will-rocket-your-productivity"&gt;This simple but powerful analog method will rocket your productivity&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If an idea has value, it will rise to the surface as more related notes emerge.&lt;/li&gt;
&lt;li&gt;Note links exponentially increase the value of the system.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61722"&gt;如何追求精力充沛的生活&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工作成果 = 工作效率 X 有效工作时间&lt;/li&gt;
&lt;li&gt;下一步我们能做的就是提高自己的工作效率，这就需要我们做好精力管理。&lt;/li&gt;
&lt;li&gt;应对不同场景，将自己的&lt;strong&gt;行为流程化&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Morning Routine 起到了心理暗示的效果，让我可以快速进入到工作状态中。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=T4u4nUsdJbs"&gt;How to Take a Digital Note, by Tiago Forte&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61633"&gt;如何打造个人核心竞争力&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="management"&gt;Management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Tj-lavaMkxU"&gt;Brief explanation of agile - This is Agile&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sizovs.net/2020/07/19/the-code-review/"&gt;Code review – from good to great&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In a team I sat next to, a junior developer asked a senior to conduct code review for a newly completed feature. According to the process, that Senior had to approve all changes going to production. Here is how it went: Senior: “No, I am busy.”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="software-development"&gt;Software Development&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://netflixtechblog.com/automated-canary-analysis-at-netflix-with-kayenta-3260bc7acc69"&gt;Automated Canary Analysis at Netflix with Kayenta&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Traffic is split between these two versions such that a portion of incoming requests are diverted to the canary.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.inkandswitch.com/local-first.html"&gt;Local-first software, You own your data, in spite of the cloud&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Most notably are the family of distributed systems algorithms called &lt;a href="https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type"&gt;Conflict-free Replicated Data Types&lt;/a&gt; (CRDTs).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.seanblanda.com/our-remote-work-future-is-going-to-suck/"&gt;Our remote work future is going to suck&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As COVID-19 continues to alter the way we live, there is a scramble to predict what our “new normal” will look like. After the virus fades away or, God help us, becomes a constant in our day-to-day life for years to come, which change brought on by the pandemic will stick?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eventually competing with the global talent market&lt;/li&gt;
&lt;li&gt;Remote enables you to be forgotten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dropbox.tech/infrastructure/how-we-migrated-dropbox-from-nginx-to-envoy"&gt;How we migrated Dropbox from Nginx to Envoy&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[Nginx,] although it is event-loop based, is it not fully non-blocking.&lt;/li&gt;
&lt;li&gt;Envoy uses threads instead of processes. It relies on libevent for event loop implementation. Envoy does not have any blocking IO operations in the event loop.&lt;/li&gt;
&lt;li&gt;Nginx showed higher long tail latencies. This was mostly due to event loops stalls under heavy I/O&lt;/li&gt;
&lt;li&gt;Envoy has the ability to stream access logs over gRPC.&lt;/li&gt;
&lt;li&gt;Envoy has control RPC.&lt;/li&gt;
&lt;li&gt;Envoy has a unified data-model for configs: all of its configuration is defined in Protocol Buffers.&lt;/li&gt;
&lt;li&gt;Envoy relies heavily on modern security practices. It uses AddressSanitizer, ThreadSanitizer, and MemorySanitizer. Its developers even went beyond that and adopted fuzzing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.sqlstyle.guide"&gt;SQL style guide by Simon Holywell&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.mrlacey.com/2020/07/youve-only-added-two-lines-why-did-that.html"&gt;You&amp;rsquo;ve only added two lines - why did that take two days!&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.bitgo.com/utxo-management-for-enterprise-wallets-5357dad08dd1"&gt;UTXO Management for Enterprise Wallets&lt;/a&gt; introduced two wallet models, Send-Only hot wallet and Send-and-Receive Hot Wallet. It also has many interesting discussions about the utxo management.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bitcoinops.org/en/river-descriptors-psbt/"&gt;Field Report: Using Descriptors and PSBT at River Financial&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://talk.nervos.org/t/idea-about-the-composability-of-assets-in-ckb/4855"&gt;Idea about the composability of assets in ckb&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Recently, I am working on the prototype of the generic payment channel (GPC). But I find the current model is not completely generic.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="apps-usage"&gt;Apps Usage&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.xmind.net/blog/en/how-to-combine-different-structures-in-xmind-and-why/"&gt;How to Combine Different Structures in XMind and Why - XMind: The Most Popular Mind Mapping Software on The Planet.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.goodnotes.com/how-goodnotes-uses-goodnotes-9e0c2acac323"&gt;How GoodNotes Uses GoodNotes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61728"&gt;请把这张图打印出来，下次做PPT时对照检查！&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;时间就应该更多花在演示设计上&lt;/li&gt;
&lt;li&gt;明确演示目标
&lt;ol&gt;
&lt;li&gt;听众（汇报对象）是谁？&lt;/li&gt;
&lt;li&gt;核心信息是什么？&lt;/li&gt;
&lt;li&gt;这个汇报在什么场景下展示？
&lt;ul&gt;
&lt;li&gt;如果是演讲，那就要考虑「矛盾导入」「发现问题」「分析问题」「解决问题」的逻辑。&lt;/li&gt;
&lt;li&gt;如果是工作汇报，那就要考虑「结论先行」「论据补充」的「金字塔逻辑」。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;数据
&lt;ul&gt;
&lt;li&gt;过往案例 (纵向)&lt;/li&gt;
&lt;li&gt;其他企业案例 (横向)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;有了大概的思路后，可以考虑把提纲画好，并明确清楚哪些素材有了，哪些素材还欠缺。&lt;/li&gt;
&lt;li&gt;可以考虑找到一些相关领域的专业知识，用它来提纲挈领，整体便有了高度。&lt;/li&gt;
&lt;li&gt;展示准备
&lt;ul&gt;
&lt;li&gt;设计包袱&lt;/li&gt;
&lt;li&gt;互动&lt;/li&gt;
&lt;li&gt;视频&lt;/li&gt;
&lt;li&gt;幽默&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61882"&gt;用好 Keynote 和 iMovie，在 iPad 上做出有高级感的视频 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 Keynote 神奇移动&lt;/li&gt;
&lt;li&gt;用 Videoleap 这个 App 的「色度」工具同样可以抠除背景。&lt;/li&gt;
&lt;li&gt;在 Mac 平台出现了一款叫 &lt;a href="https://sspai.com/post/52482"&gt;Design Camera&lt;/a&gt; 的软件，实质上是高度自动化的 3D 模板带壳截屏，可以生成运动立体的带壳截屏视频。这款叫 SceneShot 的App填补了 [iOS] 这一空白，它可能是目前带壳截屏类App中最高级的了，它提供 3D 模版供你调整，并可以定制背景和环境光线，甚至还有特效滤镜等等功能。&lt;/li&gt;
&lt;li&gt;之前介绍过的 Canva，最近刚更新了视频制作功能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="hardware"&gt;Hardware&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61274"&gt;为什么 ARM 版 Mac 运行效率很高？&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple 不仅处理掉了第三方的 CPU，且一并处理掉了第三方的 GPU。&lt;/li&gt;
&lt;li&gt;Mac 这次的芯片变革需要撑得起未来十年，其最优解便是将专精芯片以最优工艺的整合在 Soc 中。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61838"&gt;看懂高通的一图流：QC5 将这样改变你的快充体验&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最高支持 100W 充电功率&lt;/li&gt;
&lt;li&gt;与 PD 兼容&lt;/li&gt;
&lt;li&gt;考虑购买更为通用的 PD-PPS 充电器，并且尽量购买支持电流到 5A/支持电压到 20V 的充电器，为下一代即将到来的 PD-PPS 快充作准备。而在购买 Type-C 线缆的时候，也请优先考虑购买最大承载电流达到 5A 的充电线。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="business"&gt;Business&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://om.co/2020/08/03/microsofts-tiktok-but-why/"&gt;Microsoft’s TikTok: But why?&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/pminsider/press-releases-for-product-managers-everything-you-need-to-know-942485961e31"&gt;PR FAQs for Product Documents &amp;ndash; Everything Product Managers Need to Know&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A Press Release (PR) Frequently Asked Questions (FAQ) is a customer-centric document for designing new products. It is an idealized future “Press Release” (PR) and associated FAQs. The PR FAQ is the starting point for your other product documents.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="life"&gt;Life&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61958"&gt;氮化镓是如何让充电器变小的？&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我们想认真的聊一聊氮化镓是怎么让充电器从一块大砖头变成半块砖头，变成一只口红，甚至变成一个仙贝。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://numinous.productions/timeful/"&gt;Timeful Texts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Book designed with &lt;a href="https://en.wikipedia.org/wiki/Spaced_repetition"&gt;spaced repetition memory systems&lt;/a&gt; in mind.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://danluu.com/corp-eng-blogs/"&gt;How (some) good corporate engineering blogs are written&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/1YJH1qQmJU-eUsk6WiVytw"&gt;大国隐痛：做一个操作系统有多难？&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用国产系统可以向指标交账，却做不了业务没资金入账。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://nulishehui.blog.caixin.com/archives/232320"&gt;同样受歧视的印度人，为什么却如此成功？&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在英美的留学生人数中国第一，印度第二，为什么我们没听说歧视印度人的呢？！&lt;/li&gt;
&lt;li&gt;根据《哈佛商业评论》的一项研究，世界 500 强企业中，30% 的掌舵人都是印度人。&lt;/li&gt;
&lt;li&gt;美国的中日韩裔人数是印巴裔人数的 1.5 倍&lt;/li&gt;
&lt;li&gt;他们有远远强于我们的沟通能力，更重要的是他们非常有要沟通的意识。&lt;/li&gt;
&lt;li&gt;专业也许你不需要最强的，但是你的沟通能力，你的视野才是最重要的&lt;/li&gt;
&lt;li&gt;家庭条件很一般甚至很差的情况下，家长只要发现孩子是聪明、愿意用功的，真的会和中国家长一样不惜砸锅卖铁也要去培养孩子成才的。&lt;/li&gt;
&lt;li&gt;一方面他们特别保持自己的传统价值观，一方面他们又是非常游刃有余的在跟主流融化有融合&lt;/li&gt;
&lt;li&gt;印度文化鼓励辩论和争论&lt;/li&gt;
&lt;li&gt;我们大部分情况下，华人是互相忌惮的。&lt;/li&gt;
&lt;li&gt;H1B 签证的话，印度差不多每年有四五万，中国是他们的十分之一。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting-stuffs"&gt;Interesting Stuffs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1290508424694779905"&gt;@BntBadglass: 论男朋的拍照技术&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1291109632098873346"&gt;@S7i5FV0JOz6sV3A: 哈士奇 vs 牧羊犬&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://abseil.io"&gt;abseil / abseil.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/sanitizers/wiki/MemorySanitizer"&gt;MemorySanitizer · google/sanitizers Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual"&gt;ThreadSanitizerCppManual · google/sanitizers Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/sanitizers/wiki/AddressSanitizer"&gt;AddressSanitizer · google/sanitizers Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tablericons.com"&gt;Tabler Icons - 550+ Highly customizable free SVG icons&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-08-02</title><link>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-02/</link><pubDate>Sun, 02 Aug 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/08/what-i-touched-this-week-2020-08-02/</guid><description>&lt;p&gt;I was reading Leading Snowflakes and posts from &lt;a href="https://fortelabs.co/"&gt;Forte Labs&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/morcos/d3637f015bc4e607e1fd10d8351e9f41"&gt;Bitcoin Core Fee Estimation Algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@kelvinfichter/looking-at-ownership-in-the-evm-6e6914d341d"&gt;Looking at ownership in the EVM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61459"&gt;P.A.R.A. 是什么及在 Notion 中的应用&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.learningbyshipping.com/writing-is-thinking-an-annotated-twitter-thread-2a75fe07fade"&gt;Writing is Thinking&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They serve to build a corporate history&lt;/li&gt;
&lt;li&gt;Shared corporate history of why/how&lt;/li&gt;
&lt;li&gt;The act of writing, forces the author to think through all the details and steps required to share the lesson.&lt;/li&gt;
&lt;li&gt;It is easier to contribute&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="management"&gt;Management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=502ILHjX9EE"&gt;Agile Product Ownership in a Nutshell&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Concise introduction to Agile.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/group-norms-team-communication/"&gt;How to Create Group Norms&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.fastcompany.com/3006798/how-extreme-transparency-can-make-your-team-its-most-productive"&gt;How Extreme Transparency Can Make Your Team Its Most Productive&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://tomayko.com/blog/2012/management-style"&gt;Show How, Don&amp;rsquo;t Tell What - A Management Style&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://recoveringengineer.com/leadership-skills/the-two-sides-of-trust/"&gt;The Two Sides of Trust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ About motivation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=u6XAPnuFjJc"&gt;RSA ANIMATE: Drive: The surprising truth about what motivates us&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Autonomy&lt;/li&gt;
&lt;li&gt;Mastery&lt;/li&gt;
&lt;li&gt;Purpose&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://daedtech.com/how-to-keep-your-best-programmers/"&gt;How To Keep Your Best Programmers&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://randsinrepose.com/archives/bored-people-quit/"&gt;Bored People Quit&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/"&gt;How Developers Stop Learning: Rise of the Expert Beginner&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Expert beginner thinks that he/she already mastered the domain so stops improving.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="product"&gt;Product&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/animal-crossing-and-business-success/"&gt;What Animal Crossing can teach us about marketing and product development&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="writing"&gt;Writing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://masterblogging.com/persuasive-blog-posts/"&gt;12 Powerful Tips on How to Write Persuasive Blog Posts&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Focus on the solutions, focus on why&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Use own visual content, examples and stories&lt;/li&gt;
&lt;li&gt;Talk about why to show &lt;strong&gt;empathy&lt;/strong&gt; and keep readers involved in the conversation&lt;/li&gt;
&lt;li&gt;Back Up Your Claims with Statistics from Reliable Sources&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reasonablypolymorphic.com/blog/writing-technical-posts/"&gt;How to Write Technical Posts (so people will read them)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;[You have] four sentences to convince [readers].&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus on solutions to problems, focus on why&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;First sentence of each paragraph should be sufficient to understand the rest of the paragraph.&lt;/li&gt;
&lt;li&gt;Keep them on the same page, show &lt;strong&gt;empathy&lt;/strong&gt;.
&lt;ul&gt;
&lt;li&gt;Less distractions&lt;/li&gt;
&lt;li&gt;Point out what they might be thinking, and then very explicitly show them what they should be thinking instead.&lt;/li&gt;
&lt;li&gt;If you’re giving examples of something that fits a pattern, make sure you give examples of things that do not fit the pattern.
&lt;ul&gt;
&lt;li&gt;People learn by seeing lots of examples&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Anticipate which parts of your argument will be difficult for your readers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mermaid-js.github.io/mermaid-live-editor/"&gt;Mermaid live editor&lt;/a&gt;, creating diagrams from plain text.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ruminate.io/"&gt;Make better decisions&lt;/a&gt;, decision matrix&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ncase.me/loopy/"&gt;LOOPY: a tool for thinking in systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vpn.mozilla.org/"&gt;Mozilla VPN: Protect Your Entire Device&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-07-26</title><link>https://blog.iany.me/journal/2020/07/what-i-touched-this-week-2020-07-26/</link><pubDate>Sun, 26 Jul 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/07/what-i-touched-this-week-2020-07-26/</guid><description>&lt;p&gt;I&amp;rsquo;m trying P.A.R.A after reading &lt;a href="https://sspai.com/post/61459"&gt;P.A.R.A. 是什么及在 Notion 中的应用&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;p&gt;┌ Programming&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.macstories.net/stories/the-developer-debrief-on-apples-wwdc-2020/"&gt;The Developer Debrief on WWDC 2020&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-Tech&lt;/h2&gt;
&lt;p&gt;┌ Product&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://subvert.substack.com/p/stripe-building-a-developer-cult"&gt;Stripe: Building a Developer Cult&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Principles for creating product for developers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Empathy&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Make them want to spend their free time building on your product&lt;/li&gt;
&lt;li&gt;Make them want to start a cult for your product&lt;/li&gt;
&lt;li&gt;Make them your biggest fans&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/8vkKzkm4BWeVeU1jAVl_Iw"&gt;看了100个年入1亿的新品牌后，总结的10条反常识消费品牌创业军规 |【经纬低调分享】&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在开始消费品创业之前，请先阅读一本经典的菲利普·科特勒的《营销管理》这本书&lt;/li&gt;
&lt;li&gt;一个好的品牌，其实是创始人自己本人的哲学观、生活态度的外化&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/cADAgeoADNATY_ixhfB5Ug"&gt;风投基金 Dragonfly 给加密世界画了一份创业寻宝图&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Life&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61606"&gt;汉堡王被曝销售过期食品，遇到这种情况你该如何维权？&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;协商&lt;/li&gt;
&lt;li&gt;12315 投诉&lt;/li&gt;
&lt;li&gt;民事诉讼&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Social&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mashable.com/article/coronavirus-masks-anger/"&gt;Don’t shame people who don’t wear masks. It won&amp;rsquo;t work.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.gymnasticbodies.com"&gt;Gymnasticbodies&lt;/a&gt;, self weight workout&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-07-19</title><link>https://blog.iany.me/journal/2020/07/what-i-touched-this-week-2020-07-19/</link><pubDate>Sun, 19 Jul 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/07/what-i-touched-this-week-2020-07-19/</guid><description>&lt;p&gt;I recommended &lt;a href="https://commoncog.com/blog/how-to-learn-tacit-knowledge/"&gt;The Recognition-Primed Decision Making Model&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;p&gt;┌ Blockchain&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://decentralizedthoughts.github.io/2020-07-10-encrypted-blockchain-databases-part-i/"&gt;Encrypted Blockchain Databases (Part I)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://decentralizedthoughts.github.io/2020-07-10-encrypted-blockchain-databases-part-ii/"&gt;Encrypted Blockchain Databases (Part II)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ AI&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.nature.com/articles/s41599-020-0494-4"&gt;Why general artificial intelligence will not be realized&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Computers cannot handle causality because they cannot intervene in the world. They are not the part of the world.&lt;/li&gt;
&lt;li&gt;Human have tacit knowledge learned by examples and counter-examples.&lt;/li&gt;
&lt;li&gt;Deep learning has even turned out to be vulnerable to tiny changes, but real world problems take place in a changing world.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Windows&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/61098"&gt;巧用注册表和命令行，把鼠标右键打造成你的专属工具箱&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-Tech&lt;/h2&gt;
&lt;p&gt;┌ Management&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://due.com/blog/how-to-prioritize-features-at-your-company/"&gt;How to Prioritize Features at Your Company - Due&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://codeascraft.com/2012/05/22/blameless-postmortems/"&gt;Blameless PostMortems and a Just Culture&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The owner can give this detailed account without fear of punishment or retribution.&lt;/li&gt;
&lt;li&gt;The owner is the most expert in their own error, and can help to avoid such error in future.&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s more important to understand why it happens.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://techcrunch.com/2013/09/09/dick-costolo-warns-against-trying-to-be-liked-and-lionizing-silicon-valley-figures/"&gt;Dick Costolo Warns Against Trying To Be Liked And Lionizing Silicon Valley Figures&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Not leading by trying to be liked. Care for your employees, but don’t care what they think about you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://randsinrepose.com/archives/technicality/"&gt;Technicality&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You take action so that you stay in touch with how your team builds stuff.&lt;/li&gt;
&lt;li&gt;Be able to draw a detailed architectural diagram describing your product on any whiteboard at any time.&lt;/li&gt;
&lt;li&gt;Better communication.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.paulgraham.com/makersschedule.html"&gt;Maker’s schedule, manager’s schedule&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Economics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/mokOzC2ovdU85t_gjpfZ7g"&gt;研究发现，牛市是散户亏钱的重要原因&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/61367"&gt;摆脱超支困境，试试用这套「信封预算法」记账吧&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Hardware&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://forums.macrumors.com/threads/whats-the-bluetooth-pairing-button-on-the-magic-keyboard.2184984/"&gt;What&amp;rsquo;s the Bluetooth pairing button on the Magic Keyboard?&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hold &lt;kbd&gt;⌘W&lt;/kbd&gt; to force paring mode.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="quotes"&gt;Quotes&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;有人问一位加拿大神经心理学家唐纳德.赫布：“先天和后天哪个对人性影响更大？”，他是这么回答的：“哪个对矩形的面积影响更大，长度还是宽度呢？” &lt;a href="https://twgreatdaily.com/zh-hans/PswT7m0BMH2_cNUgDELc.html"&gt;→&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="bookmarks"&gt;Bookmarks&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/google/tsunami-security-scanner"&gt;google/tsunami-security-scanner: Tsunami is a general purpose network security scanner with an extensible plugin system for detecting high severity vulnerabilities with high confidence.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-07-12</title><link>https://blog.iany.me/journal/2020/07/what-i-touched-this-week-2020-07-12/</link><pubDate>Sun, 12 Jul 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/07/what-i-touched-this-week-2020-07-12/</guid><description>&lt;p&gt;I have posted &lt;a href="https://blog.iany.me/2020/07/yubico-for-windows/"&gt;♯ Yubico for Windows&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have finished the book &lt;a href="https://www.goodreads.com/review/show/3149842860"&gt;Regretting You&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="tacit-knowledge"&gt;Tacit Knowledge&lt;/h2&gt;
&lt;p&gt;I have read &lt;a href="https://commoncog.com/blog/the-tacit-knowledge-series/"&gt;a series about tacit knowledge&lt;/a&gt; by Cedric Chin recently.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The sort of tacit knowledge [the author is] interested in is that of ‘expert intuition’.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In the second post, the author has introduced the Recognition-Primed Decision Making Model.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recognition of goals, cues, expectancies and actions.&lt;/li&gt;
&lt;li&gt;Perform the actions if there&amp;rsquo;s a pattern match. If there are several candidates, people usually try them one by one and adopt the first one which meets all the requirements.&lt;/li&gt;
&lt;li&gt;If the pattern is abnormal, analyze and collect more data and rerun the loop.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;p&gt;┌ Programming&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://without.boats/blog/ringbahn-ii/"&gt;Ringbahn II: the central state machine&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Last time I wrote about ringbahn, a safe API for using io-uring from Rust. I wrote that I would soon write a series of posts about the mechanism that makes ringbahn work. In the first post in that series, I want to look at the core state machine of ringbahn which makes it memory safe.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Blockchain&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://talk.nervos.org/t/rfc-swappable-signature-verification-protocol-spec/4802"&gt;RFC: Swappable Signature Verification Protocol Spec - English / Development &amp;amp; Technical Discussion - Nervos Talk&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This proposal describes a solution to decouple the lock script app logic and signature verification logic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bitcoinops.org/en/newsletters/2020/07/08/"&gt;Bitcoin Optech Newsletter #105 | Bitcoin Optech&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prevent network topology leaks by &lt;a href="https://bitcoincore.reviews/18991"&gt;caching responses to &lt;code&gt;getaddr&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bitcoin/bitcoin/issues/19204"&gt;Bitcoin Core #19204&lt;/a&gt; eliminates a source of wasted bandwidth during Initial Block Download (IBD) by setting &lt;code&gt;feefilter&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Security&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1280115029967241221"&gt;maxgoedjen/secretive: Store SSH keys in the Secure Enclave in macOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Apps&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://pragmaticpineapple.com/how-did-vim-become-so-popular/"&gt;How Did Vim Become So Popular&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zapier.com/blog/google-sheets-functions/"&gt;6 Google Sheets functions that do more than math&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My picks&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google translate: &lt;code&gt;=GOOGLETRANSLATE(&amp;quot;A2&amp;quot;, &amp;quot;fr&amp;quot;, &amp;quot;es&amp;quot;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Import HTML and RSS:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;=IMPORTHTML(&amp;quot;https://en.wikipedia.org/wiki/List_of_most_popular_given_names&amp;quot;, &amp;quot;table&amp;quot;, 3)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;=IMPORTFEED(&amp;quot;https://rss.nytimes.com/services/xml/rss/nyt/PersonalTech.xml&amp;quot;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Embedded line chart: &lt;code&gt;=SPARKLINE(B3:B22)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Software Engineer&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://simplabs.com/blog/2020/06/17/failing-and-winning-at-planning-software-projects/"&gt;Blog: Failing (and winning) at planning software projects&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When it comes to planning software projects on the macro level, there&amp;rsquo;s two extremes – trying to plan everything up-front or accepting the impossibility of getting that right and not bothering to plan anything at all.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-tech&lt;/h2&gt;
&lt;p&gt;┌ Social&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.oreilly.com/tim/21stcentury/"&gt;Welcome to the 21st Century&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The choices our societies make now can have an enormous impact on the course of the next few decades.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Productivity&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://todoist.com/productivity-methods"&gt;Which Productivity Method is Right For You? A Complete List + Quiz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/best-productivity-apps/"&gt;The 35 Best Productivity Apps for 2020 (By Category)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kk.org/thetechnium/68-bits-of-unsolicited-advice/"&gt;The Technium: 68 Bits of Unsolicited Advice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@ChrisKyle/are-you-wasting-time-on-a-bullet-journal-a93b46c8e929"&gt;Are You Wasting Time On A Bullet Journal? | by Chris Kyle | Medium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Life&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/61252"&gt;挑选一台字体显示效果出色的显示器，要注意哪些问题？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting"&gt;Interesting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1281680744062971904"&gt;@ThingsWork: This is how cartoons used to be made&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1280889440261398531"&gt;@CNqdsoa: 开了小二十年车了从来没见过这么牛逼的操作目瞪口呆…&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1280467027212349440"&gt;@xds2000: 这真是巧劲&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.canva.com"&gt;Home - Canva&lt;/a&gt;, a design tool with a lot quick started templates.&lt;/li&gt;
&lt;li&gt;The macOS apps which can control the external displays.
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://lunar.fyi"&gt;Lunar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MonitorControl/MonitorControl"&gt;MonitorControl: &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mermaid-js.github.io/mermaid/"&gt;mermaid - Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackmd.io"&gt;HackMD - Collaborative Markdown Knowledge Base&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.semanticscholar.org"&gt;Semantic Scholar | AI-Powered Research Tool&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-07-05</title><link>https://blog.iany.me/journal/2020/07/what-i-touched-this-week-2020-07-05/</link><pubDate>Sun, 05 Jul 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/07/what-i-touched-this-week-2020-07-05/</guid><description>&lt;p&gt;I have read &lt;a href="https://www.goodreads.com/review/show/3418312356"&gt;幻夜&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;p&gt;┌ Programming&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://towardsdatascience.com/how-to-design-for-panic-resilience-in-rust-55d5fd2478b9"&gt;How to Design For Panic Resilience in Rust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://codewithoutrules.com/2020/06/25/dev-environment/"&gt;Your dev environment matters less than you think&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Popular:&lt;/strong&gt; So you can easily find help.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Easy to get going:&lt;/strong&gt; Your goal is ship useful code, and as a beginner time spent fiddling with your dev environment won’t help with that.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/782fb925b57450da28c1e15656779556"&gt;HEY&amp;rsquo;s Gemfile&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Blockchain&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/GuildOfWeavers/distaff"&gt;GuildOfWeavers/distaff: Zero-knowledge virtual machine written in Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitcoinops.org/en/newsletters/2020/04/29/#new-attack-against-ln-payment-atomicity"&gt;New attack against LN payment atomicity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@PanteraCapital/out-performing-bitcoin-pantera-blockchain-letter-june-2020-1d0ac9ec3482"&gt;Out-Performing Bitcoin :: Pantera Blockchain Letter, June 2020&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Linux System Admin&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;How to reset a root password on Fedora&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fedoramagazine.org/reset-root-password-fedora/"&gt;Enter single user root shell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;rd.break enforcing=0
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://linuxconfig.org/redhat-8-recover-root-password#:~:text=To%20recover%20the%20root%20password,set%20the%20new%20root%20password."&gt;Remount system root and change the root password&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;mount -o remount,rw /sysroot/
chroot /sysroot
passwd
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-tech&lt;/h2&gt;
&lt;p&gt;┌ Productivity&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://untools.co"&gt;About Tools for better thinking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Business&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://calebporzio.com/i-just-hit-dollar-100000yr-on-github-sponsors-heres-how-i-did-it"&gt;I Just Hit $100k/yr On GitHub Sponsors! &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Economics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/kN3-cnZ-Owx1hUZWHPJtXA"&gt;钟伟：MMT掩盖了什么样的全球经济金融问题&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Social&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/uO-kCK7IAaBkKN4Jwmw_vA"&gt;科技与社会，是谁改变了谁？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Accounting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.mathstat.dal.ca/~selinger/accounting/tutorial.html"&gt;Peter Selinger: Tutorial on multiple currency accounting&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Assets − Liabilities = Capital + Income − Expenses.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting"&gt;Interesting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/julian_west/status/1277675180266061824"&gt;Julian West on Twitter: &amp;ldquo;For the network nerds&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://theotools.webflow.io/"&gt;theo.tools - The +700 apps ultimate toolbox for all your needs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://i18ns.com"&gt;I18n Translation Search Engine| Free i18n Tools for App&amp;amp;Web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://imagecolorizer.com"&gt;Image Colorizer - Colorize Black and White Photo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/61160"&gt;一行代码恢复误删文件，微软出品的免费工具：Windows File Recovery - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.diagram.codes"&gt;Diagram.Codes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://obsproject.com"&gt;Open Broadcaster Software®️ | OBS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-06-27</title><link>https://blog.iany.me/journal/2020/06/what-i-touched-this-week-2020-06-27/</link><pubDate>Sat, 27 Jun 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/06/what-i-touched-this-week-2020-06-27/</guid><description>&lt;p&gt;I have re-read &lt;a href="https://www.goodreads.com/review/show/3262250836"&gt;黑客与画家&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have published:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/06/memory-tracing-in-windows/"&gt;♯ Memory Tracing in Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/06/move-wsl-to-another-drive/"&gt;♯ Move WSL to Another Drive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/06/podman-on-windows-via-wsl2/"&gt;♯ Podman on Windows via WSL2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have recommended:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://josebrowne.com/on-coding-ego-and-attention/"&gt;On Coding, Ego and Attention&lt;/a&gt;, tips about taming the ego distraction.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;p&gt;┌ Performance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/windows-hardware/test/wpt/memory-footprint-optimization-exercise-2"&gt;Exercise 2 - Track User Mode Process Allocations | Microsoft Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Software&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/61056"&gt;旧电脑再利用：完整版 Chrome OS 安装指南&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.debugbear.com/blog/2020-chrome-extension-performance-report"&gt;2020 Chrome Extension Performance Report&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The main metrics I&amp;rsquo;ll consider are CPU consumption, memory consumption, and whether the extension makes pages render more slowly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-tech&lt;/h2&gt;
&lt;p&gt;┌ Business&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://inessential.com/2020/06/20/the_ios_app_store_brings_users_only_beca"&gt;The iOS App Store Brings Users Only Because It’s the Only Choice&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One might argue that developers should love the App Store because it brings the users. Like any other product or service, Hey has to persuade people that they have a problem it can solve, and that it’s worth paying for.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.theverge.com/2020/6/19/21296657/microsoft-apple-app-store-antitrust-comments"&gt;Microsoft isn’t happy with Apple’s App Store bullying either&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Microsoft believes it’s time for antitrust regulators to fully investigate Apple’s App Store. Speaking during a Politico interview this week, Microsoft’s chief legal officer Brad Smith outlined Apple’s walled garden approach to its App Store, and how it’s affecting competition.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Methodology&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bytes.babbel.com/en/articles/2020-06-15-challenge-your-ideas.html"&gt;Challenge your initial ideas&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;First principle / Think from different perspectives.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Product&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jaredpalmer.com/github-isnt-fun-anymore"&gt;GitHub isn&amp;rsquo;t fun anymore&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Privacy&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/lizife/status/1276420121435574272"&gt;RT @lizife: 原来微信通过盗取你隐私发布的广告真的可以关！路径超复杂如下： 微信，我的，设置，关于微信，隐私保护指引，9其他，隐私政策，广告，关于广告，管理，关闭个性化推荐广告 我已关闭，半年后需要再关一次，超级不要脸。&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20200625140446/https://twitter.com/jeremyburge/status/1275896482433040386"&gt;RT @jeremyburge: Okay so TikTok is grabbing the contents of my clipboard every 1-3 keystrokes. iOS 14 is snitching on it&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting"&gt;Interesting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1276125369548959745"&gt;RT @chenchenzh: Someone left a note as a &amp;ldquo;Hubei peasant worker&amp;rdquo; to the Dongguan (Guangdong) library&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/github/super-linter"&gt;github/super-linter: Combination of multiple linters to install as a GitHub Action&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.honeycode.aws"&gt;Amazon Honeycode | Build a Better Way to Work&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Amazon no code app builder. It also can be used as a database or spreadsheet with associations like Airtable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.zerotier.com"&gt;ZeroTier – Global Area Networking&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VPN like tool to ease accessing home computers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://fitnesspartswarehouse.com/shop/elliptical-machines/nordictrack-elite-10-9-i-elliptical-v0/"&gt;@yegle: 推荐一下这个购买健身器材配件的网站，提供安装PDF方便你快速找到相应零件。有的东西不这么找根本不知道它叫啥&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-06-21</title><link>https://blog.iany.me/journal/2020/06/what-i-touched-this-week-2020-06-21/</link><pubDate>Sun, 21 Jun 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/06/what-i-touched-this-week-2020-06-21/</guid><description>&lt;p&gt;I&amp;rsquo;m recently working in Windows, so I take many notes about setting up the Windows environment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/2020/06/minimize-any-window-into-system-tray-in-windows/"&gt;♯ Minimize any window into system tray in Windows&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How to open site pinned to taskbar in its own window in Edge?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open &lt;code&gt;edge://apps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Right click the app and uncheck &amp;ldquo;Open in full browser&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://superuser.com/a/105828/86193"&gt;Answer: How to access the system tray using the keyboard?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Press &lt;kbd&gt;Win+B&lt;/kbd&gt; to activate tray, and use &lt;kbd&gt;Shift+F10&lt;/kbd&gt; to show context menu.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="more-windows-tips"&gt;More windows tips&lt;/h2&gt;
&lt;h3 id="configuration"&gt;Configuration&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/Disassembler0/Win10-Initial-Setup-Script"&gt;GitHub - Disassembler0/Win10-Initial-Setup-Script: PowerShell script for automation of routine tasks done after fresh installations of Windows 10 / Server 2016 / Server 2019&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These scripts are verify useful to keep only minimal feature set. I personally has disabled following presets.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HideQuickAccess&lt;/code&gt; hides quick access in explorer sidebar. I uses quick access to bookmark frequently access folders.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DisableActionCenter&lt;/code&gt; disables the notifications in the right drawer. Notifications sometimes are helpful.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ShowTrayIcons&lt;/code&gt; will always show all tray icons. I prefer selecting the icons to show manually.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="look-and-feel"&gt;Look and feel&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The Chinese characters are ugly in Telegram for Windows when using English locale. A simple fixing is set system region to Chinese and Telegram will choose the right Chinese font. If it is not acceptable to change the region, an alternative solution is using &lt;a href="https://iamcristye.github.io/Font/"&gt;FontMod&lt;/a&gt;. When I test it, I have to &lt;a href="https://gist.github.com/70a1f32096ead06544804e6e7ca947fa"&gt;replace DAOpenSansRegular and DAVazirRegular&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://forum.kde.org/viewtopic.php?f=139&amp;amp;t=151602"&gt;how to scale krita UI ?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Uncheck &lt;code&gt;Settings/Configure Krita/General/Window/Enable HiDPI support&lt;/code&gt; to rely on system scale setting.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="proxy"&gt;Proxy&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/lukesampson/scoop/wiki/Using-Scoop-behind-a-proxy"&gt;Using Scoop behind a proxy · lukesampson/scoop Wiki&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;scoop config proxy [username:password@]host:port
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/windows/uwp/security/web-authentication-broker"&gt;Web authentication broker - UWP applications | Microsoft Docs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Some UWP apps depend on &lt;code&gt;AuthHost&lt;/code&gt; to connect services like Google. Nebo is an example. So it is not enough to add Nebo to the loopback exempt list, the AuthHost must be in the list as well to ensure Nebo using the system proxy.&lt;/p&gt;
&lt;p&gt;This article has listed the following commands, where I have modified a bit to make them work in PowerShell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CheckNetIsolation.exe LoopbackExempt -a &amp;quot;-n=microsoft.windows.authhost.a.p_8wekyb3d8bbwe&amp;quot;
CheckNetIsolation.exe LoopbackExempt -a &amp;quot;-n=microsoft.windows.authhost.sso.p_8wekyb3d8bbwe&amp;quot;
CheckNetIsolation.exe LoopbackExempt -a &amp;quot;-n=microsoft.windows.authhost.sso.c_8wekyb3d8bbwe&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But I failed using these commands. Instead I find the SID from registry &lt;code&gt;HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings&lt;/code&gt;. Search &lt;code&gt;AuthHost&lt;/code&gt; inside it, and the directory name is the SID. The following command works for me&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CheckNetIsolation.exe loopbackexempt -a &amp;quot;-p=S-1-15-2-2750798217-1343590035-1234819260-1030354384-3318145141-3720257911-3461195215&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="productivity-tips"&gt;Productivity tips&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.techspot.com/news/74469-windows-10-make-screenshots-easier-new-snipping-tool.html#:~:text=Using%20the%20alt%2Dtab%20shortcut,and%20automatically%20copied%20to%20clipboard."&gt;Windows 10 will make screenshots easier with new snipping tool - TechSpot&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;kbd&gt;WIN + Shift + S&lt;/kbd&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="programming-environment"&gt;Programming Environment&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://git-scm.com/docs/gitattributes"&gt;Git - gitattributes Documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The exported registry entries are encoded using &lt;code&gt;UTF-16LE-BOM&lt;/code&gt;. Git recognizes them as binary file. Add the following line in &lt;code&gt;.gitattributes&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*.reg text working-tree-encoding=UTF-16LE-BOM eol=CRLF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then renormalize existing files:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git add --renormalize .
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now it is able to diff the registry exported files. More details can be found in this &lt;a href="https://github.com/git/git/commit/aab2a1ae48ff65781a5379a01a4abb4f75e5641d"&gt;commit&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/doitian/d89bf7b67067c1f4dcbeef066e2a4639"&gt;A script to simplify WSL installation via LxRunOffline&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/scripting/use-the-powershell-registry-provider-to-simplify-registry-access/"&gt;Use the PowerShell Registry Provider to Simplify Registry Access&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;List existing mounted registry drives:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Get-PSDrive -PSProvider registry | select name, root
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mount new roots as drives:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;New-PSDrive -PSProvider registry -Root HKEY_CLASSES_ROOT -Name HKCR
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.addictivetips.com/windows-tips/update-to-powershell-7-0-on-windows-10/"&gt;How to update to PowerShell 7.0 on Windows 10&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I install PowerShell 7.0 and use it as the default shell in Windows Terminal because it supports &lt;code&gt;cd -&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iex &amp;quot;&amp;amp; { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://stackoverflow.com/questions/9948517/how-to-stop-a-powershell-script-on-the-first-error"&gt;How to stop a PowerShell script on the first error?&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ErrorActionPreference = &amp;quot;Stop&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="gpg-and-ssh-security"&gt;GPG and SSH security&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/doitian/078e6872a017754c28dd5ce0aa10375b"&gt;Share SSH and GPG keys with WSL&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since WSL2 can use Windows executable directly, the most straightforward way is just using the Windows counterparts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I finally have a comfortable setup to use YubiKey in Windows for gpg signing and ssh authentication. I&amp;rsquo;ll write a post about it later. The following article helps me a lot: &lt;a href="https://codingnest.com/how-to-use-gpg-with-yubikey-wsl/"&gt;How to use GPG with YubiKey (bonus: WSL)&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="openssh-server"&gt;OpenSSH server&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration"&gt;OpenSSH Server Configuration for Windows | Microsoft Docs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The default shell is cmd, the following command sets the default shell to PowerShell instead&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;New-ItemProperty -Path &amp;quot;HKLM:\SOFTWARE\OpenSSH&amp;quot; -Name DefaultShell -Value &amp;quot;C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe&amp;quot; -PropertyType String -Force
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.concurrency.com/blog/may-2019/key-based-authentication-for-openssh-on-windows"&gt;Visual Studio Code Switch Azure Account - Concurrency&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows now has bundled OpenSSH server. But the key authorization requires strict restrictions on the authorized keys file permissions. It is not easy to make it right in Windows. I found the solution in this post. Pay attention that so administrator uses should use &lt;code&gt;C:\ProgramData\ssh\administrators_authorized_keys&lt;/code&gt; save authorized public keys.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$acl = Get-Acl C:\ProgramData\ssh\administrators_authorized_keys
$acl.SetAccessRuleProtection($true, $false)
$administratorsRule = New-Object system.security.accesscontrol.filesystemaccessrule(&amp;quot;Administrators&amp;quot;,&amp;quot;FullControl&amp;quot;,&amp;quot;Allow&amp;quot;)
$systemRule = New-Object system.security.accesscontrol.filesystemaccessrule(&amp;quot;SYSTEM&amp;quot;,&amp;quot;FullControl&amp;quot;,&amp;quot;Allow&amp;quot;)
$acl.SetAccessRule($administratorsRule)
$acl.SetAccessRule($systemRule)
$acl | Set-Acl
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;p&gt;┌ Productivity&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://support.meistertask.com/hc/en-us/articles/360015778780-How-do-I-scroll-horizontally-in-a-project-"&gt;How to Scroll Horizontally?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have switched to Logitech Trackball recently and it has no horizontal scroll wheel.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can use the keyboard shortcut &lt;kbd&gt;SHIFT&lt;/kbd&gt;+Mouse scroll wheel to scroll horizontally.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.goodnotes.com/learning-by-doing-and-becoming-a-developer-at-goodnotes-brets-story-f4265f9a5e02?source=rss----b20d6679c6e9---4"&gt;Learning by Doing and Becoming a Developer at GoodNotes: Bret’s Story&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Programming&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sobolevn.me/2020/06/how-async-should-have-been"&gt;❤️ How async should have been&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Functional way to build function for both sync and async&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/2caf68f9a0afa9134b6aac13adee899a"&gt;Configure Docker Hub mirror in /etc/containers/registries.conf&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/containers/libpod/issues/3683"&gt;Podman 1.4.4: permission denied mounting volume without &amp;ldquo;&amp;ndash;privileged&amp;rdquo; flag&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have to pass &lt;code&gt;--security-opt label=disable&lt;/code&gt; to mount local directory into the container.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mikefarah/yq/issues/217"&gt;An example to fix obsoleted gpg keys for apt repositories&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Linux&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://alanyih.blogspot.com/2008/08/slitaz-gcin.html"&gt;How to generate locale in Slitaz&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;localedef -i ru_RU -c -f UTF-8 /usr/lib/locale/ru_RU.UTF-8
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I use Fedora cloud version in WSL2 as the main distribution. By default it lacks the locale packages.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo dnf install glibc-langpack-en
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://kb.parallels.com/4948"&gt;Network modes in Parallels Desktop for Mac&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The minimal distribution like Slitaz does not bundle the driver for vertio. The workaround is using the
&lt;code&gt;Intel (R) PRO/1000 MT&lt;/code&gt; network adapter first, install &lt;code&gt;linux-kvm&lt;/code&gt; in Slitaz and then switch to vertio.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://forum.parallels.com/threads/patch-for-kernel-5-6.349625/"&gt;Patch for Kernel 5.6 | Parallels Forums&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Fedora 32 kernel is too new to install Parallels Gust Tools. Apply the patch in this thread first.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Blockchain&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/mscFztCM89YlM-OjDsEyNQ"&gt;干货 | 深入理解 OVM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-tech&lt;/h2&gt;
&lt;p&gt;┌ Business&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/dhh/status/1272968382329942017"&gt;@dhh: Wow. I&amp;rsquo;m literally stunned. Apple just doubled down on their rejection of HEY&amp;rsquo;s ability to provide bug fixes and new features…&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;About Apple Tax&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ History&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@yang140/computer-history-alan-kay-2-2-2706b3717d6b"&gt;计算机历史 — Alan Kay (2/2) Normal Consider Harmful - Shuo Yang - Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/60946"&gt;WD40 的正确用法——Switch 摇杆漂移自救指南&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://obsidian.md"&gt;Obsidian&lt;/a&gt;, yet another non-linear note taking app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://minikube.sigs.k8s.io/docs/"&gt;Welcome! | minikube&lt;/a&gt;, a devops tool.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60856"&gt;搭建家庭数据管理中心：QNAP NAS 应用指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60852"&gt;用开源免费的内网穿透工具 frp，实现远程桌面和文件传输&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-06-07</title><link>https://blog.iany.me/journal/2020/06/what-i-touched-this-week-2020-06-07/</link><pubDate>Sun, 07 Jun 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/06/what-i-touched-this-week-2020-06-07/</guid><description>&lt;p&gt;This week I have installed Fedora 32 on Surface Go. I also switched to use GPG as my private SSH key.&lt;/p&gt;
&lt;p&gt;There are several major issues to use Linux on surface:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The WIFI requires downloading the driver, see &lt;a href="https://www.reddit.com/r/SurfaceLinux/comments/94hjxv/surface_go_first_impressions/"&gt;Surface Go: First Impressions : SurfaceLinux&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The camera does not work.&lt;/li&gt;
&lt;li&gt;The headphone jack generates noise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="use-a-gpg-key-for-ssh"&gt;Use a GPG key for SSH&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stafwag.github.io/blog/blog/2015/06/16/using-yubikey-neo-as-gpg-smartcard-for-ssh-authentication/"&gt;Using YubiKey Neo as gpg smartcard for SSH authentication - stafwag Blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This article helped me setting up the Yubico key in Fedora. &lt;a href="https://kb.iany.me/para/lets/y/Yubikey/Yubico&amp;#43;on&amp;#43;Fedora"&gt;→ Wiki&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835394"&gt;gnupg-agent: gpg agent refusing ssh agent work - Debian Bug report logs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t know what it does, but when I have trouble I will try to run this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gpg-connect-agent updatestartuptty /bye
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.linode.com/docs/guides/gpg-key-for-ssh-authentication/"&gt;How to use a GPG key for SSH authentication | Linode&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/f80a5f885946e10f3b42cc1e0392192b"&gt;unicodes.txt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I create it from &lt;a href="http://www.unicode.org/Public/UCA/12.0.0/allkeys.txt"&gt;allkeys.txt&lt;/a&gt; so that I can use grep, fzf to search the code points.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Vim&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://vi.stackexchange.com/questions/21758/quickfix-menu-usage-with-tselect-and-vimgrep"&gt;tags - quickfix Menu Usage With :tselect and :vimgrep - Vi and Vim Stack Exchange&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;:ltag&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://stackoverflow.com/questions/1050640/vim-disable-automatic-newline-at-end-of-file"&gt;settings - VIM Disable Automatic Newline At End Of File - Stack Overflow&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:set binary noeol
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Programming&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://blog.cleancoder.com/uncle-bob/2020/05/27/ReplDrivenDesign.html"&gt;REPL Driven Design&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So I’ve learned my lesson. REPL driven development feels easier and faster than TDD; but it is not. Next time, it’s back to TDD for me.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bitcrowd.dev/a-note-on-commit-messages"&gt;A note on commit messages&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-tech&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60762"&gt;少数派办公室改造大揭秘，健康与效率兼顾的环境长啥样？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/0tLF_cTbLGgQr1_-kNPFXg"&gt;我们如何获取信息，组织知识&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Design&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.hellofont.cn/home"&gt;设计师必备字体利器&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60768"&gt;常做海报封面宣传图？试试这 16 款风格强烈的优秀字体&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://canvas.apps.chrome"&gt;Canvas&lt;/a&gt;, A sketch and handwriting web app .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Tools that share and encrypt files&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/FiloSottile/age"&gt;FiloSottile/age: A simple, modern and secure encryption tool with small explicit keys, no config options, and UNIX-style composability.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/schollz/croc"&gt;schollz/croc: Easily and securely send things from one computer to another&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://send.firefox.com/"&gt;Firefox Send&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-05-31</title><link>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-31/</link><pubDate>Sun, 31 May 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-31/</guid><description>&lt;p&gt;I have read books &lt;a href="https://www.goodreads.com/review/show/3361132758"&gt;以眨眼乾杯&lt;/a&gt; and &lt;a href="https://www.goodreads.com/review/show/3361133368"&gt;半小时漫画中国史（从东周列国到楚汉之争）&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A Git tip: set this on server to allow pushing to the clone on server:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git config --local receive.denyCurrentBranch updateInstead
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It requires the server working directory is clean.&lt;/p&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;p&gt;┌ Programming&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://devhints.io"&gt;Devhints — TL;DR for developer documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Software Usage&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/60690"&gt;从想法到输出，这 7 个网站串联我的 Keynote / PPT 设计工作流&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://vim.fandom.com/wiki/Making_a_list_of_numbers"&gt;Making a list of numbers | Vim Tips Wiki | Fandom&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;g Ctrl-A&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://news.ycombinator.com/item?id=22657949"&gt;Zoom HTML5 version&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-tech&lt;/h2&gt;
&lt;p&gt;┌ Business&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.hashicorp.com/terms-of-evaluation"&gt;HashiCorp Terms of Evaluation: &amp;ldquo;PLEASE NOTE THAT THE SOFTWARE MAY NOT BE USED, DEPLOYED OR INSTALLED IN THE PEOPLE’S REPUBLIC OF CHINA.&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Hobbies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://panpiano.com"&gt;Panpiano &lt;del&gt;小P的音樂工房&lt;/del&gt; — Panpiano &lt;del&gt;小P的音樂工房&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Music scores for animations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Life&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1264868314423209990"&gt;@doitian: 国内技术书盗版现状 | 李辉的个人网站&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60607"&gt;视频｜最便宜的一套整机万兆 NAS 解决方案&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting"&gt;Interesting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/lvv2com/status/1266249706532831234"&gt;@lvv2com: 有些画面这辈子都难求一见，见一次三生有幸：全球最大的喷气式运输机An-225和全球最大的涡桨运输机An-22，在天津机场相遇。一架30多岁，一架近50岁，都是有且仅有一架的存在。&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1264776623447879680"&gt;RT @nixcraft: We need to go deep with nested VMs&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://material.io/resources/icons/?style=baseline"&gt;Icons - Material Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.iconfont.cn"&gt;Iconfont-阿里巴巴矢量图标库&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-05-24</title><link>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-24/</link><pubDate>Sun, 24 May 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-24/</guid><description>&lt;p&gt;I have finished the book &lt;a href="https://www.goodreads.com/review/show/3170503050"&gt;白鹿原&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;p&gt;┌ Programming&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nick.groenen.me/posts/rust-error-handling/"&gt;Rust: Structuring and handling errors in 2020&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The essential of the author&amp;rsquo;s recommendation is defining error num in library and use &lt;code&gt;Box&amp;lt;Error&amp;gt;&lt;/code&gt; in application.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.timc.dev/posts/future-of-server-side-swift"&gt;The Future of Swift on the Server&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Math&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Catalan_number"&gt;Catalan number - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Academics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rodneybrooks.com/peer-review/"&gt;Peer Review – Rodney Brooks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Network&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://draveness.me//whys-the-design-overlay-network"&gt;为什么集群需要 Overlay 网络 - 面向信仰编程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Apps&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;How to configure browserpass for Edge &lt;a href="https://github.com/browserpass/browserpass-native/pull/61/files"&gt;browserpass/browserpass-native#61&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open regedit&lt;/li&gt;
&lt;li&gt;Create a folder in &lt;code&gt;HKLM\Software\Google\Chrome\NativeMessagingHosts\com.github.browserpass.native&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Set default entry in the folder to &lt;code&gt;C:\Program Files\Browserpass\chromium-host.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/aV6t0vM1LxFgtPGi569COw"&gt;电子表格的历史：除非你知道它从何而来，否则你将无法预测它将走向何方&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-Tech&lt;/h2&gt;
&lt;p&gt;┌ Productivity&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://superorganizers.substack.com/p/stop-trying-to-make-hard-work-easy"&gt;Stop Trying to Make Hard Work Easy&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Traction is any action that pulls you toward what you want to do. By contrast, distraction is any action that pulls you away from what you planned to do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[T]he time you plan to waste is not wasted time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Management&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.goodnotes.com/goodnotes-workflow-3d00e9997d7d"&gt;GoodNotes Workflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.goodnotes.com/how-were-building-a-culture-of-continuous-feedback-and-growth-6b19e60e1f91"&gt;How We’re Building A Culture of Continuous Feedback and Growth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.goodnotes.com/how-we-work-at-goodnotes-4c66ef26285f"&gt;How we work at GoodNotes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Business&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://telegra.ph/What-Was-TON-And-Why-It-Is-Over-05-12"&gt;What Was TON And Why It Is Over&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Economics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.nytimes.com/2020/05/03/business/dealbook/warren-buffett-berkshire-hathaway.html"&gt;Warren Buffett’s Optimistic? Pessimistic? No, Realistic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Life&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://haokan.baidu.com/v?vid=11543906138472541376&amp;amp;pd=bjh&amp;amp;fr=bjhauthor&amp;amp;type=video"&gt;纱布可以这样更好的包扎伤口哦_好看视频&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://v.qq.com/x/page/k096184f81t.html"&gt;一位母亲在分娩时去世&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;母亲的心脏移植给别人了，当接受移植者抱起孩子的一瞬间太神奇了&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://citizenlab.ca/2020/05/we-chat-they-watch/"&gt;How International Users Unwittingly Build up WeChat’s Chinese Censorship Apparatus&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.kamiapp.com"&gt;Kami&lt;/a&gt;, a PDF annotation tool in Chrome&lt;/li&gt;
&lt;li&gt;&lt;a href="https://landing.google.com/sre/books/"&gt;Google - Site Reliability Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.basicknowledge101.com/index.html"&gt;Basic Knowledge 101&lt;/a&gt;, a knowledge base&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-05-17</title><link>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-17/</link><pubDate>Sun, 17 May 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-17/</guid><description>&lt;p&gt;I have written some scripts to visualize the knowledge base inspired by &lt;a href="https://sspai.com/post/59951"&gt;如何交互可视化你的卡片式笔记网络？ - 少数派&lt;/a&gt;. &lt;a href="https://blog.iany.me/uploads/202005/422yDl/kbnet.html"&gt;Here&lt;/a&gt; is a demo.&lt;/p&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;p&gt;┌ Algorithm&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Quicksort"&gt;Quicksort - Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The section &amp;ldquo;Using recurrences&amp;rdquo; proves the Big-O of quicksort.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Blockchain&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ethereum/go-ethereum/pull/1889"&gt;eth/63 fast synchronization algorithm by karalabe · Pull Request #1889 · ethereum/go-ethereum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Visualization Tools&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://networkx.github.io/documentation/stable/"&gt;Overview of NetworkX — NetworkX 2.4 documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pyvis.readthedocs.io/en/latest/"&gt;Interactive network visualizations — pyvis 0.1.3.1 documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/streamlit/streamlit"&gt;streamlit/streamlit: Streamlit — The fastest way to build custom ML tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Security&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nuetzlich.net/gocryptfs/quickstart/"&gt;gocryptfs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mount encrypted files via fuse.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://support.yubico.com/hc/en-us/articles/360013714479-Troubleshooting-Issues-with-GPG"&gt;Troubleshooting Issues with GPG : Yubico Support&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fix for scoop installed gpg by creating file &lt;code&gt;%USERPROFILE%\scoop\apps\gpg\current\home\scdaemon.conf&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;reader-port Yubico Yubi
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Machine Learning&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nooscope.ai"&gt;The Nooscope Manifested&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Computer Architecture&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/xxuejie/status/1258742812079611905"&gt;@xxuejie: A New Golden Age for Computer Architecture&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech"&gt;Non-tech&lt;/h2&gt;
&lt;p&gt;┌ Productivity&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60456"&gt;iPad 也能成为开发工具：在线版 VS Code 部署与优化&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/coolXiao/status/1259709899350528001"&gt;@coolXiao: 我已连续写了13天 Morning Pages，它是什么？- 它是清晨三页手写的文字- 不限主题，无意识的写- 帮你唤醒，明晰，安抚，优先你的一天- 不要压力，先写三页，明天继续- YouTube 有很多详细介绍&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Business&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.toutiao.com/i6825945036572590604/"&gt;腾讯的背水一战&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Social&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/n5zhRGcHxRLv3DlQ8lqcVw"&gt;聊天时用上这5个小技巧，能让人瞬间对你产生好感！&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.tbray.org/ongoing/When/202x/2020/04/29/Leaving-Amazon"&gt;Bye, Amazon&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I quit in dismay at Amazon firing whistleblowers who were making noise about warehouse employees frightened of Covid-19.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;┌ Game&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/59797"&gt;关于 Xbox Series X 和 PlayStation 5，目前你能了解的都在这里&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting"&gt;Interesting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/localhost_8080/status/1261852989070827520"&gt;@localhost_8080: 昨天是某位老父亲的生日，老夫老妻的了也不知道准备点啥礼物好…就前一天拿他号登了动森，换了衣服、布置了房间&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.canva.cn"&gt;Canva在线平面设计软件_免费设计模板素材和海量正版图片 - Canva中文官网&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-05-10</title><link>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-10/</link><pubDate>Sun, 10 May 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-10/</guid><description>&lt;p&gt;I have&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reviewed my setup in Windows and shared several posts about it.&lt;/li&gt;
&lt;li&gt;enrolled &lt;a href="http://web.stanford.edu/class/cs166/"&gt;CS166: Data Structures&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;switched to &lt;a href="https://blog.iany.me/2020/05/pass-a-password-manager-utilizing-gpg-and-git/"&gt;pass&lt;/a&gt; to manage my passwords.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="windows-setup"&gt;Windows Setup&lt;/h2&gt;
&lt;p&gt;Recently, my colleagues showed interests working in Windows, so I reviewed my setup and published two posts.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/05/my-windows-environment-setup/"&gt;♯ My Windows Environment Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/05/vim-setup-for-windows/"&gt;♯ Vim Setup for Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also shared my config files in gist.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/db79d2dbfaa24093534c7411b0a926bd"&gt;PowerShell Settings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/4677ce2da2eca2eccbb1637ef804bed1"&gt;Windows Terminal Profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/4c177878c3d683d87b2b0b9ce3a0fd6b"&gt;This script to bootstrap the Windows environment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PowerShell is really funny to play around.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.itprotoday.com/powershell/powershell-basics-filtering-objects"&gt;Filtering PowerShell Objects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kb.iany.me/para/lets/s/Shell/PowerShell"&gt;PowerShell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Inspired by Windows snap move keyboard shortcuts, I have implemented a similar one in Keyboard Maestro for macOS.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/doitian/km-windows-manager"&gt;doitian/km-windows-manager: This is a group of Keyboard Maestro macros to move windows in a way inspired by Windows snap move shortcuts.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some Git repositories contains symbol links, which does not work in Windows, here is a solution to replace them with Junction.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/1903b5960f03e4d615aa2171e0fb7bf6"&gt;Git Hooks to Convert Symbol Links in Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/4c6ff04c388a5f3aea1fb584d4b9d82a"&gt;Delete all the passphrases saved in the macOS Keychain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/flawless-app-stories/gyp-no-xcode-or-clt-version-detected-macos-catalina-anansewaa-38b536389e8d"&gt;gyp: No Xcode or CLT version detected macOS Catalina | Anansewaa&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;I have to reinstall Xcode command line tools to make nodejs happy.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.khanacademy.org/computing/computer-science/algorithms/asymptotic-notation/a/big-o-notation"&gt;Big-θ (Big-Theta) notation (article) | Khan Academy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://boats.gitlab.io/blog/post/io-uring/"&gt;Notes on io-uring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/25742396/creating-ctags-extension-for-markdown"&gt;vim - Creating ctags extension for markdown - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.blog/2020-04-09-github-protips-tips-tricks-hacks-and-secrets-from-lee-reilly/"&gt;GitHub Protips: Tips, tricks, hacks, and secrets from Lee Reilly - The GitHub Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting-stuffs"&gt;Interesting Stuffs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/matthen2/status/1256824725814120448"&gt;@matthen2: a method of drawing infinitely many touching circles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1258748549858127872"&gt;RT @lizife: 左图是法新社记者拍的：一种庄严的大片感、空灵的历史感右边是新华社记者拍的，还以为哪个酒店开庆典， 审美没有，连基本的构图水平都差到极点。&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/KenWong_/status/1257519490868244480"&gt;@KenWong_: 副业&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58668"&gt;新建一个账户就能隔离毒瘤应用：Windows 自带权限工具妙用 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/59465"&gt;给毒瘤应用找个好去处，轻量、易用的 Windows 沙盒工具：Sandboxie - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://apple.stackexchange.com/questions/55432/keyboard-shortcut-for-restoring-applications-from-the-mac-os-x-dock"&gt;macos - Keyboard shortcut for restoring applications from the Mac OS X Dock? - Ask Different&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-05-03</title><link>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-03/</link><pubDate>Sun, 03 May 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/05/what-i-touched-this-week-2020-05-03/</guid><description>&lt;p&gt;I have&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Completed the course &lt;a href="https://www.coursera.org/learn/game-theory-2"&gt;Game Theory II on coursera&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Read the book &lt;a href="https://www.goodreads.com/review/show/3306402795"&gt;屍人荘の殺人&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="technology"&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dropbox.tech/infrastructure/-testing-our-new-sync-engine"&gt;Testing sync at Dropbox&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nearly all of our code runs on a single “control” thread.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dropbox.tech/infrastructure/rewriting-the-heart-of-our-sync-engine"&gt;Rewriting the heart of our sync engine - Dropbox&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.logrocket.com/how-to-write-crap-rust-code/"&gt;How to write CRaP Rust code&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://llogiq.github.io/2017/06/01/perf-pitfalls.html"&gt;Rust Performance Pitfalls — Llogiq on stuff&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.freelists.org/post/luajit/Ramblings-on-languages-and-architectures-was-Re-any-benefit-to-throwing-off-lua51-constraints"&gt;Ramblings on languages and architectures (was Re: any benefit to throwing off lua51 constraints?)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://web.eecs.utk.edu/~azh/blog/booksformystudents.html"&gt;Books I recommend to my software engineering students - Austin Z. Henley&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.calnewport.com/blog/2020/04/20/more-on-cultivating-a-deep-life-mindset/"&gt;More on Cultivating a Deep Life: Mindset&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do less&lt;/li&gt;
&lt;li&gt;Do better&lt;/li&gt;
&lt;li&gt;Know why&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://getpocket.com/explore/item/here-s-the-1-thing-you-need-to-do-to-learn-more-about-anything"&gt;Here’s the One Thing You Need to Do to Learn More About Anything&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Land on just one you have an interest in or need to know, and then just stay there a while.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="social"&gt;Social&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.gatesnotes.com/Health/Pandemic-Innovation"&gt;The first modern pandemic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60145"&gt;写给校招生：我是如何设计校招面试的&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="content-creation"&gt;Content Creation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=SVbckfMaI6w"&gt;Sp 006 幕后故事： 回形针是怎么做视频的&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;聊聊我们（回形针团队）是怎么工作的，都会在什么环节犯错，以及对于这些问题的看法。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funny"&gt;Funny&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1256382849067790337"&gt;RT @hanawa_hinata: 搬家的时候不要让六个人一起搬沙发。 https://t.co/Sxut5OtPyE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/_NeverBehave_/status/1198334726400069632"&gt;@&lt;em&gt;NeverBehave&lt;/em&gt;: 是我了 https://t.co/cdZZoiZ5JG&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Documentation, stack overflow and me&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/szfuqi/status/1254495303761354754"&gt;@szfuqi: 没听过老式打字机担纲独奏的协奏曲吧？来来来，一起开开眼&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.oo-software.com/en/shutup10"&gt;O&amp;amp;O ShutUp10 -Free antispy tool for Windows 10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theverge.com/2020/4/20/21225061/phone-tablet-android-ios-phone-tablet-pc-webcam-windows-mac-os-how-to-use"&gt;How to use your Android or iOS device as a webcam - The Verge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/thecat/status/1256015756367556615"&gt;@thecat: 喔喔 終於有堪用的 jira 替代品出現啦&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;tara&lt;/li&gt;
&lt;li&gt;clubhouse&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-04-26</title><link>https://blog.iany.me/journal/2020/04/what-i-touched-this-week-2020-04-26/</link><pubDate>Sun, 26 Apr 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/04/what-i-touched-this-week-2020-04-26/</guid><description>&lt;p&gt;I have published two posts.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/zh/2020/04/working-on-ios-experience-report/"&gt;使用 iOS 工作体验报告&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/04/write-to-any-ios-files-location-via-working-copy/"&gt;♯ Write to Any iOS Files Location via Working Copy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I shared one link:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.goodbooks.io"&gt;Good Books | Books recommended by successful people&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="experiment-working-on-ipad"&gt;Experiment Working on iPad&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.engagespark.com/blog/mosh-through-firewalls/"&gt;Mosh and firewalls: How to tunnel all mosh/ssh traffic through a proxy - engageSPARK&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;60000-61000&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/doitian/status/1252041584151080960"&gt;@doitian: Hi @quip, your app cannot edit spreadsheet, could you just let me use it in the browser? &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.reddit.com/r/iPadOS/comments/f3qxtf/how_to_disable_the_keyboard_toolbar_on_ipad_os/"&gt;How to disable the keyboard toolbar on ipad OS? - iPadOS&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Try turning off Shortcuts under General -&amp;gt; Keyboards. I disable it and Predictive.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/yarnpkg/yarn/issues/7866"&gt;Yarn Debian key expiry date updated (EXPKEYSIG 23E7166788B63E1E) · Issue #7866 · yarnpkg/yarn&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=XA2WjJbmmoM"&gt;How to Do 90% of What Plugins Do (With Just Vim)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.cyberciti.biz/faq/unix-howto-read-line-by-line-from-file/"&gt;Linux/UNIX: Bash Read a File Line By Line - nixCraft&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash
input=&amp;quot;/path/to/txt/file&amp;quot;
while IFS= read -r line
do
echo &amp;quot;$line&amp;quot;
done &amp;lt; &amp;quot;$input&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="technology"&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/133817993"&gt;央行数字货币（DC/EP）技术的无责任猜想&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.benthamsgaze.org/2020/04/21/transparency-evidence-and-dispute-resolution/"&gt;Transparency, evidence and dispute resolution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="social"&gt;Social&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MjM5NzEwNjA5Mg==&amp;amp;mid=2648672012&amp;amp;idx=1&amp;amp;sn=8550a3f304887e31b83fa7fb89e277b1&amp;amp;chksm=bef43fcf8983b6d99ea9b2fa9e45ba6fa410fc35e23791089fcf30476d9272ea9c07d86c1efc&amp;amp;token=223595660%E2%8C%A9=zh_CN"&gt;58 | 一切烦恼都来自人际关系&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=VEjrYfAfcBs"&gt;谈谈追求财富自由道路上的几个误区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/sell-a-product-that-doesnt-exist/"&gt;How to sell a product that doesn&amp;rsquo;t exist yet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.vox.com/2020/4/10/21214980/coronavirus-economy-jobs-ppe"&gt;Coronavirus lessons from World War II - Vox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/aLuW6yF3bH8cy5R62bin6A"&gt;为什么别人发钱我们却发消费券&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/cindywei2017/status/1252700241637396483"&gt;@cindywei2017: 西班牙马德里的一名的哥在疫情爆发后，经常免费接送患者来往医院。这一天，医院又给的哥打电话让他来接病人，结果，当他走进医院时，看到的竟是医护人员列队在门口用掌声有节奏地迎接他，同时，医院还给了他一个信封，里面是支票和赠言。的哥当场感动的不知所措！&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="design"&gt;Design&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://archive.org/details/organisationsbuchdernsdap_201702/page/n117/mode/2up"&gt;Nazi Brand Guide : Free Download, Borrow, and Streaming : Internet Archive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60099"&gt;没有美术基础，如何在 iPad 上做出有设计感的图片？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60052"&gt;iPad 上的绘画 App 怎么选？12 款绘画工具横评&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60079"&gt;提升效率之路为何总是失败？这是我的思考与改变&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://writings.stephenwolfram.com/2019/02/seeking-the-productive-life-some-details-of-my-personal-infrastructure/"&gt;Seeking the Productive Life: Some Details of My Personal Infrastructure—Stephen Wolfram Writings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=UFdR8w_R1HA"&gt;How I Take Notes and Journal | Brainstorming + Focusing + Reducing Anxiety | Tim Ferriss&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/kkkarlo76/status/1251791598184206336"&gt;@kkkarlo76: Tips for Recharging* Take a 15 minute break&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/digital-declutter/"&gt;How to Declutter Your Digital Life &amp;amp; Reclaim Your Attention&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/ivieani/status/1251384328497610752"&gt;@ivieani: I don’t pick up the slack to make it easier for men to approach me. If it’s hard for you to begin with, that’s your sign not to even bother&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funny"&gt;Funny&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/luis69225222/status/1251852887484854272"&gt;安定医院郝不了大夫 (@luis69225222): 那我就不是很能谅解了&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://krisp.ai"&gt;Krisp | Noise Cancelling App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://unicode-table.com/en/blocks/"&gt;Unicode - Unicode Character Table&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.m.wiktionary.org/wiki/Wiktionary:Main_Page"&gt;Wiktionary, the free dictionary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.starwars.com/news/star-wars-backgrounds"&gt;Star Wars Backgrounds for Video Calls &amp;amp; Meetings | StarWars.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-04-19</title><link>https://blog.iany.me/journal/2020/04/what-i-touched-this-week-2020-04-19/</link><pubDate>Sun, 19 Apr 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/04/what-i-touched-this-week-2020-04-19/</guid><description>&lt;p&gt;Picks from last week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/coolXiao/status/1249490482884784129"&gt;@coolXiao: 「Λ-Reading」是我唯二订阅的中文 Newsletter&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sobolevn.me/2020/03/do-not-log"&gt;Do not log&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Logging is not cheap, and sometimes there are better alternatives.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1"&gt;CS Visualized: Useful Git Commands&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://sled.rs/errors"&gt;Error Handling in a Correctness-Critical Rust Project&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;The most successful efforts finding the most bugs boiled down to randomly causing different operations to fail&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Keeping errors that must be handled separately in their own types&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/spacejam/sled/blob/05de9a415c8794a775817fc1e1fd123e8ad20d84/src/fail.rs"&gt;sled/fail.rs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/spacejam/sled/blob/05de9a415c8794a775817fc1e1fd123e8ad20d84/tests/test_tree_failpoints.rs"&gt;sled/test_tree_failpoints.rs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="technology"&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html"&gt;The Clean Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alistair.cockburn.us/hexagonal-architecture/"&gt;Hexagonal architecture – Alistair Cockburn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://boats.gitlab.io/blog/post/the-problem-of-effects/"&gt;The problem of effects in Rust&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.yoshuawuyts.com/fallible-iterator-adapters/"&gt;Fallible Iterator Adapters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alschwalm.com/blog/static/2017/03/07/exploring-dynamic-dispatch-in-rust/"&gt;Exploring Dynamic Dispatch in Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rodneybrooks.com/what-networks-will-co-evolve-with-ai-and-robotics/"&gt;What Networks Will Co-Evolve With AI and Robotics? – Rodney Brooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thenewstack.io/git-at-15-how-git-changed-the-way-we-code/"&gt;Git at 15: How Git Changed the Way We Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="social--business"&gt;Social &amp;amp; Business&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/-R4P8eKwYIdvcj0eSXKi2A"&gt;被公链们遗忘的加油站 —— DeFi 发展的重大隐患之一&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzAxMTg2MzAwMg==&amp;amp;mid=2247484088&amp;amp;idx=1&amp;amp;sn=4b73f55552d3178028cb084624b66f99&amp;amp;chksm=9bbbd40daccc5d1bf3abf9966e668cd24589b2dc72988efbf5f6f4ec4eed7a2adb76874cc87d&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1586774056824&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;和 Tokenlon 聊透去中心化交易所&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mckinsey.com/featured-insights/leadership/the-future-is-not-what-it-used-to-be-thoughts-on-the-shape-of-the-next-normal?cid=other-eml-alt-mip-mck&amp;amp;hlkid=30a39a0bbca34a4a8903a39c3b6202bb&amp;amp;hctky=11942895&amp;amp;hdpid=933fd4ac-98de-43bb-b49d-e4c223bc4e4d"&gt;How business leaders can plan for the next normal | McKinsey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/V5Dk4gpzpdb-zsfurp9ZiA"&gt;互联网是人类历史的一段弯路吗？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/60002"&gt;中文互联网中「讨论」的消亡&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/lscEjwGYX6wRUQOpK9M5kQ"&gt;秦晖：为什么这两年来有很多异常的事情发生？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzA4OTQ2NzI1Nw==&amp;amp;mid=2650413148&amp;amp;idx=1&amp;amp;sn=e1852b200019943b27086b332a4e97a7&amp;amp;chksm=8814c84abf63415c83217fae739f3b8a8d47b53b64a30590e3129e42e37e7a84f1f888221427&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1586676918038&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;所谓的入关学：谁是满洲人？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/2NGeszgn8P1sQ2afqBlrOQ"&gt;一个人开始高度自律的4个迹象&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/5oWeXEGjIscbXTsHWDnLGw"&gt;消灭信息过载——定制你的信息小秘书&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="life"&gt;Life&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=TQqgf8kB6R8"&gt;Perfect Posture in 5 Steps (BAD POSTURE BUSTER!)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funny"&gt;Funny&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1251491769142767621"&gt;网警因为 &amp;ldquo;一个键盘不可能卖出去两三千元&amp;rdquo; 的常识破获了一起贩毒案件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/EvaFoxU/status/1250167064993640454"&gt;@EvaFoxU: Current World Population 7,777,777,777&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-04-12</title><link>https://blog.iany.me/journal/2020/04/what-i-touched-this-week-2020-04-12/</link><pubDate>Sun, 12 Apr 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/04/what-i-touched-this-week-2020-04-12/</guid><description>&lt;p&gt;I have published a post about &lt;a href="https://blog.iany.me/2020/04/rust-pin/"&gt;♯ Rust Pin&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="shared-links"&gt;Shared Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://xuejie.space/2020_04_11_diviner_a_new_attempt_on_deterministic_testing/"&gt;Diviner: A New Attempt on Deterministic Testing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a post from my friend who has started a new project to implement a FoundationDB style deterministic simulation testing tool in Rust.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://decentralizedthoughts.github.io/2020-04-02-bilinear-accumulators-for-cryptocurrency/"&gt;Bilinear Accumulators for Cryptocurrency Enthusiasts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Easy to read article about the bilinear accumulator. It is also the
preliminary reading to help understanding more complicated accumulators.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://setapp.com/apps/timeless"&gt;Timeless on Setapp | Reduce time anxiety and stay focused.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I love the idea of this new app comming to Setapp recently. It shows me an indicator of the current time slot.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://core.ac.uk/"&gt;CORE – Aggregating the world’s open access research papers&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/59948"&gt;无暇看手机的时候，你可以这样听文章&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;手机上专门下了 Pocket 就为了有时候听听阅读列表里的文章&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://adevait.com/software/solid-design-principles-the-guide-to-becoming-better-developers"&gt;SOLID Design Principles: The Guide to Becoming Better Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://adevait.com/software/creating-branching-strategy"&gt;Creating a Branching Strategy for Small Teams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://boats.gitlab.io/blog/post/why-ok-wrapping/"&gt;A brief apology of Ok-Wrapping&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cfsamson.github.io/books-futures-explained/"&gt;Introduction - Futures Explained in 200 Lines of Rust&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/work-from-home-advice/"&gt;The 13 Most Impactful Things Teams Can Do To Stay Productive While Working From Home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.blog/2020/04/06/a-practical-guide-to-writing-technical-specs/"&gt;A practical guide to writing technical specs - Stack Overflow Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/59606"&gt;互联网与我的生活｜我用这些方法夺回被侵占的注意力 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="technology"&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.blog/2020-04-07-celebrating-15-years-of-git-an-interview-with-git-maintainer-junio-hamano/"&gt;Celebrating 15 years of Git: An interview with Git maintainer Junio Hamano - The GitHub Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pingcap.com/blog/future-of-database-unified-infrastructure-to-adapt-intelligently/"&gt;A Peek into the Future of Database: A Unified Infrastructure to Adapt Intelligently&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/datadriveninvestor/why-the-ergodox-might-be-the-perfect-keyboard-for-you-d223fc40977e"&gt;Why the ErgoDox Might be the Perfect Keyboard for You.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@batlounis/how-ipad-beats-the-laptop-for-heavy-work-4776cba5e55d"&gt;How iPad beats the laptop for heavy work - Salim Batlouni - Medium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other"&gt;Other&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5MjA1Mzk2MQ==&amp;amp;mid=2650877440&amp;amp;idx=1&amp;amp;sn=6f75a39c1854cf6cccd35bb38822c279&amp;amp;chksm=bd59a1a68a2e28b03e26a66bf828b3a20098ef2f888ae67551679665eefd6d1a1e2c75ed1658&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1586585502628&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;五本书，揭示人类如何走出过往的瘟疫 | 书评&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=RkTaMyatsTo"&gt;Why are TV Cameras still HUGE and expensive ?&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/59789"&gt;8 件价格不到 50 元的生活好物，让我感受到藏在细节里的美好&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/59882"&gt;《集合啦！动物森友会》给我带来的现实消费思考&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=E2bQjmY-8lk"&gt;盘点五年来我用过的那些很贵但是很值的科技产品 |电脑 相机 硬盘 三脚架&amp;hellip;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;放毒警告&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funny"&gt;Funny&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/skamille/status/1246534738136924160"&gt;Camille Fournier (@skamille): Today is my son&amp;rsquo;s birthday, so to celebrate we decided to do family Nailed It! Here was the goal, and the result.Nailed It!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/Poohbear198964/status/1248669038168817666"&gt;月半月半 (@Poohbear198964): 宜家这广告……看前半部分我本来都准备哭了&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/quakewang/status/1248852233556385792"&gt;@quakewang: 这个详细的分解太牛比了，只用了一个主传动系统，词穷，只能说牛比，牛比 Robot Dreams LEGO GBC - Design Breakdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/QQZookeeper/status/1248858237320826880"&gt;@QQZookeeper: 終極深黃好嘈呀 https://t.co/PJ8Eu5aG9a&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-04-05</title><link>https://blog.iany.me/journal/2020/04/what-i-touched-this-week-2020-04-05/</link><pubDate>Sun, 05 Apr 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/04/what-i-touched-this-week-2020-04-05/</guid><description>&lt;p&gt;I have read the book &lt;a href="https://www.goodreads.com/review/show/3262245923"&gt;水母不会冻结&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="technology"&gt;Technology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/fluidity/keyspace-end-to-end-encryption-using-ethereum-and-ipfs-87b04b18156b"&gt;KeySpace: End-to-End Encryption Using Ethereum and IPFS&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://wingolog.org/archives/2020/03/25/firefoxs-low-latency-webassembly-compiler"&gt;firefox&amp;rsquo;s low-latency webassembly compiler&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Web browsers therefore take a two-pronged approach: they have a compiler optimized for throughput, and a compiler optimized for latency.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://jvns.ca/blog/debugging-attitude-matters/"&gt;When debugging, your attitude matters&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://tokio.rs/blog/2020-04-preemption/"&gt;Reducing tail latencies with automatic cooperative task yielding · Tokio&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://troubles.md/abusing-rustc/"&gt;Inviting God&amp;rsquo;s Wrath with Cursed Rust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How to tune the memory size of &lt;code&gt;Cow&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dpc.pw/how-i-structure-my-apps-in-rust-and-other-languages"&gt;How I structure my apps (in Rust and other languages) — Dawid Ciężarkiewicz aka `dpc`&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/tokio-rs/tokio/commit/acf8a7da7a64bf08d578db9a9836a8e061765314"&gt;sync: new internal semaphore based on intrusive lists · tokio&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://brooker.co.za/blog/2020/03/22/rust.html"&gt;Two Years With Rust - Marc&amp;rsquo;s Blog&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://archive.md/QZPm4"&gt;so long rust, why i built ZZ – Arvid E. Picciani – internet connected microelectronics | Founder of devguard&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="methodology"&gt;Methodology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://writingcooperative.com/zettelkasten-how-one-german-scholar-was-so-freakishly-productive-997e4e0ca125"&gt;Zettelkasten — How One German Scholar Was So Freakishly Productive&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Always link your notes&lt;/li&gt;
&lt;li&gt;Explain why you’re linking notes&lt;/li&gt;
&lt;li&gt;Use your own words&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.trello.com/decision-journal"&gt;Why You Need To Start Using A Decision Journal&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="covid-19"&gt;COVID-19&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.ft.com/content/19d90308-6858-11ea-a3c9-1fe6fedcca75"&gt;Yuval Noah Harari: the world after coronavirus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terrytai.me/ni-men-lian-ren-du-bu-ai-du-zhe-yao-duo-shu-you-shi-yao-yong"&gt;&amp;ldquo;你们连人都不爱，读这么多书有什么用？&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.yiyu.me/2020/03/28/world-peace/"&gt;山海 | 不厌其烦&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funny"&gt;Funny&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/nixcraft/status/1244687642337226752"&gt;@nixcraft: This is how I feel when I use vim with all my keyboard shortcuts&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/savinola/status/1244739628474593280"&gt;@savinola: Fixing a bug while WFH&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jlevy/the-art-of-command-line"&gt;jlevy/the-art-of-command-line: Master the command line, in one page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mcginty/snow"&gt;mcginty/snow: A Rust implementation of the Noise Protocol Framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-03-29</title><link>https://blog.iany.me/journal/2020/03/what-i-touched-this-week-2020-03-29/</link><pubDate>Sun, 29 Mar 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/03/what-i-touched-this-week-2020-03-29/</guid><description>&lt;p&gt;I have published a post &lt;a href="https://blog.iany.me/2020/03/fix-ios-app-store-family-purchase-sharing/"&gt;♯ Fix iOS App Store Family Purchase Sharing&lt;/a&gt; this week.&lt;/p&gt;
&lt;p&gt;This weekend I have participated an internal Hackathon, here is &lt;a href="https://github.com/doitian/animagus-xi"&gt;my project&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://xuejie.space/2020_03_20_what_do_we_mean_when_we_say_account_model/"&gt;What Do We Mean When We Say Account Model?&lt;/a&gt;
It is widely believed in the blockchain world that account model has advantages over UTXO model in terms of usability, and I’ve been working on bridging the differences between UTXO model and account model in a blockchain. There is some initial attempt on the problem.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://justjjy.com/Introducing-Godwoken"&gt;Introducing Godwoken - A missing piece of the cell model&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/learn-rust-with-github-actions/"&gt;How to Learn Rust Without Installing Any Software&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Github Actions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/andy_kelley/status/1243262129601421312"&gt;I love, love, love this person&amp;rsquo;s reaction to reading the blog post about cross-compiling …&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Andrew Kelley (@andy_kelley): I love, love, love this person&amp;rsquo;s reaction to reading the blog post about cross-compiling. It&amp;rsquo;s not really that amazing actually. It works, not because of some great new feat, but because of the very nature of the Zig project as a sort of &amp;ldquo;reboot&amp;rdquo; of systems programming.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@KevinHoffman/rust-async-and-the-terrible-horrible-no-good-very-bad-day-348ebc836274"&gt;Rust Async and the Terrible, Horrible, No Good, Very Bad Day&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There’s “magic” happening there, and I dislike implicit magic.&lt;/li&gt;
&lt;li&gt;It is possible for a single dependency of your crate to be so tightly coupled to a future polling runtime that it effectively makes that runtime mandatory for all consumers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.commandlinefu.com/commands/view/13586/find-dead-symbolic-links"&gt;Find dead symbolic links Using find&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;find -L -type l
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="note-taking"&gt;Note Taking&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/coolXiao/status/1243698791410044928"&gt;也许是 YouTube 上最好的 iPad note taking 系列…&lt;/a&gt;
&lt;blockquote&gt;
&lt;p&gt;Happy Xiao (@coolXiao): 也许是 YouTube 上最好的 iPad note taking 系列，推荐这个YouTuber。 起初以为是在介绍使用 app，看到一半发现是在讲学习方法，到最后升华成励志大片&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=n0ql-yeY9u0"&gt;How I Take Notes with My iPad Pro in Lectures (Notability &amp;amp; GoodNotes) + Free Template&lt;/a&gt;
&lt;blockquote&gt;
&lt;p&gt;Today we&amp;rsquo;re going through How I take Notes on the iPad Pro, using Notability and GoodNotes&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/coolXiao/status/1244115634113269760"&gt;@coolXiao: 「笔记之王」 （雾）- Tiago Forte 最近一次性放出了他的播客「Building a second brain」第一季的全部11&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="covid-19"&gt;COVID-19&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzU2MzkyMTMwMg==&amp;amp;mid=2247484340&amp;amp;idx=1&amp;amp;sn=8304512c55e9df07c2f5f4979dd4c83f&amp;amp;chksm=fc53ab4dcb24225b7f8cf50bb5b5549becf1abdf3437cc74b7f58dc3e0354c8b905ad9a9aa8d&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1584850773951&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;日本凭什么没下地狱？&lt;/a&gt;
&lt;blockquote&gt;
&lt;p&gt;这个没有流行性病毒也保持54%口罩佩戴率的族群，这个人们习惯于日常“咳嗽礼仪”，保持高频洗手洗澡习惯的族群，这个不喜欢张大口说话、不进行身体接触式问候的族群，这个饭店基本提供湿毛巾，公共场所必有干净卫生间的族群……可能就是日本不至跌落地狱的最大底气。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzA4Njg0ODE4NQ==&amp;amp;mid=2651576500&amp;amp;idx=3&amp;amp;sn=e375915e901e476e7b087bf7d77348ae&amp;amp;chksm=843d1f62b34a96747aea30dc65376ef22e712f0155599e3c556eb622e473408edfcf6a34268e&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1584961514006&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;抢购美元：全球危机的危险信号&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/coolXiao/status/1243093742837329920"&gt;@coolXiao: The Sweet Setup 的站长 Shawn Blanc 放出了他的价值247美金的时间管理课程供大家免费注册学习，共克时艰。我已注册，无需付款方式，终身有效。Free Time Management Course from Shawn Blanc&lt;/a&gt;
Happy (@coolXiao): The Sweet Setup 的站长 Shawn Blanc 放出了他的价值247美金的&lt;a href="https://talk.macpowerusers.com/t/free-time-management-course-from-shawn-blanc/16239"&gt;时间管理课程&lt;/a&gt;供大家免费注册学习，共克时艰。 我已注册，无需付款方式，终身有效。 Free Time Management Course from Shawn Blanc&lt;/li&gt;
&lt;li&gt;&lt;a href="http://seastar.io/"&gt;Seastar - Seastar&lt;/a&gt; Seastar is an advanced, open-source C++ framework for high-performance server applications on modern hardware.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/WongJian42/status/1239109455737810944"&gt;@WongJian42: 想买的链接在此：手机蓝牙自拍遥控器无线拍照红外线远程控制多功能抖音快手翻页拍摄照相苹果安卓通用视频录制快门万能神器&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funny"&gt;Funny&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1243947146644049920"&gt;@doitian: RT @ailoysl: 西部牛仔拔槍都沒這麼快！ https://t.co/c4NLXqr7fm&lt;/a&gt;
Ian Yang (@doitian): RT @ailoysl: 西部牛仔拔槍都沒這麼快！ &lt;a href="https://t.co/c4NLXqr7fm"&gt;https://t.co/c4NLXqr7fm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/Terry721831/status/1242991102421942272"&gt;@Terry721831: #觀點 這注意不錯 泰國有一位慈父 在疫症下非常擔心好動的兒子 不想兒子在街上流連惹上肺炎 就立即為兒子剪了一個不能出街的髮型 大家可以考慮一下這髮型 無論男女應該會自我隔離超過14天&lt;/a&gt;
Terry (@Terry721831): #觀點 這注意不錯 泰國有一位慈父 在疫症下非常擔心好動的兒子 不想兒子在街上流連惹上肺炎 就立即為兒子剪了一個不能出街的髮型 大家可以考慮一下這髮型 無論男女應該會自我隔離超過14天&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/mashable/status/1242644120662757376"&gt;@mashable: It&amp;rsquo;s so tiny! https://t.co/gdfufsld2O&lt;/a&gt;
Mashable (@mashable): It&amp;rsquo;s so tiny! &lt;a href="https://t.co/gdfufsld2O"&gt;https://t.co/gdfufsld2O&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-03-22</title><link>https://blog.iany.me/journal/2020/03/what-i-touched-this-week-2020-03-22/</link><pubDate>Sun, 22 Mar 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/03/what-i-touched-this-week-2020-03-22/</guid><description>&lt;p&gt;I have&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;read &lt;a href="https://www.goodreads.com/review/show/3241352212"&gt;呼吸&lt;/a&gt; by Ted Chiang.&lt;/li&gt;
&lt;li&gt;published &lt;a href="https://blog.iany.me/2020/03/fix-ios-app-store-family-purchase-sharing/"&gt;♯ Fix iOS App Store Family Purchase Sharing&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I shared&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://makandracards.com/makandra/28067-git-diff-per-word-or-character"&gt;Git: Diff per word or character&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git diff --color-words
git diff --color-words=.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Useful to double check the changes in a very long line.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.vertex42.com/blog/excel-formulas/array-formula-examples.html"&gt;Array Formula Examples – Simple to Advanced&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Array formula can do vector/matrix computation without storing the intermediate results in cells.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sourcehut.org/blog/2020-03-04-when-you-lose-2fa/"&gt;What do we do when you lose your 2FA codes?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The author recommends 2 trustworthy ways to prove you are you:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You own a PGP/SSH private key&lt;/li&gt;
&lt;li&gt;You own the domain&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.iterm2.com/documentation-utilities.html"&gt;iTerm2 Utilities&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;iTerm2 has some interesting utilities. For example, it2dl/it2ul allows you transferring files in an SSH session.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;@Philo2018 &lt;a href="https://twitter.com/Philo2018/status/1238040503460843520"&gt;recommended&lt;/a&gt; &lt;a href="https://www.youtube.com/channel/UCoBapgfK_m6G7airg1rdn8w"&gt;YouTuber Alphonso Dunn&lt;/a&gt; to learn painting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;频道简直太棒了！三言两语就能把很多规律和技巧讲清楚，讲解足够细致，对初学者足够友好，还没有废话。这就是真正优秀的老师。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@jason.carver/intro-to-beam-sync-a0fd168be14a"&gt;Intro to Beam Sync - Jason Carver - Medium&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Beam Sync starts by executing the launch block, and only requests state data that is missing from the local database.
Lazy download&lt;/li&gt;
&lt;li&gt;we run another process in the background which fills these gaps.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="engineering"&gt;Engineering&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tonsky.me/blog/good-times-weak-men/"&gt;Good times create weak men @ tonsky.me&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Knowledge does not automatically transfer to the next generation.&lt;/li&gt;
&lt;li&gt;In programming, we are developing abstractions at an alarming rate. When enough of those are stacked, it becomes impossible to figure out or control what’s going on down the stack.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tonsky.me/blog/disenchantment/"&gt;Software disenchantment @ tonsky.me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.guillaume-gomez.fr/articles/2020-03-12&amp;#43;Guide&amp;#43;on&amp;#43;how&amp;#43;to&amp;#43;write&amp;#43;documentation&amp;#43;for&amp;#43;a&amp;#43;Rust&amp;#43;crate"&gt;Guide on how to write documentation for a Rust crate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading"&gt;Reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/build-trust-remote-work/"&gt;How to build trust on a remote team&lt;/a&gt;
Whenever folks transition to remote work, they often ask me about accountability. How do remote managers know their people are working? And how can remote employees show their bosses that they&amp;rsquo;re getting stuff done?&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.goodnotes.com/online-teaching-with-the-ipad-and-goodnotes-d0909a75e530?source=rss----b20d6679c6e9---4"&gt;Online teaching with the iPad and GoodNotes&lt;/a&gt;
Universities across the globe are reacting to the spread of Coronavirus and are either suspending the start of the new year or announced to teach all classes virtually until further notice.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@LanceUlanoff/apple-fixes-the-ipad-pros-biggest-problem-bc74bc24eaea"&gt;Apple Fixes the iPad Pro’s Biggest Problem - Lance Ulanoff - Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.cloudflare.com/the-history-of-the-url/"&gt;The History of the URL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="covid-19"&gt;COVID-19&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/46x-KBDEtrYza6xAQjh01g"&gt;我在泉州隔离酒店废墟下的69小时33分&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzI4OTc5MDEyNA==&amp;amp;mid=2247484449&amp;amp;idx=1&amp;amp;sn=54904937bb745bf7dd1c4e8d329fd0e0&amp;amp;chksm=ec2885e2db5f0cf4ed78f65054e32d07e192c005fef69517accb38cb091d241922c7834fad9e&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=0316MSXRX8yLXuE7LSKczDUK&amp;amp;sharer_sharetime=1584337539670&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;方方和易中天：文人的脊梁，学者的骨气&lt;/a&gt;
&lt;blockquote&gt;
&lt;p&gt;有人问，常识到底是什么？举个例子，比如一只狗跑来咬你，你拿起打狗棒，打狗。狗逃回去，叫了一群狗过来咬你，其中还有大狗和疯狗。这时候，常识会告诉你：闪人！把地盘留给狗。让它们自己狂吠，过不多久，它们就会因为吠声高低不同骨头分配不同，而相互自咬。而你呢，在家喝茶看书下馆子。像隔离病毒一样，与会咬人的群狗隔离，这就是常识。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzA4OTQ2NzI1Nw==&amp;amp;mid=2650413014&amp;amp;idx=1&amp;amp;sn=1cc8f61f17f7bb2068505058bc122a74&amp;amp;chksm=8814c7c0bf634ed6995f24daefbfb282c1a6c32ad805b3aa03dedcc1b66bd8451a7f53f2d5dc&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1584337525888&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;英国疫情，钱和那些人&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/haoel/status/1240503475504418816"&gt;Hao Chen (@haoel):&lt;/a&gt; 疫情在全世界爆发后，总会看到嘲笑别国的做法的观点，觉得别国都应该来抄中国的作业。 我们前期的失误，其实是需要反思的。 而我们后期的有效，别的国家也是学不来的——体制和国情不同。 何况，这是场灾难。 不管是嘲笑别国疫情蔓延，还是猛夸自己国家棒，其实都是对灾难和逝者的亵渎。 —— 张文宏&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=h8OX0FNWANM"&gt;Recognizing Ignaz Semmelweis and Handwashing&lt;/a&gt;
Today’s Doodle follows the official guidelines on how to properly wash your hands from the World Health Organization.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1241163178114834432"&gt;@doitian: RT @mranti: 美国国务卿彭佩奥是自川普之后，又一个美国政客正式称呼新冠病毒为Chinese Virus。我觉得大家得记着这些名字，我们在中国抨击自己政府错误的同时，也别忘了是哪些美国人以种族主义攻击我们。我们学习和尊重美国，是因为马丁路德金、肯尼迪 …&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="funny"&gt;Funny&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/waylybaye/status/1240484380239331328"&gt;Baye (@waylybaye): 大部分语言开源项目的 README vs Rust 语言开源项目的 README&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/tyomateee/status/1239161039830171649"&gt;@tyomateee: 後ろ姿は完全に少女&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/not_2b_or_2b/status/1239515936043999233"&gt;To be, or not to be (@not_2b_or_2b):&lt;/a&gt; 在股票市场，一般账户里只有0-50万的人 ，会天天驾人。 50-100万的人，不怎么讲话，会专心研究股市。 100万以上的人都会很嫌虚，别人问起来都会说，我是菜乌、不怎么懂。 我刚进股市的时候很谦虚，后面慢慢开始研究股市，直到现在变的也开始骂人了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/luinlee/status/1240262664728629248"&gt;@luinlee: 每一次新 iPad 发布我都会看一下这个 issue: “今天 VS Code 支持 iPad 了吗？”&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/williamwoo7/status/1240270525638696963"&gt;@williamwoo7: 谁是妈妈最爱的儿子？CNN主播采访扭腰州长新闻直播演变成了兄弟二人争宠吵架现场&amp;hellip;&amp;hellip;对，没错，他们是亲兄弟我们电视台是不带干私活的&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.vecteezy.com/"&gt;Download Free Vectors, Clipart Graphics, Vector Art &amp;amp; Design Templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1239149884235591680"&gt;@shengyincan: 我学了一个 Economics of Money and Banking，也毕业了&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rust.extension.sh/"&gt;Rust Search Extension - The ultimate search extension for Rust&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-03-15</title><link>https://blog.iany.me/journal/2020/03/what-i-touched-this-week-2020-03-15/</link><pubDate>Sun, 15 Mar 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/03/what-i-touched-this-week-2020-03-15/</guid><description>&lt;p&gt;I have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Published a new post &lt;a href="https://blog.iany.me/2020/03/save-web-articles-via-inoreader/"&gt;♯ Save Web Articles via Inoreader&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Completed the course &lt;a href="https://twitter.com/doitian/status/1239147515494256640"&gt;Game Theory&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Read the book &lt;a href="https://www.goodreads.com/review/show/3225593343"&gt;The Most Dangerous Game&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="picks"&gt;Picks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/59095"&gt;让每一次听讲都有所收获：我的讲座笔记经验分享 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;速记&lt;/li&gt;
&lt;li&gt;使用自己的语言总结&lt;/li&gt;
&lt;li&gt;方便寻回 (recalling)&lt;/li&gt;
&lt;li&gt;定时复习&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://kb.iany.me/para/lets/p/Personal&amp;#43;SOPs/Taking&amp;#43;Notes"&gt;Taking Notes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/playlist?list=PLs9bpmr0ZQc9tMUEkLSpu5VYbZNBW5L80"&gt;Final Cut Pro X Essentials&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Learned many FCP shortcuts and tips here.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://kb.iany.me/para/lets/f/Final&amp;#43;Cut&amp;#43;Pro/%E2%99%AF&amp;#43;Final&amp;#43;Cut&amp;#43;Pro"&gt;♯ Final Cut Pro&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;p&gt;I read may articles about Go and Rust last week.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dave.cheney.net/2020/02/23/the-zen-of-go"&gt;The Zen of Go | Dave Cheney&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pingcap.com/blog/early-impressions-of-go-from-a-rust-programmer/"&gt;Early Impressions of Go from a Rust Programmer | TiDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pingcap.com/blog/rust-compilation-model-calamity/"&gt;The Rust Compilation Model Calamity | TiDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dave.cheney.net/2014/03/19/channel-axioms"&gt;Channel Axioms | Dave Cheney&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fasterthanli.me/blog/2020/i-want-off-mr-golangs-wild-ride/"&gt;amos - I want off Mr. Golang&amp;rsquo;s Wild Ride&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;when you make something simple, you move complexity elsewhere.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And several about databases.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.acolyer.org/2020/03/04/millions-of-tiny-databases/"&gt;Millions of tiny databases&lt;/a&gt;
This paper is a real joy to read. It takes you through the thinking processes and engineering practices behind the design of a key part of the control plane for AWS Elastic Block Storage (EBS): the Physalia database that stores configuration information.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pingcap.com/success-stories/choosing-right-database-for-your-applications/"&gt;Choosing the Right Database for Your Applications&lt;/a&gt;
Shopee is the leading e-commerce platform in Southeast Asia and Taiwan. It is a platform tailored for the region, providing customers with an easy, secure, and fast online shopping experience through strong payment and logistical support.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.acolyer.org/2020/03/11/rocks-db-at-facebook/"&gt;Characterizing, modeling, and benchmarking RocksDB key-value workloads at Facebook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/nervosnetwork/https-medium-com-nervosnetwork-animagus-part-1-introduction-66fa8ce27ccd-cfb361a7d883"&gt;Animagus Part 1: Introduction - Nervos Network - Medium&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=A8HFUKRf9FA"&gt;How to Pronounce Animagus&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/95159996"&gt;突破区块链不可能三角（五）—— 闪电网络，链下技术，以及它们的局限性 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/109044249"&gt;突破区块链不可能三角（六）—— 吹个关于区块链活性的哨子 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/the-capital/digital-democracy-and-governance-2-0-2cdb4533e379"&gt;Digital Democracy and Governance 2.0&lt;/a&gt;
The term “Governance” is an umbrella term that covers ways and processes on how we coordinate on scale. How we organize our societies, define and enforce rules and make collective decisions. Today our coordination relies mostly on governments and private companies protected by enforceable laws.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.economist.com/leaders/2015/10/31/the-trust-machine"&gt;The trust machine&lt;/a&gt;
BITCOIN has a bad reputation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/snippets-dating/"&gt;How snippets make me more efficient at work&amp;hellip;and dating&lt;/a&gt;
I may seem efficient, but really, I&amp;rsquo;m just good at using snippets. Snippets are a form of text expander—they&amp;rsquo;re basically a fancy version of autocorrect, which allow you to type some small amount of text and have way more text appear.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/productivity-ninja-attention-management/"&gt;How to Be a Productivity Ninja: Attention management&lt;/a&gt;
In any knowledge work job, you&amp;rsquo;re really playing two different roles at once: you&amp;rsquo;re simultaneously the &amp;ldquo;boss&amp;rdquo; and the &amp;ldquo;worker&amp;rdquo;. You&amp;rsquo;re responsible for:&lt;/li&gt;
&lt;li&gt;&lt;a href="https://draveness.me/few-words-time-management"&gt;如何管理自己的时间资产&lt;/a&gt;
时间是我们最重要的资产，对时间的使用和管理决定了我们的个人成长。人的注意力是有限的，我们不能将同一份时间投入到不同的事情中，一旦选择花费时间做一些事情，就不得不放弃做其他事情的可能性。如果我们能够静下&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/59098"&gt;打造一个高度自动化的在线阅读流程，我用 Instapaper + Pinboard 做到了&lt;/a&gt;
注：本文参与少数派 2019 年度征文「效率有心得」赛道。 缘起 用粉丝的话来说，我一直都是 Instapaper 的白嫖粉，喜欢、享受，但不花钱。作为一个重度阅读爱好者，我至今没有买 Instapaper 或 Pocket Premium 的原因很简单，连接不&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/slack-etiquette-at-zapier/"&gt;Slack etiquette at Zapier&lt;/a&gt;
With hundreds of employees chatting every day, Zapier&amp;rsquo;s Slack is a busy place. To keep things under some semblance of control, our People Ops team put together a guide to Slack etiquette at Zapier.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading"&gt;Reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://johngrahamdev.com/Building-An-Engineering-Roadmap/"&gt;Maximize your team. How I created an Engineering Roadmap – John Graham – Director of Software Engineering at Miles Technologies. Philadelphia area Angular and .NET developer.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ituring.com.cn/article/118072"&gt;一位匠人的中州韵——专访Rime输入法作者佛振（图灵访谈）&lt;/a&gt;
弓辰，号佛振，出身地是河南郑州以北十里弓家寨，在北平做码农。佛振是「Rime／中州韵」输入法引擎的开发者，它不仅仅是一个输入法，也是一个输入法算法框架，这一套算法支持了拼音、双拼、注音、五笔、仓颉等所有音
&lt;ul&gt;
&lt;li&gt;对一个匠人来说，创作一件有情调的作品，一定是出于对精湛技艺的追求。如果仅仅是为了现实目的，固然可以写出高质量的软件，代码本身却容易缺乏灵气。&lt;/li&gt;
&lt;li&gt;编程的乐趣在于享受这份创造的快感：他不只是在敲代码，而是在开动脑筋调教程序，增益其所不能。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/N3u-8OwA5WdHZ2W0hUsG4g"&gt;为什么杨振宁在唁电中说戴森该获诺奖 | 自由者戴森（上）&lt;/a&gt;
微信号 mrscience100 功能介绍 启蒙，探索，创造。 一年后，我去教伟大的奥本海默怎么做物理。戴森。图源：Wikipedia.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="covid-19"&gt;COVID-19&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5MjA4MjA4MA==&amp;amp;mid=2654740470&amp;amp;idx=2&amp;amp;sn=a9b5e5035415e23ecda80119ad2de09b&amp;amp;chksm=bd630e398a14872f3582f975869352ab3f5bda134f4ed440a571ec0c87be67884284d823195a&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1581761599568&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;美媒追问湖北为何换帅，我大使回应&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5NzIwMTIyMQ==&amp;amp;mid=2650312795&amp;amp;idx=1&amp;amp;sn=7c2cad37d6c73b97a25b1048d30691f0&amp;amp;chksm=bed1a47189a62d67de0288594c76201f59ac77301f688cd2c4f1cf6ec71150604a7525770cff&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1581754766041&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;梁文道：奥斯维辛之后，我们还能写诗吗？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1235850947529605121"&gt;关笑天 (@a23442796): 利物浦主教練克洛普賽後被問新冠肺炎疫情，當場怒噴提問的記者&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1237149842834632705"&gt;@laogao: 可防可控。 https://t.co/Ga0bdLndru&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1239112485010960384"&gt;RT @profgalloway: Teachers (and doctors) will save the world &amp;ldquo;Why is it important to wash your hands?&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="recommendation-from-subscriptions"&gt;Recommendation from Subscriptions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1239076098635268097"&gt;@tualatrix: 又买了本新书《转型中的地方政府：官员激励与治理》（第二版）。在 @KindleBookDeal 上看到书名时就好奇了一下，去豆瓣搜了下：9.3 分，于是立马下单了。最近书多的看不完了…看不完才好&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1238491907031891968"&gt;@novoreorx: 向所有 macOS 用户推荐 QSpace，迄今为止最好用的 Finder Replacement。已使用一周并删掉了 Commander One Pro, TotalFinder 等老劣产品。昨天又有一大波更新，加入了批量重命名和文件堆叠（类似 Yoink）等功。我现在只想给作者再塞点钱，定价真的低了&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20210925072047/http://blog.thomasyao.wtf/2020/03/%E6%AD%BB%E4%BA%A1%E6%90%81%E6%B5%85%E6%B8%B8%E6%88%8F%E4%BA%A7%E4%B8%9A%E7%9A%84%E9%9D%A9%E6%96%B0%E4%B9%8B%E4%BD%9C/"&gt;「死亡搁浅」游戏产业的革新之作 – 精神病患者阅读室&lt;/a&gt;
这是我第一次在博客中写关于游戏的内容，以后会将游戏与影视作品等归类为流行文化的分类中去进行阐述，这个分类中的所有文章都将包含一定剂量的剧透，请酌情阅读。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="photography"&gt;Photography&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/wallockman/status/1238812384644325376"&gt;墙人锁男 on Twitter: &amp;ldquo;中国国家地理这张照片太酷了，三峡库区一居民要离开故乡，带走了门口的一棵桃树。&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/hsinyiyu_ed/status/1236290336512589827"&gt;YHY | 七分飽 (@hsinyiyu_ed): 維也納一名野生動物攝影師迪克（Dick van Duijn），捕捉到難得的畫面，他一隻松鼠靠近了一朵金黃色的雛菊，捧著花朵，將鼻子湊近聞花香，不禁閉上了眼睛，陶醉無比，一臉滿足的模樣。&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1239035350976278528"&gt;My first purchase in Mac App Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lists.busybox.net/pipermail/busybox/2010-December/074114.html"&gt;Understanding the bin, sbin, usr/bin , usr/sbin split&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://seeing-theory.brown.edu/"&gt;Seeing Theory&lt;/a&gt; visualizes statistics.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/CPriestman/status/1237045136657395717"&gt;@CPriestman: Breath of the Wild players are out of control https://t.co/zWPEHq1ncH https://t.co/YdsZtgeQXF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5NTExMTk5MA==&amp;amp;mid=2660772525&amp;amp;idx=1&amp;amp;sn=eae9a51ec729f2bf163bba496c3dcf83&amp;amp;chksm=bd91fff48ae676e23c6a4acc2eb58542ca48e95ad3dd321e941d2628f53322f6b9241a522b38&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1584093443911&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;用英文怼人的最高境界&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-03-07</title><link>https://blog.iany.me/journal/2020/03/what-i-touched-this-week-2020-03-07/</link><pubDate>Sat, 07 Mar 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/03/what-i-touched-this-week-2020-03-07/</guid><description>&lt;p&gt;I published 1 post last week: &lt;a href="https://blog.iany.me/2020/03/blocking-stdout/"&gt;♯ Blocking Stdout&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Printing to stdout may block the thread. Close the pipes if you want to run a child process but don&amp;rsquo;t care its output.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20200707120422/https://zhuanlan.zhihu.com/p/25131561"&gt;Blocking inside async code | Stjepan’s blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="productivity"&gt;Productivity&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58621"&gt;作为一名本科生，我如何用 MarginNote 3 拆书&lt;/a&gt;
MarginNote 3 使用心得&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/59011"&gt;建立良好的制表习惯，我克服了「Excel 恐惧症」&lt;/a&gt;
两年前，当我在简历上写下「熟练使用 Excel」并将它递到一家家公司求职时，内心可以用毫无底气来形容。一方面，我简直对数字毫无敏感度（事实证明这种感觉可以通过重复和刻意练习来培养）；另一方面，彼时的 Excel 在我&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58833"&gt;2019 我的写作桌面清单推荐&lt;/a&gt;
文具推荐&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="social"&gt;Social&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzA4ODU1MjY3MQ==&amp;amp;mid=2651153834&amp;amp;idx=1&amp;amp;sn=255b76d54096c2916c4499c48be1dc1b&amp;amp;chksm=8bd9a01abcae290c02bf9be7e91d5ec68edde06d89e22adc5901ae406290a28dea8923b72105&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=030164ut2PMPF9AvA3TvWgqB&amp;amp;sharer_sharetime=1583068284267&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;“谣言”这个词语，不应该写进法律&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cn.nytimes.com/business/20200306/coronavirus-g7-economic-policy/"&gt;为何各国难以实施减轻疫情损失的经济政策？ - 纽约时报中文网&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="funny"&gt;Funny&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1235397280418553856"&gt;@GeekPlux: 我司不定期会发伪造的钓鱼邮件到工作邮箱，如果不幸点了某个链接，就会被要求重新做安全培训…刚开始我感觉挺好的，但现在越来越觉得是安全部门的恶趣味了，有时候会把钓鱼邮件做得和真的一摸一样，甚至还用超级像的域名邮箱…一点就跳出“oops，你又中招了”的提示…没错，我刚被调戏完回来…&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1235908029087977473"&gt;@not_2b_or_2b: 换个角度看世界：北京、 纽约、 巴黎；贝加尔湖&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-02-29</title><link>https://blog.iany.me/journal/2020/02/what-i-touched-this-week-2020-02-29/</link><pubDate>Sat, 29 Feb 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/02/what-i-touched-this-week-2020-02-29/</guid><description>&lt;p&gt;In the last week, I have posted 2 articles and recommended two web pages.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/02/excel-as-diagram-maker/"&gt;♯ Excel as Diagram Maker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/9be340cba58cb459ed265f49202a05bf"&gt;Paste Markdown as Code Block in Evernote&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://simnalamburt.github.io/vim-mundo/"&gt;Mundo - Visualize your Vim Undo Tree&lt;/a&gt;
I use Gundo before. This one can search though the changes history.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nervosnetwork/slice-cheatcheat"&gt;nervosnetwork/slice-cheatcheat&lt;/a&gt;
The trivial differences in the slice syntaxes are really disturbing when switching programming languages.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="what-helped-me-to-build-the-blog"&gt;What Helped Me to Build the Blog&lt;/h1&gt;
&lt;p&gt;I have migrated a Ghost theme to Hugo for my blog.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/reuixiy/hugo-theme-meme"&gt;reuixiy/hugo-theme-meme&lt;/a&gt;
I often lost how to do a thing in Hugo. This theme often helps me to find the way.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ghost.org/docs/api/v3/handlebars-themes/editor/"&gt;Ghost Theme Features: The Editor - Documentation&lt;/a&gt;
Since I migrated the theme from Ghost, this is a good reference to create the Hugo template which matches the CSS.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://favicon.io/favicon-generator/"&gt;The best Favicon Generator (completely free) | Favicon.io&lt;/a&gt;
I use this to generate a new favicon.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gohugo.io/content-management/taxonomies/"&gt;Taxonomies | Hugo&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;I want to keep the &amp;ldquo;post&amp;rdquo; section before others in the home page, so I can create the file &lt;code&gt;content/post/_index.md&lt;/code&gt; and set weight to -99 in Front Matters.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hugo introduces page resources and image processing in newer versions. I can keep the images along with the post and it is also possible to resize the images to create responsive src set.
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gohugo.io/content-management/page-bundles/"&gt;Page Bundles | Hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gohugo.io/content-management/image-processing/"&gt;Image Processing | Hugo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://regisphilibert.com/blog/2018/01/hugo-page-resources-and-how-to-use-them/"&gt;Hugo Page Resources, and how to use them&amp;hellip; | Regis Philibert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/custom-search/docs/element"&gt;Custom Search Element Control API | Google Developers&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;I use Google Custom Search in my blog. The API allows me to trigger the search by JavaScript.
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;google.search.cse.element.getElement&lt;/code&gt; to find the element and use &lt;code&gt;element.execute('news')&lt;/code&gt; to start a search.&lt;/li&gt;
&lt;li&gt;Setup the callback &lt;code&gt;__gcse.searchCallbacks.ready&lt;/code&gt; to process the search result, and return &lt;code&gt;true&lt;/code&gt; in the callback to prevent rendering the HTML in its own search page.&lt;/li&gt;
&lt;li&gt;Hide the custom search box and result page via CSS.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="what-i-have-learned"&gt;What I Have Learned&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://zsh.sourceforge.net/Doc/Release/Expansion.html"&gt;zsh: File Expansion&lt;/a&gt;
The extended file expansion is useful in zmv.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.shell-tips.com/2008/01/14/printing-a-sequence-of-letters-or-numbers/"&gt;Printing a sequence of letters or numbers | Shell Tips!&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo {a..g}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.vertex42.com/blog/excel-formulas/array-formula-examples.html"&gt;Excel Array Formula Examples – Simple to Advanced&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;kbd&gt;Ctrl+Shift+Enter&lt;/kbd&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://trello.com/templates/personal/4-ls-exercise-Bay7DwxN"&gt;4 Ls Exercise&lt;/a&gt;
The 4 L&amp;rsquo;s exercise is designed for YOU as a LEADER or ROLE MODEL. How do you be the best version of YOU. Start by doing it for yourself first and then do it as a team.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.atlassian.com/blog/jira-software/5-fun-sprint-retrospective-ideas-templates"&gt;5 fun sprint retrospective ideas with templates - Work Life by Atlassian&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://trac.ffmpeg.org/wiki/Waveform"&gt;Waveform – FFmpeg&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/CannonballSkippy/4455e9bed74241bfbd640a8083fd38b3"&gt;A list of examples on how you can use filters to make visual representations of audio using ffmpeg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://photographylife.com/using-filename-template-editor-in-lightroom"&gt;Using Filename Template Editor in Lightroom&lt;/a&gt;
Difference between Sequence # and Image #&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.eleven-labs.com/en/openpgp-almost-perfect-key-pair-part-1/"&gt;OpenPGP - The almost perfect key pair | Blog Eleven Labs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Geometric_progression"&gt;Geometric progression - Wikipedia&lt;/a&gt;
I have to use the formula to find the solution of a quiz in the Game Theory course.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-katex"&gt;\[ \sum _{i=1} ^{n} {ar^{i-1}} = \frac{a(1 - r^n)}{1 - r} \]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When p is between 0 and 1, and the sequence is infinite, the sum is&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-katex"&gt;\[ \sum _{i=1} ^{\infty} {ar^{i-1}} = \frac{a}{1 - r} \]
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.bkacontent.com/how-to-correctly-use-apa-style-title-case/"&gt;How To Correctly Use AP (and APA) Style Title Case&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="what-i-have-read"&gt;What I Have Read&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58621"&gt;作为一名本科生，我如何用 MarginNote 3 拆书&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58833"&gt;2019 我的写作桌面清单推荐&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58829"&gt;996 和 GTD 是同一块硬币的两面：对当代生活时间感知的反思 | 年度征文&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="related-to-covid-19"&gt;Related to COVID-19&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1231077127765872641"&gt;新冠病毒疫情与本世纪其他传染病疫情（非典，猪流感，中东呼吸综合症，埃博拉）时间点对比&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="funny-things"&gt;Funny Things&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/doitian/status/1228704476497879046"&gt;@sprezzaa: 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈天津出租车&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=qyW12gDeWPI"&gt;I Draw Like A Printer ( Drawing Will Smith ) - DP Truong&lt;/a&gt;
&lt;blockquote&gt;
&lt;p&gt;Many people say that I can draw as if I were a printer. However, I think I still don&amp;rsquo;t paint like a real printer. Today I&amp;rsquo;m going to draw the same way a printer does.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="bookmarks-i-saved"&gt;Bookmarks I Saved&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/yudai/gotty"&gt;yudai/gotty&lt;/a&gt;
Share your terminal as a web application&lt;/li&gt;
&lt;li&gt;&lt;a href="https://elements.envato.com/video-templates/compatible-with-final-cut-pro?_ga=2.21989499.1362849140.1582036564-1530649263.1582036564&amp;amp;_gac=1.82340580.1582036564.Cj0KCQiAs67yBRC7ARIsAF49CdW27V0CoORg_po279xQMz_hIboHKSI8iY8dqXac94QJerBXlyTRLCkaAhagEALw_wcB"&gt;Download Editable Video Templates - Envato Elements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://motionarray.com/browse?date_added=last-6-months&amp;amp;sort_by=most-popular&amp;amp;categories=final-cut-pro-templates&amp;amp;page=1&amp;amp;gclid=Cj0KCQiAs67yBRC7ARIsAF49CdWyiyz0rfky95TcmZJpB3MDW4JiCR0JuceuEH3swrYWOs2aLxio11waAjTCEALw_wcB"&gt;Premiere Pro and After Effects Templates, Stock Music, and more. | Motion Array&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-02-16</title><link>https://blog.iany.me/journal/2020/02/what-i-touched-this-week-2020-02-16/</link><pubDate>Sun, 16 Feb 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/02/what-i-touched-this-week-2020-02-16/</guid><description>&lt;h2 id="featured"&gt;Featured&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✒️ &lt;a href="https://blog.iany.me/2020/02/bitcoin-core-network-event-loops/"&gt;♯ Bitcoin Core Network Event Loops&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a guide about how bitcoin-core handles network messages in the source code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/feynman-technique/"&gt;The Feynman Technique: How to Learn Anything Quickly &lt;/a&gt;
&amp;ldquo;Why teaching is the key to understanding&amp;rdquo;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Choose a concept to learn&lt;/li&gt;
&lt;li&gt;Teach it to yourself or someone else&lt;/li&gt;
&lt;li&gt;Return to the source material if you get stuck&lt;/li&gt;
&lt;li&gt;Simplify your explanations and create analogies&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=675gW3a0IAc"&gt;Podcast Editing Demo - Ferrite + iPad + Apple Pencil &lt;/a&gt;
demonstrates how to edit a podcast on iPad using Ferrite Recording Studio.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/675gW3a0IAc?t=59"&gt;00:59&lt;/a&gt; Strip silence&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/675gW3a0IAc?t=99"&gt;01:39&lt;/a&gt; &amp;hellip; the stripped silence defaults&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/675gW3a0IAc?t=222"&gt;03:42&lt;/a&gt; Double tap selects everything forward in a single track.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/675gW3a0IAc?t=253"&gt;04:13&lt;/a&gt; Tapping with two fingers to play and pause&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/675gW3a0IAc?t=139"&gt;02:19&lt;/a&gt; Quick delete with pencil to swipe from right to left&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.codingnow.com/2020/02/git_clone_from_shallow_bundle.html"&gt;云风的 BLOG: git shallow clone 的一个问题 &lt;/a&gt;
网络抖动和无法断点续传是国内使用 Git 的痛点。之前的做法是服务器上 clone 后把 .git 压缩打包下载回来。随便找了个库对比了下，bzip2 12M, git bundle 11M，打包和恢复速度也快得多。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git bundle create bundlefile --all&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git bundle unbundle bundlefile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;git 还不知道是 shallow clone 。好在这个文件很简单，就是 HEAD 的 hash 。手工创建一个就好了。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://draveness.me/sketch-and-sketch"&gt;技术文章配图指南&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选择合适的工具，一定要支持模版或组件库统一配色和风格&lt;/li&gt;
&lt;li&gt;直接在配图里添加标题方便单独分&lt;/li&gt;
&lt;li&gt;固定宽度，长度可变&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="zero-knowledge-proof"&gt;Zero Knowledge Proof&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/102090192"&gt;从零开始学习 zk-SNARK（三）——从程序到多项式的构造 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/103167410"&gt;从零开始学习 zk-SNARK（四）——多项式的约束 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/103530121"&gt;从零开始学习 zk-SNARK（五）——Pinocchio 协议 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://z.cash/technology/zksnarks/"&gt;What are zk-SNARKs? | Zcash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@weijiek/how-i-learned-zk-snarks-from-scratch-177a01c5514e"&gt;Zero-knowledge proofs, a board game, and leaky abstractions: how I learned zk-SNARKs from scratch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://graydon2.dreamwidth.org/253769.html"&gt;After memory safety, what do you think is the next big step for compiled languages to take?&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;usable module system&lt;/li&gt;
&lt;li&gt;error management&lt;/li&gt;
&lt;li&gt;The boundary between synchronous-world and asynchronous world&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://programmingisterrible.com/post/139222674273/write-code-that-is-easy-to-delete-not-easy-to"&gt;Write code that is easy to delete, not easy to&amp;hellip; — programming is terrible&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Every line of code is written without reason, maintained out of weakness, and deleted by chance” Jean-Paul Sartre’s Programming in ANSI C.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://white.ucc.asn.au/2020/02/09/whycompositionaljulia.html"&gt;JuliaLang: The Ingredients for a Composable Programming Language&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiple Dispatch: Open overloading via pattern match&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/8lYuxvAkG9BTGN5_n326Lg"&gt;关于 Go1.14，你一定想知道的性能提升与新特性&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.bitmex.com/bitcoins-initial-block-download/"&gt;Bitcoin’s Initial Block Download&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Running the scripts is still the bottleneck of IBD.&lt;/li&gt;
&lt;li&gt;Bitcoin Core 0.12.0 performs well in the above analysis because:
&lt;ul&gt;
&lt;li&gt;libsecp256k is enabled.&lt;/li&gt;
&lt;li&gt;it does not validate signatures for transaction inputs where the witness is segregated.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bitcoin.org/en/p2p-network-guide"&gt;P2P Network Guide - Bitcoin&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The primary disadvantage is that the IBD node relies on a single sync node for all of its downloading.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;All of these problems are addressed in part or in full by the headers-first IBD method used in Bitcoin Core 0.10.0.&lt;/p&gt;
&lt;p&gt;Sync headers with single sync peers, but download concurrently from multiple peers.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://epicenter.simplecast.com/episodes/326-gCxdPhtY"&gt;Kevin Wang: Nervos – Scaling Smart Contact Blokchains With Proof of Work and Generalized UTXO&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzA4NjUxNTI5Mw==&amp;amp;mid=2649979832&amp;amp;idx=1&amp;amp;sn=b4bc2b40d926962b7e2f9d862c1d29c3&amp;amp;chksm=87c0508ab0b7d99c56c8900570dbab58c056c089c707aa9ce78e0f4730ef50499d273287c9a3&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1581613933225&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;嘉楠耘智一天上涨 82%, 南瓜张邮件透露了什么？&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;嘉楠耘智筹备进军基于互联网的算力销售，有的人喜欢把这类业务称为&amp;quot;云算力&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58761"&gt;SET 法则：过好每一天的时间管理之道 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.intercom.com/blog/rice-simple-prioritization-for-product-managers/"&gt;RICE: Prioritization for product managers | Inside Intercom &lt;/a&gt;
RICE is a scoring system for prioritization
&lt;ul&gt;
&lt;li&gt;Reach&lt;/li&gt;
&lt;li&gt;Impact&lt;/li&gt;
&lt;li&gt;Confidence&lt;/li&gt;
&lt;li&gt;Effort&lt;/li&gt;
&lt;li&gt;How is a RICE score calculated? &lt;code&gt;RICE = RIC/E&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="covid-19"&gt;COVID-19&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58811"&gt;经历了这次疫情的考验，这些健康、生活、效率习惯值得你长期坚守 - 少数派&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;手边常备的健康仪器和药物&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;消炎药和抗生素不可混用，抗生素更不可滥用。两者之区别请见 &lt;a href="https://dxy.com/column/2269"&gt;这篇文章&lt;/a&gt; 和 &lt;a href="https://dxy.com/column/23368"&gt;这篇文章&lt;/a&gt;；&lt;/li&gt;
&lt;li&gt;家庭常备、没事儿就翻翻、用药之前先查一下、不要听爸爸妈妈姑姑二大爷老中医建议而是先看一看它的健康资讯来源：&lt;a href="https://dxy.com/"&gt;丁香医生&lt;/a&gt;、&lt;a href="https://baike.qq.com/"&gt;腾讯医典&lt;/a&gt; 和 &lt;a href="https://www.msdmanuals.com/"&gt;默沙东诊疗手册&lt;/a&gt;，三者均有独立 App。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;ldquo;我最常用的两款电子产品清洁装备是 &lt;a href="https://item.jd.com/57767508229.html"&gt;iKlear 的清洁套装&lt;/a&gt; 和 &lt;a href="https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-18497266172.22.20cb6875ILUvEK&amp;amp;id=588092227242"&gt;AM 的清洁套装&lt;/a&gt;。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;我推荐每个人都买一个紫外线消毒灯，平时放在没人的房间开上半个小时，杀毒效果极佳。&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://m.dxy.com/column/1917"&gt;家里有孩子，备好这些家庭常备药！ - 丁香医生&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzI2ODExNzg5OQ==&amp;amp;mid=2653626526&amp;amp;idx=1&amp;amp;sn=4fe0eb2554831f35661d892da88fb259&amp;amp;chksm=f12bf27ac65c7b6c1f55adeb6584b0feb2b73b935efbbf6030ec4cc6d884dfaf5c71f65ec4f3&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1581423277079&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;隔离中的“钻石公主号”邮轮&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5NzIwMTIyMQ==&amp;amp;mid=2650312755&amp;amp;idx=1&amp;amp;sn=02fd6d58479476c5ef241eb06b197ce7&amp;amp;chksm=bed1a41989a62d0f5f144005ea16fa3f8c740b44c6573e5747536fab7bb29656bb0cb1deabd6&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1581577579468&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;“亚洲霍乱”背后的恐惧，不止关于死亡&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58835"&gt;五年远程办公经验告诉你，疫情当前，怎样远程才舒坦？ - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://i-item.jd.com/100003760180.html"&gt;【霍尼韦尔1400021-M-44】EasyChem内置式重型防化服 &lt;/a&gt;
P4 防护&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58754"&gt;停工停课不停学，向你推荐 7 门有趣实用的线上课程 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://item.jd.com/100001164126.html"&gt;京东云 不限流量4G路由 吉客猫&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;每天 20G 高速流量 + 20G 中速&lt;/li&gt;
&lt;li&gt;30天 79 90天 199 半年 299 一年 499&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://go.dev/"&gt;go.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-02-09</title><link>https://blog.iany.me/journal/2020/02/what-i-touched-this-week-2020-02-09/</link><pubDate>Sun, 09 Feb 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/02/what-i-touched-this-week-2020-02-09/</guid><description>&lt;h1 id="my-posts"&gt;My Posts&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/02/download-only-gmail-inbox/"&gt;♯ Download Only Gmail Inbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/doitian/d11dab0b5afe385d8bca3c74a353c622"&gt;The Brief Guide to Remote Work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2020/02/vim-iterm-launcher/"&gt;♯ Vim iTerm Launcher&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="zero-knowledge-proof"&gt;Zero Knowledge Proof&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.aventus.io/zero-knowledge-proofs-a-laymans-introduction-7020b93beeda"&gt;Zero-Knowledge Proofs: A Layman&amp;rsquo;s Introduction - Aventus Network&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.benthamsgaze.org/2019/05/22/efficient-cryptographic-arguments-and-proofs-or-how-i-became-a-fractional-monetary-unit/"&gt;Efficient Cryptographic Arguments and Proofs &amp;ndash; Or How I Became a Fractional Monetary Unit &amp;ndash; Bentham&amp;rsquo;s Gaze&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zkp.science/"&gt;What is a zero-knowledge proof? | Zero-Knowledge Proofs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/31651393"&gt;区块链学习笔记 (1)：零知识证明的江湖 - 知乎&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;第一类协议中，在零知识证明协议部署前，需要一台机器生成一些初始参数，这些参数将在每一次证明与验证中被用到。参数生成后，参数生成算法运行中使用的所有数据必须销毁，否则整个协议将不安全。协议的安全性依赖于一台机器的数据销毁，那么最简单粗暴的想法就是在所有人的见证下毁掉这台机器。&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/73616724"&gt;zkPoD:区块链，零知识证明与形式化验证，实现无中介、零信任的公平交易 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/29491567"&gt;零知识证明：一个略微严肃的科普 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/99260386"&gt;从零开始学习 zk-SNARK（一）&amp;mdash;&amp;mdash;多项式的性质与证明 - 知乎&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;如果我们有两个阶为 d 的不相等多项式，他们相交的点数不会超过 d。&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/100636577"&gt;从零开始学习 zk-SNARK（二）&amp;mdash;&amp;mdash;多项式的非交互式零知识证明 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="blockchain"&gt;Blockchain&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Joel Monegro&amp;rsquo;s serial about fat protocols and thin clients
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coindesk.com/blockchain-application-stack"&gt;The Blockchain Application Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.usv.com/writing/2016/08/fat-protocols/"&gt;Fat Protocols | Union Square Ventures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.placeholder.vc/blog/2020/1/30/thin-applications"&gt;Thin Applications &amp;mdash; Placeholder&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://draveness.me/whys-the-design-bitcoin-database"&gt;为什么比特币可以防篡改 - Why&amp;rsquo;s THE Design?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.matter-labs.io/optimistic-vs-zk-rollup-deep-dive-ea141e71e075"&gt;Optimistic vs. ZK Rollup: Deep Dive&lt;/a&gt;
链闻: Optimistic Rollup 支持通用合约，短期内能上线。ZK Rollup 不需要挑战，但是目前还不支持通用合约。
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;大部分现有的代码库都可以轻松移植到 Optimistic Rollup 上。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;大型区块的欺诈证明可能需要比 Layer 1 区块 gas limit 所允许的更多的 gas。那么，这些欺诈证明必须被分解为多个 ETH 交易。&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20210414082741/https://ethfans.org/posts/staking-models-for-productive-assets"&gt;观点 | 生产性资产的质押获利模型 » 论坛 » EthFans | 以太坊爱好者&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="rust"&gt;Rust&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20200320020653/https://stjepang.github.io/2020/01/25/build-your-own-block-on.html"&gt;Build your own block_on() | Stjepan&amp;rsquo;s blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20200207092849/https://stjepang.github.io/2020/01/31/build-your-own-executor.html"&gt;Build your own executor | Stjepan&amp;rsquo;s blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/spacejam/extreme"&gt;spacejam/extreme: extremely boring async function runner!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.discordapp.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f"&gt;Why Discord is switching from Go to Rust - Discord Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="covid-19"&gt;COVID-19&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;❤️ &lt;a href="https://www.youtube.com/watch?v=0ySYM4kRJVY"&gt;Sp. 005 Everything about the Novel Coronavirus (2019-nCoV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;❤️ &lt;a href="https://v.qq.com/x/page/d0170ll8uv0.html"&gt;【BBC】人体的奥妙细胞内部隐藏的生命暗战_腾讯视频&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;❤️ &lt;a href="https://www.ted.com/talks/bill_gates_the_next_outbreak_we_re_not_ready"&gt;Bill Gates: The next outbreak? We&amp;rsquo;re not ready &lt;/a&gt;
What we need to prepare for the next epidemic.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloudflare-ipfs.com/ipfs/QmR96Pqy8S3p5HG6GAfjjztBUTAf7e2LM5jUsXfas3B6ii/"&gt;Philosophia哲学社: 对本次疫情的结构性反思：谣言、官僚和国家主义（上）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloudflare-ipfs.com/ipfs/QmR8j6LwREBwma1DRbYAQN8dCvYNaLVkoEjXQQGLC7SFtQ/"&gt;Philosophia哲学社: 对本次疫情的结构性反思：谣言、官僚与国家主义（下） &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/Z5o1UB6iIBAOx1_CAZ1Cuw"&gt;宝坻百货大楼疫情、东丽一家三口疫情警示了我们什么？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tech.sina.cn/scientist/2020-02-06/detail-iimxyqvz0641506.d.html?cre=tianyi&amp;amp;mod=wtech&amp;amp;loc=-3&amp;amp;r=-1&amp;amp;rfunc=2&amp;amp;tj=cxvertical_wap_wtech&amp;amp;tr=73&amp;amp;vt=4&amp;amp;pos=18"&gt;传统中医药，能治新冠病毒肺炎么？_手机新浪网 &lt;/a&gt;
对于有效的处方需要分析远离，提炼疗法&lt;/li&gt;
&lt;li&gt;&lt;a href="https://chinadigitaltimes.net/chinese/2020/02/%E7%BD%91%E6%98%93%E5%8F%B7%EF%BD%9C%E4%BA%94%E7%97%B4%E7%94%9F%E6%B4%BB%EF%BC%9A%E6%B8%85%E6%9C%9D%E7%9A%84%E9%82%A3%E4%B8%80%E5%9C%BA%E5%A4%A7%E7%98%9F%E7%96%AB%EF%BC%8C%E6%98%AF%E5%A6%82%E4%BD%95/"&gt;网易号｜五痴生活：清朝的那一场大瘟疫，是如何变成赞颂皇帝圣明的 | 中国数字时代&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://archive.is/XhK0j"&gt;统计数字之外的人：他们死于&amp;quot;普通肺炎&amp;quot;？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzI3NDU2OTUzMg==&amp;amp;mid=2247483809&amp;amp;idx=1&amp;amp;sn=40e232e82e52223bf6164f6d2265466d&amp;amp;chksm=eb1341f2dc64c8e438014efa5d4a444335a50e521748483e29eb9b2f3d4c247f43f9060e831a&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=&amp;amp;sharer_sharetime=1580806569790&amp;amp;sharer_shareid=e7bb68422a42795eb26b0930876fa613"&gt;江浙沪人民应该感到幸福，看看武汉和长三角的差距&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzAxNzI4MTMwMw==&amp;amp;mid=2651633060&amp;amp;idx=1&amp;amp;sn=2a609ecc595b923a3b96418b5f51696b&amp;amp;chksm=801feddcb76864ca7cf2c1ff460505d2b69d718040ee70fc42676ef848d4b13399e71275c83f"&gt;如何自助 &amp;mdash;&amp;mdash; 助人即助己&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="other-read-and-watched"&gt;Other Read and Watched&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;❤️ &lt;a href="https://www.youtube.com/watch?v=pW-SOdj4Kkk&amp;amp;feature=youtu.be"&gt;Jonathan Blow - Preventing the Collapse of Civilization (English only) - YouTube&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Technology will, by itself, degrade&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;❤️ &lt;a href="https://plan.io/blog/feature-prioritization/"&gt;Feature Prioritization: 7 Ways to Prioritize Features and Product Improvements | Planio&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Categorize the tasks&lt;/li&gt;
&lt;li&gt;Measure value and effort to determine the priority&lt;/li&gt;
&lt;li&gt;Sometimes it requires someone in the team to break the dead lock and decide the priority.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.hotjar.com/blog/open-ended-questions/"&gt;Open-ended vs. closed-ended questions: how to survey your users&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/voice-assistant-automations/"&gt;Make it so: Zaps you can trigger with your voice &lt;/a&gt;
Over a third of the U.S. population uses voice assistants like Alexa, Siri, or Google Assistant to accomplish everyday tasks like checking calendars, getting&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/NP_%28complexity%29"&gt;NP (complexity) - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/NP-completeness"&gt;NP-completeness - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Sublinear_function"&gt;Sublinear function - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/you-are-not-a-machine/"&gt;Your brain isn&amp;rsquo;t a computer, and that&amp;rsquo;s a good thing &lt;/a&gt;
You are not a machine&amp;mdash;and that&amp;rsquo;s a good thing. You can do things, right now, that no machine ever could. And I&amp;rsquo;m not talking about mushy stuff like loving your&amp;hellip;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;You can&amp;rsquo;t run faster than a car, or swim faster than a motorboat. It&amp;rsquo;s so obvious that we don&amp;rsquo;t think to compare runners to cars or swimmers to boats. We compare ourselves to computers all the time, though, which causes us to miss the ways in which our minds are different.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/heroku/how-containers-changed-the-world-1jip"&gt;How containers changed the world&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ibiblio.org/harris/500milemail.html"&gt;The case of the 500-mile email&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="references"&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.bobbywlindsey.com/2017/07/30/vim-functions/"&gt;Custom Vim Functions to Format Your Text &lt;/a&gt;
Use vimscript to automate file editing.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.apple.com/en-us/HT204063"&gt;Reset NVRAM or PRAM on your Mac - Apple Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.apple.com/en-us/HT201295"&gt;How to reset the SMC of your Mac - Apple Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://shimo.im/sheets/37k81J8BIiEIhxSx/MODOC"&gt;印象笔记高级检索语法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://textexpander.com/help/desktop/datetime.html"&gt;TextExpander Help: Date, Time, and Math Macros&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://unicode.org/reports/tr35/tr35-dates.html"&gt;UTS #35: Unicode LDML: Dates &lt;/a&gt;
Textexpander date format reference&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/s/rm1p5dsprta0yrg/Note%20Links%20-%20Evernote%20Developers.html?dl=0"&gt;Note Links - Evernote Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.noodlesoft.com/kb/restoring-hazel-from-backups/"&gt;Restoring Hazel from backups &amp;ndash; Noodlesoft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vim.fandom.com/wiki/Uniq_-_Removing_duplicate_lines"&gt;Uniq - Removing duplicate lines | Vim Tips Wiki | Fandom&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;:sort u&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@glenwhillier/heres-a-collection-of-apps-every-mac-user-should-be-aware-of-67e0716e4d77"&gt;Here&amp;rsquo;s A Collection Of Apps Every Mac User Should Be Aware Of&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="bookmarks"&gt;Bookmarks&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;❤️ &lt;a href="https://chrome.google.com/webstore/detail/rsshub-radar/kefjpfngnndepjbopdmoebkipbgkggaa"&gt;RSSHub Radar - Chrome Web Store &lt;/a&gt;
Awesome Chrome extensions to discover RSS&lt;/li&gt;
&lt;li&gt;❤️ &lt;a href="https://www.jetbrains.com/lp/mono/"&gt;JetBrains Mono: A free and open source typeface for developers | JetBrains: Developer Tools for Professionals and Teams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sci-hub.tw/"&gt;Sci-Hub: устраняя преграды на пути распространения знаний&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.bitcoin.it/wiki/Protocol_documentation"&gt;Protocol documentation - Bitcoin Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.librarything.com/mds/3"&gt;MDS: 3XX | LibraryThing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://classify.oclc.org/classify2/"&gt;OCLC Classify &amp;ndash; an Experimental Classification Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;rixcloud.com&lt;/del&gt; 已经停止服务&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.proxifier.com/"&gt;Proxifier - The Most Advanced Proxy Client&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npr.org/programs/morning-edition/"&gt;Morning Edition : NPR&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-02-02</title><link>https://blog.iany.me/journal/2020/02/what-i-touched-this-week-2020-02-02/</link><pubDate>Sun, 02 Feb 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/02/what-i-touched-this-week-2020-02-02/</guid><description>&lt;h2 id="zero-knowledge-proof"&gt;Zero-knowledge Proof&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/qed-it/the-incredible-machine-4d1270d7363a"&gt;The Incredible Machine - QEDIT - Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://pages.cs.wisc.edu/~mkowalcz/628.pdf"&gt;1998 - Jean-Jacques, Louis - How to Explain Zero-Knowledge Protocols to Your Children.pdf&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.cryptographyengineering.com/2014/11/27/zero-knowledge-proofs-illustrated-primer/"&gt;Zero Knowledge Proofs: An illustrated primer &amp;ndash; A Few Thoughts on Cryptographic Engineering&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Thus if the amount of information I can extract is identical in the &amp;lsquo;real experiment&amp;rsquo; and the &amp;rsquo;time machine experiment&amp;rsquo;, yet the amount of information Google puts into the &amp;rsquo;time machine&amp;rsquo; experiment is exactly zero &amp;mdash; then this implies that even in the real world the protocol must not leak any useful information.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.cryptographyengineering.com/2017/01/21/zero-knowledge-proofs-an-illustrated-primer-part-2/"&gt;Zero Knowledge Proofs: An illustrated primer, Part 2 &amp;ndash; A Few Thoughts on Cryptographic Engineering&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;We&amp;rsquo;re asking that a protocol be both sound &amp;mdash; meaning that a bogus Prover can&amp;rsquo;t trick some Verifier into accepting a statement unless it has special knowledge allowing it to prove the statement &amp;mdash; but we&amp;rsquo;re also asking for the existence of an algorithm (the simulator) that can literally cheat. Clearly both properties can&amp;rsquo;t hold at the same time. The solution to this problem is that both properties don&amp;rsquo;t hold at the same time. &amp;quot;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;A knowledge extractor (or just &amp;lsquo;Extractor&amp;rsquo; for short) is a special type of Verifier that interacts with a Prover, and &amp;mdash; if the Prover succeeds in completing the proof &amp;mdash; the Extractor should be able to extract the Prover&amp;rsquo;s original secret.&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;The Extractor is not required to exist during a normal run of the protocol.&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sec-bit.github.io/blog/2019/07/31/zero-knowledge-and-proof/"&gt;初识「零知识」与「证明」 - SECBIT Blog&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;零知识证明是打通链上数据与链下计算的关键技术，也是实现链上数据隐私保护的重要途径&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;证明不仅仅是一个严格推理，而且凝结了似乎很难机械化的创造性思维。证明中蕴含了大量的「知识」，每一次的突破，都将我们的认知提升到一个新的高度。&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sec-bit.github.io/blog/2019/08/06/understand-zero-knowledge-proof-by-simulator/"&gt;从「模拟」理解零知识证明：平行宇宙与时光倒流 - SECBIT Blog&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sec-bit.github.io/blog/2019/08/28/extractor-and-proof-of-knowledge/"&gt;读心术：从零知识证明中提取「知识」 - SECBIT Blog&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sec-bit.github.io/blog/2019/11/01/from-interactive-zkp-to-non-interactive-zkp/"&gt;亚瑟王的「随机」挑战：从交互到非交互式零知识证明 - SECBIT Blog&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcoin/bips/"&gt;The Schnorr/Taproot proposal is now published as BIPs 340, 341, and 342&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/nervosnetwork/how-the-nervos-ckbyte-gets-its-value-f0bd43333035?source=rss----4dab634dc673---4"&gt;How the Nervos CKByte Gets its Value &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a core question for any decentralized project, and it&amp;rsquo;s one we&amp;rsquo;ve thought carefully about in designing the CKByte as the protocol token of the Nervos Network. Ultimately, we believe a token&amp;rsquo;s value is derived from its core function or utility.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@avsa/sunsetting-mist-da21c8e943d2"&gt;Sunsetting Mist - Alex Van de Sande - Medium &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Why Mist team no longer builds a single app&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad"&gt;以太坊二层扩容之路：Plasma 衰落与 Rollup 崛起 - 链闻 ChainNews&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;第一个问题是， 每个用户 必须监控和验证 Plasma MVP 链上的所有交易，以检测恶意运营商的行为并及时退出。然而，事务验证成本高昂，并且这种监视需求为参与 Plasma 链增加了大量开销。&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;考虑到 Plasma 链可以任意增长，而以太坊区块已经接近其容量，几乎不可能将整个 Plasma 链倾倒到以太坊的主网上。因此，几乎可以肯定的是，大量退出会把以太坊挤爆。这就是所谓批量退出问题。&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="covid-19"&gt;COVID-19&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.thelancet.com/coronavirus"&gt;The Lancet Coronavirus &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;This hub page will house all articles, comments, and editorial&amp;hellip;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://wwwnc.cdc.gov/eid/article/25/1/17-1901_article"&gt;Complexity of the Basic Reproduction Number (R0) - Volume 25, Number 1&amp;mdash;January 2019 - Emerging Infectious Diseases journal - CDC&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://pic1cdn.luojilab.com/html/p/w42LM6M/rrpKM7BV4XIWLK3l8z2q.html?from=timeline&amp;amp;isappinstalled=0"&gt;新型冠状病毒的来龙去脉&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/Xq7jT0ErmFsIXZY5m3xoNQ"&gt;试剂盒困局：为何确诊这么难？&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://wenhui.whb.cn/zhuzhanapp/yiliao/20200123/317060.html?from=timeline&amp;amp;isappinstalled=0"&gt;武汉封城后，这支上海的队伍进去了！沪首批重症和呼吸科医师已出征，今夜到达&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Noisy Turtle (@NoisyTurtle2600): Updated Wuhan #2019-nCoV cases compared with other viruses. I managed to find some numbers on MERS, but that disease didn&amp;rsquo;t rapidly rise from 100 like Wuhan, SARS and Swine Flu has. Lower cases and higher fatality rate makes that more like the two Ebola viruses (EVD). &lt;a href="https://twitter.com/NoisyTurtle2600/status/1221365780849119233"&gt;Tweet&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;方舟子 (@fangshimin): 《柳叶刀》总编呼吁媒体不要夸大2019新型肺炎的危害，因为根据现在掌握的情况该新型病毒只有中等的传染性和较低的致病性，没必要夸大其词制造恐慌。&lt;a href="https://twitter.com/fangshimin/status/1221287783714574336"&gt;Tweet&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dayomoses (@Dayo_Moses): 没错，不要小看明星后援会的组织能力和能动性，既有经验又有决心，在统筹分配方面有效率多了。&lt;a href="https://twitter.com/Dayo_Moses/status/1221696130955612161"&gt;Tweet&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="remote-and-management"&gt;Remote and Management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/dont-break-the-chain/"&gt;[Workflow Guide] Accomplish Your Big Goals With Don&amp;rsquo;t Break the Chain &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t Break the Chain (or The Seinfeld Method) is a productivity strategy coined after comedian Jerry Seinfeld. Curiously, he&amp;rsquo;s claimed to have no part in its inception. The productivity method commits you to completing a daily goal for an extended period of time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zapier.com/learn/remote-work/"&gt;The Ultimate Guide to Remote Work | Zapier&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zapier.com/blog/how-to-work-asynchronously/"&gt;How to collaborate across time zones &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My team is spread across four states and three time zones. People often ask me how we find good times to meet. My answer: it&amp;rsquo;s not easy, but it&amp;rsquo;s also rarely necessary. Working remotely, especially when your team is distributed across the globe, means working asynchronously. And it&amp;rsquo;s a skill.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://open.buffer.com/better-remote-worker/"&gt;9 Lessons That Made Me a Better Remote Worker&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://open.buffer.com/remote-work-routine/"&gt;How to Create A Remote Work Routine That Works&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Changing locations once in a while can jumpstart creativity and productivity!&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twist.com/remote-work-guides/remote-project-management"&gt;Remote Projects 101: The Remote Guide to Project Management | Twist&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.zfnd.org/blog/a-new-network-stack-for-zcash/"&gt;A New Network Stack For Zcash&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/ZcashFoundation/zebra"&gt;ZcashFoundation/zebra &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Zcash rewrote using Rust&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.yoshuawuyts.com/tide-channels/"&gt;Tide Channels &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Websockets in Tide&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.hackeriet.no/packaging-a-rust-project-for-debian/"&gt;Packaging a Rust project for Debian&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@KevinHoffman/building-a-functional-core-in-elixir-6201ddcb4300"&gt;Building a Functional Core in Elixir &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s right, I&amp;rsquo;m that guy that reads a book multiple times. The first time I go through because I&amp;rsquo;m excited and inspired about some topic, and I don&amp;rsquo;t want to lose the momentum by putting the book down &amp;mdash; without regard for the author&amp;rsquo;s advice to do just that.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.fluentcpp.com/2020/01/17/technical-debt-is-like-a-tetris-game/"&gt;Technical Debt Is like a Tetris Game - Fluent C++&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://overreacted.io/goodbye-clean-code/"&gt;Goodbye, Clean Code &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It was a late evening. My colleague has just checked in the code that they&amp;rsquo;ve been writing all week. We were working on a graphics editor canvas, and they implemented the ability to resize shapes like rectangles and ovals by dragging small handles at their edges.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@KevinHoffman/shedding-some-light-on-dark-9086b45988ed?source=rss-4a61baec208d------2"&gt;Shedding Some Light on Dark &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Trace-Driven Development&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hackernoon.com/the-throw-keyword-was-a-mistake-l9e532di"&gt;The Throw Keyword was a Mistake &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Exception Handling Decades ago when a program crashed you would see a dire error message This meant that something horrible had happened. Usually the problem was the software tried to read or write some memory outside its address space.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.wikiwand.com/en/NP-completeness"&gt;NP-completeness - Wikiwand&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;A problem is said to be &lt;a href="https://www.wikiwand.com/en/NP-hard"&gt;NP-hard&lt;/a&gt; if everything in NP can be transformed in polynomial time into it, and a problem is NP-complete if it is both in NP and NP-hard.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.wikiwand.com/en/NP_%28complexity%29"&gt;NP (complexity) - Wikiwand&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;NP is the &lt;a href="https://www.wikiwand.com/en/Set_%28mathematics%29"&gt;set&lt;/a&gt; of decision problems for which the &lt;a href="https://www.wikiwand.com/en/Computational_complexity_theory#Problem_instances"&gt;problem instances&lt;/a&gt;, where the answer is &amp;ldquo;yes&amp;rdquo;, have &lt;a href="https://www.wikiwand.com/en/Mathematical_proof"&gt;proofs&lt;/a&gt; verifiable in &lt;a href="https://www.wikiwand.com/en/Polynomial_time"&gt;polynomial time&lt;/a&gt;.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;There exists a verifier which can checks a solution is correct in polynomial time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;the complexity class &lt;a href="https://www.wikiwand.com/en/Co-NP"&gt;co-NP&lt;/a&gt; for which the answer &amp;ldquo;no&amp;rdquo; can be verified in polynomial time.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Verifier which checks the answer is wrong in polynomial time&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other-readings"&gt;Other Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/58645"&gt;疫情谣言满天飞，送你两个辟谣神器 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/brett-mckay-art-of-manliness-productivity-profile/"&gt;The Art of Manliness&amp;rsquo;s Brett McKay on How He Stays Productive&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@miloszfalinski/laser-mode-on-your-mac-make-your-workspace-distraction-free-with-a-simple-keystroke-65938680cfac"&gt;&amp;ldquo;Laser Mode&amp;rdquo; on your Mac &amp;mdash; make your workspace distraction-free with a simple keystroke.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.theverge.com/tech/2020/1/24/21079696/google-serp-design-change-altavisa-ads-trust"&gt;How much longer will we trust Google&amp;rsquo;s search results? &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Happy Friday to you! I have been reflecting a bit on the controversy du jour: Google&amp;rsquo;s redesigned search results. Google is trying to foreground sourcing and URLs, but in the process it made its results look more like ads, or vice versa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=H2tuKiiznsY"&gt;The real reason Boeing&amp;rsquo;s new plane crashed twice&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://c.m.163.com/news/a/F4051HER000189PS.html?spss=wap_refluxdl_2018&amp;amp;spssid=7ca4a87b91b56d31fbccd73f21de285e&amp;amp;spsw=1&amp;amp;isFromH5Share=article&amp;amp;from=timeline&amp;amp;isappinstalled=0"&gt;所有的公共卫生问题 归根到底都起源于社会结构问题&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;这里面最严重的问题是：信任。货源是否可信，需求端是否可信，节点是否可信，大量的时间和精力花在了&amp;quot;确认&amp;quot;这个看起来简单的动作上面。因为自组织的方式聚起了弱连接的一帮人，信任度很难建立，也没有权威的可信第三方来实现&amp;quot;双向确认&amp;rdquo;，这导致大量的无交易和浪费，等待。虽然理论上我们知道这是没有价格指引下，去中心化协作的千古难题，但我们依然不得不经历这一切。&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;任何命运赐予的礼物，都在暗中标好了价格&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://redmonk.com/sogrady/2020/01/24/how-to-compete-with-aws/"&gt;How to Compete With AWS &amp;ndash; tecosystems&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@radutzan/make-the-ipad-more-like-the-mac-9a5c135b214f"&gt;Make the iPad more like the Mac&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.atlassian.com/blog/teamwork/behavior-analysis-fbi-counterintelligence"&gt;I learned how to read my coworkers from an FBI spymaster - Work Life by Atlassian&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;trust is less about integrity and more about predictability&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;Just because I like you doesn&amp;rsquo;t mean I can trust you&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;Dreeke also places a high value on competence.&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;Finally, look for signs that they&amp;rsquo;re keen to help you be successful.&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.aei.org/articles/elinor-ostrom-and-the-solution-to-the-tragedy-of-the-commons/"&gt;Elinor Ostrom and the solution to the tragedy of the commons | American Enterprise Institute - AEI&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="books"&gt;Books&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.goodreads.com/review/show/3158115675"&gt;ian yang&amp;rsquo;s review of 解忧杂货店&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.goodreads.com/review/show/3147647526"&gt;ian yang&amp;rsquo;s review of 腾讯传&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.goodreads.com/review/show/3167841442"&gt;ian yang&amp;rsquo;s review of 血疫:埃博拉的故事&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.zdic.net/"&gt;漢典&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.theatlantic.com/world/"&gt;World Edition - The Atlantic&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.theverge.com/"&gt;The Verge&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.polygon.com/"&gt;Polygon&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-01-26</title><link>https://blog.iany.me/journal/2020/01/what-i-touched-this-week-2020-01-26/</link><pubDate>Sun, 26 Jan 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/01/what-i-touched-this-week-2020-01-26/</guid><description>&lt;h2 id="zkp"&gt;ZKP&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@ronaldmannak_1825/how-zero-knowledge-proofs-are-changing-blockchain-in-non-technical-terms-3d1fc0cab371"&gt;How Zero Knowledge Proofs Are Changing Blockchain (in non-technical terms)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cryptography"&gt;Cryptography&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Rainbow_table"&gt;Rainbow table - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Dictionary_attack"&gt;Dictionary attack - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://bfnightly.bracketproductions.com/rustbook/chapter_0.html"&gt;Introduction - Roguelike Tutorial - In Rust&lt;/a&gt;
Learn by doing tutorial about developing a roguelike game with Rust.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pythonspeed.com/articles/minimizing-copying/"&gt;Copying data is wasteful, mutating data is dangerous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/pythonland/30-python-best-practices-tips-and-tricks-19172564f9c"&gt;30 Python Best Practices, Tips, And Tricks - Towards Data Science&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Since version 3.7, Python offers data classes. There are several advantages over regular classes or other alternatives like returning multiple values or dictionaries&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;In place variable swapping&amp;rdquo;
&lt;pre&gt;&lt;code&gt;a, b = b, a
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Merging dictionaries (Python 3.5+)&amp;rdquo;
&lt;pre&gt;&lt;code&gt;merged = { **dict1, **dict2 }
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&amp;ldquo;You can use the slice notation from above to reverse a string or list. By using a negative stepping value of -1&amp;rdquo;
&lt;pre&gt;&lt;code&gt;&amp;quot;abcdefg&amp;quot;[::-1]
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cliffle.com/p/dangerust/6/"&gt;Let The Compiler Do The Work - Cliffle&lt;/a&gt;
Let Rust compiler vectorize the computation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="read-books"&gt;Read Books&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3156260723"&gt;ian yang&amp;rsquo;s review of 无人生还&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3156687015"&gt;ian yang&amp;rsquo;s review of 病毒星球&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3156675725"&gt;ian yang&amp;rsquo;s review of 知乎周刊・病毒星球（总第 234 期）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/3156262028"&gt;ian yang&amp;rsquo;s review of Atomic Habits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="more-articles"&gt;More Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@nic__carter/an-introduction-to-the-efficient-market-hypothesis-for-bitcoiners-ed7e90be7c0d"&gt;An Introduction to the Efficient Market Hypothesis for Bitcoiners&lt;/a&gt;
As we approach the Bitcoin halving due in May 2020, a heated debate has raged among Bitcoiners about whether the issuance change is being anticipated by the market or not. Those who downplay the purported impact of the issuance change tend to make references to market efficiency.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/58437"&gt;自动分类 + 键盘启动，LaunchCuts 让快捷指令更高效 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@m2jr/crypto-commons-da602fb98138"&gt;Crypto Commons - Noteworthy - The Journal Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thenewstack.io/the-3-myths-of-observability/"&gt;The 3 Myths of Observability - The New Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@kentbeck_7670/outcome-over-output-also-impact-and-effort-8f9eb0ce0dbb"&gt;Outcome Over Output: Also Impact and Effort&lt;/a&gt;
Kent Beck Jan 8 - 5 min read Outcome Matters Most Gusto is reflecting on how we observe our own activity and results. We have been wildly, improbably successful&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nature.com/scitable/blog/student-voices/once_upon_a_time_the/"&gt;Once upon a time: The possible story of viruses | Student Voices | Learn Science at Scitable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/blog/achieve-work-resolutions/"&gt;The most common New Year&amp;rsquo;s resolutions for 2020&amp;mdash;and how to achieve them&lt;/a&gt;
I&amp;rsquo;m great at making New Year&amp;rsquo;s resolutions. I&amp;rsquo;m also great at forgetting about them. This is probably because of my total lack of discipline, which&amp;hellip;I&amp;rsquo;m working&amp;hellip;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;The resolution is the work you&amp;rsquo;re promising to do, not the outcome you&amp;rsquo;re trying to hit.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.acolyer.org/2020/01/08/ironies-of-automation/"&gt;Ironies of automation&lt;/a&gt;
Ironies of automation , Bainbridge, Automatica, Vol. 19, No. 6, 1983 With thanks to Thomas Depierre for the paper recommendation. Making predictions is a&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.acolyer.org/2020/01/10/ten-challenges-for-automation/"&gt;Ten challenges for making automation a &amp;rsquo;team player&amp;rsquo; in joint human-agent activity&lt;/a&gt;
Ten challenges for making automation a &amp;rsquo;team player&amp;rsquo; in joint human-agent activity , Klein et al., IEEE Computer Nov/Dec 2004 With thanks to Thomas Depierre for&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="remote-work"&gt;Remote Work&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://open.buffer.com/category/remote-work/"&gt;Remote Work Archives - Open&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://buffer.com/state-of-remote-work-2019"&gt;State of Remote Work 2019 | Buffer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theremoteworksummit.com/improve-productivity-in-remote-team/"&gt;Achieve High Productivity in Your Remote Team&lt;/a&gt;
Remote workers boast about being more productive than traditional office workers. Instead of wasting time at the water cooler and trying to look busy a remote worker actually gets stuff done. This is because remote teams have always been result-oriented and not otherwise.
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;long and short time goals should be well communicated to all the employees to keep their interests aligned&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Weekly or biweekly conference calls are a must&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.olark.com/creating-remote-watercooler-moments"&gt;Creating remote watercooler moments&lt;/a&gt;
Are remote teams doomed to failure? Is it possible to build a positive team culture when everyone is distributed? One of the most common arguments against remote working is that remote teams miss opportunities to have &amp;lsquo;watercooler moments&amp;rsquo;.
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Kudos. This section of the meeting is our time to thank or celebrate teammates who&amp;rsquo;ve been helpful or particularly awesome.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Each Friday afternoon, we have Show and Tell time scheduled.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.toggl.com/how-many-hours-in-a-week-should-you-work/"&gt;How Many Hours in a Week Should You Work? - Toggl Blog&lt;/a&gt;
How many hours in a week should you work? As it turns out, the answer has less to do with your schedule and more to do with your time management skills. Jonah works the same schedule almost every single week. He clocks in at around 8:30 a.m.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zapier.com/learn/remote-work/"&gt;The Ultimate Guide to Remote Work | Zapier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twist.com/remote-work-guides/remote-management"&gt;Leading Distributed: The Remote Guide to Management | Twist&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;When you&amp;rsquo;re managing a team it&amp;rsquo;s your job to take your company&amp;rsquo;s wider goals and translate them into more specific goals for your team.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Let them know you trust their judgement.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Point them to data points to help form a decision.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Critical feedback needs to be delivered in a timely manner &amp;ndash; do not wait for a monthly 1:1.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Creating a Management User Guide&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Default to overcommunication.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;How to ask for your opinion on something specific: &amp;ldquo;If you want my feedback about ongoing work, please provide me with context beforehand. Avoid mentioning me in the middle of a conversation with &amp;ldquo;@Leah thoughts?&amp;rdquo;. I can&amp;rsquo;t effectively provide you with feedback this way!&amp;rdquo;&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twist.com/remote-work-guides/remote-design"&gt;Designing Without Whiteboards: The Remote Guide to Product Design | Twist&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;less is said about companies doing their homework on candidates.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twist.com/remote-work-guides/remote-hiring"&gt;Scaling Your Remote Team: The Remote Guide to Hiring | Twist&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/cube2222/jql"&gt;cube2222/jql&lt;/a&gt;
Easy JSON Query Processor with a Lispy syntax in Go&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/FiloSottile/age"&gt;FiloSottile/age&lt;/a&gt;
A simple, modern and secure encryption tool with small explicit keys, no config options, and UNIX-style composability.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zhihu.com/pub/shelf"&gt;知乎书架&lt;/a&gt;
知乎盐选电脑上的入口可藏的真够深的&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/kindle-dbs/fd/ku-aycr-magazines?pf_rd_m=ATVPDKIKX0DER&amp;amp;storeType=periodicals&amp;amp;pageType=kindle&amp;amp;pf_rd_p=11dfe58c-4d9a-4d53-994a-24b60197708b&amp;amp;pf_rd_r=BWS7HYG2FP0FW81XY2NM&amp;amp;pf_rd_s=center-5&amp;amp;pf_rd_t=5601&amp;amp;ref_=dbs_0_def_rwt_alst_c5_kmw_11dfe58c-4d9a-4d53-994a-24b60197708b&amp;amp;pf_rd_i=bookshelf"&gt;Kindle Unlimited Magazines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/list/tag/kindle-unlimited"&gt;Kindle Unlimited Book Lists | Goodreads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/35933714"&gt;如何使用蓝思（Lexile）阅读体系合理规划孩子的原版书阅读 - 知乎&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;读者自己的蓝思阅读分数向上50分，向下100分的范围内，是比较合适的选书范围。&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tarsnap.com/"&gt;Tarsnap - Online backups for the truly paranoid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://member.selfhostedserver.com/zine/"&gt;Wizard Zines 中文版&lt;/a&gt;
via Julia Evans&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2020-01-19</title><link>https://blog.iany.me/journal/2020/01/what-i-touched-this-week-2020-01-19/</link><pubDate>Sun, 19 Jan 2020 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2020/01/what-i-touched-this-week-2020-01-19/</guid><description>&lt;h2 id="writings"&gt;Writings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/doitian/a2a0bfea5e01b946926449ce1b2a38fb"&gt;Javascript for Automation ➤ Clipboard Parser&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="access-rich-information-about-the-clipboard"&gt;Access rich information about the clipboard&lt;/h1&gt;
&lt;h2 id="courses"&gt;Courses&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.coursera.org/learn/game-theory-1/home/info"&gt;Game Theory on Coursera&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have finished the first week and read the material&lt;/p&gt;
&lt;h2 id="read-books"&gt;Read Books&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.goodreads.com/review/show/3130720469"&gt;改变未来的九大算法&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;里面的算法基本都已经知道个大概了，翻一翻回顾一下&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="readings"&gt;Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.toggl.com/it-doesnt-matter-if-you-keep-new-years-resolutions/"&gt;It&amp;rsquo;s More Important To Make New Year&amp;rsquo;s Resolutions Than To Keep Them&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/58469"&gt;用 Home Inventory 和 MoneyWiz 2 打造年度个人财务报告 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.athrunen.dev/learning-hardware-programming-as-a-software-engineer/"&gt;Learning hardware programming as a software engineer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/58463"&gt;让爸妈也赞不绝口的 17 件居家神器，你可以带它们回家 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Considering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cif 多功能清洁乳&lt;/li&gt;
&lt;li&gt;断点式卷状无纺布抹布&lt;/li&gt;
&lt;li&gt;果蔬清洗盐&lt;/li&gt;
&lt;li&gt;水槽一次性网兜&lt;/li&gt;
&lt;li&gt;狮王洁厕剂 &amp;amp; 花王洁厕喷雾&lt;/li&gt;
&lt;li&gt;饭菜保温板&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.mulle-kybernetik.com/weblog/2020/compiler_or_cpu.html"&gt;My C code works with -O3 but not with -O0 – Nat!&amp;rsquo;s Journal&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.ultrasaurus.com/2020/01/writing-c-library-in-rust/"&gt;writing c library in rust « the evolving ultrasaurus&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://ai.googleblog.com/2020/01/google-research-looking-back-at-2019.html?m=1"&gt;Google AI Blog: Google Research: Looking Back at 2019, and Forward to 2020 and Beyond&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.toggl.com/how-trying-new-hobbies-made-me-more-productive-at-work/"&gt;How Trying New Hobbies Made Me More Productive at Work - Toggl Blog&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/58436"&gt;大一统效率利器 Notion，我的使用技巧 | 年度征文&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.toggl.com/4-small-changes-that-made-my-work-days-better/"&gt;4 Small Changes That Made My Work Days Better - Toggl Blog&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.doxsey.net/blog/a-response-to-hello-world"&gt;A Response to Hello World | doxsey.net&lt;/a&gt; Opinions about comparing performance of Hello World programs in different languages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzA4MzE1MzQ3MA==&amp;amp;mid=2450142967&amp;amp;idx=1&amp;amp;sn=3baf24e1a9ce8efd0e237cab15ebc947&amp;amp;chksm=880451a6bf73d8b06a43f553d23616a5c96ef5c5b5bab852cfeafe1a99955c7210d31b5a4f33"&gt;世界在下沉，Crypto 在狂欢 | 预言家周报#56&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zapier.com/blog/streamline-meetings/"&gt;Have more productive meetings with these workflows&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://thoughtbot.com/blog/five-tips-for-more-helpful-code-reviews"&gt;5 Tips for More Helpful Code Reviews&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ideas"&gt;Ideas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;偶尔听播客，发现可以把订阅都丢到 Inoreader 用 Magic 排序来挑着听。而且 Web 版 Inoreader 还有简单的后台播放和播放列表管理。同理，订阅的 Youtube 又可以丢到 Inoreader 里。&lt;a href="https://twitter.com/doitian/status/1216334774454882304/photo/1"&gt;Image&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;After purchasing some Kindle dictionaries such as COBUILD Advanced Learner&amp;rsquo;s Dictionary, Kindle for iOS turns into a good Dictionary App for me.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/DoctorWkt/acwj"&gt;DoctorWkt/acwj&lt;/a&gt; A Compiler Writing Journey&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grox.io"&gt;Groxio&lt;/a&gt; A new programming language every two months&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.comixology.com/"&gt;Digital Comics - Comics by comiXology&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doocer.com/my/home"&gt;Doocer&lt;/a&gt; A tool to generate EPUB and MOBI from websites.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hub.lexile.com/find-a-book/book-results"&gt;Find A Book | Lexile &amp;amp; Quantile Hub&lt;/a&gt; Find English book by Lexile Measure.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.arbookfind.com"&gt;Accelerated Reader Bookfinder US - Quick Search&lt;/a&gt; Find English book by AR score.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.cn/b?_encoding=UTF8&amp;amp;node=1974674071&amp;amp;pf_rd_i=116170071&amp;amp;pf_rd_m=A1AJ19PSB66TGU&amp;amp;pf_rd_p=429ba31d-1e1f-4454-85b7-5bc99a394bb9&amp;amp;pf_rd_r=9M4SMMHTQCVFF1N03E7R&amp;amp;pf_rd_s=tcg-slide-7&amp;amp;pf_rd_t=101&amp;amp;ref_=ch_auto_pc_slides"&gt;Kindle商店 - Lexile 英文分级&lt;/a&gt; 亚马逊原版书 Lexile 分级&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vimwiki/vimwiki"&gt;vimwiki/vimwiki&lt;/a&gt; Maintain a wiki using
Vim.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://t1lang.github.io"&gt;T1 | t1lang.github.io&lt;/a&gt; A programming language may be suitable used in embedded environment.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://generative-placeholders.glitch.me/"&gt;Generative Placeholders&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-12-22</title><link>https://blog.iany.me/journal/2019/12/what-i-touched-this-week-2019-12-22/</link><pubDate>Sun, 22 Dec 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/12/what-i-touched-this-week-2019-12-22/</guid><description>&lt;h2 id="problems-i-solved"&gt;Problems I Solved&lt;/h2&gt;
&lt;p&gt;I tried to setup GPG in a Linux server and met problems when performing
commands that require passphrase. It turns out that I have to set the
&lt;code&gt;GPG_TTY&lt;/code&gt; to tell &lt;code&gt;gpg-agent&lt;/code&gt; that it should ask password from current
console.&lt;/p&gt;
&lt;p&gt;First kill the &lt;code&gt;gpg-agent&lt;/code&gt;. Because it may already hang in the background to wait for
a password.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pkill -9 gpg-agent
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then set the environment variable for the current session&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export GPG_TTY=$(tty)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or save it for future sessions&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo 'export GPG_TTY=$(tty)' &amp;gt;&amp;gt; ~/.profile
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="read-articles"&gt;Read Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/mastery/"&gt;Mastery: The Complete Guide to Achieving Greatness&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Mastery is not a function of genius or talent. It is a function of time and intense focus applied to a particular field of knowledge.”&lt;/li&gt;
&lt;li&gt;Play Big and Embrace Failure&lt;/li&gt;
&lt;li&gt;Find Balance&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20200815123809/https://stjepang.github.io/2019/12/04/blocking-inside-async-code.html"&gt;Blocking inside async code | stjepang.github.io&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;As said by &lt;a href="https://twitter.com/hayeah/status/1205698254081380353"&gt;@hayeah&lt;/a&gt;, &amp;ldquo;the upside is, you get the worst of both worlds&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;The crate async-std &lt;a href="https://async.rs/blog/stop-worrying-about-blocking-the-new-async-std-runtime/"&gt;tries to solve this problem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://lukaskalbertodt.github.io/2019/12/05/generalized-autoref-based-specialization.html"&gt;Generalized Autoref-Based Specialization · Lukasʼ Blog&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&lt;em&gt;which&lt;/em&gt;] makes it possible to use specialization-like behavior on stable Rust&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://tokio.rs/blog/2019-12-mio-v0.7-alpha.1/"&gt;Announcing Mio 0.7-alpha.1 · Tokio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Major changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wrapping native OS types.&lt;/li&gt;
&lt;li&gt;Moving to edge triggers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MjM5OTEyMTE5NA==&amp;amp;mid=2648827014&amp;amp;idx=1&amp;amp;sn=874abcfd3c4f985aac4f59424b348204&amp;amp;chksm=bed51cc389a295d58d245344a9841042052127166499cf5f257a3bf1e0b7b4e5c6bc860b236c#rd"&gt;醋醋 | 杨振宁的最后一战&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;超弦无法证伪&lt;/li&gt;
&lt;li&gt;超弦很难取得突破&lt;/li&gt;
&lt;li&gt;超弦难以落地&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不值得投入大量资金建设对撞机&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzIwMzQ0MTUxMQ==&amp;amp;mid=2247486554&amp;amp;idx=1&amp;amp;sn=8969fd2da90ed47d1a08ac768b8a348f&amp;amp;chksm=96ce1852a1b99144ec3b8ccb2a1a9078bda75593c41ec14146c54c60cc975b07d3daf99dc502#rd"&gt;为什么中本聪生于1975年4月5日？&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1933年4月5日: 美国总统签署法案宣布民众持有黄金违法&lt;/li&gt;
&lt;li&gt;1975年: 美国总统签署了《黄金合法化》法案&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="read-books"&gt;Read Books&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;读书：「跑步时该如何呼吸」&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;韵律呼吸会以奇数模式协调足部落地同吸气和呼气之间的时机。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;采用 3:2 模式，吸-2-3-呼-2。强度加大使用 2:1 模式，吸-2-呼。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.happyhues.co/"&gt;Happy Hues - Curated colors in context.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-09-08</title><link>https://blog.iany.me/journal/2019/09/what-i-touched-this-week-2019-09-08/</link><pubDate>Sun, 08 Sep 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/09/what-i-touched-this-week-2019-09-08/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/69941436"&gt;LibraBFT算法简述 - 知乎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://software.rajivprab.com/2019/08/29/abstractions-are-in-the-eye-of-the-beholder/"&gt;Abstractions Are In The Eye Of The Beholder – Software the Hard way&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.forrestthewoods.com/blog/should-small-rust-structs-be-passed-by-copy-or-by-borrow/"&gt;Should small Rust structs be passed by-copy or by-borrow?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.silasreinagel.com/blog/2019/08/12/how-slack-harms-projects/"&gt;How Slack Harms Projects – Silas Reinagel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bellmar/all-the-best-engineering-advice-i-stole-from-non-technical-people-eb7f90ca2f5f"&gt;All the best engineering advice I stole from non-technical people&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/time-blocking/"&gt;The Complete Guide to Time Blocking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="remote-work"&gt;Remote Work&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://currents.nyc3.cdn.digitaloceanspaces.com/DigitalOcean-Currents-Q3-2019.pdf"&gt;A Seasonal Report on Developer Trends in the Cloud: Remote Work Edition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twist.com/remote-work-guides"&gt;Remote Work Guides | Twist&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="life"&gt;Life&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/56339"&gt;YouTube 有哪些值得看的外语频道 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=LlbbFc0zu3Y&amp;amp;feature=youtu.be"&gt;职业球员是如何绑脚的 简单实用（足控福利） - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/56311"&gt;8 款好看又实用的收纳夹，让你的纸质文件井然有序 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dadroit.com/"&gt;Dadroit JSON Viewer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Good at opening big JSON data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/starship/starship"&gt;starship/starship: ☄🌌️ The cross-shell prompt for astronauts.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rich shell prompt written in Rust.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.rs/slotmap/0.4.0/slotmap/"&gt;slotmap - Rust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Key allocator similar to slab.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://new.shuge.org/collections/"&gt;资源集 – 书格（公测）&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-08-18</title><link>https://blog.iany.me/journal/2019/08/what-i-touched-this-week-2019-08-18/</link><pubDate>Sun, 18 Aug 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/08/what-i-touched-this-week-2019-08-18/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@nic__carter/its-the-settlement-assurances-stupid-5dcd1c3f4e41"&gt;It’s the settlement assurances, stupid - Nic Carter - Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Further readings&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20210121154317/https://medium.com/@pyskell/understanding-and-mitigating-re-orgs-921c7768fa18"&gt;Understanding (and Mitigating) Re-Orgs - Anthony Lusardi - Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doitian.notion.site/A-Lower-Bound-on-Miner-Rewards-1254d805b5c54a70aa61480059f65171"&gt;A Lower Bound on Miner Rewards&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://software.rajivprab.com/2019/08/04/alert-fast/"&gt;Alert Fast – Software the Hard way&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/get-everything-done-still-have-time-to-play/"&gt;Get Everything Done &amp;amp; Still Have Time to Play, Productivity Method&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have adopt some methods from this post into my own process.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="papers"&gt;Papers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Howard, H. (2019). Distributed consensus revised.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/56224"&gt;6 款在家就能做的好喝饮品，伴你度过这个「史上最热」夏天 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jamesclear.com/ultralight-travel"&gt;Ultralight Packing List: How to Pack Light &amp;amp; Travel With 1 Bag&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://onezero.medium.com/the-original-kindle-was-crazy-98c191b4cbc"&gt;The Original Kindle Was Crazy - OneZero&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.rs/arc-swap/0.4.2/arc_swap/"&gt;&lt;code&gt;arc_swap&lt;/code&gt; - Rust&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-08-11</title><link>https://blog.iany.me/journal/2019/08/what-i-touched-this-week-2019-08-11/</link><pubDate>Sun, 11 Aug 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/08/what-i-touched-this-week-2019-08-11/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://codeascraft.com/2018/10/10/etsys-experiment-with-immutable-documentation/"&gt;Etsy’s experiment with immutable documentation - Code as Craft&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Send each tip as an immutable chat message&lt;/li&gt;
&lt;li&gt;Retrieve tips in time reverse order&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/travel-remote-work-digital-nomad/"&gt;Remote Work While Traveling Abroad: Candid Advice From People Who’ve Done It&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/netflix-techblog/netflix-edge-load-balancing-695308b5548c"&gt;Rethinking Netflix’s Edge Load Balancing - Netflix TechBlog - Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let servers report their own load, the load balancers collect the
information from HTTP headers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.ralfj.de/blog/2016/01/09/the-scope-of-unsafe.html"&gt;The Scope of Unsafe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If the unsafe block has a convention with some code, that code is in the scope of the unsafe.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.codingnow.com/2019/07/top_programmer.html"&gt;云风的 BLOG: 程序员应该怎样提高自己&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://forge.medium.com/the-best-ways-to-reverse-scarcity-mindset-according-to-researchers-who-study-it-81fcfeb2754e"&gt;The Best Ways to Reverse Scarcity Mindset, According to Researchers Who Study It&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/how-khoi-vinh-gets-things-done/"&gt;How Adobe Principal Designer Khoi Vinh Gets Things Done&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lucumr.pocoo.org/2019/7/29/dependency-scaling/"&gt;Updated Thoughts on Trust Scaling | Armin Ronacher&amp;rsquo;s Thoughts and Writings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://shahinsorkh.ir/2019/07/20/how-is-it-like-to-be-a-dev-in-iran"&gt;What is it like to be a dev in Iran | Shahin Sorkh’s Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/55703"&gt;不小心将 U 盘抹成 APFS 格式，应该如何恢复？ | 一日一技 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/56068"&gt;在电脑上体验 Android 应用，你可以试试 Fyde OS - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/55822"&gt;要在《乐队的夏天》翻唱一首歌，怎么处理版权才能不侵权？ - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://webdemo.myscript.com/"&gt;MyScript Webdemo&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.jiumodiary.com/"&gt;Jiumo Search 鸠摩搜索 - 文档搜索引擎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.plainlanguage.gov/"&gt;Home | plainlanguage.gov&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Simplified English&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.onedict.com/index.php"&gt;一本词典.OneDict.专业术语翻译及例句查询.科技.专利.学术论文.在线词典.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://m-minghuaji.dpm.org.cn/index"&gt;故宫名画记&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-07-07</title><link>https://blog.iany.me/journal/2019/07/what-i-touched-this-week-2019-07-07/</link><pubDate>Sun, 07 Jul 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/07/what-i-touched-this-week-2019-07-07/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doc.rust-lang.org/nomicon/atomics.html"&gt;Atomics&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;establishing a &amp;ldquo;happens before relationship&amp;rdquo; between parts of the program and the threads that are running them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;SeqCst&lt;/em&gt;: all accesses on one thread that happen before and after a SeqCst access stay before and after it.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Acquire&lt;/em&gt;: an acquire access ensures that every access after it stays after it.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Release&lt;/em&gt;: a release access ensures that every access before it stays before it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.juliobiason.me/thoughts/things-i-learnt-the-hard-way/"&gt;Julio Biason .Net 4.0 - Things I Learnt The Hard Way (in 30 Years of Software Development)&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Solve the problem you have right now. Then solve the next one. And the next one. At one point, you&amp;rsquo;ll realize there is a pattern emerging from those solutions and then you&amp;rsquo;ll find your &amp;ldquo;solve everything&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Understand and stay way of cargo cult &amp;ldquo;Cargo cult&amp;rdquo; is the idea that, if someone else did, so can we. Most of the time, cargo cult is simply an &amp;ldquo;easy way out&amp;rdquo; of a problem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Keep a record of &amp;ldquo;stupid errors that took me more than 1 hour to solve&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;m not saying it&amp;rsquo;s wrong, I&amp;rsquo;m just confused&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/nearprotocol/understanding-rust-lifetimes-e813bcd405fa"&gt;Understanding Rust Lifetimes – NEAR Protocol – Medium&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;lifetimes is that they are all about references&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://pdziepak.github.io/2019/06/21/avoiding-icache-misses/"&gt;Avoiding instruction cache misses – Paweł Dziepak&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@kentbeck_7670/programmer-test-principles-d01c064d7934"&gt;Programmer Test Principles – Kent Beck – Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://herbertograca.com/2019/06/05/reflecting-architecture-and-domain-in-code/"&gt;Reflecting architecture and domain in code – @herbertograca&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://jvns.ca/blog/brag-documents/"&gt;Get your work recognized: write a brag document - Julia Evans&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Keep a note what you have accomplished.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-06-30</title><link>https://blog.iany.me/journal/2019/06/what-i-touched-this-week-2019-06-30/</link><pubDate>Sun, 30 Jun 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/06/what-i-touched-this-week-2019-06-30/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://onezero.medium.com/amazon-is-watching-d51b20f1668a"&gt;Amazon Is Watching – OneZero&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Threat of Amazon on surveillance.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://matthewstrom.com/writing/delight-comes-last/"&gt;Delight Comes Last&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Focus on the usabbility and features first.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://kripken.github.io/blog/binaryen/2019/06/11/fuzz-reduce-productivity.html"&gt;Fuzzers &amp;amp; Reducers as Productivity Tools&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fuzz test.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.viktorpetersson.com/remote-work/2019/05/18/a-decade-of-remote.html"&gt;A Decade of Remote Work | Viktor’s ramblings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Suggestions for remote worker.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doist.com/blog/how-exceptionally-productive-people-end-the-workday/"&gt;How Exceptionally Productive People End The Workday&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Weekly Review.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.stephsmith.io/how-to-be-great/"&gt;How to Be Great? Just Be Good, Repeatably&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://morsmachine.dk/go-scheduler"&gt;The Go scheduler - Morsing&amp;rsquo;s blog&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@george3d6/the-success-of-go-heralds-that-of-rust-73cb2e4c0500"&gt;The success of Go heralds that of Rust – George Hosu – Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/QMCWKJKSLPNFlqJ9ltIXFg"&gt;“ 字要大，logo要大！” 这一世界性的难题终于被解决了&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;翻译需求&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/GDwLmsK4WLxy_Z4cw3_c7A"&gt;Libra，一场赛博朋克噩梦！&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://coolshell.cn/articles/19464.html"&gt;如何超过大多数人 | | 酷 壳 - CoolShell&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://kernelmaker.github.io/Rocksdb_Study_1"&gt;【Rocksdb实现及优化分析】 JoinBatchGroup ·&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/55288"&gt;如何「读」懂一杯咖啡？ - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pingwest.com/w/189729"&gt;屠呦呦团队宣布“青蒿素抗药性”等研究获新突破，传统中医药科研论著有望首次纳入《牛津医学教科书》-PingWest 品玩&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://incompetech.com/graphpaper/"&gt;Free Online Graph Paper / Asymmetric and Specialty Grid Paper PDFs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/garethdmm/gryphon"&gt;garethdmm/gryphon: Powerful, proven, and extensible framework for building trading strategies at any frequency, with a focus on crypto currencies. Battle-tested with billions traded.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jetpens.com/"&gt;JetPens - The Best Pens &amp;amp; Stationery From Japan &amp;amp; Beyond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jreese/markdown-pp"&gt;jreese/markdown-pp: Preprocessor for Markdown files to generate a table of contents and other documentation needs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/microsoft/mimalloc"&gt;microsoft/mimalloc: mimalloc is a compact general purpose allocator with excellent performance.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nhn/tui.grid"&gt;nhn/tui.grid: 🍞🔡 The Powerful Component to Display and Edit Data. Experience the Ultimate Data Transformer!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Originate/scriptkeeper"&gt;Originate/scriptkeeper: Run tests against your scripts without changing your scripts.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-06-16</title><link>https://blog.iany.me/journal/2019/06/what-i-touched-this-week-2019-06-16/</link><pubDate>Sun, 16 Jun 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/06/what-i-touched-this-week-2019-06-16/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.hanselman.com/blog/VisualStudioCodeRemoteDevelopmentMayChangeEverything.aspx"&gt;Visual Studio Code Remote Development may change everything - Scott Hanselman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arstechnica.com/information-technology/2019/06/if-you-havent-patched-vim-or-neovim-text-editors-you-really-really-should/"&gt;If you haven’t patched Vim or NeoVim text editors, you really, really should | Ars Technica&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;macOS » Uninstall GoogleSoftwareUpdate&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo /Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/Resources/ksinstall --nuke
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/iliekturtles/uom"&gt;iliekturtles/uom: Units of measurement &amp;ndash; type-safe zero-cost dimensional analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/JelteF/derive_more"&gt;JelteF/derive_more: Some more derive(Trait) options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/surge-networks/snell"&gt;surge-networks/snell: An encrypted proxy service program&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/timvisee/ffsend"&gt;timvisee/ffsend: Easily and securely share files from the command line. A fully featured Firefox Send client.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://unpaywall.org/"&gt;Unpaywall: An open database of 20 million free scholarly articles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-06-09</title><link>https://blog.iany.me/journal/2019/06/what-i-touched-this-week-2019-06-09/</link><pubDate>Sun, 09 Jun 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/06/what-i-touched-this-week-2019-06-09/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/tokio-rs/tokio/blob/43d69d77e2b01322a5d2a378be02108e302d1bbf/azure-pipelines.yml"&gt;tokio/azure-pipelines.yml at master · tokio-rs/tokio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A template to setup Rust project in Azure Pipelines&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/actions/virtual-environments/tree/main/images/win/scripts/Installers"&gt;Windows Image Installers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Scripts may be useful later to setup Windows environment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@kentbeck_7670/a-years-worth-c1cbc3085e9d"&gt;A Year’s Worth – Kent Beck – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Interesting way to plan a year&amp;rsquo;s work.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.pingwest.com/a/188913"&gt;这款“盲人视角”的游戏，让我体验了世界上最漫长令人绝望的30分钟-PingWest 品玩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gfycat.com/gifbrewery"&gt;GIF Brewery by Gfycat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-05-26</title><link>https://blog.iany.me/journal/2019/05/what-i-touched-this-week-2019-05-26/</link><pubDate>Sun, 26 May 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/05/what-i-touched-this-week-2019-05-26/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/netflix-techblog/linux-performance-analysis-in-60-000-milliseconds-accc10403c55"&gt;Linux Performance Analysis in 60,000 Milliseconds – Netflix TechBlog – Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/netdata/netdata"&gt;netdata/netdata: Real-time performance monitoring, done right!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rust"&gt;Rust&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/TimonPost/crossterm"&gt;TimonPost/crossterm: Cross platform terminal library rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Amanieu/hashmap_core"&gt;Amanieu/hashmap_core: Implementation of HashMap and HashSet for no_std environments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-skiplist"&gt;crossbeam/crossbeam-skiplist at master · crossbeam-rs/crossbeam&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://webapps.stackexchange.com/questions/78517/is-there-any-way-to-delete-pull-request-status-checks-on-github/78518?stw=2#78518"&gt;Is there any way to delete pull request status checks on GitHub? - Web Applications Stack Exchange&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/23708231/git-shallow-clone-clone-depth-misses-remote-branches/37593674"&gt;branch - git shallow clone (clone &amp;ndash;depth) misses remote branches - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/32353055/how-to-start-a-stopped-docker-container-with-a-different-command/39329138"&gt;How to start a stopped Docker container with a different command? - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slides.com/news/code-line-numbers/#/"&gt;Code Block 2.0: Line Numbers &amp;amp; Highlights&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloudconvert.com/"&gt;convert anything to anything - CloudConvert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://monocle.com/travel/"&gt;Travel | Monocle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://m.xuite.net/blog/andykao88/twblog/145920605"&gt;如何輕鬆跑進4小時(SUB4) @ 愛上馬拉松 :: 隨意窩 Xuite日誌&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hi-resmusic.sonyselect.kuke.com/"&gt;索尼精选-官方高解析度音频&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.epicgames.com/store/zh-CN/"&gt;Epic Games | Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-03-31</title><link>https://blog.iany.me/journal/2019/03/what-i-touched-this-week-2019-03-31/</link><pubDate>Sun, 31 Mar 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/03/what-i-touched-this-week-2019-03-31/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2019/03/how-to-mock-time-in-rust-tests-and-cargo-gotchas-we-met/"&gt;♯ How To Mock Time In Rust Tests And Cargo Gotchas We Met&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/palvaro/status/1109257164235763712?s=09"&gt;A curated list of distributed systems research papers initiated via @palvaro&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="read-papers"&gt;Read Papers&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Gifford, D. K. (1979). Weighted voting for replicated data, 150–162. &lt;a href="https://dl.acm.org/doi/10.1145/800215.806583"&gt;https://dl.acm.org/doi/10.1145/800215.806583&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="bookmarks"&gt;Bookmarks&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://lockhunter.com/"&gt;LockHunter is a free 64/32 bit tool to delete files blocked by any processes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rust-lang/miri"&gt;rust-lang/miri: An interpreter for Rust&amp;rsquo;s mid-level intermediate representation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-03-10</title><link>https://blog.iany.me/journal/2019/03/what-i-touched-this-week-2019-03-10/</link><pubDate>Sun, 10 Mar 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/03/what-i-touched-this-week-2019-03-10/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/BurntSushi/byteorder/pull/110"&gt;Add MIPS64 cross-compilation target to Travis by Enet4 · Pull Request #110 · BurntSushi/byteorder&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An example of how to test Rust in big-endian targets.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://habr.com/en/post/436596/"&gt;Full-stack developers are in fact stuck at mid-level. Spare yourself from suffering – don’t go down that path / Habr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Delving into one area is also very important.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doc.rust-lang.org/std/pin/index.html"&gt;std::pin - Rust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A new stabilized module.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doc.rust-lang.org/nomicon/subtyping.html"&gt;Subtyping and Variance - Rust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/the-ultimate-guide-to-personal-productivity-methods/"&gt;The Ultimate Guide to Personal Productivity Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/remote-work-habits/"&gt;5 Habits for Crafting the Perfect Remote Work Day&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/52678"&gt;2018 游戏与我 —— 在游戏中获得心智成长 | 2018 年度征文 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.feem.io/index.html"&gt;Feem v4. Share Files Offline.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A cross platforms file sharing apps via LAN.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/user/Kurzgesagt"&gt;Kurzgesagt – In a Nutshell - YouTube&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/codercom/code-server"&gt;codercom/code-server: Run VS Code on a remote server.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.productiveflourishing.com/free-planners/"&gt;Free Planners &amp;amp; Productivity Worksheets | Productive Flourishing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Free templates for planning.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/53160"&gt;装了啥 | 看片、杀毒、效率办公……这 34 款 Windows 应用，每一款都是神器 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows apps recommendations.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-03-02</title><link>https://blog.iany.me/journal/2019/03/what-i-touched-this-week-2019-03-02/</link><pubDate>Sat, 02 Mar 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/03/what-i-touched-this-week-2019-03-02/</guid><description>&lt;ul&gt;
&lt;li&gt;My new post: &lt;a href="https://blog.iany.me/2019/02/rust-cell-and-refcell/"&gt;♯ Rust Cell And Refcell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rust"&gt;Rust&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://herbsutter.com/2007/12/11/effective-concurrency-use-lock-hierarchies-to-avoid-deadlock/"&gt;Use Lock Hierarchies to Avoid Deadlock&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://limpet.net/mbrubeck/2019/02/07/rust-a-unique-perspective.html"&gt;Rust: A unique perspective&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A perspective to explain wrap objects.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/netflix-techblog/java-in-flames-e763b3d32166"&gt;Java in Flames – Netflix TechBlog – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Java performance benchmark&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.ultrasaurus.com/2019/01/golang-philosophy/"&gt;golang philosophy « the evolving ultrasaurus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Experience about how to study a new programming language.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@rrhoover/the-rise-of-no-code-e733d7c0944d"&gt;The Rise of “No Code” – Ryan Hoover – Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.loadmill.com/7-reasons-why-your-staging-environment-sucks-953f8504fba3"&gt;7 Reasons Why Your Staging Environment Sucks – Loadmill&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.stephenwolfram.com/2019/02/seeking-the-productive-life-some-details-of-my-personal-infrastructure/"&gt;Some Details of My Personal Infrastructure—Stephen Wolfram Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/busywork-productivity-focus/"&gt;How to Vanquish Busywork and Spend More Time on What Matters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/RdSDjtFlkv6VUTKqtF9XDw"&gt;累死你的不是工作，而是工作方式&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sspai.com/post/52917"&gt;工作之后，我是如何平衡全职和兼职工作的？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sspai.com/post/52913"&gt;在麻省理工学院上学是什么体验 | 2018 年度征文&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="business"&gt;Business&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://blog.samaltman.com/how-to-be-successful"&gt;How To Be Successful&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Suggestions for founders to be successful.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.pingwest.com/a/184305"&gt;电子烟，一点都不性感-PingWest 品玩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://klinger.io/post/180989912140/managing-remote-teams-a-crash-course"&gt;Managing Remote Teams - A Crash Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twitter.com/mxswd/status/1097251939480350720"&gt;The iOS Safari Tip: filter and close tabs in batch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sspai.com/post/53005"&gt;40000 字、100 张配图，教你如何用 iPhone 拍出好照片 &amp;amp; 视频：iPhone 相机完全操作指南 2.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://immersivemath.com/ila/index.html"&gt;Immersive Math&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Interactive linear algebra course.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://monitor.firefox.com/"&gt;Find out if you’ve been part of a data breach&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Security tool to monitor password leaks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.openkeychain.org/"&gt;OpenKeychain&lt;/a&gt; Security tool for Android&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://nosir.github.io/cleave.js/"&gt;Cleave.js - Format input text content when you are typing&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.obormot.net/demos/these-waifus-do-not-exist.html"&gt;These Waifus Do Not Exist&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://thispersondoesnotexist.com/"&gt;This Person Does Not Exist&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-02-23</title><link>https://blog.iany.me/journal/2019/02/what-i-touched-this-week-2019-02-23/</link><pubDate>Sat, 23 Feb 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/02/what-i-touched-this-week-2019-02-23/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.joshmcguigan.com/blog/custom-exit-status-codes-rust/"&gt;Rust: Custom Exit Status Codes with ? in main&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.rs/crate/itertools"&gt;itertools 0.8.0 - Docs.rs&lt;/a&gt; Rust iterator
tools collection.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/trimstray/nginx-quick-reference"&gt;trimstray/nginx-quick-reference: This notes describes how to improve Nginx performance, security and other important things; @ssllabs A+ 100%.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://principledgraphql.com/"&gt;Principled GraphQL&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://getquicker.net/"&gt;Quicker软件&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows 启动器效率软件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/52868"&gt;告别 Windows 终端的难看难用，从改造 PowerShell 的外观开始 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-02-05</title><link>https://blog.iany.me/journal/2019/02/what-i-touched-this-week-2019-02-05/</link><pubDate>Tue, 05 Feb 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/02/what-i-touched-this-week-2019-02-05/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://klinger.io/post/180989912140/managing-remote-teams-a-crash-course"&gt;Managing Remote Teams - A Crash Course - Startup Lessons Learned&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dbmsmusings.blogspot.com/2019/01/its-time-to-move-on-from-two-phase.html"&gt;DBMS Musings It’s Time to Move on from Two Phase Commit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://doist.com/blog/masterclass-in-getting-stuff-done/"&gt;A Masterclass in Getting Stuff Done, Straight from the Experts - Ambition &amp;amp; Balance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.acolyer.org/2015/03/02/viewstamped-replication-a-new-primary-copy-method-to-support-highly-available-distributed-systems/"&gt;Viewstamped replication A new primary copy method to support highly available distributed systems | the morning paper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="blockchain"&gt;Blockchain&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/48665065"&gt;区块链还有多长的路要走&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;激励机制从来就是双刃剑，有人被激励，就一定有人要付出一定的代价，而这个代价将给应用的扩张带来极大的摩擦。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@dsl_uiuc/fake-stake-attacks-on-chain-based-proof-of-stake-cryptocurrencies-b8b05723f806"&gt;“Fake Stake” attacks on chain-based Proof-of-Stake cryptocurrencies&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Proof-of-Work also plays a second, somewhat less appreciated role, which is guarding access to a node’s limited resources, such as disk, bandwidth, memory, and CPU.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/56065714"&gt;Monoxide原理详解: 突破区块链不可能三角的极简架构&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/fluence-network/dapp-survey-results-2019-a04373db6452"&gt;Dapp Survey Results 2019 – Fluence – Medium&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;their biggest current pain points were “limited number of users” (&lt;strong&gt;67%&lt;/strong&gt;) and “poor user experience” (&lt;strong&gt;44%&lt;/strong&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/dtolnay/typetag"&gt;dtolnay/typetag: Serde serializable and deserializable trait objects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.rs/evmap/4.1.1/evmap/"&gt;evmap - Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/IdeasOnCanvas/Aiolos"&gt;IdeasOnCanvas/Aiolos: A floating panel for your iOS Apps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-01-29</title><link>https://blog.iany.me/journal/2019/01/what-i-touched-this-week-2019-01-29/</link><pubDate>Tue, 29 Jan 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/01/what-i-touched-this-week-2019-01-29/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/s/story/a-minimalist-lifestyle-6c2872c28473"&gt;A Minimalist Lifestyle – Member Feature Stories – Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/tFcVohNjdhvBE_INQk9muQ"&gt;人工智障 2 : 你看到的AI与智能无关&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/VovjecWhJqRdO3Aph4SEfw"&gt;区块链上的随机性（一）概述与构造&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;区块链随机数生成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://castro.fm/episode/Gnr11x"&gt;序言：「无为」与刻意、大脑的双系统、自由主义的危机与开篇絮语 - 得意忘形播客&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;关于认知的一个很好的播客&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-01-22</title><link>https://blog.iany.me/journal/2019/01/what-i-touched-this-week-2019-01-22/</link><pubDate>Tue, 22 Jan 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/01/what-i-touched-this-week-2019-01-22/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.acolyer.org/2015/05/18/practical-byzantine-fault-tolerance/"&gt;Practical Byzantine Fault Tolerance | the morning paper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/steveLTN/status/1084944725503807488"&gt;SteveLTN 在 Mac 上提高操作效率的几个方法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://clearcove.ca/images/2008/12/strftime_reference.pdf"&gt;Reference of strftime&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="bookmarks"&gt;Bookmarks&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bulma.io/"&gt;Bulma: Free, open source, &amp;amp; modern CSS framework based on Flexbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gatsbyjs.org/"&gt;GatsbyJS&lt;/a&gt;: Static site generator using React.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.netlify.com/"&gt;Netlify: All-in-one platform for automating modern web projects.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-01-13</title><link>https://blog.iany.me/journal/2019/01/what-i-touched-this-week-2019-01-13/</link><pubDate>Sun, 13 Jan 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/01/what-i-touched-this-week-2019-01-13/</guid><description>&lt;p&gt;My first post in 2019&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2019/01/my-reading-workflow-and-ifttt-applets/"&gt;♯ My Reading Workflow And IFTTT Applets&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="readings"&gt;Readings&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/c81ou7XDwm83nbCOwmZY4g"&gt;十年前只想混一个Apache邮箱装逼，十年后却成了顶级项目创始人&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;管理一个开源项目的经验&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/52190"&gt;用 Markdown 生成漂亮的手写图 (Mac Only) - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;很方便的小工具&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/52295"&gt;出门要不要带伞？这个方法让你起床时就能在 iPhone 锁屏上看天气 | 一日一技 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/mv1ludCThYA8IKtZK1D-SQ"&gt;不一样的数学之美&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;介绍悖论&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/52289"&gt;如何处理碎片化信息：用 Diigo 统一实现书签管理和文档标注 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twitter.com/Bigteeth/status/1081573983902781447"&gt;李大牙 on Twitter: &amp;ldquo;在支付宝搜“浙江图书馆”，进生活号，芝麻信用分550以上免押金办理读者证。然后，去浙江图书馆官网登录读者证，知网万方免费，一气呵成。&amp;rdquo;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://getliner.com/"&gt;LINER | The Highlighted Internet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A tool to annotate web page.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://routinehub.co/"&gt;RoutineHub • A community for Siri Shortcuts&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2019-01-06</title><link>https://blog.iany.me/journal/2019/01/what-i-touched-this-week-2019-01-06/</link><pubDate>Sun, 06 Jan 2019 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2019/01/what-i-touched-this-week-2019-01-06/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/52240"&gt;硅谷产品大佬们写的书《Ship it》到底在讲什么？ - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;关于产品的短篇集&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://smee.io/"&gt;smee.io | Webhook payload delivery service&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A tunnel service that eases web hook debugging.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://getliner.com/"&gt;LINER | The Highlighted Internet&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://routinehub.co/"&gt;RoutineHub • A community for Siri Shortcuts&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-12-31</title><link>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-31/</link><pubDate>Mon, 31 Dec 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-31/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rachelbythebay.com/w/2018/12/28/intent/"&gt;Handling intent for Grandma World&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It talks about a compony ignoreed errors when users try to delete their
data in batch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rachelbythebay.com/w/2018/12/30/v6/"&gt;Potholes to avoid when migrating to IPv6&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other-readings"&gt;Other Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/30314653/"&gt;韭菜的自我修养&lt;/a&gt; 今天才翻
了这本书，至少觉得没有浪费时间翻完吧。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/27026953/"&gt;你可以跑得更快&lt;/a&gt; 当佳明手表说明书
看&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://imslp.org/wiki/Main_Page"&gt;IMSLP/Petrucci Music Library: Free Public Domain Sheet Music&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://qz.com/quartzy/1464322/how-to-do-yoga-on-an-airplane-to-make-travel-less-miserable/"&gt;How to do yoga on an airplane to make travel less miserable
— Quartzy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://officedev.github.io/Office-IT-Pro-Deployment-Scripts/XmlEditor.html"&gt;Office Click-To-Run Configuration XML Editor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-12-23</title><link>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-23/</link><pubDate>Sun, 23 Dec 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-23/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/zkcapital/the-state-of-hashing-algorithms-the-why-the-how-and-the-future-b21d5c0440de"&gt;The State of Hashing Algorithms — The Why, The How, and The Future&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Calculating BLAKE2b is actually 3 times faster than KECCAK on a modern CPU.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/a/30004252/667158"&gt;rust - Locating resources for testing with cargo - Stack Overflow&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;CARGO_MANIFEST_DIR&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/a/22084103/667158"&gt;sed in-place flag that works both on Mac (BSD) and Linux - Stack Overflow&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;sed -i.bak&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/-u0TtSBA5EynVpTkuSVdog"&gt;“阿波罗”登月中的工程管理一瞥&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;需要对项目管理做下反思，感觉确实是披着敏捷的皮，实际上是佛系管理，做到哪算
哪儿。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/wJ48ID-txu-HVO_3hyzicA"&gt;霍金重磅遗作！比超级人类更可怕的，是宇宙的结局… | 远读重洋&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这宇宙空无一物，除非有我爱之人和爱我之人环绕其中。没有她们，我将不能承受此生之壮丽。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;未来是否繁花似锦，源自我们当下之努力。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other-readings"&gt;Other Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/qFtQvF6bbDfLJ5uJ2E52ZA"&gt;十年磨剑·大巧不工&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;踏实靠谱、扬长补短&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=tkvZoaVHQV0"&gt;比特币核心开发者怒怼：BCH 是奉行凯恩斯主义的法币 - 链闻 ChainNews&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/52425288"&gt;日本90年代那场消费降级 - 知乎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-12-16</title><link>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-16/</link><pubDate>Sun, 16 Dec 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-16/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/s/story/7-things-you-need-to-stop-doing-to-be-more-productive-backed-by-science-a988c17383a6"&gt;7 Things You Need To Stop Doing To Be More Productive, Backed By Science&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Next time you need to avoid saying yes, use “I don’t” in your refusal, to reinforce the helpful behavior of saying no to things that aren’t worth it.&lt;/li&gt;
&lt;li&gt;For activities you shouldn’t be engaging in, or negative habits you want to break, add an element of difficulty, adding on a 20-second roadblock,&lt;/li&gt;
&lt;li&gt;a certain amount of solitude can make a person more capable of empathy towards others.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@jimmysong/alternatives-to-blockchain-9f858c0a1f2d"&gt;Alternatives to Blockchain – Jimmy Song – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Alternatives that are cheaper and more proper than blockchain.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@jcliff/behind-mimblewimble-cd9da78a00e9"&gt;Behind MimbleWimble – Jordan Clifford – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Introduce MimbleWimble and compare the two different implementations, Grin vs Beam.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other-readings"&gt;Other Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/2EOftcvUCD3gb8ztHCEnsA"&gt;哪有那么多「能力问题」，在你牛到一定程度前，全是「态度问题」&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;漫漫职场路上，有那种「既然做了，就要做好」的劲头，才有机会去承担更大责任，赢得更多的胜利。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://vimways.org/2018/from-vimrc-to-vim/"&gt;Vimways ~ From .vimrc to .vim&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Organize vim files into a directory.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.forbes.com/sites/jeffkauflin/2018/12/05/cryptopia-in-crisis-billionaire-joe-lubins-ethereum-experiment-is-a-mess-how-long-will-he-prop-it-up/?from=groupmessage#41087e352f0a"&gt;Cryptopia In Crisis: Joe Lubin’s Ethereum Experiment Is A Mess. How Long Will He Prop It Up?&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/EzdWkbPaVtgY604Ru4oqng"&gt;再谈哈伯格税：极端的计划经济和市场经济，没准是同一个东西&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/udvwDoMACcMiZAqXF4FO3Q"&gt;哈伯格税是一种租金，而不是一种税收&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;哈伯格税其实就是安排了一个拥有某一品类所有资源的垄断者来收租&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://vimways.org/2018/"&gt;Vimways ~ 2018&lt;/a&gt; That’s twenty-four articles written by knowledgeable users&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-12-09</title><link>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-09/</link><pubDate>Sun, 09 Dec 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-09/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://continuations.com/post/180584573645/on-chain-versus-off-chain-computation-turing"&gt;On-Chain versus Off-Chain Computation, Turing Completeness and Zero Knowledge Proofs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Off-Chain computation, On-Chain verification.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@davekaj/blockchain-interoperability-cosmos-vs-polkadot-48097d54d2e2"&gt;Blockchain Interoperability: Cosmos vs. Polkadot – Dave Kajpust – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Consensus: Cosmos uses DPoS, Polkadot uses hybrid PBFT / Aurand.&lt;/p&gt;
&lt;p&gt;Network security:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;With Polkadot the network security is pooled and shared. This means that individual chains can leverage collective security without having to start from scratch to gain traction and trust.&lt;/li&gt;
&lt;li&gt;Cosmos uses governance to decide whether or not the main Cosmos Hub should connect to a Cosmos Zone.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@collinmathilde/9-most-useful-piece-of-advice-ive-received-15ebb7a47008"&gt;9 most useful piece of advice I’ve received&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My fav:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are 2 types of decisions: 1-way door decisions and 2-way door decisions. Be involved with the former, but less and less in the latter.&lt;/li&gt;
&lt;li&gt;Before you make an offer to someone, think about whether you’d like to have 10 times as many people like them in your company.&lt;/li&gt;
&lt;li&gt;It’s better to have a hole in your org. than an asshole.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.fs.blog/2018/04/reversible-irreversible-decisions/"&gt;Go Fast and Break Things: The Difference Between Reversible and Irreversible Decisions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is the same with the first advice I listed above.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dtolnay.github.io/rust-quiz"&gt;26 medium to hard Rust questions with complete explanations&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://8thlight.com/blog/doug-bradbury/2018/11/27/true-cost-rewrites.html"&gt;The True Cost of Rewrites | 8th Light&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;True cost = estimation *
( 1 + catch up + undiscovered + enhancement )
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/s/story/six-years-with-a-distraction-free-iphone-8cf5eb4f97e3"&gt;Six Years With a Distraction-Free iPhone&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The author deleted all distracting apps, which is too aggressive. My
solution is to disable the notifications, and put all the apps in one folder,
so it is too inconvenient to open them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://8thlight.com/blog/cat-mcloughlin/2018/12/04/getting-your-point-across.html"&gt;Getting Your Point Across: Tech Team and Non-Tech Team Communication Tips&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Be honest and transparent.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.learningbyshipping.com/writing-is-thinking-an-annotated-twitter-thread-2a75fe07fade"&gt;“Writing is Thinking”—an annotated twitter thread&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My thoughts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write it down before any argue.&lt;/li&gt;
&lt;li&gt;Writing helps to think throughly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@NetflixTechBlog/tips-for-high-availability-be0472f2599c"&gt;Tips for High Availability – Netflix Technology Blog – Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@kelvinfichter/looking-at-ownership-in-the-evm-6e6914d341d"&gt;Looking at ownership in the EVM – Kelvin Fichter – Medium&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ETH is the only thing that Ethereum really recognizes as an asset that can be owned. Everything else is relegated to the land of “virtual” ownership&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://software.rajivprab.com/2018/04/29/myths-programmers-believe-about-cpu-caches/"&gt;Myths Programmers Believe about CPU Caches – Software the Hard way&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mengerian.medium.com/the-story-of-op-checkdatasig-c2b1b38e801a"&gt;The Story of OP_CHECKDATASIG&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://terminalsare.sexy/"&gt;We all love Terminals. - Terminals Are Sexy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sspai.com/post/46957"&gt;我的 OneNote 入门心得&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://exercism.io/"&gt;Exercism&lt;/a&gt; Code practice and mentorship for everyone&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tabulator.info/"&gt;Tabulator&lt;/a&gt; The easy to use, fully featured, interactive table JavaScript library&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-12-02</title><link>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-02/</link><pubDate>Sun, 02 Dec 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/12/what-i-touched-this-week-2018-12-02/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rustasync.github.io/team/2018/10/16/tide-routing.html"&gt;Routing and extraction in Tide: a first sketch | Rust Network Services
Working
Group&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/rust-net-web/tide/blob/853f6204c5ce6b103dddc46d332b3e4426baef5a/src/endpoint.rs"&gt;tide/endpoint.rs&lt;/a&gt;
is a trick to allow multiple &lt;code&gt;impl for T&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/nervosnetwork/an-introduction-to-ckb-vm-9d95678a7757"&gt;An Introduction to CKB VM – Nervos Network
– Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="read-papers"&gt;Read Papers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/2018/12/weekly-paper-liberal-radicalism/"&gt;♯ Weekly Paper Liberal Radicalism&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Notes on 「&lt;a href="https://medium.com/@FEhrsam/blockchain-governance-programming-our-future-c3bfe30f2d74"&gt;Blockchain Governance: Programming Our Future – Fred
Ehrsam&lt;/a&gt;」&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Why governance is important?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Change are most important in long term.&lt;/li&gt;
&lt;li&gt;We have the opportunity to create vastly different power structures and program the future we want for ourselves.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Two Critical Components of Governance&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Incentives&lt;/li&gt;
&lt;li&gt;Mechanisms for coordination&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Author&amp;rsquo;s options&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[To revert The DAO attack] requires higher friction through off-chain coordination and hard forking instead of on-chain coordination with no forking.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;My thoughts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New developers have little incentive to work on Bitcoin.
&lt;ul&gt;
&lt;li&gt;Public goods crowdfunding, such as crowdfunding by inflation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Buying vs locking in Quadratic Voting.
&lt;ul&gt;
&lt;li&gt;How about voting by coindays?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other-readings"&gt;Other Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[The Hidden Dangers You Have Never Noticed: target = &amp;ldquo;_blank&amp;rdquo; and &amp;ldquo;opener&amp;rdquo;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;TutorialDocs](&lt;a href="https://web.archive.org/web/20201108142009/https://www.tutorialdocs.com/article/html-opener-blank.html"&gt;https://web.archive.org/web/20201108142009/https://www.tutorialdocs.com/article/html-opener-blank.html&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The opened page can replace the location of the opener tab.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cryptobook.nakov.com/"&gt;Practical Cryptography for Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PostgreSQL extensions
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.timescale.com/"&gt;Timescale | an open-source time-series SQL database optimized for fast ingest, complex queries and scale.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.citusdata.com/"&gt;Citus Data | Worry-free Postgres for SaaS. Built to scale out.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pipelinedb/pipelinedb"&gt;PipelineDB - High-Performance Time-Series Aggregation for PostgreSQL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-11-25</title><link>https://blog.iany.me/journal/2018/11/what-i-touched-this-week-2018-11-25/</link><pubDate>Sun, 25 Nov 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/11/what-i-touched-this-week-2018-11-25/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.positive.com/rewriting-history-a-brief-introduction-to-long-range-attacks-54e473acdba9"&gt;Rewriting History: A Brief Introduction to Long Range Attacks&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://aiweirdness.com/post/172894792687/when-algorithms-surprise-us"&gt;Letting neural networks be weird • When algorithms surprise us&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I see an oppotunity to use AI in testing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@cscalfani/goodbye-object-oriented-programming-a59cda4c0e53"&gt;Goodbye, Object Oriented Programming – Charles Scalfani – Medium&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The problem with object-oriented languages is they&amp;rsquo;ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.&lt;/p&gt;
&lt;p&gt;&amp;ndash; Joe Armstrong&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="read-papers"&gt;Read Papers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2018/11/weekly-paper-hayek-the-use-of-knowledge-in-society/"&gt;♯ Weekly Paper Hayek The Use Of Knowledge In Society&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other-readings"&gt;Other Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.360.cn/post/double-spending-attack.html"&gt;条条大路通罗马：实现数字货币双花攻击的多种方法 - 360 核心安全技术博客&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/programming-servo/programming-servo-a-background-hang-monitor-73e89185ce1"&gt;Programming Servo: A background-hang-monitor.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rust background thread monitor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://akveo.github.io/eva-icons/#/"&gt;Eva Icons - beautifully crafted Open Source UI icons for common actions and items.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/Dreamacro/clash"&gt;Dreamacro/clash: A rule-based tunnel on Go.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-11-18</title><link>https://blog.iany.me/journal/2018/11/what-i-touched-this-week-2018-11-18/</link><pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/11/what-i-touched-this-week-2018-11-18/</guid><description>&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/phsym/prettytable-rs/blob/master/README.md"&gt;prettytable-rs/README.md at master · phsym/prettytable-rs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pretty print table in Rust.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/nvzqz/static-assertions-rs"&gt;nvzqz/static-assertions-rs: Rust compile-time assertions to ensure that invariants are met and your API remains stable&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://squoosh.app/"&gt;Squoosh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Online image compression app.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/edwardtufte/tufte-css"&gt;edwardtufte/tufte-css: Style your webpage like Edward Tufte’s handouts.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://okmike.listeneer.com/"&gt;智能复读机音频、视频资源网&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;英语学习资源&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-11-11</title><link>https://blog.iany.me/journal/2018/11/what-i-touched-this-week-2018-11-11/</link><pubDate>Sun, 11 Nov 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/11/what-i-touched-this-week-2018-11-11/</guid><description>&lt;h2 id="papers"&gt;Papers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2018/11/weekly-paper-helix/"&gt;♯ Weekly Paper Helix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other"&gt;Other&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/47802"&gt;新增自动化支持，让这款防休眠工具更懂你的 Mac 使用习惯：Amphetamine - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/kamranahmedse/pennywise"&gt;kamranahmedse/pennywise: Cross-platform application to open any website or media in a floating window&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-11-04</title><link>https://blog.iany.me/journal/2018/11/what-i-touched-this-week-2018-11-04/</link><pubDate>Sun, 04 Nov 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/11/what-i-touched-this-week-2018-11-04/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/2018/11/flatbuffers-compatible-table/"&gt;♯ Flatbuffers Compatible Table&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/48236630"&gt;2018 国内Rust社区调查报告 - 知乎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dev.to/sharkdp/my-release-checklist-for-rust-programs-1m33"&gt;My release checklist for Rust programs - DEV Community&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.fpcomplete.com/blog/2018/10/is-rust-functional"&gt;Is Rust functional?&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Rust is not functional, but Rust does adhere to many of the tenets of functional programming. Thus in many cases, you can easily, naturally, and idiomatically write Rust in a functional style.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://andre.arko.net/2018/10/25/parsing-logs-230x-faster-with-rust/"&gt;Parsing logs 230x faster with Rust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Crates used: &lt;a href="https://github.com/Geal/nom"&gt;nom&lt;/a&gt;, &lt;a href="https://github.com/rust-lang/regex"&gt;regex&lt;/a&gt;, &lt;a href="https://github.com/rayon-rs/rayon"&gt;rayon&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="papers"&gt;Papers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.tezosagora.org/positionpaper"&gt;Tezos: A Self-Amending Crypto-Ledger Position Paper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://thoughtbot.com/upcase/practice"&gt;Upcase, the learning platform from thoughtbot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-10-28</title><link>https://blog.iany.me/journal/2018/10/what-i-touched-this-week-2018-10-28/</link><pubDate>Sun, 28 Oct 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/10/what-i-touched-this-week-2018-10-28/</guid><description>&lt;h2 id="readings"&gt;Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rachelbythebay.com/w/2018/10/21/audio/"&gt;A hidden complication for Linux desktop audio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/47681"&gt;现在 Instagram 还能用来看书了？？？ - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://down.caphbook.com/YH/Download_List.aspx?ClassID=9e068b22-901c-4633-8e7c-e27f06cb87e3&amp;amp;ClassName=%25e8%258b%25b1%25e8%25af%25ad%25e7%25b1%25bb"&gt;中国宇航出版社&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;该出版社音频资源在线播放和下载&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-10-21</title><link>https://blog.iany.me/journal/2018/10/what-i-touched-this-week-2018-10-21/</link><pubDate>Sun, 21 Oct 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/10/what-i-touched-this-week-2018-10-21/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://smallcultfollowing.com/babysteps/blog/2018/09/21/office-hours-0-debugging-with-gdb/"&gt;Office Hours #0: Debugging with GDB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Debug Rust with GDB&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.codingnow.com/2018/10/lua_gc.html"&gt;云风的 BLOG: Lua GC 的工作原理&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=P2nR2YdJpXw"&gt;AMA with Jan Xie, Chief Architect at Nervos (Episode I) - YouTube&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://twobithistory.org/2018/10/14/lisp.html"&gt;How Lisp Became God&amp;rsquo;s Own Programming Language&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other-readings"&gt;Other Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20200203175320/https://rachelbythebay.com/w/2018/10/05/recipes/"&gt;Disappearing videos and disappointed grandmothers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Videos are deleted and nobody noticed it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/47470"&gt;5 年损失数十亿美元：苹果与「骗保」团伙的攻防战 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/RBQ-bTT95pJQpjyQkc2xOg"&gt;神仙的江湖恩怨&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;窦唯&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/47426"&gt;Office 2019：一次打包三年来的重磅更新 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/47390"&gt;macOS Mojave 的动态桌面，可不只是「定时换壁纸」这么简单 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mozilla/rr"&gt;mozilla/rr: Record and Replay Framework&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Debug tool which can rewind.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dalek.rs/"&gt;dalek cryptography&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A cryptography library with Rust support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://miscreant.io/"&gt;Miscreant&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A cryptography library with Rust support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.class-central.com/"&gt;Class Central • #1 Search Engine for Free Online Courses &amp;amp; MOOCs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://kimundi.github.io/owning-ref-rs/owning_ref/index.html"&gt;owning_ref - Rust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Reference self owned field.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.foldnfly.com/index.html"&gt;Fold N Fly ✈&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Different ways to fold an airplane.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-10-07</title><link>https://blog.iany.me/journal/2018/10/what-i-touched-this-week-2018-10-07/</link><pubDate>Sun, 07 Oct 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/10/what-i-touched-this-week-2018-10-07/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.yegor256.com/2018/09/12/clear-code.html"&gt;Code Must Be Clean. And Clear.&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The kitchen is clean when there is no dirt in the oven. But if its electric panel speaks French, I can’t use the kitchen. Even if it’s perfectly clean. It’s not clear how to use it—that’s why it’s useless.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.gwern.net/docs/technology/2018-07-25-johnbackus-howdecentralizationevolves.html"&gt;Resistant protocols: How decentralization evolves – John Backus – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Introduce the history of how file sharing protocols evolved.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.infoq.com/cn/articles/relationship-between-software-architect-and-mathematics"&gt;随谈：软件架构师与数学的关系&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;软件架构师最重要的一项能力是解决问题，数学同时提供了思路和技巧。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/47338"&gt;有目标地收集信息，打造个人灵感库 |《灵感从何而来》读书笔记 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有目标的收集竞品和相似产品，挖掘原因和模式&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="more-readings"&gt;More Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@awemany/600-microseconds-b70f87b0b2a6"&gt;600 Microseconds&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A perspective from the Bitcoin Cash and Bitcoin Unlimited developer who discovered CVE-2018–17144&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://shejiajie.blogspot.com/2018/09/blog-post_18.html"&gt;猪肉协会会长: 从价格认知谈起&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/startup-grind/how-to-get-press-for-your-startup-the-complete-guide-b79c57318113"&gt;How To Get Press for Your Startup: The Complete Guide&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/deanishe/awgo"&gt;deanishe/awgo: Go library for Alfred 3 workflows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-09-29</title><link>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-29/</link><pubDate>Sat, 29 Sep 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-29/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://tonsky.me/blog/disenchantment/"&gt;Software disenchantment&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We developers should have done better in performance.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.tekrevue.com/tip/only-dark-menu-bar-dock-mojave/"&gt;How to Use Only a Dark Menu Bar and Dock in macOS Mojave - TekRevue&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://travisf.net/capstone-rs-unsafety-adventure"&gt;A Rust FFI adventure in unsafety | Travis Finkenauer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/agermanidis/autosub?files=1"&gt;autosub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Auto segment audio into sentences, and generate subtitles&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rv8.io/"&gt;rv8 | RISC-V simulator for x86-64&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Reference of RISC-V JIT implementation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.colorbox.io/"&gt;ColorBox by Lyft Design&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-09-23</title><link>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-23/</link><pubDate>Sun, 23 Sep 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-23/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.acolyer.org/2018/09/14/an-empirical-analysis-of-anonymity-in-zcash/"&gt;An empirical analysis of anonymity in Zcash | the morning paper&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.jez.io/cli-code-review/"&gt;Code Review from the Command Line - Bits, Bytes, and Words&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Code Review using Vim&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.getseq.net/rust-at-datalust-how-we-organize-a-complex-rust-codebase/"&gt;How we organize a complex Rust codebase&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://bryangilbert.com/post/code/rust/adventures-futures-tokio-rust/"&gt;Adventures in Rust: Futures and Tokio · Bryan Gilbert&amp;rsquo;s Blog&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Future is essentially a state machine that does nothing until it&amp;rsquo;s actively polled. Additionally as futures are composed using combinators such as map and join, we are actually building a more elaborate state machine, not manipulating the result of something that is already running somewhere.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sinahab.com/identity-and-reputation-in-web-3/"&gt;Identity and Reputation in Web 3&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://ds9a.nl/articles/posts/linus-communications/"&gt;On Linus Torvalds, technical &amp;amp; corporate communications • ds9a.nl articles&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.pingwest.com/a/177413"&gt;GitHub的中国乱象：刷星、高仿、骂街和版聊-PingWest 品玩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/47122"&gt;如何点亮你的人生技能树：《斜杠青年》读书笔记 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;像听音乐那样读书，没有人会一个音符不漏的听歌。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-09-15</title><link>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-15/</link><pubDate>Sat, 15 Sep 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-15/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://underplay.me/orange/p/201"&gt;区块链与下水道维修艺术 - 橙皮书&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;类比城市下水道系统&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;成一定规模之后再考虑优化&lt;/li&gt;
&lt;li&gt;分层&lt;/li&gt;
&lt;li&gt;和商业活动建立联系&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://programmingisterrible.com/post/176657481103/repeat-yourself-do-more-than-one-thing-and"&gt;Repeat yourself, do more than one thing, and&amp;hellip; — programming is terrible&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Duplication is far cheaper than the wrong abstraction.
— Sandi Metz&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;When a unit has no rules about what code cannot be included, it will eventually contain larger and larger amounts of the system. This is eternally true of every module named ‘util’, and why almost everything in a Model-View-Controller system ends up in the controller.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.coderhood.com/15-best-ways-to-achieve-flow/"&gt;15 Best Ways to Achieve Flow | CoderHood&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Collect all the information you need ahead of time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I found that worries and anxieties go away for the duration of a coding session if I write them down with the clear intent of getting back to it later.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/g5iXWub_EWKWGjiZA1W1UA"&gt;吴恩达：我的AI商业化方法论 - 量子位&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;现在在线内容非常丰富了，一个首席学习官（Chief Learning Officer）的工作，不是去创造内容，而是选择内容给团队学习。这样，就能低成本高效培训整个团队。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/c_r0mFO59oNtMT44XjFCoQ"&gt;融资5000万美元，PingCAP刘奇说希望用代码改变世界 |【经纬低调新闻】&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://codewithoutrules.com/2018/08/10/always-more-work-to-do/"&gt;There’s always more work to do—but you still don’t need to work long
hours&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The answer: by planning ahead. And planning ahead the right way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://feed43.com/"&gt;Feed43 : Convert web pages into professionally looking RSS feeds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.designhistory.org/index.html"&gt;An Introduction to the History of Graphic Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Design sites:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.underconsideration.com/brandnew/"&gt;Brand New&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastcompany.com/co-design"&gt;Co.Design | Fast Company&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://design-milk.com/"&gt;Design Milk: Design Blog with Interior Design, Modern Furniture, &amp;amp; Art&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-09-09</title><link>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-09/</link><pubDate>Sun, 09 Sep 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-09/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://larahogan.me/blog/advice-for-new-executive/"&gt;Advice for a new executive | Lara Hogan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For CTO and VP of Engineering.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/MkxlDo8gy3rL7XmWc019YQ"&gt;韡武专栏：解决集成需求才是未来区块链业务的重点&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.pingwest.com/a/176611"&gt;再来九个支付宝-PingWest 品玩&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;支付宝出海&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/46220"&gt;给每个人的微信取证指南，这件事不是截个图那么简单 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@melissachu/5-ways-to-stop-consuming-and-start-producing-8cefa9feb356"&gt;5 Ways To Stop Consuming And Start Producing – Melissa Chu – Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/time-dorks/why-its-more-important-than-ever-to-ignore-the-news-e50af6971daf"&gt;Why It’s More Important Than Ever to Ignore the News&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/s/story/rules-for-resters-809e368c0fdb"&gt;Rules for Resters – Member Feature Stories – Medium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/google/tink"&gt;google/tink: Tink is a multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://remysharp.com/2018/08/23/cli-improved"&gt;CLI: improved&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;List of cli tools with nice UI, such as&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sharkdp/bat"&gt;sharkdp/bat: A cat(1) clone with wings.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://picular.co/"&gt;Google, but for colors.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="papers-to-read"&gt;Papers to Read&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sf.snu.ac.kr/publications/llvmtwin.pdf"&gt;2018, J. Lee, Reconciling High-level Optimizations and Low-level Code with Twin Memory Allocation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-09-02</title><link>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-02/</link><pubDate>Sun, 02 Sep 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/09/what-i-touched-this-week-2018-09-02/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/36391606"&gt;区块链安全，要从设计抓起&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@shnatsel/how-rusts-standard-library-was-vulnerable-for-years-and-nobody-noticed-aebf0503c3d6"&gt;How Rust’s standard library was vulnerable for years and nobody noticed&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://raphlinus.github.io/programming/rust/2018/08/17/undefined-behavior.html"&gt;With Undefined Behavior, Anything is Possible | Raph Levien’s blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;About the undefined behavior in C standard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@tygertec/how-to-find-stuff-in-git-35d4cb8c1845"&gt;How to find stuff in Git – Ty Walls – Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@AuthorSteger/5-reasons-you-should-wake-up-before-everyone-else-in-the-morning-3f36f0901554"&gt;5 Reasons You Should Wake Up Before Everyone Else In The Morning.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.freecodecamp.org/we-fired-our-top-talent-best-decision-we-ever-made-4c0a99728fde"&gt;We fired our top talent. Best decision we ever made.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzUzNjQxMzEzMg==&amp;amp;mid=2247495307&amp;amp;idx=2&amp;amp;sn=734c865a4c7931fed51d0022401580ec&amp;amp;chksm=faf43828cd83b13e5a20c6588d78f810baf2a0a9d6e73031c764935ce9b888bc8d11f93c5fef&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=08192bt6sPWgSzD2VLUdvjsH%23rd"&gt;我不怀疑你的能力，但不看好你的人品&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;「做一个体面的人，在任何场合下，守住底线和尊严，漂亮的解决问题，就是你格局的体现。」&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/CodeSandwich/Mocktopus"&gt;CodeSandwich/Mocktopus: Mocking framework for Rust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.librarything.com/mds/0"&gt;MDS | LibraryThing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Navigate the library decimal system catalogs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://classify.oclc.org/classify2/"&gt;OCLC Classify &amp;ndash; an Experimental Classification Service&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Search decimal category by ISBN.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-08-26</title><link>https://blog.iany.me/journal/2018/08/what-i-touched-this-week-2018-08-26/</link><pubDate>Sun, 26 Aug 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/08/what-i-touched-this-week-2018-08-26/</guid><description>&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://yi-programmer.com/2018-03-14_blockchain-network.html"&gt;区块链和 P2P 网络&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bitcoin 和 Ethereum 网络的区别，并介绍了日蚀攻击&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@jimmysong/why-blockchain-is-hard-60416ea4c5c"&gt;Why Blockchain is Hard – Jimmy Song – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is hard to upgrade.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.oceanprotocol.com/token-engineering-case-studies-b44267e68f4"&gt;Token Engineering Case Studies – Ocean Protocol&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How to design token using objective function and optimization
methodology.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.jianshu.com/p/2b9fa8633df1"&gt;简评三个基于 VRF 的共识算法 - 简书&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VRF 可验证的随机算法，被广泛运用于 PoS 项目中选取出块节点&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hackernoon.com/ethereum-development-walkthrough-part-2-truffle-ganache-geth-and-mist-8d6320e12269"&gt;Ethereum Development Walkthrough (Part 2: Truffle, Ganache, Geth and Mist)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://deterministic.space/elegant-apis-in-rust.html#what-makes-an-api-elegant"&gt;Elegant Library APIs in Rust - Pascal’s Scribbles&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://vfoley.xyz/rust-compile-speed-tips/"&gt;How to alleviate the pain of Rust compile times&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://unix.stackexchange.com/questions/148545/why-does-sudo-ignore-aliases/148548?stw=2#148548"&gt;shell - Why does sudo ignore aliases? - Unix &amp;amp; Linux Stack Exchange&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Expand alias following command such as sudo, proxychains.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doc.rust-lang.org/book/second-edition/ch10-03-lifetime-syntax.html#lifetime-elision"&gt;Rust lifetime elision rules&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doc.rust-lang.org/book/second-edition/ch19-02-advanced-lifetimes.html#ensuring-one-lifetime-outlives-another-with-lifetime-subtyping"&gt;Rust Lifetime subtyping&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://discussions.apple.com/thread/2213815"&gt;Use &lt;code&gt;CHAR(8232)&lt;/code&gt; to concat strings with new lines in Apple Numbers&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://randomascii.wordpress.com/2018/08/16/24-core-cpu-and-i-cant-type-an-email-part-one/"&gt;24-core CPU and I can’t type an email (part one) | Random ASCII&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How to locate a weird bug.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.raptitude.com/2018/07/right-decision/"&gt;There Is No Right Decision&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t waste time on figuring out the right decision.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzUzNjQxMzEzMg==&amp;amp;mid=2247495307&amp;amp;idx=2&amp;amp;sn=734c865a4c7931fed51d0022401580ec&amp;amp;chksm=faf43828cd83b13e5a20c6588d78f810baf2a0a9d6e73031c764935ce9b888bc8d11f93c5fef&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;srcid=08192bt6sPWgSzD2VLUdvjsH%23rd"&gt;我不怀疑你的能力，但不看好你的人品&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;做一个体面的人，在任何场合下，守住底线和尊严，漂亮的解决问题，就是你格局的体现。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/36348981"&gt;财务自由是个大骗局&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Dictionaries
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://forvo.com/"&gt;Forvo: the pronunciation dictionary. All the words in the world pronounced by native speakers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.merriam-webster.com/"&gt;Dictionary by Merriam-Webster: America&amp;rsquo;s most-trusted online dictionary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dictionary.com/"&gt;Dictionary.com | Meanings and Definitions of Words at Dictionary.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.vocabulary.com/"&gt;Vocabulary.com - Learn Words - English Dictionary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.urbandictionary.com/"&gt;Urban Dictionary, August 25: H/C&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/DDoSolitary/LxRunOffline"&gt;DDoSolitary/LxRunOffline: A full-featured utility for Windows Subsystem for Linux (WSL)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hasura/graphqurl"&gt;hasura/graphqurl: curl for GraphQL with autocomplete, subscriptions and GraphiQL. Also a dead-simple universal javascript GraphQL client.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/colin-kiegel/rust-derive-builder"&gt;colin-kiegel/rust-derive-builder: derive builder implementation for rust structs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sconstantinou.com/powershell-remoting/"&gt;PowerShell Remoting - Stephanos Constantinou Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vifreefly/kimuraframework"&gt;vifreefly/kimuraframework: Modern web scraping framework written in Ruby which works out of box with Headless Chromium/Firefox, PhantomJS, or simple HTTP requests and allows to scrape and interact with JavaScript rendered websites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://embark.status.im/docs/"&gt;Embark&lt;/a&gt; A Ethereum framework&lt;/li&gt;
&lt;li&gt;&lt;a href="http://paletton.com/#uid=1000u0kllllaFw0g0qFqFg0w0aF"&gt;Paletton - The Color Scheme Designer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nteract.io/"&gt;nteract&lt;/a&gt; A Jupyter Notebook front-end implemented using React.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html"&gt;Language Plural Rules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bors.tech/"&gt;bors — consistent automated testing | bors-ng&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-08-12</title><link>https://blog.iany.me/journal/2018/08/what-i-touched-this-week-2018-08-12/</link><pubDate>Sun, 12 Aug 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/08/what-i-touched-this-week-2018-08-12/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sivers.org/slow"&gt;I’m a very slow thinker | Derek Sivers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Take time to think before come to conclusion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/inc./6-self-improvement-hacks-to-instantly-improve-the-way-you-live-and-work-9d461d090a63"&gt;6 Self-Improvement Hacks to Instantly Improve the Way You Live and Work&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Express more gratitude.&lt;/li&gt;
&lt;li&gt;Be intentional about learning from someone.&lt;/li&gt;
&lt;li&gt;Invest financially in others.&lt;/li&gt;
&lt;li&gt;Forget time management — be a good manager of “self.”&lt;/li&gt;
&lt;li&gt;Practice forgiveness.&lt;/li&gt;
&lt;li&gt;Replace your “to do” list with a “to be” list.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@cnm2334/how-to-create-a-schedule-that-will-actually-help-you-54e56397a87b"&gt;How to create a schedule that will actually help you.&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Split time into blocks&lt;/li&gt;
&lt;li&gt;Schedule all the blocks&lt;/li&gt;
&lt;li&gt;Uncontrollable events first&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dev.to/aspittel/extreme-makeover-code-edition-k5k"&gt;Extreme Makeover: Code Edition - DEV Community&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;7 Tips for Writing Clearner Code:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use descriptive naming&lt;/li&gt;
&lt;li&gt;Functions should do one thing well&lt;/li&gt;
&lt;li&gt;Comments should tell the &amp;ldquo;why&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Follow Sandi Metz&amp;rsquo;s rules&lt;/li&gt;
&lt;li&gt;Consistency is key&lt;/li&gt;
&lt;li&gt;DRY up your code — but not too much&lt;/li&gt;
&lt;li&gt;Encapsulate and modularize your code&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://beza1e1.tuxen.de/articles/accidentally_turing_complete.html"&gt;Accidentally Turing-Complete&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It takes a very focused effort to constrain a system so that it is not Turing Complete.
&amp;ndash; &lt;em&gt;Mastering Ethereum&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/46007"&gt;如何实践比尔·盖茨的读书方法，这是我的经验之谈 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/faressoft/terminalizer"&gt;faressoft/terminalizer: 🦄 Record your terminal and generate animated gif images&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://colorless.app/"&gt;Colorless - Color scheme generator for mobile apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hardikvasa/google-images-download"&gt;hardikvasa/google-images-download: Python Script to download hundreds of images from &amp;lsquo;Google Images&amp;rsquo;. It is a ready-to-run code!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-07-28</title><link>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-28/</link><pubDate>Sat, 28 Jul 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-28/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cafbit.com/post/tokio_internals/"&gt;Tokio internals: Understanding Rust&amp;rsquo;s asynchronous I/O framework from the bottom up : Caffeinated Bitstream&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://boats.gitlab.io/blog/post/signing-commits-without-gpg/"&gt;Signing my git commits without GPG&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.imore.com/how-use-sudo-your-mac-touch-id"&gt;How to use sudo with Touch ID on your Mac | iMore&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fossa.io/"&gt;FOSSA - Effortlessly comply with open source licenses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedoodlelibrary.com/"&gt;Reusable simple drawings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-07-22</title><link>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-22/</link><pubDate>Sun, 22 Jul 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-22/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.humus.name/index.php?ID=383&amp;amp;page=News"&gt;Rules of optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/45698"&gt;看书十倍速？速读真的这么神奇？——《雪球速读法》读书笔记 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://robertheaton.com/2018/06/25/how-to-read/"&gt;How to read | Robert Heaton&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s/FLpdT9wZFT0sJBmNTCIObw"&gt;闲话高并发的那些神话，看京东架构师如何把它拉下神坛&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/coinmonks/private-and-public-key-cryptography-explained-simply-4c374d371736"&gt;A Beginner’s Guide: Private and Public Key Cryptography Deciphered&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20210612120011/https://www.deadalnix.me/2016/09/29/using-merklix-tree-to-checkpoint-an-utxo-set/"&gt;Using Merklix tree to checkpoint an UTXO set | Deadalnix&amp;rsquo;s den&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="posts"&gt;Posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2018/07/decred-review/"&gt;♯ Decred Review&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://engineering.gusto.com/how-my-role-as-cto-has-changed-as-weve-grown-to-100-engineers/"&gt;How my role as CTO has changed as we&amp;rsquo;ve grown to 100 engineers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kateheddleston.com/blog/becoming-a-10x-developer"&gt;Becoming a 10x Developer, 10 Ways to be a Better Teammate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.imore.com/how-use-sudo-your-mac-touch-id"&gt;How to use sudo with Touch ID on your Mac&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-07-14</title><link>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-14/</link><pubDate>Sat, 14 Jul 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-14/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/timsort-the-fastest-sorting-algorithm-youve-never-heard-of-36b28417f399"&gt;Timsort — the fastest sorting algorithm you’ve never heard of&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rust"&gt;Rust&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/paritytech/why-rust-846fd3320d3f"&gt;Why Rust? – Parity Technologies&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/programming-servo/programming-servo-the-script-event-loop-be687b985b3e"&gt;Programming Servo: A ‘script’ event-loop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rust event loop pattern.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://yuque.com/xytech/flutter/sh4fbm"&gt;深入理解flutter的编译原理与优化 · 语雀&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://softwareengineering.stackexchange.com/a/145633/44162"&gt;Which hashing algorithm is best for uniqueness and speed? - Software Engineering Stack Exchange&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Detailed comparison between different hashing algorithms.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="methodology"&gt;Methodology&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/yzzf6WkTzfVW-299D4MObQ"&gt;别让自己变为一个废掉的程序猿&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;走出舒适区&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://cheat.sh"&gt;The only cheat sheet you need&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Programming cheat sheet using curl as interface.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/andersk/enum_primitive-rs"&gt;andersk/enum_primitive-rs: Macro to generate num::FromPrimitive instances for enum that works in Rust 1.0&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gauge.org/"&gt;Open Source Test Automation Framework | Gauge&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-07-07</title><link>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-07/</link><pubDate>Sat, 07 Jul 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-07/</guid><description>&lt;h2 id="nervos"&gt;Nervos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/nervosnetwork/introducing-nervos-network-7a2dcfd6a1d0"&gt;Introducing Nervos Network – Nervos Network – Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jianshu.com/p/2dfed83fee1f"&gt;加密经济的信任引擎&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.acolyer.org/2018/06/29/debugging-data-flows-in-reactive-programs/"&gt;Debugging data flows in reactive programs | the morning paper&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/channel/UCSs4A6HYKmHA2MG_0z-F0xw/videos"&gt;李永乐老师 - YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;紧贴实事和热点的科普系列视频&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/45516"&gt;别再用「六个点」当省略号了，这些标点都有更规范的输入方式 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/FiloSottile/mkcert"&gt;FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names you&amp;rsquo;d like.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://moltenframework.com/"&gt;molten&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;New Python lightweight web framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://shotsnapp.com/"&gt;shotsnapp - Create beautiful device mockup presentation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mobxjs/mobx?ref=stackshare"&gt;mobxjs/mobx at stackshare&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Javascript state management library.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-07-01</title><link>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-01/</link><pubDate>Sun, 01 Jul 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/07/what-i-touched-this-week-2018-07-01/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/the-publius-letters/segregated-witness-a-fork-too-far-87d6e57a4179"&gt;Segregated Witness: A Fork Too Far&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What is segwit? The pros and cons.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading-notes"&gt;Reading Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/s/story/blockchain-isnt-a-revolution-it-s-two-big-innovations-and-one-promising-idea-988fca6b0fca"&gt;Blockchain Isn’t a Revolution&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Trust-minimizing - Cryptocurrency&lt;/li&gt;
&lt;li&gt;Tracking - Blockchain&lt;/li&gt;
&lt;li&gt;Trading - Cryptoassets&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/etcdev/exploring-minimum-viable-sidechains-on-etc-3f4b06246aaf"&gt;Exploring Minimum-Viable Sidechains on ETC&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;The sidechain is able to balance the advantages a private network with the security of the mainnet.&lt;/li&gt;
&lt;li&gt;If it (the sidechain) doesn’t depend data from the mainnet, then it doesn’t get any of the value of putting data on mainnet in the first place.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thecoffeelicious.com/a-photographers-guide-to-color-histogram-e31a5d92efb2"&gt;A Photographer’s Guide to Color Histogram – The Coffeelicious&lt;/a&gt;
Exposure Quality:
1. There is no massive overflow of the contours near the left or right edges of the histogram.
2. There are pixels in each brightness interval.
3. A picture will have a better contrast and a more impressive visual effect if the ends are higher and the middle is lower in the histogram.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://paperswithcode.com/"&gt;Papers with Code : the latest in machine learning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-06-24</title><link>https://blog.iany.me/journal/2018/06/what-i-touched-this-week-2018-06-24/</link><pubDate>Sun, 24 Jun 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/06/what-i-touched-this-week-2018-06-24/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2018/05/vim-marks-stack/"&gt;♯ Vim Marks Stack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rust"&gt;Rust&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://iandouglasscott.com/2018/05/28/exploring-rust-fat-pointers/"&gt;Exploring Rust fat pointers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://matklad.github.io/2018/05/24/typed-key-pattern.html"&gt;Typed Key Pattern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hoverbear.org/2016/10/12/rust-state-machine-pattern/"&gt;Pretty State Machine Patterns in Rust&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/etcdev/exploring-minimum-viable-sidechains-on-etc-3f4b06246aaf#---165-292"&gt;Exploring Minimum-Viable Sidechains on ETC – ETCDEV – Medium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.atlassian.com/blog/2015/04/force-with-lease/"&gt;&amp;ndash;force considered harmful; understanding git&amp;rsquo;s &amp;ndash;force-with-lease - Atlassian Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://about.gitlab.com/2018/06/07/keeping-git-commit-history-clean/"&gt;How (and why!) to keep your Git commit history clean | GitLab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://orrsella.com/2013/08/10/git-using-different-user-emails-for-different-repositories/"&gt;Git: Using Different User Emails for Different Repositories – Orr Sella&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tech"&gt;Tech&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/m2_Mf0-x_KpPHbnOawyy2A"&gt;十问 TiDB ：关于架构设计的一些思考&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://randomascii.wordpress.com/2013/07/16/floating-point-determinism/"&gt;Floating-Point Determinism | Random ASCII&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://matklad.github.io//2018/06/18/a-trick-for-test-maintenance.html"&gt;A Trick For Test Maintenance&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Track that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which code is exercised by this test?&lt;/li&gt;
&lt;li&gt;Which test covers this bit of code?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.rescuetime.com/communication-multitasking/"&gt;Communication Multitasking: You Only Get 1h 12min/day Without Email&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.hksilicon.com/articles/1005351"&gt;大型科技公司總是犯錯的原因：堆棧謬誤 | 香港矽谷&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thecoffeelicious.com/a-photographers-guide-to-color-histogram-e31a5d92efb2?source=ifttt--------------1&amp;amp;gi=befd021455c3"&gt;A Photographer’s Guide to Color Histogram – The Coffeelicious&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://parkerwilson.com/blog/2012/07/28/exporting-a-still-image-from-a-quicktime-movie"&gt;Exporting a Still Image (JPEG, TIFF, or PNG) from a Quicktime Movie — Parker Wilson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/charged-tech/why-i-left-mac-for-windows-apple-has-given-up-b48c0eaac64"&gt;Why I left Mac for Windows: Apple has given up – Charged Tech – Medium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/Netflix/zuul"&gt;Netflix/zuul: Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://developers.google.com/machine-learning/rules-of-ml/"&gt;Rules of Machine Learning: | Machine Learning Rules | Google Developers&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackblitz.com/"&gt;The online IDE for web applications. Powered by Visual Studio Code. - StackBlitz&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://radio.garden/live/greencastle-in/wreb-fm/"&gt;WREB-fm – Radio Garden&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Internet Radio with earth visualization.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.docz.site/"&gt;Docz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Documentation tool with integration of React.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://tenor.com/"&gt;Tenor GIF Keyboard - Bring Personality To Your Conversations&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/dylanaraps/pure-bash-bible"&gt;dylanaraps/pure-bash-bible: 📖 A collection of pure bash alternatives to external processes.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://netflix.github.io/titus/"&gt;Titus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A container management platform&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/flutter/flutter"&gt;flutter/flutter: Flutter makes it easy and fast to build beautiful mobile apps.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/gluon-lang/gluon"&gt;gluon-lang/gluon: A static, type inferred and embeddable language written in Rust.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-05-27</title><link>https://blog.iany.me/journal/2018/05/what-i-touched-this-week-2018-05-27/</link><pubDate>Sun, 27 May 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/05/what-i-touched-this-week-2018-05-27/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/doitian/4046a5d53233d8351c1bb981ae2d3b1d"&gt;Convert &lt;code&gt;git diff&lt;/code&gt; output to the format can be recognized by vim quickfix.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Browser auto reload using &lt;code&gt;osascript&lt;/code&gt; and &lt;code&gt;watchexec&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Save following snippet as executable bash script &lt;code&gt;reload-chrome&lt;/code&gt;. It reload the active tab of Google Chrome.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; osascript -l JavaScript -e 'Application(&amp;quot;Google Chrome&amp;quot;).windows[0].activeTab.reload()'
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the script above when files are changed&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; watchexec -w app -w config -p reload-chrome
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doitian.notion.site/The-DevOps-Security-Checklist-ed9b5125ff7945e3b3b4ffa9e6643131"&gt;Devops Security Checklist | Sqreen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Best practices to check security before release.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@umpox/be-careful-what-you-copy-invisibly-inserting-usernames-into-text-with-zero-width-characters-18b4e6f17b66"&gt;Be careful what you copy: Invisibly inserting usernames into text with Zero-Width Characters&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docusaurus.io/"&gt;Docusaurus · Easy to Maintain Open Source Documentation Websites&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://flutter.io/"&gt;Flutter - Beautiful native apps in record time&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Google crossplatform native mobile app development platform.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://coolbackgrounds.io/"&gt;Cool Backgrounds&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cool backgrounds created by CSS&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://filmstro.com/music"&gt;Royalty Free Music | Filmstro&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/BurntSushi/chan"&gt;BurntSushi/chan: Multi-producer, multi-consumer concurrent channel for Rust.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/djc/askama"&gt;djc/askama: Type-safe, compiled Jinja-like templates for Rust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/ambv/black"&gt;ambv/black: The uncompromising Python code formatter&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://wiredjs.com/"&gt;Wired Elements&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hand-drawn UI elements, which can be used in mockup created using code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/improbable-eng/thanos?ref=stackshare"&gt;improbable-eng/thanos at stackshare&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Prometheus monitoring integration for Golang.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-05-20</title><link>https://blog.iany.me/journal/2018/05/what-i-touched-this-week-2018-05-20/</link><pubDate>Sun, 20 May 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/05/what-i-touched-this-week-2018-05-20/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.oceanprotocol.com/towards-a-practice-of-token-engineering-b02feeeff7ca"&gt;Towards a Practice of Token Engineering – Ocean Protocol&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;From Optimization Methodology to Token Methodology&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.innerht.ml/google-yolo/"&gt;Google YOLO&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Introduction to clickjacking attacks in web&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="readings"&gt;Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.rescuetime.com/communication-multitasking/"&gt;Communication Multitasking: You Only Get 1h 12min/day Without Email&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/44536"&gt;如何临时修改 macOS 应用的界面语言 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/44488"&gt;速读流程中的 PDF 标注软件—— PDF Expert, iAnnotate, Evernote 以及 Marginnote - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzIzODA3NzM3Mg%3D%3D&amp;amp;chksm=f2c951c6c5bed8d048f514ae3b5a716ebe3d62605055930691adc1df8e034cbc0e61139419a6&amp;amp;idx=1&amp;amp;mid=2651006229&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;sn=33a21f82a8c070eab0f21a68ef517e1e&amp;amp;srcid=0504Vxxvn2agALuvxIIRGKvs%23rd"&gt;如何找到一份体面的远程工作&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/danistefanovic/build-your-own-x"&gt;danistefanovic/build-your-own-x: 🤓 Build your own (insert technology here)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Learn by doing tutorials.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://doitian.notion.site/The-DevOps-Security-Checklist-ed9b5125ff7945e3b3b4ffa9e6643131"&gt;Devops Security Checklist | Sqreen&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.visualstudio.com/services/live-share/"&gt;Visual Studio Live Share | Visual Studio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pair programming tool.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rsshub.js.org/"&gt;RSSHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Create RSS for some web apps. It is open source and can be self hosted.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/RelaxedJS/ReLaXed"&gt;RelaxedJS/ReLaXed: Create PDF documents using web technologies&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://icons8.com/music/"&gt;Free Royalty Free Music — Fugue&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Free music for videos.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-05-12</title><link>https://blog.iany.me/journal/2018/05/what-i-touched-this-week-2018-05-12/</link><pubDate>Sat, 12 May 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/05/what-i-touched-this-week-2018-05-12/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.figma.com/rust-in-production-at-figma-e10a0ec31929"&gt;Rust in production at Figma – Figma Design&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Only use Rust in proper components.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.ruanyifeng.com/blog/2018/05/root-domain.html"&gt;根域名的知识 - 阮一峰的网络日志&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/thrive-global/want-automatic-motivation-and-wealth-do-this-one-thing-immediately-7ae22a88731c"&gt;One Decision Separates The Wealthy From The Non-Wealthy&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzU5ODQ5ODkzMw%3D%3D&amp;amp;chksm=fe42080cc935811a131e4205cf12d1b7e9b9003a20a96799eefc3a5bdeca82d3214ea4135164&amp;amp;idx=1&amp;amp;mid=2247484182&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;sn=2796988d47aa6da3d0a8f55e01872a0a&amp;amp;srcid=0504Df0qbuLvCTGlTdjVMsDb%23rd"&gt;区块链上无民主&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;抓取网页可以用 Safari Reading Mode 然后 Email。电脑上直接快捷键 &lt;code&gt;cmd+shift+i&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/44436"&gt;巧用 Word 排版技巧，制作一本的符合自己阅读习惯 Kindle 电子书 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="news"&gt;News&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.pingwest.com/microsoft-build-2018-feature/"&gt;微软发布了一台能直播写代码的智能会议电话机，太虐人了！ | PingWest品玩&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theverge.com/2018/5/9/17336592/steam-link-app-streaming-games-ios-android-pc-mac-mobile"&gt;New Steam Link app will let players stream games from their PCs to Android and iOS - The Verge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MjM5MDczODM3Mw%3D%3D&amp;amp;chksm=bd956d848ae2e4928315a6b80e903a1bc267c18612d63063d3d2c2a26604a1552d03b0239e78&amp;amp;idx=1&amp;amp;mid=2653028142&amp;amp;mpshare=1&amp;amp;scene=1&amp;amp;sn=0dd174c676138016803af3d9ac77e919&amp;amp;srcid=0506CwBRWIetLxorOIRqqUJ6%23rd"&gt;腾讯没有梦想&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;分析腾讯为什么失去了创新能力，变成了一家投资公司&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://baremetrics.com/blog/why-founders-need-hobbies"&gt;Why founders need hobbies - Baremetrics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-05-06</title><link>https://blog.iany.me/journal/2018/05/what-i-touched-this-week-2018-05-06/</link><pubDate>Sun, 06 May 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/05/what-i-touched-this-week-2018-05-06/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://latacora.singles/2018/04/03/cryptographic-right-answers.html"&gt;Cryptographic Right Answers — » Latacora&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How to do cryptographic right now.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/a/28512504/667158"&gt;How to lookup from and insert into a HashMap efficiently in Rust?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use &lt;code&gt;entry&lt;/code&gt; function.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20190411014558/https://medium.com/darius-foroux/this-exercise-will-help-you-to-wasting-your-time-447cce156205"&gt;This Exercise Will Help You To Stop Wasting Your Time&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Keep activity log to know how time is spent&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://gwan.com/blog/20160405.html"&gt;Google&amp;rsquo;s &amp;ldquo;Director of Engineering&amp;rdquo; Hiring Test&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Analysis of Google interview questions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fail2ban-quick-start"&gt;Fail2ban Quick Start&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Add regex in &lt;code&gt;filter.d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test regex with &lt;code&gt;fail2ban-regex&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Add jail section in &lt;code&gt;jail.local&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If the log file is too huge, truncate it first&lt;/li&gt;
&lt;li&gt;Restart and verify with &lt;code&gt;fail2ban-client status&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/netflix-techblog/netflix-flamescope-a57ca19d47bb"&gt;Netflix FlameScope&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Performance report which is an improvement based on flame graphs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/44083"&gt;给 OmniFocus 换一个好看的透视图标 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/google/tarpc/blob/master/hooks/pre-commit"&gt;tarpc/pre-commit at master · google/tarpc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Run rustfmt in git hooks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/dgryski/awesome-consensus"&gt;dgryski/awesome-consensus: Awesome list for Paxos and friends&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/alex-shapiro/ditto"&gt;alex-shapiro/ditto: CRDTs for common data structures like maps, vecs, sets, text, and JSON&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Replicated data structure.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/graphile/postgraphile"&gt;graphile/postgraphile: A GraphQL API created by reflection over a PostgreSQL schema.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.foundationdb.org/"&gt;FoundationDB | Home&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Distributed database which supports ACID transactions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.npoint.io/"&gt;https://www.npoint.io&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Simple JSON storage service for demo and PoC.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://bbcsfx.acropolis.org.uk/"&gt;BBC Sound Effects - Research &amp;amp; Education Space&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://sweetohm.net/article/go-interfaces.en.html?mkt_tok=eyJpIjoiTW1OalpHVTJPVEU0TnpnMSIsInQiOiJ0bnlwZ0Ntck40anp1ZEp5aHlTU1BDbktZRklxWEdOTml5N3VYeXZCZUZnMjNOakZLeThRUGpJSWRSZndteGZlMVVIc21zdnc2VzBWUmZXK1NiWFh5ejlQZHV0ZG9vUlwvaTFXMjdoKzQxZWlDTzExVnRRVDZ6dWlOdll0S1wvUjJhIn0%253D"&gt;List of all GO Interfaces&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Table of the intefaces in Golang.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/hendricius/the-bread-code"&gt;hendricius/the-bread-code: Learn how to master the art of baking the programmer way.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/zserge/webview"&gt;zserge/webview: Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and MSHTML (Windows)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-04-07</title><link>https://blog.iany.me/journal/2018/04/what-i-touched-this-week-2018-04-07/</link><pubDate>Sat, 07 Apr 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/04/what-i-touched-this-week-2018-04-07/</guid><description>&lt;h2 id="tech-readings"&gt;Tech Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://treyhunner.com/2018/02/python-3-s-range-better-than-python-2-s-xrange/"&gt;Python 3’s range is more powerful than Python 2’s xrange - Trey Hunner&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stories.buffer.com/remote-work-lessons-f07d67f06b1e"&gt;40 Lessons From 4 Years of Remote Work – Buffer Stories&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://vorner.github.io/2018/03/25/Atomics.html"&gt;Atomics | Vorner’s random stuff&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;About atomics in Rust.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.engineering/2-fast-2-furious-migrating-mediums-codebase-without-slowing-down-84b1e33d81f4"&gt;2 Fast 2 Furious: migrating Medium’s codebase without slowing down&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.vox.com/2018/4/2/17185052/mark-zuckerberg-facebook-interview-fake-news-bots-cambridge"&gt;Mark Zuckerberg on Facebook’s future, fake news, and Russian mischief - Vox&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://vas3k.com/blog/touchbar/"&gt;Making the Touch Bar finally useful :: By abandoning crappy Apple guidelines :: vas3k&amp;rsquo;s blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Customize the uniform touch bar using BetterTouchTool&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.nytimes.com/2018/03/19/your-money/resistance-is-futile-to-change-habits-try-replacement-instead.html"&gt;Resistance Is Futile. To Change Habits, Try Replacement Instead. - The New York Times&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.artofmanliness.com/2018/03/21/fall-asleep-fast/"&gt;How to Fall Asleep in 2 Minutes or Less&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other-readings"&gt;Other Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/43873"&gt;简单又好看，你的 Markdown 文稿也能加上个性化主题 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;自定义 CSS&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/43931"&gt;无需越狱，中英混排的 Kindle 电子书也能拥有好看的排版 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;使用不同的中英文字体&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/43845"&gt;印象笔记中的「搜索图片中文字」，在macOS中也可以实现了 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;OCR using Tesseract.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=oHfGDfbXdT4&amp;amp;feature=youtu.be"&gt;2 Magic Sliders for Fast Smooth Selections in Photoshop CC - YouTube&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/43800"&gt;被侵权后如何投诉最有效？这份维权指南帮你找到合适的维权渠道 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/43812"&gt;十几年前亚马逊尝试失败的「大数据杀熟」，为什么又在国内火了起来？ - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/Hackl0us/SS-Rule-Snippet/blob/master/LAZY_RULES/Surge.conf"&gt;Surge 傻瓜配置&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20200707120422/https://zhuanlan.zhihu.com/p/25131561"&gt;美股交易选择什么样的券商？史考特、盈透、Firstrade、老虎证券深度对比&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-03-25</title><link>https://blog.iany.me/journal/2018/03/what-i-touched-this-week-2018-03-25/</link><pubDate>Sun, 25 Mar 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/03/what-i-touched-this-week-2018-03-25/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/43694"&gt;让一台家用打印机做一些有趣的创造：Creative Park - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20181101105235/https://projectfailures.wordpress.com/2008/06/24/project-from-hell/"&gt;Project from Hell | Project Failures&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Learn from the worst project.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/zsJJZhEI4_vDQZkth8wsvg?dt_platform=douban_broadcast"&gt;一个月里我跟踪了108个居民，发现一个特别好玩的事，80%的人手里都拿着一个尿壶 | 何志森 一席第571位讲者&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不同的角度学习了很多知识&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.nemil.com/musings/hack-an-engineer.html"&gt;How to Hack an Engineer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How should engineer filter the information.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20191105012118/https://medium.com/the-polymath-project/gene-wolfe-a-science-fiction-legend-on-the-future-altering-technologies-we-forgot-to-invent-a3103572a352"&gt;The Future-Altering Technologies We Forgot to Invent&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-03-18</title><link>https://blog.iany.me/journal/2018/03/what-i-touched-this-week-2018-03-18/</link><pubDate>Sun, 18 Mar 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/03/what-i-touched-this-week-2018-03-18/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/32182423"&gt;类型论驿站写作计划&lt;/a&gt; 作者分享了 Lambda 演算和 Coq 的学习笔记&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=d-o3eB9sfls&amp;amp;feature=youtu.be"&gt;Why is pi here? And why is it squared? A geometric answer to the Basel problem - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.acolyer.org/2018/03/12/synode-understanding-and-automatically-preventing-injection-attacks-on-node-js/"&gt;Synode: understanding and automatically preventing injection attacks on Node.js | the morning paper&lt;/a&gt;
Sanity check on &lt;code&gt;exec&lt;/code&gt; and &lt;code&gt;eval&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.acolyer.org/2018/03/15/exposing-congestion-attack-on-emerging-connected-vehicle-based-traffic-signal-control/"&gt;Exposing congestion attack on emerging connected vehicle based traffic signal control | the morning paper&lt;/a&gt;
Paper about the malicious nodes probroblems in autonomous driving.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/a/1470452/667158"&gt;Revert multiple git commits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/a/11175851/667158"&gt;h.264 - Concatenate two mp4 files using ffmpeg - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/hSATAC/status/973512760251244544?ref_src=twsrc%5Etfw"&gt;推友推荐的一些播客&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.pingwest.com/sxsw-westworld-experience-themepark/"&gt;HBO送我去了西部世界，而我见识了人性在褪去枷锁后的泯灭 | PingWest品玩&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://chordify.net/"&gt;Instant chords for any song - Chordify&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/tpope/vim-dadbod"&gt;tpope/vim-dadbod: dadbod.vim: Modern database interface for Vim&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hearth.eternum.io/"&gt;Hearth | Decentralized website publishing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Publish website to IPFS&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-03-11</title><link>https://blog.iany.me/journal/2018/03/what-i-touched-this-week-2018-03-11/</link><pubDate>Sun, 11 Mar 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/03/what-i-touched-this-week-2018-03-11/</guid><description>&lt;h2 id="tech-reading"&gt;Tech Reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/34072069?from=timeline&amp;amp;isappinstalled=0"&gt;一个数独引发的惨案：零知识证明（Zero-Knowledge Proof）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech-reading"&gt;Non-Tech Reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/ElaWorkshop/awesome-cn-cafe/blob/master/README.md"&gt;awesome-cn-cafe/README.md at master · ElaWorkshop/awesome-cn-cafe&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/43410"&gt;2017，非主流英语自学指南 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.backpackers.com.tw/forum/showthread.php?t=1949067"&gt;你所不知道的伊朗&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s/LB0cG1PXBYMgLyaWGZzRGQ"&gt;自我实现的预期&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;关于通货膨胀经济科普文&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/43471"&gt;如何用 Markdown 写论文？ - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/gsingh93/trace"&gt;gsingh93/trace: A Rust syntax extension for tracing function execution&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.rustaceans.org/findwork/starters"&gt;Find something Rusty to work on&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Find issues to work in Rust community.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-03-04</title><link>https://blog.iany.me/journal/2018/03/what-i-touched-this-week-2018-03-04/</link><pubDate>Sun, 04 Mar 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/03/what-i-touched-this-week-2018-03-04/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://mtlynch.io/why-i-quit-google/"&gt;Why I Quit Google to Work for Myself - Silly Bits&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Why author thought the promotion procedure is broken.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/pypa/pipenv"&gt;pypa/pipenv: Python Development Workflow for Humans.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/kbknapp/clap-rs"&gt;kbknapp/clap-rs: A full featured, fast Command Line Argument Parser for Rust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/withoutboats/failure"&gt;withoutboats/failure: Error management&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-02-25</title><link>https://blog.iany.me/journal/2018/02/what-i-touched-this-week-2018-02-25/</link><pubDate>Sun, 25 Feb 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/02/what-i-touched-this-week-2018-02-25/</guid><description>&lt;h2 id="tech-readings"&gt;Tech Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.pathsensitive.com/2018/01/the-benjamin-franklin-method-of-reading.html"&gt;The Benjamin Franklin Method of Reading Programming Books | Path-Sensitive&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Read your programming book as normal. When you get to a code sample, read it over.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Then close the book.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Then try to type it up.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@melissamcewen/who-killed-the-junior-developer-33e9da2dc58c"&gt;Who Killed The Junior Developer? – melissa mcewen – Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech-readings"&gt;Non-Tech Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/swlh/the-two-laws-of-building-products-74880772c678"&gt;The two laws of building products – The Startup – Medium&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you can’t sell it, don’t build it&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;If you can’t build it, don’t sell it&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The startup team should cover different roles&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hacker: implement the product&lt;/li&gt;
&lt;li&gt;Hustler: sale person&lt;/li&gt;
&lt;li&gt;Designer: art and ux&lt;/li&gt;
&lt;li&gt;Analyst: data analysis and business inteligence&lt;/li&gt;
&lt;li&gt;Dreamer: motivate the team&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.kapwing.com/blog/why-i-dont-use-my-real-photo/"&gt;Why I don&amp;rsquo;t use my real photo when messaging with customers on my website · Kapwing Blog&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sexual harassment and irrespective.&lt;/li&gt;
&lt;li&gt;Suggestion: Use company identity in custom support.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://discussions.apple.com/message/21511262"&gt;Fix macOS blue overlay above videos on Dell display&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Click the On Screen Menu button to the right of the screen and select Menu. Navigate to Display Settings (4th category down). Then navigate over to Smart Video Enhance and switch Movie to Off.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rust-fuzz.github.io/book/introduction.html#introduction"&gt;Rust Fuzz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A random test tool for Rust.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-02-19</title><link>https://blog.iany.me/journal/2018/02/what-i-touched-this-week-2018-02-19/</link><pubDate>Mon, 19 Feb 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/02/what-i-touched-this-week-2018-02-19/</guid><description>&lt;h2 id="tech-readings"&gt;Tech Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20180905083904/http://www.bitecoin.com/online/2018/01/28850.html"&gt;区块链里的 “Oracle”是什么？&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@preethikasireddy/fundamental-challenges-with-public-blockchains-253c800e9428"&gt;Fundamental challenges with public blockchains – Preethi Kasireddy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;List of challenges and research directions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/bloomberg/were-all-crypto-miners-now-hacking-epidemic-churns-out-monero-190b0f097aa7"&gt;We’re all crypto miners now: Hacking epidemic churns out Monero&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Another post about botnet using browser.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.acolyer.org/2018/02/16/decentralisation-in-bitcoin-and-ethereum-networks/"&gt;Decentralisation in Bitcoin and Ethereum networks | the morning paper&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/arogozhnikov/python3_with_pleasure"&gt;arogozhnikov/python3_with_pleasure: A short guide on features of Python 3&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hackernoon.com/part-2-how-to-stop-me-harvesting-credit-card-numbers-and-passwords-from-your-site-844f739659b9"&gt;Part 2: How to stop me harvesting credit card numbers and passwords from your site&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Security with 3rd-party code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://codeburst.io/how-to-become-a-code-learning-super-ninja-1-ae293637c337"&gt;How to become a code-learning super NINJA (1) – codeburst&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@lydiahallie/advice-from-a-19-y-o-girl-software-developer-88737bcc6be5"&gt;Advice From A 19 Year Old Girl &amp;amp; Software Developer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.freecodecamp.org/aspiring-data-scientist-master-these-fundamentals-be7c54350868"&gt;Aspiring data scientist? Master these fundamentals.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.b-list.org/weblog/2018/feb/11/usernames/"&gt;Let&amp;rsquo;s talk about usernames&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Best practices about usernames.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="papers-readings"&gt;Papers Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Bracha, G. (1987). Asynchronous Byzantine agreement protocols. Information and Computation, 75(2), 130–143. &lt;a href="http://doi.org/10.1016/0890-5401%2887%2990054-X"&gt;http://doi.org/10.1016/0890-5401(87)90054-X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Al-Bassam, M., Sonnino, A., Bano, S., Hrycyszyn, D., &amp;amp; Danezis, G. (2017). Chainspace: A Sharded Smart Contracts Platform. Retrieved from &lt;a href="http://arxiv.org/abs/1708.03778"&gt;http://arxiv.org/abs/1708.03778&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ali, M., Nelson, J., Labs, B., Shea, R., Labs, B., Freedman, M. J., … Freedman, M. J. (2016). Blockstack : A Global Naming and Storage System Secured by Blockchains. USENIX Annual Technical Conference, 181–194. Retrieved from &lt;a href="https://www.usenix.org/conference/atc16/technical-sessions/presentation/ali"&gt;https://www.usenix.org/conference/atc16/technical-sessions/presentation/ali&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="non-tech-readings"&gt;Non-Tech Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://betterhumans.coach.me/how-to-become-more-likeable-8949aadee9c8"&gt;How to Become More Likeable – Better Humans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@hondanhon/no-ones-coming-it-s-up-to-us-de8d9442d0d"&gt;No one’s coming. It’s up to us. – Dan Hon – Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@soundfury/%E5%BE%9E%E5%AC%89%E7%9A%AE%E5%8F%8D%E6%96%87%E5%8C%96%E5%88%B0%E7%B6%B2%E8%B7%AF%E6%96%87%E5%8C%96-%E4%B8%80%E5%80%8B%E5%B0%9A%E6%9C%AA%E5%AF%A6%E7%8F%BE%E7%9A%84%E7%BE%8E%E9%BA%97%E6%96%B0%E4%B8%96%E7%95%8C-5e10a6ee93b2"&gt;從嬉皮反文化到網路文化：一個尚未實現的美麗新世界 – soundfury – Medium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.class-central.com/collection/ivy-league-moocs"&gt;Ivy League MOOCs | Class Central&lt;/a&gt; Courses from Ivy League.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vurtun/nuklear"&gt;vurtun/nuklear: A single-header ANSI C gui library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flatuicolors.com/"&gt;Palettes | Flat UI Colors 🎨 280 handpicked colors ready for COPY &amp;amp; PASTE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-02-11</title><link>https://blog.iany.me/journal/2018/02/what-i-touched-this-week-2018-02-11/</link><pubDate>Sun, 11 Feb 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/02/what-i-touched-this-week-2018-02-11/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/crypto-currently/the-anatomy-of-erc721-e9db77abfc24"&gt;The Anatomy of ERC721&lt;/a&gt;, Non-Fungible Tokens.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-02-04</title><link>https://blog.iany.me/journal/2018/02/what-i-touched-this-week-2018-02-04/</link><pubDate>Sun, 04 Feb 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/02/what-i-touched-this-week-2018-02-04/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=JRIPV0dPAd4&amp;amp;feature=youtu.be"&gt;A Beginner’s Guide To Quantum Computing - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/blockchain-platforms-one-chain-to-rule-them-all-f3f7dda84bae"&gt;Blockchain Platforms: One Chain To Rule Them All? – Hacker Noon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading"&gt;Reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://georgehalachev.com/2018/01/22/why-were-horrible-at-achieving-goals-and-what-to-do-about-it/"&gt;Why We&amp;rsquo;re Horrible at Achieving Goals (And What to Do About It)&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;we have to constantly track our actions and see if they lead us to the end result.&lt;/li&gt;
&lt;li&gt;until we figure out what type of actions lead to what we want in the end.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/the-mission/if-it-doesnt-suck-it-s-not-worth-doing-d72533893aba"&gt;If It Doesn’t Suck, It’s Not Worth Doing&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;primary obstacle to success is the idea of success.&lt;/li&gt;
&lt;li&gt;people feel maxed-out mentally and physically, and thus stop, when they are at only 40% of their actual capacity.&lt;/li&gt;
&lt;li&gt;Do something and don’t stop until it’s complete, no matter how long it takes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/personal-growth/how-to-digest-books-above-your-level-and-increase-your-intelligence-a11bd134da13"&gt;How To Digest Books Above Your “Level” And Increase Your Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/swlh/https-medium-com-dsilvestre-elon-musk-productivity-secrets-for-insane-success-7f033d98916b"&gt;Top 10 Elon Musk Productivity Secrets for Insane Success&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dariusforoux.com/how-i-measure-my-life/"&gt;How I Measure My Life – The Blog Of Darius Foroux – Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/biohack-your-intelligence-now-or-become-obsolete-97cdd15e395f"&gt;How to biohack your intelligence — with everything from sex to modafinil to MDMA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://500ish.com/plateau-kindle-before-peak-kindle-96f8948bd880"&gt;Plateau Kindle Before Peak Kindle – 500ish Words&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/binhnguyennus/awesome-scalability"&gt;binhnguyennus/awesome-scalability: Everyday-Updated Reading List For Designing High Scalability , High Availability , High Stability Back-End Systems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sfackler/r2d2"&gt;sfackler/r2d2: A generic connection pool for Rust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rust-lang-nursery/rust-clippy"&gt;rust-lang-nursery/rust-clippy: A bunch of lints to catch common mistakes and improve your Rust code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;P2P network library: &lt;a href="https://libp2p.io/"&gt;libp2p&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://facebook.github.io/zstd/"&gt;Zstandard - Real-time data compression algorithm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-01-21</title><link>https://blog.iany.me/journal/2018/01/what-i-touched-this-week-2018-01-21/</link><pubDate>Sun, 21 Jan 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/01/what-i-touched-this-week-2018-01-21/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://violentmetaphors.com/2013/08/25/how-to-read-and-understand-a-scientific-paper-2/"&gt;How to read and understand a scientific paper: a guide for non-scientists – Violent metaphors&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hackernoon.com/oops-i-fpd-again-14a3aecbbb98"&gt;OOPs, I FP’d again! – Hacker Noon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;OOP and FP in harmony&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zef.me/musing/the-100x-engineer/"&gt;The 100x Engineer – Zef.me&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;100x Engineer vs 10x Programmer&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@brannondorsey/browser-as-botnet-or-the-coming-war-on-your-web-browser-be920c4f718"&gt;Browser as Botnet, or the Coming War on Your Web Browser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Experiment to abuse client browser CPU.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.keep.network/miners-arent-your-friends-cde9b6e0e9ac"&gt;Miners Aren’t Your Friends – Keep Network&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.freecodecamp.org/openssl-command-cheatsheet-b441be1e8c4a"&gt;OpenSSL command cheatsheet – freeCodeCamp&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="read-books-and-watched-courses"&gt;Read Books and Watched Courses&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PLi01XoE8jYoi3SgnnGorR_XOW3IcK-TP6"&gt;Abstract Algebra - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/2262441021"&gt;A Cryptography Primer: Secrets and Promises&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cryptozombies.io/en/course/"&gt;CryptoZombies | Learn to code games on Ethereum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cglab.ca/~abeinges/blah/too-many-lists/book/README.html"&gt;Learning Rust With Entirely Too Many Linked Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/review/show/2160499525"&gt;TCP/IP Illustrated, Volume 1: The Protocols&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="interesting-projects"&gt;Interesting Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/emilwallner/Screenshot-to-code-in-Keras"&gt;emilwallner/Screenshot-to-code-in-Keras: A neural network that transforms a screenshot into a static website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/carllerche/slab"&gt;carllerche/slab: Slab allocator for Rust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ID allocator collection.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/osrg/namazu"&gt;osrg/namazu: 鯰: Programmable fuzzy scheduler for testing distributed systems&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/jepsen-io/jepsen"&gt;jepsen-io/jepsen: A framework for distributed systems verification, with fault injection&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://tla.msr-inria.inria.fr/tlaps/content/Documentation/Tutorial/The_example.html"&gt;TLA+ Proof System&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2018-01-14</title><link>https://blog.iany.me/journal/2018/01/what-i-touched-this-week-2018-01-14/</link><pubDate>Sun, 14 Jan 2018 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2018/01/what-i-touched-this-week-2018-01-14/</guid><description>&lt;h2 id="rust"&gt;Rust&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bluejekyll.github.io/blog/rust/2017/12/29/making-trust-dns-fast.html"&gt;Making TRust-DNS faster than BIND9&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Performance tunning DNS server implemented in Rust.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.rs/error-chain/0.11.0/error_chain/"&gt;error_chain - Rust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bluejekyll.github.io/blog/rust/2017/08/06/type-parameters.html"&gt;They&amp;rsquo;re not Generics; they&amp;rsquo;re TypeParameters&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.instructables.com/id/Understanding-how-ECDSA-protects-your-data/"&gt;Understanding How ECDSA Protects Your Data.: 15 Steps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/cardano-ethereum-and-neo-killer-or-overhyped-and-overpriced-8fcd5f8abcdf"&gt;Cardano: Ethereum and NEO Killer or Overhyped and Overpriced?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/neo-versus-ethereum-why-neo-might-be-2018s-strongest-cryptocurrency-79956138bea3"&gt;NEO versus Ethereum: Why NEO might be 2018’s strongest cryptocurrency&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5"&gt;I’m harvesting credit card numbers and passwords from your site. Here’s how.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Security essay about using third party Javascript library in login page.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/tombh/texttop"&gt;tombh/texttop: A fully interactive X Linux desktop rendered in TTY and streamable over SSH&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/willurd/5720255"&gt;Big list of http static server one-liners&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-12-31</title><link>https://blog.iany.me/journal/2017/12/what-i-touched-this-week-2017-12-31/</link><pubDate>Sun, 31 Dec 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/12/what-i-touched-this-week-2017-12-31/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jvns.ca/blog/2017/12/21/bindgen-is-awesome/"&gt;Bindgen: awesome Rust tool for generating C bindings - Julia Evans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/teads-engineering/real-life-aws-cost-optimization-strategy-at-teads-135268b0860f"&gt;Real-life AWS cost optimization strategy – Teads Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rancher.com/an-introduction-to-rke/"&gt;An Introduction to Rancher Kubernetes Engine (RKE) | Rancher Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://m.signalvnoise.com/move-slowly-and-fix-things-e5a560fd928b"&gt;Move Slowly and Fix Things – Signal v. Noise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://soraven.com/ethereum-devcon3-the-good-the-bad-the-ugly-92c3f387db86"&gt;Ethereum Devcon3 — an outsider’s perspective – So Raven&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.kentcdodds.com/learn-react-fundamentals-and-advanced-patterns-eac90341c9db"&gt;Learn React Fundamentals 🆓 and Advanced Patterns ⚛️ 🎁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.freecodecamp.org/react-pattern-centralized-proptypes-f981ff672f3b"&gt;React Pattern: Centralized PropTypes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/username-or-password-is-incorrect-is-bullshit-89985ca2be48"&gt;“username or password incorrect” is bullshit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@doitian/%E9%98%BF%E9%87%8C%E4%BA%91%E4%BA%91%E4%B8%BB%E6%9C%BA%E6%8C%82%E8%BD%BD%E4%BA%91%E7%9B%98%E7%9A%84%E5%9D%91-6cce27176841"&gt;阿里云云主机挂载云盘的坑&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.freecodecamp.org/how-project-managers-and-developers-can-both-happily-give-realistic-ship-dates-2d5e4ec42df7"&gt;How project managers and developers can both (happily!) give realistic ship dates&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://johann.loefflmann.net/en/software/jarfix/index.html"&gt;Jarfix&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Associate .jar files with java in Windows.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/42108"&gt;用 Mac 抹掉的 U 盘在 PC 上不能用？试试这个方法 | 一日一技 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="games"&gt;Games&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/42320"&gt;这款新游戏，5 年前单凭一个试玩版惊艳了整个游戏界：Gorogoa - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-11-26</title><link>https://blog.iany.me/journal/2017/11/what-i-touched-this-week-2017-11-26/</link><pubDate>Sun, 26 Nov 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/11/what-i-touched-this-week-2017-11-26/</guid><description>&lt;h2 id="maching-learning"&gt;Maching Learning&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@Numenta/the-secret-to-strong-ai-61d153e26273"&gt;The Secret to Strong AI – Numenta&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Opinion: AI should be developed based on brain research.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.jefkine.com/general/2016/09/05/backpropagation-in-convolutional-neural-networks/"&gt;Backpropagation In Convolutional Neural Networks - DeepGrid&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.ethereum.org/2014/01/15/slasher-a-punitive-proof-of-stake-algorithm/"&gt;Slasher: A Punitive Proof-of-Stake Algorithm - Ethereum Blog&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Signing Privileges/Validators is determined in early blocks.&lt;/li&gt;
&lt;li&gt;Signing rewards claim is deferred.&lt;/li&gt;
&lt;li&gt;Everyone can publish conflicting signing to claim cheater finder reward. Cheater looses rewards, reporter is incentivized by the reward.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Slasher 从机制上迫使要获利就要不同分支上使用相同 key 做冲突签名，由于签名几乎不可伪造，所以任何人发现冲突后都可以同时在不同的分支上举报。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/2017/11/read-various-rsa-keys-in-ruby/"&gt;♯ Read Various RSA Keys In Ruby&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/zh/2017/11/zfs-file-restore/"&gt;ZFS 文件恢复&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/zh/2017/11/personal-habits-summary/"&gt;个人习惯总结&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/GoogleCloudPlatform/container-diff"&gt;GoogleCloudPlatform/container-diff: container-diff: Diff your Docker containers&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://launchpad.net/%7Ebrightbox/&amp;#43;archive/ubuntu/ruby-ng/&amp;#43;index?batch=75&amp;amp;memo=75&amp;amp;start=75"&gt;Brightbox Ruby NG : “Brightbox” team&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ruby PPA to ease installing various pre-built ruby versions in Ubuntu.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/date-fns/date-fns"&gt;date-fns/date-fns: ⏳ Modern JavaScript date utility library ⌛️&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/antvis/g2"&gt;antvis/g2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Javascript chart/visulazation tool.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/ayufan/gitlab-ci-multi-runner/blob/master/packaging/root/usr/share/gitlab-runner/clear-docker-cache"&gt;gitlab-ci-multi-runner/clear-docker-cache&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Script to cleanup broken Gitlab CI cache stored as docker instances.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/908575/how-to-edit-multi-gigabyte-text-files-vim-doesnt-work/908664#908664"&gt;How to edit multi-gigabyte text files? Vim doesn&amp;rsquo;t work =( - Stack Overflow&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; vim -u &amp;quot;NONE&amp;quot; hugefile.log
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://chrome.google.com/webstore/detail/turbonote/fhpgggnmdlmekfdpkdgeiccfkignhkdf"&gt;TurboNote - Chrome Extention&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Take note when watching videos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://giphy.com/"&gt;GIPHY | Search All the GIFs &amp;amp; Make Your Own Animated GIF&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-11-19</title><link>https://blog.iany.me/journal/2017/11/what-i-touched-this-week-2017-11-19/</link><pubDate>Sun, 19 Nov 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/11/what-i-touched-this-week-2017-11-19/</guid><description>&lt;h2 id="machine-learning"&gt;Machine Learning&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/buzzrobot/whats-happening-inside-the-convolutional-neural-network-the-answer-is-convolution-2c22075dc68d"&gt;What’s happening inside the Convolutional Neural Network? The answer is Convolution.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/RedditSota/state-of-the-art-result-for-machine-learning-problems#reinforcement-learning"&gt;RedditSota/state-of-the-art-result-for-machine-learning-problems: This repository provides state of the art (SoTA) results for all machine learning problems.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="blockchain"&gt;Blockchain&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@jonchoi/ethereum-casper-101-7a851a4f1eb0"&gt;Ethereum Casper 101 – jon choi – Medium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://truffleframework.com/ganache/"&gt;Ganache | Truffle Suite&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Quickly fire up a personal Ethereum blockchain which you can use to run tests, execute commands, and inspect state while controlling how the chain operates.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="other"&gt;Other&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gitprint.com/"&gt;Easily print GitHub markdown as beautiful PDFs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jeanblanchard/docker-alpine-glibc"&gt;jeanblanchard/docker-alpine-glibc: Minimal Alpine Linux Docker image with glibc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.blog/2017/10/31/disliked-programming-languages/"&gt;What are the Most Disliked Programing Languages? | Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.visualstudio.com/blogs/2017/11/15/live-share"&gt;Introducing Visual Studio Live Share&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20190307123247/https://medium.com/@nicolascole77/this-is-how-you-find-yourself-in-the-top-1-of-anything-in-the-world-c213f805dc11"&gt;This Is How You Find Yourself In The Top 1% Of Anything In The World&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/personal-growth/surround-yourself-with-people-who-hold-you-to-a-higher-standard-than-you-hold-yourself-3d38e793967b"&gt;Surround Yourself with People Who Hold You to a Higher Standard than You Hold Yourself&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-11-12</title><link>https://blog.iany.me/journal/2017/11/what-i-touched-this-week-2017-11-12/</link><pubDate>Sun, 12 Nov 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/11/what-i-touched-this-week-2017-11-12/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.citusdata.com/blog/2017/10/17/tour-of-postgres-index-types/"&gt;A tour of Postgres Index Types&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;B-Tree&lt;/em&gt; - For most datatypes and queries&lt;/li&gt;
&lt;li&gt;&lt;em&gt;GIN&lt;/em&gt; - For JSONB/hstore/arrays which allow multiple values.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;GiST&lt;/em&gt; - For full text search and geospatial datatypes, for rows that overlap values&lt;/li&gt;
&lt;li&gt;&lt;em&gt;SP-GiST&lt;/em&gt; - For larger datasets with natural but uneven clustering&lt;/li&gt;
&lt;li&gt;&lt;em&gt;BRIN&lt;/em&gt; - For really large datasets that line up sequentially&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Hash&lt;/em&gt; - For equality operations, and generally B-Tree still what you want here&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://getstream.io/blog/switched-python-go/"&gt;Why We Switched from Python to Go | The Stream Blog&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/pkg/errors"&gt;pkg/errors: Simple error handling primitives&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;hellip; &lt;a href="https://github.com/kisielk/errcheck"&gt;errcheck&lt;/a&gt; and &lt;a href="https://github.com/dominikh/go-tools/tree/master/cmd/megacheck"&gt;megacheck&lt;/a&gt; are handy to avoid making these mistakes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://shift.infinite.red/solidarity-the-cli-for-developer-sanity-672fa81b98e9"&gt;Solidarity — The CLI for Developer Sanity – Red Shift&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Snapshot environment requirements and verify later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hackernoon.com/stop-using-io-domain-names-for-production-traffic-b6aa17eeac20"&gt;Stop using .IO Domain Names for Production Traffic – Hacker Noon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;.IO DNS Server outage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/k88hudson/git-flight-rules"&gt;k88hudson/git-flight-rules: Flight rules for git&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Git FAQ&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ai"&gt;AI&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.nytimes.com/2017/11/05/technology/machine-learning-artificial-intelligence-ai.html"&gt;Building AI That Can Build AI – The New York Times – Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to calculate derivatives using &lt;a href="https://www.youtube.com/watch?v=Ilg3gGewQ5U"&gt;backpropation&lt;/a&gt;, and the &lt;a href="https://www.youtube.com/watch?v=tIeHLnjs5U8"&gt;calculus explanation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="productivity"&gt;Productivity&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.nateliason.com/learning-plateau/"&gt;How to Break Through Any Learning Plateau and Never Stop Growing&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As soon as you see that you’re stuck, you should figure out how you can modify your practice to deal with the weakest part of your skillset..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Take challenge, get out of comfort zone.&lt;/li&gt;
&lt;li&gt;Mix up learned skills&lt;/li&gt;
&lt;li&gt;Find week parts and improve&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://journal.thriveglobal.com/how-to-improve-your-life-in-just-a-month-eed6c90ee6c4"&gt;How to Improve Your Life in Just a Month – Thrive Global&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can’t change what you not ready to quit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;hellip; make small improvements every day that will gradually lead to the change you want.Each day.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Take 20 minutes each night to make your mornings easier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Stop doing what average people do.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Also mentioned in &lt;a href="https://web.archive.org/web/20181216174950/https://medium.com/darius-foroux/five-unproductive-habits-ive-quit-so-i-can-get-more-done-830c6836e694"&gt;Five Unproductive Habits I’ve QUIT So I Can Get More Done&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Think what are worth to do.&lt;/li&gt;
&lt;li&gt;Plan at the night instead of morning.&lt;/li&gt;
&lt;li&gt;Contribute the most productive time slots to the most important things.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="life"&gt;Life&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://betterhumans.pub/rules-for-happier-parents-children-change-when-we-let-them-cb93816b41ce"&gt;Rules for Happier Parents: Children Change — When We Let Them&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Stick to describing your child’s behavior on any one occasion as nothing more than that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://poly.google.com/"&gt;Poly&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3D Model galery.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-11-05</title><link>https://blog.iany.me/journal/2017/11/what-i-touched-this-week-2017-11-05/</link><pubDate>Sun, 05 Nov 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/11/what-i-touched-this-week-2017-11-05/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/learnbyexample/Command-line-text-processing"&gt;learnbyexample/Command-line-text-processing: From finding text to search and replace, from sorting to beautifying text and more&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A good reference to go though what these commands can do, and a library to lookup examples when using these tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.pingwest.com/representation-learning/"&gt;从Pinterest到阿里，再谈工业界的推荐系统 | PingWest品玩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stripe.com/atlas/guides/starting-sales"&gt;Stripe Atlas: Getting Your First 10 Customers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Where and how to get your first 10 custormers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dev-blog.apollodata.com/designing-graphql-mutations-e09de826ed97"&gt;Designing GraphQL Mutations – Apollo GraphQL&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Conventions/Patterns of GraphQL Mutations design.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;hellip; in &lt;code&gt;graphql-go&lt;/code&gt;, the input object must be &lt;a href="https://stackoverflow.com/a/41230015/667158"&gt;defined&lt;/a&gt; using &lt;code&gt;NewInputObject&lt;/code&gt; and the nested types should also be input objects.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://dev.to/samjarman/finding-ideas-for-programming-side-projects"&gt;Finding Ideas for Programming Side Projects&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://devhints.io/"&gt;Devhints — TL;DR for developer documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Find cheatsheets.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://grpc.io/"&gt;grpc / grpc.io&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;RPC framework.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-10-29</title><link>https://blog.iany.me/journal/2017/10/what-i-touched-this-week-2017-10-29/</link><pubDate>Sun, 29 Oct 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/10/what-i-touched-this-week-2017-10-29/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/zh/2017/10/lua-c-api-userdata/"&gt;Lua C API userdata 和 light userdata&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://tech.trivago.com/2017/01/25/learn-redis-the-hard-way-in-production/"&gt;Learn Redis the hard way (in production) · trivago techblog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Performance tuning tips.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.intelligentchange.com/blogs/news/how-to-increase-productivity"&gt;1% Gains for How to Increase Productivity: The Ultimate Guide – Intelligent Change&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Several simple actions to achive 1% gains of productivities.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hackernoon.com/error-boundaries-in-react-16-32fb8e185a3"&gt;Error Boundaries in React 16 – Hacker Noon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Try cache in React component.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://alistapart.com/article/coding-with-clarity"&gt;Coding with Clarity · An A List Apart Article&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Principles and examples for clarity code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=1j2Wg3kwZIk&amp;amp;feature=youtu.be"&gt;Un-Hooked: Increasing Focus in the Age of Distraction - YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Break the loop of Trigger, Action, Reward, Investment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://reactjs.org/docs/shallow-renderer.html"&gt;Shallow Renderer - React&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Test react by rendering one level only. There&amp;rsquo;s a high lever wrapper &lt;a href="https://github.com/airbnb/enzyme/blob/master/docs/api/shallow.md"&gt;enzyme/shallow&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/datitran/jupyter2slides"&gt;datitran/jupyter2slides: Cloud Native Presentation Slides with Jupyter Notebook + Reveal.js&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Template which converts Jupyter Notebook to Reveal.js slides.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://plot.ly/python/"&gt;Python Graphing Library, Plotly&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Can be used in Jupyter Notebook.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://folium.readthedocs.io/en/latest/"&gt;Folium — Folium 0.2.0 documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Python plotting with map data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/bkaradzic/bgfx"&gt;bkaradzic/bgfx: Cross-platform, graphics API agnostic, &amp;ldquo;Bring Your Own Engine/Framework&amp;rdquo; style rendering library.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-10-22</title><link>https://blog.iany.me/journal/2017/10/what-i-touched-this-week-2017-10-22/</link><pubDate>Sun, 22 Oct 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/10/what-i-touched-this-week-2017-10-22/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://statico.github.io/vim3.html"&gt;Vim After 15 Years | Ian Langworth’s Things of Variable Interest&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vim tips&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@preethikasireddy/how-does-ethereum-work-anyway-22d1df506369"&gt;How does Ethereum work, anyway? – Preethi Kasireddy – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Introduction to Ethereum&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/doitian/8152980b4552e52f683fb6f84472d6ac"&gt;Use luarocks installed via Homebrew without sudo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Edit &lt;code&gt;/usr/local/Cellar/lua@5.3/5.3.4/libexec/share/lua/5.3/luarocks/fs/lua.lua&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In function &lt;code&gt;fs_lua.check_command_permissions(flags)&lt;/code&gt;, Change the if condition to&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if fs.exists(dir) and not fs.is_writable(dir) and not fs.is_writable(dir .. &amp;quot;/bin&amp;quot;) then
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/fastify/fastify"&gt;fastify/fastify: Fast and low overhead web framework, for Node.js&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Node.js http server using async/await.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/ansible/awx"&gt;ansible/awx: AWX Project&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Opensource Ansible Tower&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/cloudnativelabs/kube-router"&gt;cloudnativelabs/kube-router: A distributed load balancer, firewall and router designed for Kubernetes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/sheerun/vim-polyglot"&gt;sheerun/vim-polyglot: A solid language pack for Vim.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/Microsoft/napajs"&gt;Microsoft/napajs: Napa.js: a multi-threaded JavaScript runtime&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-10-14</title><link>https://blog.iany.me/journal/2017/10/what-i-touched-this-week-2017-10-14/</link><pubDate>Sat, 14 Oct 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/10/what-i-touched-this-week-2017-10-14/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/zh/2017/10/centralized-logs-using-graylog-output/"&gt;Graylog 集中日志管理 - 日志输出&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://antirez.com/news/114"&gt;Streams: a new general purpose data structure in Redis. - antirez&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Redis will support stream processing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://jamesknelson.com/5-types-react-application-state/"&gt;The 5 Types Of React Application State - James K Nelson&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A pattern to categorize Redux State.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/Developing-Redux-Edge-Johannes-Lumpe-ebook/dp/B01KL5RJHU"&gt;Developing a Redux Edge {Book}&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A book recommended if you want to learn Redux in depth.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Learned from the book above, delete a key from object:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const {[id]: remove, ...rest} = state;
return rest;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ramdajs.com/"&gt;Ramda&lt;/a&gt; Functional library for Javascript, It is pure, immutable and auto curried.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heron.incubator.apache.org/"&gt;Heron&lt;/a&gt; Stream processing framework via Twitter, which API is compatible with Apache Storm.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="shell-vim-tips"&gt;Shell, vim tips&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fix quickfix hilight color&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hi! link QuickFixLine Search
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://archive.zhimingwang.org/blog/2015-09-21-zsh-51-and-bracketed-paste.html"&gt;Zsh 5.1 and bracketed paste&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fix &lt;code&gt;^[[?2004h&lt;/code&gt; when using zsh in dump terminal&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if [[ $TERM == dumb ]]; then
unset zle_bracketed_paste
fi
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/doitian/3109eb0951415af317081bbdaf5363fc"&gt;Close disturbing windows in #vim&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function! s:CloseDisturbingWin()
if &amp;amp;filetype == &amp;quot;help&amp;quot; || &amp;amp;filetype == &amp;quot;netrw&amp;quot;
let l:currentWindow = winnr()
if s:currentWindow &amp;gt; l:currentWindow
let s:currentWindow = s:currentWindow - 1
endif
close
endif
endfunction
command! Close :pclose | :cclose | :lclose |
\ let s:currentWindow = winnr() |
\ :windo call s:CloseDisturbingWin() |
\ exe s:currentWindow . &amp;quot;wincmd w&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-10-08</title><link>https://blog.iany.me/journal/2017/10/what-i-touched-this-week-2017-10-08/</link><pubDate>Sun, 08 Oct 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/10/what-i-touched-this-week-2017-10-08/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/zh/2017/09/centralized-logs-using-graylog-collecting/"&gt;Graylog 集中日志管理 - 收集日志&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/zh/2017/10/centralized-logs-using-graylog-processing/"&gt;Graylog 集中日志管理 - 日志处理&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To make android cmd tools work with Java 9&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; export JAVA_OPTS=&amp;quot;--add-modules=java.se.ee&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Don&amp;rsquo;t let local VMs mess up known_hosts&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; Host 10.211.55.* 10.37.129.*
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://qotoqot.com/blog/improving-focus/"&gt;How I got to 200 productive hours a month&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Methods to improve focus.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/41018"&gt;小记一次用 ARKit 设计和开发 Mobile AR 篮球小项目 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AR 用户引导的设计分享&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.inc.com/justin-bariso/amazons-jeff-bezos-uses-a-brilliant-and-surprising.html"&gt;&amp;lsquo;Silent Start&amp;rsquo;: The Brilliant (and Surprising) Meeting Method I Learned From Amazon&amp;rsquo;s Jeff Bezos | Inc.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Spend time to read stuffs in the start of a meeting.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/a/41126591/667158"&gt;How to set syslog ident in Python&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects--tools"&gt;Projects &amp;amp; Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mattgreen/watchexec"&gt;mattgreen/watchexec: Executes commands or restart server in response to file modifications&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://ping.pe/"&gt;Ping and mtr from multiple locations&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/mattrajca/sudo-touchid"&gt;mattrajca/sudo-touchid: A fork of &lt;code&gt;sudo&lt;/code&gt; with Touch ID support.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use Touch ID to authorize sudo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://abseil.io/"&gt;abseil / abseil.io&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C++ library ready for future standard C++ features.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/tockins/realize/blob/master/README.md"&gt;realize/README.md at master · tockins/realize&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Automate Go development.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/aptible/supercronic"&gt;aptible/supercronic: Cron for containers&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/SerpentAI/SerpentAI"&gt;SerpentAI/SerpentAI: Game Agent Framework. Helping you create AIs / Bots to play any game you own! BETA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Framework which integrates image recognition, OCR, tensorflow and etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/hootsuite/atlantis#production-ready-deployment"&gt;hootsuite/atlantis: A unified workflow for collaborating on Terraform through GitHub&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/chef/bento"&gt;chef/bento: Packer templates for building minimal Vagrant baseboxes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Base image for various OS, and packer scripts to build them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://shopify.github.io/draggable/"&gt;Draggable JS – JavaScript drag and drop library&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.styled-components.com/"&gt;styled-components&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;CSS library for React.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/GoogleChrome/puppeteer"&gt;GoogleChrome/puppeteer: Headless Chrome Node API&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/asciimoo/colly"&gt;asciimoo/colly: Fast and Elegant Scraping Framework for Gophers&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-09-24</title><link>https://blog.iany.me/journal/2017/09/what-i-touched-this-week-2017-09-24/</link><pubDate>Sun, 24 Sep 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/09/what-i-touched-this-week-2017-09-24/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/zh/2017/09/rails-cookie-encryption/"&gt;Rails Cookie 如何解密&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Jupyter Notebook: When running jupyter as daemon, remember set env variable LANG to en_US.UTF-8&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://webkit.org/blog/7929/designing-websites-for-iphone-x/"&gt;Designing Websites for iPhone X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;New CSS rules for iPhone X&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reading"&gt;Reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/netflix-techblog/scaling-event-sourcing-for-netflix-downloads-episode-2-ce1b54d46eec"&gt;Scaling Event Sourcing for Netflix Downloads, Episode 2&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fetch aggregate and submit command&lt;/li&gt;
&lt;li&gt;Command handler generates events&lt;/li&gt;
&lt;li&gt;Event handler applies events&lt;/li&gt;
&lt;li&gt;Save events and returned new Aggregate&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://unit.nginx.org/index.html"&gt;NGINX Unit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NGINX as application container.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/spf13/viper"&gt;spf13/viper: Go configuration with fangs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/anvaka/ngraph.path"&gt;anvaka/ngraph.path: Path finding in a graph&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-09-17</title><link>https://blog.iany.me/journal/2017/09/what-i-touched-this-week-2017-09-17/</link><pubDate>Sun, 17 Sep 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/09/what-i-touched-this-week-2017-09-17/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/wolfcw/libfaketime"&gt;wolfcw/libfaketime: libfaketime modifies the system time for a single application&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Useful for test related to time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/21515463/how-to-increase-neo4js-maximum-file-open-limit-ulimit-in-ubuntu/24796466#24796466"&gt;How to increase root maximum file open limit (ulimit) in Ubuntu? - Stack Overflow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Limit for root user must be added explicity. Wildcard &amp;lsquo;*&amp;rsquo; does not match root.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/doitian/b171d8b1bdd461ec7e362f3b10916a73"&gt;Go process livereload for development&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Decimal is consider as integer in MySQL, set scale explicitly.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;change_column :products, :discount_percentage, :decimal, precision: 5, scale: 2
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://apidocjs.com/#demo"&gt;apiDoc - Inline Documentation for RESTful web APIs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Generate API Doc from comments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.nats.io/"&gt;NATS Documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Message Queue using Golang.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bl.ocks.org/mbostock/11357811"&gt;Wilson’s Algorithm - bl.ocks.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Algorithm to generate a maze using random walk.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/download/i18nline"&gt;Download/i18nline: Keep your translations in line&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I18n for Javascript.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/substantial/updeep"&gt;substantial/updeep: Easily update nested frozen objects and arrays in a declarative and immutable manner.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Helper for Redux reducers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/google/re2"&gt;google/re2: RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression engines like those used in PCRE, Perl, and Python. It is a C++ library.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-09-03</title><link>https://blog.iany.me/journal/2017/09/what-i-touched-this-week-2017-09-03/</link><pubDate>Sun, 03 Sep 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/09/what-i-touched-this-week-2017-09-03/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://info.michael-simons.eu/2013/10/25/archiving-os-x-mavericks-tags-and-other-data-with-git/"&gt;Archiving OS X Mavericks tags (and other data) with git&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Handful to create a snippets library using macOS tags in a git repository.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://pbpython.com/effective-matplotlib.html"&gt;Effectively Using Matplotlib - Practical Business Python&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Book: Python Data Science Handbook. Getting started data analysis usign numpy, pandas and matplotlib.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="upvoted-so-answers"&gt;Upvoted SO Answers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/18035093/given-a-linux-username-and-a-password-how-can-i-test-if-it-is-a-valid-account/18035305#18035305"&gt;hash - Given a linux username and a password how can I test if it is a valid account?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/29707882/javafx-hbox-alignment/30826914#30826914"&gt;java - JavaFX HBox Alignment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/4700614/how-to-put-the-legend-out-of-the-plot/43439132#43439132"&gt;python - How to put the legend out of the plot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/20638006/convert-list-of-dictionaries-to-dataframe/33020669#33020669"&gt;python - Convert list of dictionaries to Dataframe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/12376863/adding-calculated-columns-to-a-dataframe-in-pandas/12377083#12377083"&gt;python - Adding calculated column(s) to a dataframe in pandas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/18504967/pandas-dataframe-create-new-columns-and-fill-with-calculated-values-from-same-df/18505101#18505101"&gt;python - pandas dataframe create new columns and fill with calculated values from same df&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="posts"&gt;Posts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2017/08/redis-write-buffer/"&gt;♯ Redis Write Buffer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/2017/08/nginx-udp-load-balance/"&gt;♯ Nginx Udp Load Balance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="game-dev"&gt;Game Dev&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.codingnow.com/2017/08/mmorpg_sync.html"&gt;云风的 BLOG: MMORPG 的同步设计&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/28888353"&gt;四个坚毅严谨的开发者 制作了一款软萌的音乐游戏 - 知乎专栏&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/extr0py/oni"&gt;extr0py/oni: Oni: An IDE powered by Neovim&lt;/a&gt; Neovim IDE frontend.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://chartmage.com/intro.html"&gt;Chart Mage - Draw sequence diagrams and flowcharts at lightning speed.&lt;/a&gt;. Create chart online using plain text.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-08-19</title><link>https://blog.iany.me/journal/2017/08/what-i-touched-this-week-2017-08-19/</link><pubDate>Sat, 19 Aug 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/08/what-i-touched-this-week-2017-08-19/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/32960857/how-to-convert-arbirtrary-simple-json-to-csv-using-jq/32967407#32967407"&gt;How to convert arbirtrary simple JSON to CSV using jq? - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-08-06</title><link>https://blog.iany.me/journal/2017/08/what-i-touched-this-week-2017-08-06/</link><pubDate>Sun, 06 Aug 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/08/what-i-touched-this-week-2017-08-06/</guid><description>&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://intellij-support.jetbrains.com/hc/en-us/community/posts/206806425-Source-Directories-Not-Being-Created-In-New-Project"&gt;Source Directories Not Being Created In New Project – IDEs Support (IntelliJ Platform) | JetBrains&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Check the option, otherwise the directories must be created manually before creating Java/Kotlin new files using context menu.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.heapanalytics.com/postgresqls-powerful-new-join-type-lateral/"&gt;PostgreSQL&amp;rsquo;s Powerful New Join Type: LATERAL - Heap Blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LATERAL&lt;/code&gt; scopes sub SELECT with columns in preceding FROM items. It is useful to query completed associative information in one SQL.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/a/37235492/667158"&gt;Auto raise Python Tkinter main window&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://coolshell.cn/articles/18024.html"&gt;Qt API设计原则 (译) | 酷 壳 - CoolShell&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20151022045219/https://my.oschina.net/lxrm/blog/466837"&gt;debian apt-get update：public key 错误修复 - NILYANG&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt-get install debian-keyring debian-archive-keyring
apt-get update
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update using columns in joined table:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.postgresqltutorial.com/postgresql-update-join/"&gt;PostgreSQL&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE A
SET A.c1 = expresion
FROM B
WHERE A.c2 = B.c2;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.mysqltutorial.org/mysql-update-join/"&gt;MySQL&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UPDATE T1, T2,
[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1
SET T1.C2 = T2.C2,
T2.C3 = expr
WHERE condition
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="design"&gt;Design&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/sketch-app-sources/sketch-app-awesomeness-d6db04bf9ccb"&gt;Sketch App Awesomeness 👌 – Design + Sketch – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sketch tips.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/weixin/WeSketch"&gt;weixin/WeSketch: A set of plugins for Sketch include drawing links &amp;amp; marks, UI Kit &amp;amp; Color sync, font &amp;amp; text replacing.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;微信团队 Sketch 插件集&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/24265418"&gt;The Stanley Parable：一场反设计与荒谬哲学的狂欢 - 知乎专栏&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20171214032324/http://t-machine.org/index.php/2017/08/03/a-safe-and-accurate-gitignore-for-unity3d-unity5-onwards/"&gt;A safe and accurate .gitignore for Unity3D (Unity5 onwards) | T-machine.org&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.makeuseof.com/tag/powershell-cmdlets-windows-admin/"&gt;Powershell Cmdlets That&amp;rsquo;ll Improve Your Windows Admin Skills&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/39851"&gt;入门智能家居，从米家到HomeKit （一） - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用树莓派适配智能家居系列文章&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/40047"&gt;免费全平台的文件分享利器：SendAnywhere - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-07-03</title><link>https://blog.iany.me/journal/2017/07/what-i-touched-this-week-2017-07-03/</link><pubDate>Mon, 03 Jul 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/07/what-i-touched-this-week-2017-07-03/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/doitian/b0991368d91db3e7011733d6f812f592"&gt;Supervise gitlab using supervisord so &lt;code&gt;SIDEKIQ_MEMORY_KILLER_GRACE_TIME&lt;/code&gt; can be set to enable sidekiq memory killer.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jimmycuadra.com/posts/the-highs-and-lows-of-rust-2017/"&gt;The highs and lows of Rust (2017) | Jimmy Cuadra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bugfender.com/blog/kotlin-for-android-development-heavyweight-language-or-hopeless-hype/"&gt;Kotlin for Android Development: Heavyweight Language or Hopeless Hype? | Bugfender&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/a/42698847/667158"&gt;Create keyspace automatically inside docker container with cassandra&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Cyclenerd/ethereum_nvidia_miner"&gt;Cyclenerd/ethereum_nvidia_miner: 💰 USB flash drive ISO image for Ethereum mining with NVIDIA graphics cards and Ubuntu GNU/Linux (headless)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/h2non/gock"&gt;h2non/gock: Versatile HTTP mocking and expectations made simple in Go (golang) ༼ʘ̚ل͜ʘ̚༽&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.habitat.sh/"&gt;Habitat - Automation That Travels with the App&lt;/a&gt; based on Chef.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-06-25</title><link>https://blog.iany.me/journal/2017/06/what-i-touched-this-week-2017-06-25/</link><pubDate>Sun, 25 Jun 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/06/what-i-touched-this-week-2017-06-25/</guid><description>&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mongoosejs.com/"&gt;Mongoose ODM v4.11.0&lt;/a&gt; MongoDB ORM for node.js&lt;/li&gt;
&lt;li&gt;&lt;a href="https://plot.ly/products/dash/"&gt;Dash by Plotly&lt;/a&gt; Data interactive visualization using Python.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jondot/react-flight"&gt;jondot/react-flight: The best way to build animation compositions for React.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-06-03</title><link>https://blog.iany.me/journal/2017/06/what-i-touched-this-week-2017-06-03/</link><pubDate>Sat, 03 Jun 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/06/what-i-touched-this-week-2017-06-03/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=npw4s1QTmPg"&gt;Raymond Hettinger Modern Python Dictionaries A confluence of a dozen great ideas PyCon 2017 - YouTube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Details of Python dict performance tunning. It turns out that the techniques has already used in database index. The dict saves a list of records and a componion index mapping.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://lunarlabs.pt/blog/post/the-art-of-lerp"&gt;The Art of Lerp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Frequently used linear interpolation function.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://hackernoon.com/samsungs-bizarre-emojis-6be568a3b7d9"&gt;Samsung’s Bizarre Emojis – Hacker Noon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Samsung Emojis are not consistent with others.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/a/30264399/667158"&gt;How to auto scroll textarea in JavaFX&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.iany.me/2017/06/resource-bundle-in-intellij-tornadofx-gradle-project/"&gt;♯ Resource Bundle In Intellij Tornadofx Gradle Project&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/facebook/react-vr"&gt;facebook/react-vr: Create amazing 360 and VR content using React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://osquery.io/?ref=stackshare"&gt;osquery&lt;/a&gt; queries system stats using SQL.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tadviewer.com/"&gt;Tad - A Desktop Viewer App for Tabular Data&lt;/a&gt;. Group and aggregate tabular data, such as SQLite, CSV.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-05-28</title><link>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-28/</link><pubDate>Sun, 28 May 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-28/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bitcoin.org/bitcoin.pdf"&gt;Bitcoin Paper&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Timestamps transactions by hashing them into ongoing chain of hash-based proof-of-work.&lt;/li&gt;
&lt;li&gt;The longest chain is the truth.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.lostgarden.com/2017/01/game-design-patterns-for-building.html"&gt;Lost Garden: Game design patterns for building friendships&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Four key factors to build friendships&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proximity: Regularly encounter each other, and it is easy to recognize one another.&lt;/li&gt;
&lt;li&gt;Similarity: Shared values, Connected.&lt;/li&gt;
&lt;li&gt;Reciprocity: Bi-directional exchanges with benefits to both parties.&lt;/li&gt;
&lt;li&gt;Disclosure: Trust by disclosing vulnerability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Friendship: person with mutually beneficial long term relationship based off trust and shared values.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/ashchan/bitcoin-ethereum-cryptography"&gt;ashchan: 比特币、以太坊加密技术&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;关于比特币、以太坊区块链加密技术的分享。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.heapanalytics.com/basic-performance-analysis-saved-us-millions/"&gt;How Basic Performance Analysis Saved Us Millions - Heap Blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Found out reason why postgresql index took all the CPU using flame graph.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://jamesclear.com/inversion"&gt;Inversion: The Crucial Thinking Skill Nobody Ever Taught You&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Inversion forces you to consider aspects of a situation that are often hidden at first glance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="game"&gt;Game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/27069470"&gt;中国独立游戏会好吗？&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;国内现状分析和前景展望。体量大，发展晚。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/27130622"&gt;游戏中的“成长感”设计 The New Face In Entertainment - 知乎专栏&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;玩法技巧成长感&lt;/li&gt;
&lt;li&gt;游戏设计的成长感&lt;/li&gt;
&lt;li&gt;奖励带来的成长感&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mozilla-services/react-jsonschema-form"&gt;mozilla-services/react-jsonschema-form: A React component for building Web forms from JSON Schema.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/goreliu/wsl-terminal"&gt;goreliu/wsl-terminal: Terminal emulator for Windows Subsystem for Linux (WSL)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://storybooks.js.org/"&gt;Storybook - UI dev environment you&amp;rsquo;ll love to use&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://smallpdf.com/"&gt;Smallpdf.com - A Free Solution to all your PDF Problems&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.wolfram.com/raspberry-pi/"&gt;Wolfram + Raspberry Pi Project: A Wolfram Engine on Every Raspberry Pi&lt;/a&gt;
Free Mathmatica and Wolfram for Raspberry Pi&lt;/li&gt;
&lt;li&gt;&lt;a href="http://waitbutwhy.com/2016/10/100-blocks-day.html"&gt;100 Blocks a Day - Wait But Why&lt;/a&gt;
Save your time!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/39301"&gt;如何在微信聊天记录中选中局部文字 | 一日一技 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/33036"&gt;量产型炮灰工程师 · Ruby China&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;柯洁 0:3 AlphaGo，国内相关报道被管制，不允许直播&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-05-20</title><link>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-20/</link><pubDate>Sat, 20 May 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-20/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.playpcesor.com/2017/05/10-habit.html"&gt;我所養成的 10 個最有生產力習慣，以及我如何養成這些習慣&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;要有效的利用时间。通过记录清空大脑并减少下次相似事情时的成本。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@magnus.chatt/why-you-should-totally-switch-to-kotlin-c7bbde9e10d5"&gt;Why you should totally switch to Kotlin – Magnus Vinther – Medium&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For me, Kotlin is powerful, and is under control not like Scala.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;hellip;, and it is &lt;a href="http://marketingland.com/google-io-2-214945"&gt;offically supported in Android Development&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.zerotier.com/2017/05/05/the-horror-in-the-standard-library/"&gt;The Horror in the Standard Library&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;libstdc++ is broken. Set GLIBCPP_FORCE_NEW, link jemalloc&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.smashingmagazine.com/2017/05/why-no-framework/"&gt;“Why We Didn’t Use A Framework” (Case Study) – Smashing Magazine&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;hellip; needed 100% control over the UX of the video call &amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;so they choose to use vanilla JavaScript.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sspai.com/post/39283"&gt;和 Android 相比，人工智能才是 Google 更想介绍的 ：Google I/O 2017 回顾 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主题：人工通知&lt;/li&gt;
&lt;li&gt;产品：Google Assitant for iOS, Google Lens, Google Home, Android O, VR Headset.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://medium.com/@contact_16315/firebase-costs-increased-by-7-000-81dc0a27271d"&gt;Firebase Costs Increased by 7,000%! – Startups &amp;amp; Venture Capital&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Due to a change in how they report data usage, our monthly costs for Firebase, a SaaS provided by Google, has increased from $25 a month to what is now moving towards the $2,000 mark — with no changes to our actual data use. This change was made without warning.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Do not lock your product to 3rd party service. Make it cheap to switch services.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.jianshu.com/p/8c33f7c84509"&gt;golang IO包的妙用 - 简书&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Read&lt;/code&gt; 和 &lt;code&gt;Write&lt;/code&gt; 接口简单，容易组合&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gotchas when using ktor, a Kotlin web framework&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ktor-netty&lt;/code&gt; is buggy when used with &lt;code&gt;ktor-websockets&lt;/code&gt;, use &lt;code&gt;ktor-jetty&lt;/code&gt; instead.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jetty-server&lt;/code&gt; should also be added as a dependencies when using &lt;code&gt;ktor-jetty&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Kawoou/FlexibleImage"&gt;Kawoou/FlexibleImage: A simple way to play with the image!&lt;/a&gt; Swift image library.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dgraph-io/badger"&gt;dgraph-io/badger: Fastest key/value store in Go.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aerobatic"&gt;Aerobatic - Professional static web publishing&lt;/a&gt;. Easy static web hosting solution.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.joedog.org/siege-home/"&gt;Siege Home&lt;/a&gt;. An HTTP benchmark tool.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lovoo/goka"&gt;lovoo/goka: Goka is a compact yet powerful distributed stream processing library for Apache Kafka written in Go.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coreos.com/blog/introducing-zetcd"&gt;zetcd: running ZooKeeper apps without ZooKeeper | CoreOS&lt;/a&gt;. Proxy of etcd that acts as ZooKeeper server.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bloomberg/comdb2"&gt;bloomberg/comdb2: Bloomberg&amp;rsquo;s distributed RDBMS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=94swlF55tVc"&gt;How a Blind Developer uses Visual Studio - YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.rust-lang.org/2017/05/15/rust-at-two-years.html"&gt;Rust turns Two&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-05-13</title><link>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-13/</link><pubDate>Sat, 13 May 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-13/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/zh/2017/05/cocos2d-x-ttf/"&gt;Cocos2D-X TTF 字体排版&lt;/a&gt;，如何使用 FreeType 库进行字符排版。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html"&gt;CPU Utilization is Wrong&lt;/a&gt;. Check instructions per cycle (IPC) to see whether CPU is stalled&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.adriancourreges.com/blog/2017/05/09/beware-of-transparent-pixels/"&gt;Beware of Transparent Pixels - Adrian Courrèges&lt;/a&gt;. Leaned bilinear filtering and color blending, and usage of premultiplied alpha.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/a/24341946/667158"&gt;“go build” became very slow after installing a new version of Go&lt;/a&gt;. It saved me when I found out I have to wait for minutes when running &lt;code&gt;go run&lt;/code&gt; after several homebrew upgrades. I event spent time to &lt;a href="https://blog.golang.org/profiling-go-programs"&gt;profiling my app&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.daftcode.pl/fixing-unicode-for-ruby-developers-60d7f6377388"&gt;Fixing Unicode for Ruby Developers – DaftCode Blog&lt;/a&gt;. How to do unicode right in Ruby. Normalize unicode before performing serious text processing.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/a/34687141/667158"&gt;Can I execute a function after setState is finished updating?&lt;/a&gt;. Function &lt;code&gt;setState&lt;/code&gt; can accepts a callback which will be invoked after stage is really changed and DOMs are updated.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="games"&gt;Games&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/26520569"&gt;《Monsterologist》开发日志 （十一）竞品学习：《精灵宝可梦》的怪物设计是越做越差了吗？ - 知乎专栏&lt;/a&gt;。各全面的怪物设计分析的分享。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/hshoff/vx"&gt;hshoff/vx: react + d3 = vx | visualization components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amoffat.github.io/sh/index.html"&gt;Sh&lt;/a&gt; is a shell command wrapper for Python.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hobby-kube/guide"&gt;hobby-kube/guide: Kubernetes clusters for the hobbyist.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getinsomnia/insomnia"&gt;getinsomnia/insomnia: The most intuitive cross-platform REST API Client 😴&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-05-09</title><link>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-09/</link><pubDate>Tue, 09 May 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-09/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/39003"&gt;macOS 如何在全屏 App 或拥挤的桌面间便捷拖动文件 - 少数派&lt;/a&gt;。不使用第三方软件的文件拖动技巧。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://akrzemi1.wordpress.com/2017/04/27/a-serious-bug-in-gcc/"&gt;A serious bug in GCC | Andrzej’s C++ blog&lt;/a&gt;. Destructor not invoked when exception thrown in constructor/initializer&lt;/li&gt;
&lt;li&gt;&lt;a href="https://prepack.io/"&gt;Prepack · Partial evaluator for JavaScript&lt;/a&gt;. Expand computations at compile-time.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/dailyjs/put-your-electron-app-on-a-diet-with-electrino-c7ffdf1d6297"&gt;Put your Electron app on a diet with Electrino – DailyJS – Medium&lt;/a&gt;. It provides a framework similar with Electron but with less size by reusing system web browser engine.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.reddit.com/r/programming/comments/69m8df/why_does_google_prepend_while1_to_their_json/"&gt;Why does Google prepend while(1); to their JSON responses? : programming&lt;/a&gt;。 It prevents &lt;a href="http://haacked.com/archive/2009/06/25/json-hijacking.aspx"&gt;JSON hijacking&lt;/a&gt; .&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.codingnow.com/2017/05/gdb_coredumplua.html"&gt;云风的 BLOG: 用 gdb 分析 coredump 的一些技巧&lt;/a&gt;. Gdb 以及 skynet 和 lua C 层调试技巧和一些底层介绍。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/30243646/mail-rules-using-javascript-for-automation-instead-of-applescript/30246285#30246285"&gt;email - Mail Rules using JavaScript for Automation instead of AppleScript - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;function performMailActionWithMessages(messages) {
messages.forEach( function(message) { // if you want to iterate
})
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="games"&gt;Games&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/26679861"&gt;Flinthook：动静结合的Roguelite佳作 - 知乎专栏&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.bilibili.com/video/BV1wx411m7S6/"&gt;【敖厂长】让你耳朵怀孕的FC游戏_单机游戏_游戏_哔哩哔哩&lt;/a&gt;. 使用扩展芯片有着出色 8bit 音乐的 FC 游戏。也是款不错的平台游戏，good ending 达成条件有些变态。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/JohnSundell/TestDrive/blob/master/README.md"&gt;TestDrive/README.md at master · JohnSundell/TestDrive · GitHub&lt;/a&gt;. Playground of any Swift pod or framework.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/timothycrosley/hug?ref=stackshare"&gt;GitHub - timothycrosley/hug at stackshare&lt;/a&gt; A python HTTP framework.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ilovepdf.com"&gt;ilovepdf&lt;/a&gt;, a collection of online PDF utilities.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.k6.io"&gt;K6&lt;/a&gt;, a modern load testing tool.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-05-01</title><link>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-01/</link><pubDate>Mon, 01 May 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/05/what-i-touched-this-week-2017-05-01/</guid><description>&lt;h2 id="reading"&gt;Reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.zhihu.com/question/22696632/answer/162234202"&gt;碎片阅读如何形成知识体系？&lt;/a&gt;做笔记，分类阅读材料和个人时间并分配时间到不同分类的阅读材料。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20170609192231/http://guoqiao.me/post/2015/1212-pip-install-offline-via-wheels"&gt;使用 pip wheel 实现 Python 依赖包的离线安装&lt;/a&gt;。相当于 Ruby 的 &lt;code&gt;bundle package&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.makeuseof.com/tag/excel-flash-auto-fill/"&gt;How to Use Excel&amp;rsquo;s Flash Fill and Auto Fill to Automate Data Entry&lt;/a&gt;. Flash Fill can fill by guessing extract pattern.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.buzzfeed.com/nicolenguyen/your-problematic-free-faves"&gt;Here&amp;rsquo;s The Thing With Free Apps And Services - BuzzFeed News&lt;/a&gt;. There is no free lunch. “if you’re not paying for it, you’re not the customer, you’re the product.”&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codefresh.io/blog/node_docker_multistage/"&gt;Create lean Node.js image with Docker multi-stage build.&lt;/a&gt; Multiple &lt;code&gt;FROM&lt;/code&gt; and corresponding build section. The output image is built using the last &lt;code&gt;FROM&lt;/code&gt;. 类似于 Daocloud 提供的 CI, safe build 功能。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.troyhunt.com/reckon-youve-seen-some-stupid-security-things-here-hold-my-beer/"&gt;Troy Hunt: Reckon you&amp;rsquo;ve seen some stupid security things? Here, hold my beer&amp;hellip;&lt;/a&gt;How stupid!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://airbnb.design/painting-with-code/"&gt;Painting with Code : Airbnb Design&lt;/a&gt;. Generate Sketchapp document using code with React.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.timescale.com/?ref=stackshare"&gt;Timescale&lt;/a&gt;. Time seiies database based on PostgreSQL.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ctrlpaint.com/"&gt;Ctrl+Paint - Digital Painting Simplified&lt;/a&gt;. Awesome site providing video courses to learn digital painting.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/KrisYu/Water"&gt;Simple calculation to render cheap water effects.&lt;/a&gt; An example to study shader.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ant.design/docs/react/introduce"&gt;Ant Design of React&lt;/a&gt;. A React component library.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-04-24</title><link>https://blog.iany.me/journal/2017/04/what-i-touched-this-week-2017-04-24/</link><pubDate>Mon, 24 Apr 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/04/what-i-touched-this-week-2017-04-24/</guid><description>&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=E8I19uA-wGY"&gt;Functional programming design patterns by Scott Wlaschin - YouTube&lt;/a&gt;. Introduction to basic concepts in FP.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@trojanh/working-of-yarn-and-npm-974b79f10341"&gt;Working Of Yarn and npm – Rajan Tiwari – Medium&lt;/a&gt;. Why yarn is better than npm.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.scottnonnenberg.com/hard-won-lessons-five-years-with-node-js/"&gt;Hard-won lessons: Five years with Node.js | Scott Nonnenberg&lt;/a&gt;. Tips and gotchas.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rankred.com/nasa-coding-rules/"&gt;NASA&amp;rsquo;s 10 Coding Rules for Writing Safety Critical Program - RankRed&lt;/a&gt;. Good references.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/google/python-fire"&gt;Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="performance-tuning"&gt;Performance Tuning&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Performance test frameworks: &lt;a href="http://gatling.io/"&gt;Gatling Load and Performance testing&lt;/a&gt; using Java, and &lt;a href="http://locust.io/"&gt;Locust&lt;/a&gt; using Python.&lt;/li&gt;
&lt;li&gt;Android performance tool: &lt;a href="https://developer.nvidia.com/tegra-graphics-debugger"&gt;Tegra Graphics Debugger from NVIDIA&lt;/a&gt; and &lt;a href="https://developer.qualcomm.com/software/snapdragon-profiler"&gt;Snapdragon Profiler from Qualcomm&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@paularmstrong/twitter-lite-and-high-performance-react-progressive-web-apps-at-scale-d28a00e780a3"&gt;Twitter Lite and High Performance React Progressive Web Apps at Scale&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;and how to improve &lt;a href="https://itsze.ro/blog/2017/04/09/infinite-list-and-react.html"&gt;Infinite List and React&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The performance metric &lt;a href="http://www.brendangregg.com/flamegraphs.html"&gt;Flame Graphs&lt;/a&gt; used in the post,&lt;/li&gt;
&lt;li&gt;and &lt;a href="https://github.com/crysislinux/chrome-react-perf"&gt;chrome addons for React performance test&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="game-development"&gt;Game Development&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=4mXL751ko0w"&gt;Quaternion Rotation - YouTube&lt;/a&gt;. Explanation of Quaternion.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://godotengine.org/"&gt;Godot Engine - Free and open source 2D and 3D game engine&lt;/a&gt;. Yet another game engine.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/nickelser/zhong"&gt;nickelser/zhong: Reliable, distributed cron in Ruby.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/electron-userland/electron-forge"&gt;electron-userland/electron-forge: A complete tool for creating, publishing, and installing modern Electron applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anbox/anbox"&gt;anbox/anbox&lt;/a&gt; runs Android using Linux container technologies.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therecipe.github.io/qt/"&gt;Qt binding for Golang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flow.org/"&gt;Flow: A Static Type Checker for JavaScript&lt;/a&gt;. Like &lt;code&gt;go fmt&lt;/code&gt; but for JavaScript.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.wordfence.com/blog/2017/04/chrome-firefox-unicode-phishing/"&gt;Chrome and Firefox Phishing Attack Uses Domains Identical to Known Safe Sites&lt;/a&gt;. Fake site using unicode domain.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/sketch-app-sources/mastering-group-resizing-feature-in-sketch-38266286155"&gt;Mastering Group Resizing Feature in Sketch – Design + Sketch&lt;/a&gt;. How to design responsible components using group resizing.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.appinn.com/sony-clock-for-android/"&gt;α Clock – 壁纸与时间联动，「索大好」带来世界文化遗产的一天 - 小众软件&lt;/a&gt;. 很漂亮的 Android 壁纸应用。&lt;/li&gt;
&lt;li&gt;CG 绘画入门：&lt;a href="https://www.zhihu.com/question/21312624"&gt;零基础如何学习数位板绘画？ - 知乎&lt;/a&gt;，&lt;a href="https://www.douban.com/note/380163098/"&gt;ARTLESSON Theory | 如何提高你的绘画和设计技巧&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s/uQjAbLVQn8LXvkijuJJsrg"&gt;设计界出了一件大事儿！&lt;/a&gt; ARKie 是一个智能设计助手，聚焦于中英文排版、秒级自动生成作品。10秒，帮你完成一个设计。&lt;/li&gt;
&lt;li&gt;Windows 软件推荐，&lt;a href="http://www.ffhome.com/works/1406.html"&gt;菲菲更名宝贝 之 得意非凡 v3.0 正式版&lt;/a&gt;，&lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5MjAyNDUyMA==&amp;amp;mid=2650498413&amp;amp;idx=1&amp;amp;sn=1b15a76bc3b5e43e96b19a975ac56c05&amp;amp;chksm=bea357ca89d4dedcf2f3a85b191c014b06fec0a99527a581a27836d5f8db734169c1e45fc7cb&amp;amp;scene=27#wechat_redirect"&gt;Windows 上有什么鲜为人知的好软件？| 自爆区 #023&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-04-16</title><link>https://blog.iany.me/journal/2017/04/what-i-touched-this-week-2017-04-16/</link><pubDate>Sun, 16 Apr 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/04/what-i-touched-this-week-2017-04-16/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@Blankwonder/%E5%90%84%E7%A7%8D%E5%8A%A0%E5%AF%86%E4%BB%A3%E7%90%86%E5%8D%8F%E8%AE%AE%E7%9A%84%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94-1ed52bf7a803"&gt;各种加密代理协议的简单对比 – Yachen Liu&lt;/a&gt; 比较了常用的 HTTPS，SOCKS5-TLS 和 shadowsocks 等加密协议。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ChrisRx/dungeonfs"&gt;ChrisRx/dungeonfs: A FUSE filesystem and dungeon crawling adventure game engine&lt;/a&gt;. Brilliant to map MUD game to filesystem.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.engineering/typescript-at-slack-a81307fa288d"&gt;TypeScript at Slack&lt;/a&gt;. How Slack migrate to TypeScript and the migration guidance.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blog.google/topics/machine-learning/fast-drawing-everyone/"&gt;Fast Drawing for Everyone&lt;/a&gt;. It can suggest nice clipart according to drawing.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://shields.io/"&gt;Shields.io: Quality metadata badges for open source projects&lt;/a&gt;. All in one place to find badges for the project.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rhaas.blogspot.jp/2017/04/new-features-coming-in-postgresql-10.html"&gt;Robert Haas: New Features Coming in PostgreSQL 10&lt;/a&gt;. Many features for distributed PostgreSQL.&lt;/li&gt;
&lt;li&gt;Use JetBrains Rider as Unity3D C# IDE.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/blog/2017/04/wedding-at-scale-how-i-used-twilio-python-and-google-to-automate-my-wedding.html"&gt;Wedding at Scale: How I Used Twilio, Python and Google to Automate My Wedding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/38542"&gt;树莓派入门指南&lt;/a&gt; 很详尽，很全面。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sspai.com/post/38802"&gt;他热衷拍摄人与建筑的微妙关系，为了不同视角冒险爬上城市高空&lt;/a&gt;。 热衷于「爬楼」拍摄的独立摄影师的访谈。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/a/15964489/667158"&gt;Read a specific length data from socket in Python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-python"&gt;Use a memoryview to wrap your bytearray:
buf = bytearray(toread)
view = memoryview(buf)
while toread:
nbytes = sock.recv_into(view, toread)
view = view[nbytes:] # slicing views is cheap
toread -= nbytes
&lt;/code&gt;&lt;/pre&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-04-09</title><link>https://blog.iany.me/journal/2017/04/what-i-touched-this-week-2017-04-09/</link><pubDate>Sun, 09 Apr 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/04/what-i-touched-this-week-2017-04-09/</guid><description>&lt;p&gt;Last week I made a tool to preview Live2D models in batch, and back port TTF outline patch to cocos2d-x quick community edition.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/3pjgames/live2dviewer"&gt;3pjgames/live2dviewer: Live2D 模型批量查看器&lt;/a&gt; 使用 Unity3D 实现的桌面工具。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/doitian/nfd-unity3d"&gt;doitian/nfd-unity3d.&lt;/a&gt; Native file dialog used in live2dviewer.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/u0u0/Quick-Cocos2dx-Community/pull/76"&gt;Fix ttf outline effect · PR #76 · u0u0/Quick-Cocos2dx-Community&lt;/a&gt; TTF outline patch back ported from official cocos2d-x master branch.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="publications"&gt;Publications&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.iany.me/zh/2017/04/mindmap-with-image-as-center-topic/"&gt;OmniGraffle 绘制图片作为中心的思维导图&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://t.co/FHNUOVHc7C"&gt;A Programmer’s Introduction to Unicode – Nathan Reed’s coding blog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/blog/2010/03/08/rerere.html"&gt;Rerere Your Boat…&lt;/a&gt;. Remember and replay git conflict merge strategy.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nginx.org/en/docs/http/ngx_http_limit_req_module.html"&gt;Module ngx_http_limit_req_module&lt;/a&gt;, API rate limiting.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.smashingmagazine.com/2017/04/automated-testing-system-android-phones/"&gt;How To Set Up An Automated Testing System Using Android Phones (A Case Study) via Smashing Magazine&lt;/a&gt;. Guide to buy devices and setup automated test.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/create-dmg"&gt;sindresorhus/create-dmg: Create a good-looking DMG for your macOS app in seconds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://workflow.sspai.com/#/main/workflow"&gt;Workflow Gallery by 少数派 - 聚合实用 Workflow 动作的中文分享站&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://t.co/pUDwfCpyKy"&gt;Beautiful photos from Unsplash in your new Chrome tabs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uk.gamesplanet.com/"&gt;Gamesplanet: Game keys for Steam, Origin, Uplay, GOG and more&lt;/a&gt;. Online game retailer, from which I can buy some games which is not available in Chinese area in Steam.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-03-25</title><link>https://blog.iany.me/journal/2017/03/what-i-touched-this-week-2017-03-25/</link><pubDate>Sat, 25 Mar 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/03/what-i-touched-this-week-2017-03-25/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stateofprogress.blog/choose-sql-d017cfc08870#.u3uyxkxhr"&gt;Choose SQL&lt;/a&gt;. Optionions about choosing between SQL and NoSQL.
&lt;ul&gt;
&lt;li&gt;Bonus: &lt;a href="https://dev.mysql.com/doc/refman/5.7/en/json.html"&gt;MySQL’s JSON data type&lt;/a&gt;, &lt;a href="https://www.postgresql.org/docs/9.6/static/datatype-json.html"&gt;Postgres’ JSON types&lt;/a&gt; and &lt;a href="https://www.sqlite.org/json1.html"&gt;SQLite’s JSON extension&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/papers-we-love/papers-we-love"&gt;Papers We Love - Papers from the computer science community to read and discuss.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-03-18</title><link>https://blog.iany.me/journal/2017/03/what-i-touched-this-week-2017-03-18/</link><pubDate>Sat, 18 Mar 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/03/what-i-touched-this-week-2017-03-18/</guid><description>&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/golang/go/wiki/SliceTricks"&gt;Golang Slice Tricks&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.smashingmagazine.com/2017/03/interactive-command-line-application-node-js/"&gt;How To Develop An Interactive Command Line Application Using Node.js&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://getcloudify.org/"&gt;Cloudify&lt;/a&gt; is an infrastructure bootstrap tool using Python.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/redux-saga/redux-saga"&gt;redux-saga&lt;/a&gt;, an alternative side effect model for Redux apps using generator.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://bcicen.github.io/ctop/"&gt;ctop&lt;/a&gt; is top for containers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.jianshu.com/p/21dba966264d"&gt;Windows: Vcpkg新增CMake构建库示例&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=1l81A3MyyZ4"&gt;Windows: Folder Can&amp;rsquo;t Delete - How to Remove FILES That Won&amp;rsquo;t Delete?&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; rmdir /q /s your file name
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Disable keychain access password prompt when use the Mac as CI server.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="kg-image-card"&gt;
&lt;img alt="macOS login keychain settings" class="kg-image" loading="lazy" src="https://blog.iany.me/journal/2017/03/what-i-touched-this-week-2017-03-18/macos-login-keychain-settings_hu_7817241ba5616f76.png" srcset="https://blog.iany.me/journal/2017/03/what-i-touched-this-week-2017-03-18/macos-login-keychain-settings_hu_1b88e019b2adfa60.png 400w, https://blog.iany.me/journal/2017/03/what-i-touched-this-week-2017-03-18/macos-login-keychain-settings_hu_7817241ba5616f76.png 458w" sizes="(max-width: 400px) 100vw, 458px" /&gt;
&lt;figcaption &gt;macOS login keychain settings&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;Personal text and file sharing between devices:
&lt;ul&gt;
&lt;li&gt;Use &lt;a href="https://telegram.org/"&gt;Telegram&lt;/a&gt; to send text and small files.&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://www.resilio.com/"&gt;Resilio Sync&lt;/a&gt; to share large files.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Write &lt;a href="https://github.com/doitian/aria2-daemon"&gt;some scripts&lt;/a&gt; to setup remote downloader on server using aria2c, Python and Resilio Sync.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discussions.apple.com/thread/1443463?start=0&amp;amp;tstart=0"&gt;macOS: Fix Long delays when moving/deleting files in finder&lt;/a&gt;: try trashing the file com.apple.Dock.plist from &lt;code&gt;~/Library/Preferences&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ifttt.com/maker_webhooks"&gt;Connect Maker Webhooks to hundreds of other services&lt;/a&gt;. This is a powerful IFTTT service, which can connect all other services supported by IFTTT to/from web hook.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mermaid-js.github.io/mermaid/"&gt;mermaid - Generation of diagrams and flowcharts from text in a similar manner as markdown.&lt;/a&gt;I found it via Chrome extension Surfingkeys.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-03-05</title><link>https://blog.iany.me/journal/2017/03/what-i-touched-this-week-2017-03-05/</link><pubDate>Sun, 05 Mar 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/03/what-i-touched-this-week-2017-03-05/</guid><description>&lt;ul&gt;
&lt;li&gt;Allow password input in &lt;code&gt;go get&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;env GIT_TERMINAL_PROMPT=1 go get xxxx
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/a/246128/667158"&gt;Getting the source directory of a Bash script from within&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blogs.msdn.microsoft.com/vcblog/2016/11/01/vcpkg-updates-static-linking-is-now-available/"&gt;Vcpkg updates: Static linking is now available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and how to &lt;a href="http://stackoverflow.com/a/14172871/667158"&gt;replace MD with MT&lt;/a&gt; when using static linking.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rancher.com/"&gt;Rancher&lt;/a&gt; is a self hosted platform to run containers.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pushpin.org/docs/about/"&gt;Pushpin&lt;/a&gt; is a reverse proxy to handle websocket connections.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Configure max number of open files in:&lt;/p&gt;
&lt;p&gt;supervisor&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[supervisord]
minfds = 1000000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;upstart&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;limit nofile 1000000 1000000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;/etc/security/limits.conf&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* hard nofile 1000000
* soft nofile 1000000
&lt;/code&gt;&lt;/pre&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-02-25</title><link>https://blog.iany.me/journal/2017/02/what-i-touched-this-week-2017-02-25/</link><pubDate>Sat, 25 Feb 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/02/what-i-touched-this-week-2017-02-25/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://airbnb.io/enzyme/?ref=stackshare"&gt;Enzyme&lt;/a&gt; React test.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kamranahmedse/design-patterns-for-humans"&gt;Design Patterns for Humans™ - An ultra-simplified explanation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/RandyGaul/tinyheaders"&gt;RandyGaul/tinyheaders: Collection of one-file C/C++ libraries with no dependencies, primarily used for games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://microsoft.github.io/monaco-editor/"&gt;Monaco Editor&lt;/a&gt;, code editor in Javascript with syntax highlight.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.favicon-generator.org/"&gt;Favicon &amp;amp; App Icon Generator&lt;/a&gt;. Generate HTML meta and convert upload image to various format icons for website.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://maruko.appinn.me/"&gt;小丸工具箱&lt;/a&gt;, Windows 上的视频工具&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-02-20</title><link>https://blog.iany.me/journal/2017/02/what-i-touched-this-week-2017-02-20/</link><pubDate>Mon, 20 Feb 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/02/what-i-touched-this-week-2017-02-20/</guid><description>&lt;p&gt;I had to work on Windows for a project, thus did some research to make it suck less.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://superuser.com/a/194065/86193"&gt;Visual Studio product name and internal version numbers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.windowscentral.com/best-windows-10-keyboard-shortcuts"&gt;The ultimate guide to Windows 10 keyboard shortcuts | Windows Central&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/a/2860971/667158"&gt;Delete &lt;code&gt;lang&lt;/code&gt; directory&lt;/a&gt; to force vim to use English.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.howtogeek.com/howto/3218/how-to-drag-files-to-the-taskbar-to-open-them-in-windows-7/"&gt;How to Drag Files to the Taskbar to Open Them in Windows 7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/microsoft/vcpkg/tree/master/docs"&gt;VC++ package manager&lt;/a&gt; which can be used with cmake.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;开始分享一些 Lua 的心得，这是第一篇 &lt;a href="https://blog.iany.me/zh/2017/02/lua-c-api-intro/"&gt;Lua C API 简介&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="game-programming"&gt;Game Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://thoughtstreams.io/glyph/your-game-doesnt-need-udp-yet/"&gt;Your Game Doesn&amp;rsquo;t Need UDP (Yet) | glyph | ThoughtStreams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gameinstitute.qq.com/community/detail/111993"&gt;Unity下XLua方案的各值类型GC优化深度剖析_Gad-腾讯游戏开发者平台&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Diff images by &lt;a href="http://stackoverflow.com/a/33673440/667158"&gt;highlight differences using different colors&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://omni-automation.com"&gt;Universal JS automation in OmniGroup apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/muesli/beehive"&gt;Opensource event automation&lt;/a&gt;, like IFTTT.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jvns.ca/blog/2017/02/17/mystery-swap/"&gt;Swapping, memory limits, and cgroups - Julia Evans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://nshipster.com/inter-process-communication/"&gt;Inter-Process Communication&lt;/a&gt; in macOS and iOS.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/a/17996915/667158"&gt;A trick&lt;/a&gt; to quote multiple line string. Pay attention that newline is not included.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-02-12</title><link>https://blog.iany.me/journal/2017/02/what-i-touched-this-week-2017-02-12/</link><pubDate>Sun, 12 Feb 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/02/what-i-touched-this-week-2017-02-12/</guid><description>&lt;p&gt;This week I have worked on Lua API of Sentry using its Objective-C and Android client.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;extern &amp;quot;C&amp;quot;&lt;/code&gt; around Lua C function in header compiled as Objective-C.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20150930184544/http://dualface.github.io/blog/2013/01/01/call-java-from-lua/"&gt;LuaJavaBridge - Lua 与 Java 互操作的简单解决方案&lt;/a&gt; 是很详细的在 Cocos2d-x Lua 中调用 Java 方法的文章。不过有个地方已经过时了，就是 Java 的方法可以接收和返回 &lt;code&gt;HashMap&lt;/code&gt;, 和 &lt;code&gt;Vector&lt;/code&gt; (用 &lt;code&gt;ArrayList&lt;/code&gt; 也可以）两种复杂变量的。有一些限制，调用的时候 Lua 不能传 &lt;code&gt;nil&lt;/code&gt;，&lt;code&gt;HashMap&lt;/code&gt; 对应的 Lua table 的 key 和 value 都会转成 String，在 Java 中可以强转成 &lt;code&gt;HashMap&amp;lt;String, String&amp;gt;&lt;/code&gt;。&lt;code&gt;Vector&lt;/code&gt; 对应的 Lua table 会当成是 list，所有成员也会转成 String，在 Java 中可以强转成 &lt;code&gt;Vector&amp;lt;String&amp;gt;&lt;/code&gt;。对应的类型签名如下
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ljava/util/HashMap;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ljava/util/Vector;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ljava/util/ArrayList;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/joshdholtz/Sentry-Android"&gt;Sentry-Android&lt;/a&gt; is an open source library to report errors in Android apps to Sentry. It is better than official Java library in my opinion.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Install gems using system Ruby when installed rbenv/rvm.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; sudo /usr/bin/gem install --bindir /usr/local/bin --no-env-shebang cocoapods
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--bindir&lt;/code&gt;: the default &lt;code&gt;/usr/bin&lt;/code&gt; is not allowed to be modified.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--no-env-shebang&lt;/code&gt;: just use system Ruby explicitly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/webmachine/webmachine"&gt;webmachine: A REST-based system for building web applications&lt;/a&gt;, A RESTful framework for Erlang.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.iris-go.com/iris/"&gt;Iris&lt;/a&gt;, A go web framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In Lua, following two statements are identicated:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; require &amp;quot;xx.&amp;quot; .. foo
(require &amp;quot;xx.&amp;quot;) .. foo
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;写了篇&lt;a href="https://blog.iany.me/zh/games/2017/02/shenzhen-io/"&gt;游戏分享：Shenzhen IO&lt;/a&gt;。花了一个多月备案，现在放在腾讯云上，改成了用 Hugo，加上了英文，中文多语言支持。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-01-15</title><link>https://blog.iany.me/journal/2017/01/what-i-touched-this-week-2017-01-15/</link><pubDate>Sun, 15 Jan 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/01/what-i-touched-this-week-2017-01-15/</guid><description>&lt;p&gt;This week I continue on cocos2d-x project automation build and dependencies management.&lt;/p&gt;
&lt;p&gt;By default, tolua registers global variables. A trick to use fallback Lua implementation by default is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# config.lua
if _G.config then
return _G.config
end
return { lua = true }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There is a gotcha to register tolua bindings in AppDelegate.cpp in Quick Community Edition, lua stack top is &lt;code&gt;package.preload&lt;/code&gt; after &lt;code&gt;quick_module_register&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If prebuilt library is added as a reference to Xcode project and it is not in SRCROOT of any project, its parent directory must be added to library search header in build settings.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;preBuild.dependsOn(copyAssets)&lt;/code&gt; to do something before build in Android gradle project. It must be added to the gradle file which has added android plugin. For example, &lt;code&gt;preBuild&lt;/code&gt; is not available in the top &lt;code&gt;build.gradle&lt;/code&gt; in Quick Community&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/a/6142700/667158"&gt;Why copy the key when traverse table in Lua c API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="game"&gt;Game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gameinstitute.qq.com/community/detail/111993"&gt;腾讯开源手游热更新方案：Unity3D下的XLua技术内幕（一）_Gad-腾讯游戏开发者平台&lt;/a&gt; GAD 上 XLua 的系列文章&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://msdn.itellyou.cn/"&gt;MSDN, 我告诉你&lt;/a&gt; 要下载微软老版本的开发工具可以来这找&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use https proxy in Emacs&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; export http_proxy=xxx https_proxy=xxx
emacs -nw --insecure
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-01-08</title><link>https://blog.iany.me/journal/2017/01/what-i-touched-this-week-2017-01-08/</link><pubDate>Sun, 08 Jan 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/01/what-i-touched-this-week-2017-01-08/</guid><description>&lt;p&gt;This week I was setting up cocos2d-x project automation build and dependencies management using &lt;a href="https://docs.saltstack.com/en/latest/topics/tutorials/quickstart.html"&gt;masterless saltstack&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A minimum minion config, saved it as &lt;code&gt;config/minion&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;id: local
file_client: local
minion_id_caching: False
root_dir: ./.salt
file_roots:
base:
- ./states
pillar_roots:
base:
- ./pillar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To include dynamic states and pillar roots, just generate the minion config file every time before invoking &lt;code&gt;salt-call&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="game"&gt;Game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Tencent/xLua"&gt;Tencent/xLua: xLua is a hot-fix solution plugin for Unity3D, it supports android, ios, windows, osx, etc.&lt;/a&gt; 腾讯开源的 Unity3d Lua 解决方案&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2017-01-02</title><link>https://blog.iany.me/journal/2017/01/what-i-touched-this-week-2017-01-02/</link><pubDate>Mon, 02 Jan 2017 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2017/01/what-i-touched-this-week-2017-01-02/</guid><description>&lt;p&gt;Busy in work chores this week.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Process can listen to ports under 1024 without running as root using &lt;code&gt;sudo setcap cap_net_bind_service=+ep ./caddy&lt;/code&gt;. Learned from &lt;a href="https://github.com/mholt/caddy"&gt;mholt/caddy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://christoph.ruegg.name/blog/git-howto-mirror-a-github-repository-without-pull-refs.html"&gt;Git Howto: Mirror a GitHub repo without pull refs | Christoph Rüegg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-12-25</title><link>https://blog.iany.me/journal/2016/12/what-i-touched-this-week-2016-12-25/</link><pubDate>Sun, 25 Dec 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/12/what-i-touched-this-week-2016-12-25/</guid><description>&lt;p&gt;This week I mainly worked on setting up monitoring system using prometheus and grafana.&lt;/p&gt;
&lt;h2 id="monitoring-and-logging"&gt;Monitoring and Logging&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Example of &lt;a href="https://github.com/graylog-labs/graylog-plugin-slack/blob/master/src/main/java/org/graylog2/plugins/slack/output/SlackMessageOutput.java"&gt;how to write a graylog output plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add graylog2 stored data in grafana:
&lt;ul&gt;
&lt;li&gt;Type: elasticsearch&lt;/li&gt;
&lt;li&gt;Connect to the configured elasticsearch instances used in graylog2&lt;/li&gt;
&lt;li&gt;Leave 『Index name』empty&lt;/li&gt;
&lt;li&gt;Time field name: timestamp&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Prometheus client libraries keep all metrics, do not use keep increasing value as a tag, such as user id.&lt;/li&gt;
&lt;li&gt;Rsyslog writes logs to file using user and group syslog&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Recreate Postgres database on macOS installed via Homebew&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; rm -rf /usr/local/var/postgres &amp;amp;&amp;amp; initdb /usr/local/var/postgres -E utf8
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Homebrew 镜像，和其它一些软件源镜像 &lt;a href="https://lug.ustc.edu.cn/wiki/mirrors/help"&gt;开源镜像使用帮助列表 [LUG@USTC]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maven 镜像仓库&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-xml"&gt;&amp;lt;mirror&amp;gt;
&amp;lt;id&amp;gt;nexus-aliyun&amp;lt;/id&amp;gt;
&amp;lt;mirrorOf&amp;gt;*&amp;lt;/mirrorOf&amp;gt;
&amp;lt;name&amp;gt;Nexus aliyun&amp;lt;/name&amp;gt;
&amp;lt;url&amp;gt;https://maven.aliyun.com/repository/public&amp;lt;/url&amp;gt;
&amp;lt;/mirror&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;An example that caches maven dependencies in Gitlab CI:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;cache:
paths:
- .m2/
variables:
MAVEN_OPTS: &amp;quot;-Dmaven.repo.local=.m2&amp;quot;
maven_job:
script:
- mvn clean install
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Automate game testing using image recognition&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://bitbar.com/how-to-use-image-recognition-for-mobile-app-and-game-testing/"&gt;Image Recognition for Android and iOS Game Testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bitbar.com/mobile-game-testing-part-2-ui-and-functionality-image-recognition/"&gt;Image Recognition in Mobile Game Testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://item.jd.com/11985901.html"&gt;《腾讯Android自动化测试实战》&lt;/a&gt; 也有在测试中使用 OpenCV 做图像识别的例子。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://sspai.com/36392"&gt;如何做一款有趣有毒的游戏：独立团队 Laser Dog 新游戏的幕后故事 - 少数派&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-12-17</title><link>https://blog.iany.me/journal/2016/12/what-i-touched-this-week-2016-12-17/</link><pubDate>Sat, 17 Dec 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/12/what-i-touched-this-week-2016-12-17/</guid><description>&lt;p&gt;This week I was setting up monitoring system using Prometheus.&lt;/p&gt;
&lt;p&gt;Some gotchas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Both prometheus and alertmanager accept command line flag &lt;code&gt;-web.external-url&lt;/code&gt; to configure URL used to access the site and API. But if the external URL set in alertmanager contains path portion, alert manager will prepend the path to all web endpoints, which means prometheus should also add the path even access alertmanager through &lt;code&gt;localhost:9093&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="monitoring"&gt;Monitoring&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/document/d/199PqyG3UsyXlwieHaqbGiWVa8eMWi8zzAn0YfcApr8Q/edit"&gt;My Philosophy on Alerting&lt;/a&gt; via Google Engineer.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="game-programming"&gt;Game Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/miloyip/game-programmer"&gt;A Study Path for Game Programmer&lt;/a&gt;. Books recommendations for game programmer.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.csdn.net/bigcat133/article/details/46374357"&gt;cjson中的稀疏数组encode - bigcat133的专栏&lt;/a&gt;。用 cjson 输出日志的话，建议打开 &lt;code&gt;encode_sparse_array&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.codingnow.com/2016/12/unity3d_remote_pvrtextool.html"&gt;云风的 BLOG: 用分布式压缩贴图加快 Unity3D 的打包过程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.sindresorhus.com/macos-tips-tricks-13046cf377f8#.q1sqp8ig7"&gt;Fabulous macOS Tips &amp;amp; Tricks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discourse.omnigroup.com/t/implementation-details-for-omnifocus-2-14-automation/24179"&gt;Implementation Details for OmniFocus 2.14 Automation - OmniFocus / OmniFocus for iOS&lt;/a&gt;. Both iOS and macOS version can import TaskPaper format now. In macOS, just paste into OmniFocus.&lt;/li&gt;
&lt;li&gt;Subscribed &lt;a href="https://www.safaribooksonline.com"&gt;Safari Books Online&lt;/a&gt; and started reading 『&lt;em&gt;Mathematics for 3D Game Programming and Computer Graphics, Third Edition&lt;/em&gt;』on it.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.iconfont.cn/plus"&gt;Iconfont-阿里巴巴矢量图标库&lt;/a&gt;。很丰富，质量也不错的矢量图标库。&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-12-11</title><link>https://blog.iany.me/journal/2016/12/what-i-touched-this-week-2016-12-11/</link><pubDate>Sun, 11 Dec 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/12/what-i-touched-this-week-2016-12-11/</guid><description>&lt;p&gt;This week I worked on setting up gralog2 for logging search and analysis.&lt;/p&gt;
&lt;h2 id="graylog"&gt;Graylog&lt;/h2&gt;
&lt;h2 id="gotchas"&gt;Gotchas&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Extractors cannot copy numeric fields.&lt;/li&gt;
&lt;li&gt;Timestamp cannot be overrided using numeric field which is Unix Epoch. Use GELF or a string field.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="uri-configuration"&gt;URI configuration&lt;/h2&gt;
&lt;p&gt;It is confused to configure Graylog various URIs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rest_listen_uri&lt;/code&gt; specifies interface, port and path that Graylog will bind and listen incoming API requests.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rest_transport_uri&lt;/code&gt; is URI used by other nodes in a cluster. The default is &lt;code&gt;reset_listen_uri&lt;/code&gt;, but if &lt;code&gt;rest_listen_uri&lt;/code&gt; contains wild interface &lt;code&gt;0.0.0.0&lt;/code&gt;, it is replaced with the first non-loopback IPv4 address.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;web_listen_uri&lt;/code&gt; specifies interface, port and path that Graylog will bind and listen incoming WEB interface requests.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;web_endpoint_uri&lt;/code&gt; specifies how JavaScript accesses Graylog API, it can be overrided in HTTP header &lt;code&gt;X-Graylog-Server-URL&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use case: the server intranet IP is 10.0.0.2, public IP is 1.2.3.4&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Listen on all interfaces so it can be accessed locally by NGINX, and other nodes in cluster
rest_listen_uri = http://0.0.0.0:9000/api/
# This is for other nodes in the intranet.
rest_transport_uri = http://10.0.0.2:9000/api/
# Also listen on all interfaces
web_listen_uri = http://0.0.0.0:9000/
# Set to NGINX or Load Balance address on all nodes
web_endpoint_uri = http://1.2.3.4:80/api/
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="shell"&gt;Shell&lt;/h2&gt;
&lt;p&gt;I had added helper scripts to use &lt;a href="https://github.com/junegunn/fzf"&gt;fzf&lt;/a&gt; this week:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/doitian/dotfiles/blob/master/bin/fasd_fzf"&gt;fasd_fzf&lt;/a&gt; Use fzf to select recently frequently used files or directories saved by &lt;a href="https://github.com/clvv/fasd"&gt;fasd&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/doitian/dotfiles/blob/master/bin/tmux-fzf-session"&gt;tmux-fzf-session&lt;/a&gt; Select a tmux session.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/doitian/dotfiles/blob/master/bin/tmux-fzf-pane"&gt;tmux-fzf-pane&lt;/a&gt; Select a tmux pane.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And their &lt;a href="https://github.com/doitian/dotfiles/blob/master/zsh/completion.zsh"&gt;zsh completions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Also refactored a script to send text to tmux pane:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/doitian/dotfiles/blob/master/bin/tt"&gt;tt&lt;/a&gt; tmux &lt;code&gt;send-keys&lt;/code&gt; wrapper&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And tips I learned when implementing the scripts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Indirect access variables in shell, zsh &lt;code&gt;${(P)a}&lt;/code&gt;, bash &lt;code&gt;${!a}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Test if has prefix &lt;code&gt;[[ test = t* ]]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Delete from array, zsh &lt;code&gt;a[1]=()&lt;/code&gt;, bash &lt;code&gt;unset a[1]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check a value is in array in zsh:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;${v[(i)value]}&lt;/code&gt; returns index of value in array&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;${v[(r)value]}&lt;/code&gt; returns value if it is in array, returns empty otherwise&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;[ &amp;quot;${array[(i)value]}&amp;quot; -le &amp;quot;${#array[@]}&amp;quot; ]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://github.com/zsh-users/zsh-completions"&gt;zsh-users/zsh-completions: Additional completion definitions for Zsh&lt;/a&gt; is a good getting started manual for zsh completion. Helper &lt;code&gt;_arguments&lt;/code&gt; is enough for most simple command completion.&lt;/p&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://apple.stackexchange.com/questions/35524/what-can-i-do-when-my-ssh-session-is-stuck"&gt;What can I do when my SSH session is stuck? - Ask Different&lt;/a&gt;. I closed the terminal window before, that means I had to reopen the window to resume the work via SSH. Now I know I can close stuck session using &lt;kbd&gt;~.&lt;/kbd&gt;. If I want to run some local commands I can suspend SSH using &lt;kbd&gt;^Z&lt;/kbd&gt;.&lt;/li&gt;
&lt;li&gt;The first argument &lt;code&gt;indent&lt;/code&gt; in syslog C API &lt;code&gt;openlog&lt;/code&gt; must be valid in every &lt;code&gt;syslog&lt;/code&gt; calls because only the pointer is saved locally to prepend program name to every log. So it cannot be a stack char array in initialization function.&lt;/li&gt;
&lt;li&gt;Service in skynet may call &lt;code&gt;release&lt;/code&gt; before &lt;code&gt;init&lt;/code&gt; returns in C service. I leads to segment fault if &lt;code&gt;init&lt;/code&gt; accesses memory which is freed in &lt;code&gt;release&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kotojs/kotojs"&gt;Koto&lt;/a&gt;, a d3js framework for reusable charts.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/edvin/tornadofx"&gt;edvin/tornadofx: Lightweight JavaFX Framework for Kotlin&lt;/a&gt;. We use JavaFX to develop internal GUI tools.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.alfredapp.com/help/workflows/inputs/script-filter/json/"&gt;Script Filter JSON Format - Workflow Input Objects - Alfred Help and Support&lt;/a&gt;. It is easier to develop a script filter in Alfred using JSON format now.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://peteris.rocks/blog/htop/"&gt;htop explained | peteris.rocks&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.packagecloud.io/eng/2015/03/30/apt-cheat-sheet/"&gt;APT Cheat Sheet - Packagecloud Blog&lt;/a&gt;. I have used Ubuntu for years, but I still don’t know when to use &lt;code&gt;apt-get&lt;/code&gt;, when to use &lt;code&gt;apt-cache&lt;/code&gt; and when to use &lt;code&gt;dpkg&lt;/code&gt;. It is better to save it in Evernote for office reference.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@thejameskyle/dear-javascript-7e14ffcae36c#.rb5663a0s"&gt;Dear JavaScript, – Medium&lt;/a&gt;. About open source community.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-12-04</title><link>https://blog.iany.me/journal/2016/12/what-i-touched-this-week-2016-12-04/</link><pubDate>Sun, 04 Dec 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/12/what-i-touched-this-week-2016-12-04/</guid><description>&lt;p&gt;This week I setup servers using &lt;a href="https://saltstack.com"&gt;SaltStack&lt;/a&gt; and continue automate building and deployment using Gitlab CI.&lt;/p&gt;
&lt;h2 id="saltstack"&gt;Saltstack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Pillar cannot access data in another pillar file.
&lt;ul&gt;
&lt;li&gt;Reference pillar name instead, just like &lt;code&gt;contents_pillar&lt;/code&gt; in &lt;code&gt;file.managed&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mount.mounted&lt;/code&gt; does not format the disk, use &lt;code&gt;blockdev.formatted&lt;/code&gt; first.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;salt-call —id custom_id&lt;/code&gt; can overrides minion ID in command line, handful for test.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="hour-to-test-saltstack-states"&gt;Hour to test Saltstack states&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Create a docker image, install &lt;code&gt;salt-minion&lt;/code&gt; and &lt;a href="https://github.com/sstephenson/bats"&gt;bats&lt;/a&gt; on it.&lt;/li&gt;
&lt;li&gt;Configure minion to use local file client&lt;/li&gt;
&lt;li&gt;Allow overriding pillar using an YAML file in test.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;salt-call&lt;/code&gt; to apply states.&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://github.com/sstephenson/bats"&gt;bats&lt;/a&gt; to verify.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A sample minion config:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;file_client: local
file_roots:
base:
- /srv/states
- /srv/test/states
- /srv/formulas/users-formula
pillar_roots:
base:
- /srv/test/pillar
- /srv/pillar
ext_pillar:
- cmd_yaml: cat /srv/test/pillar.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mount the project to &lt;code&gt;/srv&lt;/code&gt; and run bats in docker.&lt;/p&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In &lt;code&gt;.gitlab-ci.yml&lt;/code&gt;, &lt;code&gt;environment:url&lt;/code&gt; cannot contain invalid characters like &lt;code&gt;{&lt;/code&gt; and &lt;code&gt;}&lt;/code&gt;. Use &lt;code&gt;$CI_BUILD_REF_NAME&lt;/code&gt; instead of &lt;code&gt;${CI_BUILD_REF_NAME}&lt;/code&gt; in URL .&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gitlab CI Runner on Mac sometimes stucks at fetching repository from gitlab because it asks to access login keychain and requires interactive password input.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Python3 version of curl&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; python3 -c 'import urllib.request; print(urllib.request.urlopen(&amp;quot;http://example.com&amp;quot;).read().decode(&amp;quot;utf-8&amp;quot;))'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and POST&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; python3 -c 'import urllib.request; urllib.request.urlopen(&amp;quot;https://gitlab.com/api/v3/projects/ID/trigger/builds&amp;quot;, &amp;quot;token=TOKEN&amp;amp;ref=REF&amp;quot;.encode(&amp;quot;utf-8&amp;quot;));'
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://divan.github.io/posts/avoid_gotchas/"&gt;How to avoid Go gotchas · divan’s blog&lt;/a&gt;. Delve into details to avoid gotchas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://segmentfault.com/a/1190000007558691"&gt;Python: 会打扮的装饰器 · FunHacks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use root to read file but authenticate using another user &lt;code&gt;/usr/local/bin/rsync -e &amp;quot;sudo -H -u user ssh&amp;quot; -av file server:&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-11-27</title><link>https://blog.iany.me/journal/2016/11/what-i-touched-this-week-2016-11-27/</link><pubDate>Sun, 27 Nov 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/11/what-i-touched-this-week-2016-11-27/</guid><description>&lt;p&gt;This week I worked on syslog integration in &lt;a href="https://github.com/cloudwu/skynet"&gt;skynet&lt;/a&gt; and delve into details of skynet. I also started using Gitlab CI.&lt;/p&gt;
&lt;h2 id="skynet"&gt;skynet&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.codingnow.com/2016/05/skynet_proxy.html"&gt;云风的 BLOG: 代理服务和过载保护&lt;/a&gt;。使用 debug 命令 PING 可以检查服务是否还在，目前平均响应时间怎么样。命令 LINK 可以用来监控服务是否退出。&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;弄了一套脚本来编译，安装 skynet，生成和管理 skynet 项目。大概用起来&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-sh"&gt;# 创建项目 helloworld
sx new helloworld
# 启动 skynet 应用
cd helloworld
sx skynet boot/helloworld.lua
# 创建新的 skynet 应用
sx new-app server
sx skynet boot/server.lua
# 执行 Lua
sx lua
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="gitlab-ci"&gt;Gitlab CI&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Gitlab documentation does not mention how to setup docker registry key. Indeed, it requires a pair of RSA keys, use private key in Gitlab and public key in docker registry.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In &lt;code&gt;.gitlab-ci.yml&lt;/code&gt;, variables defined in job level is also effective in top fields, such as &lt;code&gt;before_script&lt;/code&gt; and &lt;code&gt;services&lt;/code&gt;. Here is an example to test Rails using MySQL and Postgres&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-yaml"&gt;image: rails
services:
- redis
- $DB
cache:
key: bundle
paths:
- vendor/bundle
variables:
POSTGRES_DB: center_test
POSTGRES_USER: runner
POSTGRES_PASSWORD: &amp;quot;&amp;quot;
MYSQL_DATABASE: center_test
MYSQL_ROOT_PASSWORD: root
before_script:
- cp config/database.ci-$DB.yml config/database.yml
- cp .ci.env .env
- bundle install --jobs $(nproc) --path=vendor/bundle
.test: &amp;amp;test_template
script:
- bundle exec rake db:create RAILS_ENV=test
- RAILS_ENV=test bundle exec rake db:reset
- bundle exec rake test
test_pg:
&amp;lt;&amp;lt;: *test_template
variables:
DB: postgres
test_mysql:
&amp;lt;&amp;lt;: *test_template
variables:
DB: mysql
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.gitlab.com/ce/ci/docker/using_docker_build.html"&gt;Using Docker Build - GitLab Documentation&lt;/a&gt;. I use dind to build docker images in Gitlab CI. It requires starting docker in privilege mode, which breaks some containers such as mysql. A simple solution is registering 2 docker runners, one is in privilege and another is not. Tag runners and add tags in &lt;code&gt;.gitlab-ci.yml&lt;/code&gt; to filter runner.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In Mac, &lt;code&gt;gitlab-ci-multi-runner&lt;/code&gt; must be started in user desktop environment. The runner may stuck at checkout code because the GUI is asking for keychain access. Just approve the access in desktop environment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="devops"&gt;DevOps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/3pjgames/terraform-provider-dnspod"&gt;GitHub - 3pjgames/terraform-provider-dnspod: Terraform Provider Plugin which manages DNS records in dnspod.cn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://serverfault.com/questions/615641/how-can-i-selectively-override-some-a-records-on-a-bind-dns-server/615684"&gt;ubuntu - How can I selectively override some A records on a Bind DNS Server? - Server Fault&lt;/a&gt;. I need to override some A record to speed up internal SVN and Git access in Office. I used to setup zone file for the whole domain. However if I need to update DNS records, I have to update office zone config files and update in DNS provider. This solution saves my time, thanks a lot.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dockone.io/article/667"&gt;服务发现：Zookeeper vs etcd vs Consul - DockOne.io&lt;/a&gt;. Etcd does only one thing, Consule is more feature rich.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20170121012541/http://www.afewmorelines.com/backing-up-your-minions-databases-to-the-salt-master/"&gt;Backing up your minions’ databases to the Salt master&lt;/a&gt;. Let minion push files to master.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@doitian/bear-%E6%8E%A5%E8%BF%91%E6%88%91%E5%BF%83%E7%9B%AE%E4%B8%AD%E5%AE%8C%E7%BE%8E%E7%9A%84%E7%AC%94%E8%AE%B0%E5%BA%94%E7%94%A8-27c511af778c#.tdynedo3q"&gt;最近转到 Bear 作为主力笔记应用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tj/git-extras"&gt;GitHub - tj/git-extras: GIT utilities — repo summary, repl, changelog population, author commit percentages and more&lt;/a&gt;. Bundle of useful git commands.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tpope/vim-eunuch"&gt;GitHub - tpope/vim-eunuch: eunuch.vim: helpers for UNIX&lt;/a&gt;. I love &lt;code&gt;Rename&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.bugsnag.com/benefits-of-using-tmux/"&gt;Bugsnag Blog - Benefits of using tmux - lessons from streamlining a development environment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://applehelpwriter.com/2014/07/13/how-to-remove-googles-secret-update-software-from-your-mac/"&gt;how to remove Google’s secret update software from your mac |&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20170505012341/https://m.signalvnoise.com/a-shining-example-of-how-to-teach-91b718009b33"&gt;A shining example of how to teach – Signal v. Noise&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-11-13</title><link>https://blog.iany.me/journal/2016/11/what-i-touched-this-week-2016-11-13/</link><pubDate>Sun, 13 Nov 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/11/what-i-touched-this-week-2016-11-13/</guid><description>&lt;p&gt;This week I continue work on log system. I wrote a tool to sync Gitlab Issues with a Excel file.&lt;/p&gt;
&lt;h2 id="logging-system"&gt;Logging System&lt;/h2&gt;
&lt;p&gt;How to use syslog in &lt;a href="https://github.com/cloudwu/skynet"&gt;skynet&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jintiao/some-mmorpg/commit/cf7ed705fc78caacf529e3ecd825ac82af0a3d7e"&gt;use syslog instead of logger · jintiao/some-mmorpg@cf7ed70 · GitHub&lt;/a&gt;. This is a merge request that using syslog in a real skynet project.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/lsyslog/lsyslog/blob/master/lsyslog.c"&gt;lsyslog&lt;/a&gt; is a Lua library using syslog C API.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sync-gui-tool"&gt;Sync GUI Tool&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.makery.ch/library/javafx-8-tutorial/part1/"&gt;JavaFX 8 Tutorial - Part 1: Scene Builder | code.makery.ch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Java POI
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@doitian/insert-and-read-hyper-link-in-excel-using-java-poi-9713d05642a#.pvzlotp7x"&gt;Insert and read hyper link in Excel using Java POI – Ian Yang – Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;POI provides API to list all images using &lt;code&gt;Workbook.getAllPictures()&lt;/code&gt;, but it has no image position information nor any caption, name information.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.gitlab.com/ce/api/projects.html#upload-a-file"&gt;Gitlab Upload API&lt;/a&gt; requires multipart to upload file
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/a/2469587/667158"&gt;Upload files from Java client to a HTTP server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="misc"&gt;Misc&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://im.logcg.com"&gt;落格输入法 - 专业双拼&lt;/a&gt; 强烈推荐的一个 iOS 上的双拼输入法。贴近原生不需要完全访问权限，而且支持小鹤形码。不过因为 macOS 上没有让人满意的小鹤双形的方案，还是用回了五笔。 &lt;a href="https://qingg.im"&gt;清歌&lt;/a&gt; 五笔输入法在 macOS 和 iOS 上都很好用。&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ruby-china.org/topics/31498"&gt;利用 Nginx 的 ngx_http_image_filter_module 做实时的图片缩略图 · Ruby China&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.archive.org/web/20161105023449/https://blog.tylerchr.com/golang-18-whats-coming/"&gt;What’s Coming in Go 1.8 | tylerchr&lt;/a&gt;. Library &lt;a href="https://tip.golang.org/pkg/plugin/"&gt;plugin&lt;/a&gt; is useful to develop plugin based solution.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-11-06</title><link>https://blog.iany.me/journal/2016/11/what-i-touched-this-week-2016-11-06/</link><pubDate>Sun, 06 Nov 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/11/what-i-touched-this-week-2016-11-06/</guid><description>&lt;p&gt;This week I worked on rsyslog research and management. The work on terraform-provider-ucloud is postponed.&lt;/p&gt;
&lt;h2 id="rsyslog"&gt;rsyslog&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use template in output action&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$template PJL_Format,&amp;quot;%timegenerated%|%HOSTNAME%|%syslogtag%|%msg%\n&amp;quot;
$template PJL_File,&amp;quot;/tmp/local-%programname%.log&amp;quot;
local6,local7.* ?PJL_File;PJL_Format
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use tag to filter log. Facilities are fixed and cannot add new custom facility, but app can specify arbitrary tag. The tag format is &lt;code&gt;programname[PROCID]&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Syslog::Logger&lt;/code&gt; in Ruby reserves higher priorities (crit, alert and emerge) for system message. The mapping to Logger severity is one level lower:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ruby -&amp;gt; syslog&lt;/li&gt;
&lt;li&gt;debug -&amp;gt; debug&lt;/li&gt;
&lt;li&gt;info -&amp;gt; info&lt;/li&gt;
&lt;li&gt;warn -&amp;gt; notice&lt;/li&gt;
&lt;li&gt;error -&amp;gt; warning&lt;/li&gt;
&lt;li&gt;fatal -&amp;gt; err&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ruby 2.0 cannot specify facility when creating &lt;code&gt;Syslog::Logger&lt;/code&gt;, 2.2 has the third parameter to specify the facility.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s1-basic_configuration_of_rsyslog"&gt;20.2. Basic Configuration of Rsyslog&lt;/a&gt; via Redhat&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="game"&gt;Game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zhuanlan.zhihu.com/p/23314649"&gt;The Illusion of Choice - 一点儿也不宅 - 知乎专栏&lt;/a&gt; 游戏中的选择&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sspai.com/35894"&gt;地牢战争，魔性节奏的像素塔防佳作 | Matrix 精选 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="management"&gt;Management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://m.signalvnoise.com/why-you-should-argue-with-your-employees-ab8189fcd1c4#.khcwz2hp0"&gt;Why you should argue with your employees&lt;/a&gt; 适当的争吵&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5NjAyMDE5Mg==&amp;amp;mid=2649813638&amp;amp;idx=1&amp;amp;sn=3badc5dbbb3fa6c31a493d5c2948eaa1&amp;amp;chksm=beebf809899c711f00a2b54cd67e7a161d8b6f11079fc650cad9400bc6f7c7342c97d870af77&amp;amp;scene=0#rd"&gt;出口就容易伤人？试试“三明治法则”吧！&lt;/a&gt; 表扬，批评，期望&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ryandlane.com/blog/2014/08/04/moving-away-from-puppet-saltstack-or-ansible/"&gt;Moving away from puppet: SaltStack or Ansible? | Ryan D Lane&lt;/a&gt; Comparison between SaltStack and Ansible. The author prefers SaltStack.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puma/puma/issues/718"&gt;Need to specify &lt;code&gt;--with-opt-dir&lt;/code&gt; on OSX 10.11 El Capitan. · Issue #718 · puma/puma&lt;/a&gt; Bundle can configure build options for specific gem: &lt;code&gt;bundle config build.puma --with-opt-dir=/usr/local/opt/openssl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tencent/libco"&gt;tencent/libco&lt;/a&gt;. Coroutine for C, from WeChat team.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-10-30</title><link>https://blog.iany.me/journal/2016/10/what-i-touched-this-week-2016-10-30/</link><pubDate>Sun, 30 Oct 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/10/what-i-touched-this-week-2016-10-30/</guid><description>&lt;p&gt;This week I work on &lt;a href="https://github.com/3pjgames/terraform-provider-ucloud"&gt;terraform-provider-ucloud&lt;/a&gt;, which already has implemented resource UHost and SecurityGroup, data source host image. I plan to share my experience to write a terraform provider plugin in future posts.&lt;/p&gt;
&lt;h2 id="terraform-provider-ucloud"&gt;terraform-provider-ucloud&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@doitian/paw-%E9%87%8C%E8%BF%9B%E8%A1%8C-ucloud-api-%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81-da7d4d5b0471#.o5qfy65nd"&gt;Paw 里进行 UCloud API 签名验证 – Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://segmentfault.com/q/1010000000595663"&gt;golang - 如何判断字符是不是中文？ - SegmentFault&lt;/a&gt; 用&lt;code&gt;[\p{Han}]+&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hashicorp/terraform/blob/master/helper/resource/testing.go"&gt;terraform/helper/resource/testing.go&lt;/a&gt; is helper for provider testing. Set environment variable &lt;code&gt;TF_ACC&lt;/code&gt; to run the acceptance test.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dnaeon/go-vcr"&gt;dnaeon/go-vcr: Record and replay your HTTP interactions for fast, deterministic and accurate tests&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="game-development"&gt;Game Development&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5OTc2ODUxMw==&amp;amp;mid=2649706459&amp;amp;idx=2&amp;amp;sn=e27d742817435bd9c64fd450b7c8054c&amp;amp;chksm=bf2d9775885a1e63a3531e2982f29da459a1383a5080c29efb6f5be2cb66520c87f0e048e731&amp;amp;scene=0#wechat_redirect"&gt;【十一充电】十五年经验网易高级美术总监：详解次世代MMO流程管理及设计理念&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="management"&gt;Management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dirtysalt.github.io/html/becoming-cto.html"&gt;Becoming a CTO // Juozas Kaziukėnas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://parsable.com/blog/manufacturing/culture-drafting-your-teams-constitution/"&gt;Culture: Drafting your team’s Constitution&lt;/a&gt; How Parsable Builds their Company Culture.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I switched to &lt;a href="https://pasteapp.io/"&gt;Paste – smart clipboard history manager for Mac&lt;/a&gt; from Copied. I like Paste UI and the simplicity to pin copied items into list.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@schtoeffel/you-don-t-need-more-than-one-cursor-in-vim-2c44117d51db#.z7ti8o4id"&gt;You don’t need more than one cursor in vim – Medium&lt;/a&gt; Use &lt;code&gt;cgn&lt;/code&gt; and &lt;code&gt;.&lt;/code&gt; to replace is handy.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sspai.com/35927"&gt;使用 Alfred 提高你的工作效率 | Matrix 精选 - 少数派&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vitorgalvao"&gt;vitorgalvao&lt;/a&gt; has shared &lt;a href="https://github.com/vitorgalvao/alfred-workflows"&gt;many useful Alfred workflows&lt;/a&gt;. He is also a top contributor in &lt;a href="http://www.packal.org/"&gt;Packal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://insights.thoughtworkers.org/how-to-study-without-teacher/"&gt;没有了老师，你该如何学习？ – ThoughtWorks洞见&lt;/a&gt;，&lt;a href="http://insights.thoughtworkers.org/obsession-og-technology/"&gt;技术的执念 – ThoughtWorks洞见&lt;/a&gt; 和 &lt;a href="https://dmitripavlutin.com/the-path-of-software-development-craftsmanship/"&gt;The path of software development craftsmanship&lt;/a&gt; 都提到了应该避免被层出不穷的技术牵着鼻子走，静下心来把时间投资在底层和顶层不怎么变的技术上，中间易变的用到什么学什么。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://alistapart.com/article/task-performance-indicator-management-metric-for-customer-experience"&gt;Task Performance Indicator: A Management Metric for Customer Experience · An A List Apart Article&lt;/a&gt;. It Introduced TPI to measure customer experience and how Cisco uses it to improve products.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://highscalability.com/blog/2016/9/28/how-uber-manages-a-million-writes-per-second-using-mesos-and.html"&gt;How Uber Manages a Million Writes Per Second Using Mesos and Cassandra Across Multiple Datacenters - High Scalability -&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://8thlight.com/blog/uncle-bob/2014/04/03/Code-Hoarders.html"&gt;Code Hoarders | 8th Light&lt;/a&gt; About Legacy Code and Code Quality.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://continuations.com/post/151791965100/our-need-for-purpose-and-recognition"&gt;Continuations : Our Need for Purpose and Recognition&lt;/a&gt; Importance of Recognition as Motivation.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://prog21.dadgum.com/224.html"&gt;Being More Than &amp;ldquo;Just the Programmer&amp;rdquo;&lt;/a&gt; Next steps to be a better programmer.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.makeuseof.com/tag/become-better-coder-keeping-programming-journal/"&gt;Become a Better Coder by Keeping a Programming Journal&lt;/a&gt; However I prefer digital journal, since it is simple to keep links and I can click to open them.&lt;/li&gt;
&lt;li&gt;Podcast &lt;a href="https://m.signalvnoise.com/job-preservation-cb25f52150ad#.xh5vsbcc9"&gt;Job Preservation&lt;/a&gt;First of a short series about the business of dying.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="bookmarks"&gt;Bookmarks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.lightnote.co/"&gt;LightNote&lt;/a&gt; This site is an attempt to teach you just enough essential music theory to take you from a tab-reader to a music creator!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getkong.org/"&gt;Kong - Open-Source API Management and Microservice Management&lt;/a&gt;. API Gateway built on Nginx.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.creative-tim.com/vuematerial"&gt;Vue Material&lt;/a&gt; Material theme for vue.js&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/netflix/chaosmonkey"&gt;Netflix/chaosmonkey: Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-10-22</title><link>https://blog.iany.me/journal/2016/10/what-i-touched-this-week-2016-10-22/</link><pubDate>Sat, 22 Oct 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/10/what-i-touched-this-week-2016-10-22/</guid><description>&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;How to write terraform provider plugin. Read the &lt;a href="https://www.terraform.io/docs/plugins/"&gt;brief official documentation&lt;/a&gt;. Follow this &lt;a href="https://github.com/rakutentech/terraform-provider-vsphere"&gt;vsphere plugin&lt;/a&gt; to see sample &lt;code&gt;main.go&lt;/code&gt; and builtin &lt;a href="https://github.com/hashicorp/terraform-provider-aws"&gt;vms provider&lt;/a&gt; as the reference. Must read files: &lt;code&gt;provider.go&lt;/code&gt; and &lt;code&gt;resource_aws_instance.go&lt;/code&gt;. My project is &lt;a href="https://github.com/3pjgames/terraform-provider-ucloud"&gt;terraform provider ucloud&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.codingnow.com/2016/10/gamesync.html"&gt;云风的 BLOG: 继续谈网络游戏的同步问题&lt;/a&gt; 分两个 model 分别同步共享状态和私有状态。如果出现冲突服务器将修正的操作的参数再通知回客户端。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://highscalability.com/blog/2016/10/12/lessons-learned-from-scaling-uber-to-2000-engineers-1000-ser.html"&gt;Lessons Learned from Scaling Uber to 2000 Engineers, 1000 Services, and 8000 Git repositories - High Scalability -&lt;/a&gt;. Introduce the micro services architecture in Uber, the cons and pros and experience.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@cep21/how-to-correctly-use-context-context-in-go-1-7-8f2c0fafdf39#.pmk4vjiow"&gt;How to correctly use context.Context in Go 1.7 – Medium&lt;/a&gt; How to use context and how to not abuse context values.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/a/28007631/667158"&gt;go - Separating unit tests and integration tests in GoLang (testify) - Stack Overflow&lt;/a&gt; The difference of using build flag integration and short test flag is that: integration build flag does not run integration test by default, and short flag will run all tests.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="game-development"&gt;Game Development&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Scott Brodie (@brodiegames) tweets about &lt;a href="https://twitter.com/brodiegames/status/786041246321999873"&gt;builtin support of circular UIs in Unity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mp.weixin.qq.com/s?__biz=MzA4MDc5OTg5MA==&amp;amp;mid=2650586822&amp;amp;idx=4&amp;amp;sn=cca55822c77793d8aa093cfed8ea7ab5&amp;amp;chksm=8796af3bb0e1262dfc24fb4ed354f498e502d2dd98e7bb75d56564059ceab717b111cc1018af&amp;amp;scene=0#wechat_redirect"&gt;NGUI三大基础机制&lt;/a&gt; NGUI 渲染底层的一些分享&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="web-development"&gt;Web Development&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://paulbakaus.com/2016/10/13/debunked-10-misconceptions-about-amp/"&gt;Debunked: 10 Misconceptions about AMP&lt;/a&gt; What AMP is not. It is also a good introduction to AMP.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="management"&gt;Management&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@gokulrajaram/all-you-ever-wanted-to-know-about-all-hands-but-were-afraid-to-ask-b13f7b97f2d9#.ovwq0mbix"&gt;All you ever wanted to know about all-hands (but were afraid to ask) – Medium&lt;/a&gt; Share why and how to run all-hands.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tips"&gt;Tips&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/32814161/how-to-make-spoiler-text-in-github-wiki-pages/39920717?stw=2#39920717"&gt;How to make &amp;ldquo;spoiler&amp;rdquo; text in github wiki pages? - Stack Overflow&lt;/a&gt; How to create collapsed section using HTML tag &lt;em&gt;details&lt;/em&gt; and &lt;em&gt;summary&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="open-source-projects"&gt;Open Source Projects&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Microsoft/LightGBM"&gt;Microsoft/LightGBM&lt;/a&gt; a fast, distributed, high performance gradient boosting framework.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://disney.github.io/"&gt;Disney open source projects&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="apps-and-tools"&gt;Apps and Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://code.woboq.org/"&gt;Woboq Code Browser - Explore C++ code on the web&lt;/a&gt; Semantic info is extracted using LLVM.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://a-sharper-scaling.com/"&gt;A Sharper Scaling&lt;/a&gt; Image upscaling tool.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://coala.io/"&gt;coala&lt;/a&gt; One command to lint code in many different languages.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="game"&gt;Game&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.dontstarve.wikia.com/wiki/Don%27t_Starve_%E4%B8%AD%E6%96%87%E7%B6%AD%E5%9F%BA"&gt;Don&amp;rsquo;t Starve 中文维基&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jmd.im/black"&gt;Jean-Marc Denis - Black&lt;/a&gt; Black wallpapers for phone and desktop.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mvark.blogspot.jp/2016/10/tips-for-more-effective-white-boarding.html"&gt;Tech Tips, Tricks &amp;amp; Trivia: Tips for more effective white-boarding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sparanoid/chinese-copywriting-guidelines"&gt;中文文案排版指北&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item><item><title>What I Touched This Week 2016-10-15</title><link>https://blog.iany.me/journal/2016/10/what-i-touched-this-week-2016-10-15/</link><pubDate>Sat, 15 Oct 2016 00:00:00 +0000</pubDate><author>me@iany.me (Ian Yang)</author><guid>https://blog.iany.me/journal/2016/10/what-i-touched-this-week-2016-10-15/</guid><description>&lt;h2 id="programming"&gt;Programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cnblogs.com/zhouyuanzhong/p/6296193.html"&gt;动作手游实时PVP技术揭密（服务器篇）&lt;/a&gt; 帧同步、可靠 UDP和防作弊技术&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.facebook.com/posts/1840075619545360"&gt;Yarn: A new package manager for JavaScript&lt;/a&gt; Like bundler for gems in Ruby&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.codeship.com/a-review-of-immutability-in-ruby/"&gt;A Review of Immutability in Ruby&lt;/a&gt; Use Immutability data in Ruby using standard libraries and gems.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="readings"&gt;Readings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.theverge.com/tldr/2016/9/25/12284400/how-to-read-more-books"&gt;How to read a book a week&lt;/a&gt; Read every day. Focus on one book and make small progress daily.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tips"&gt;Tips&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://discussions.apple.com/thread/5522241?tstart=0"&gt;How do I remove an app from Security/Accessibility&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo sqlite3 /Library/Application\ Support/com.apple.TCC/Tcc.db
delete from access where client like &amp;quot;%appnamehere%&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Replace &amp;ldquo;appnamehere&amp;rdquo; with the name of the app as it appears in the Accessibility list (keep the % signs).
```&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Show hidden files in macOS Sierra Finder &lt;code&gt;Shift + Command + .&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install Python modules for ansible installed by Homebrew&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; cd /usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages
PYTHONPATH=$(pwd) python easy_install.py -ad $(pwd) redis
```
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://furbo.org/2015/01/19/clearing-the-icon-services-cache-in-yosemite/"&gt;Clearing the Icon Services cache in Yosemite&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sanctum.geek.nz/arabesque/advanced-vim-macros/"&gt;Advanced Vim macros&lt;/a&gt; Dump macro, edit and save back to register. Run macro on scope using &lt;code&gt;normal&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://sanctum.geek.nz/arabesque/vim-anti-patterns/"&gt;Vim anti-patterns | Arabesque&lt;/a&gt; Usage of &lt;code&gt;gi&lt;/code&gt;, &lt;code&gt;g;&lt;/code&gt;, &lt;code&gt;g,&lt;/code&gt;. Use &lt;code&gt;s&lt;/code&gt; as motion after action. Use &lt;code&gt;@:&lt;/code&gt; to repeat command, &lt;code&gt;&amp;amp;&lt;/code&gt; and &lt;code&gt;g&amp;amp;&lt;/code&gt; to repeat substitution.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://launchpadmanager.com/"&gt;Launchpad Manager - Keep your Launchpad organised!&lt;/a&gt; Manage macOS Launchpad with less pain&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.yingdev.com/projects/tickeys"&gt;Tickeys | 找对打字的感觉 | YingDev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/docopt/docopt"&gt;docopt/docopt: Pythonic command line arguments parser, that will make you smile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="misc"&gt;Misc&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.kapeli.com/dash-and-apple-my-side-of-the-story"&gt;Dash and Apple: My Side of the Story&lt;/a&gt; A popular app for developer has been &lt;a href="https://blog.kapeli.com/apple-removed-dash-from-the-app-store#what-happened"&gt;removed from apple store&lt;/a&gt;, and here is the story from the author.&lt;/li&gt;
&lt;/ul&gt;</description><category domain="https://blog.iany.me/journal/">Journals</category><category domain="https://blog.iany.me/series/what-i-touched/">What I Touched</category></item></channel></rss>