[{"data":1,"prerenderedAt":336},["ShallowReactive",2],{"search-pool-en":3,"tag-en-Gemini-page-1":199},[4,17,27,38,48,57,67,76,87,97,108,116,124,132,140,149,157,166,175,183,191],{"id":5,"slug":6,"title":7,"description":8,"date":9,"category":10,"tags":11,"fullText":16},"blog\u002Fen\u002Fblog\u002Fantigravity-2-17-0-plan-before-code.md","antigravity-2-17-0-plan-before-code","Antigravity 2.17.0: Plan Before You Code","Antigravity 2.17.0 introduces the \u002Fplan workflow, dedicated 20,000 token rule budgets, consolidated project configuration, and essential UX polishes.","2026-09-25","coder",[12,13,14,15],"Antigravity","Plan","AI Agent","Release","antigravity 2.17.0: plan before you code antigravity-2-17-0-plan-before-code antigravity 2.17.0 introduces the \u002Fplan workflow, dedicated 20,000 token rule budgets, consolidated project configuration, and essential ux polishes. coder coder antigravity plan ai agent release google antigravity has received its v2.17.0 update. the guiding philosophy of this release is clear:  \"plan before you build.\"  from formalizing structured agent planning workflows to completely restructuring how rules occupy the model's context window, these changes directly target the pain points of complex software engineering. here is a summary of what's new 👇 1️⃣ headline feature: \u002Fplan — review before writing code in complex engineering tasks, an agent making uncoordinated edits across an entire codebase can introduce regressions. version 2.17.0 brings a disciplined workflow: plan review & iteration : triggering  \u002Fplan  prompts the agent to draft a comprehensive implementation design document first. you review and refine the proposal before code modification commences. plan review policies : select between three review policies in settings: review every plan, delegate review decisions to the agent based on critical seam thresholds, or bypass planning for simple one-off tasks. 2️⃣ dedicated 20,000 token budget for rules previously, extensive project guidelines risked crowding out skills, subagents, and mcp definitions within the limited active context window. dedicated rule allocation : project rules now enjoy an independent 20,000 token budget that does not compete with active conversational context. graceful fallbacks : rules exceeding the budget automatically fold into compact \"path + description\" index stubs, dynamically fetched only when relevant. 3️⃣ configuration consolidation new config location : workspace settings officially migrate to  \u002F.gemini\u002Fconfig.json . deprecated directory : the legacy  .agents\u002Fsettings.json  file is no longer read. custom paths such as  personal_customization_dir  should be migrated to the new file. 4️⃣ quality of life enhancements quick theme switching : toggle dark\u002Flight themes directly from the command palette without opening the full settings view. custom agent hooks : markdown agent specifications can now register lifecycle hooks in frontmatter via the  hooks:  property with relative and absolute path support. paste fidelity : right-click paste supports rich text and images while preserving markdown hyperlink formats; pasting over attachments no longer overwrites existing input text. productized command surfaces : slash commands and built-in google plugins present official product branding and icons (e.g., chrome devtools, gemini api) rather than raw internal identifiers. quiet links : only actionable artifacts (such as newly created reviews or local dev servers) display interactive cards, while informational web lookups save quietly to sidebar history. language support : added c++20 module interface ( .cppm ) syntax highlighting and icons. 5️⃣ bug fixes \u002Frewind snapshot precision : resolved an issue where rewinds selected outdated historical snapshots; rollbacks now strictly target the latest state preceding the selected checkpoint. large file & diff responsiveness : syntax highlighting and diff computations moved off the ui main thread; files exceeding 100 kb gracefully fallback to plain text to preserve fluidity. large repo timeout prevention : extended custom rule and workflow discovery timeouts from 3s to 15s to eliminate false-negative loading failures in large monorepos. \u002Fbtw context preservation : interleaved side-queries now maintain the active subagent profile rather than resetting to the root agent. math formula rendering : fixed rendering artifacts where inline math containers with  $$  caused dropped text or stray dollar symbols. media asset export : addressed silent failures when saving svgs and encoded video streams. 💡  summary antigravity 2.17.0 represents a mature step forward in agentic engineering discipline: establishing a formal planning phase with  \u002Fplan  and decoupling rule tokens from execution context. if you are using antigravity on medium to large codebases, upgrading is strongly recommended!",{"id":18,"slug":19,"title":20,"description":21,"date":22,"category":10,"tags":23,"fullText":26},"blog\u002Fen\u002Fblog\u002Fgoogle-antigravity-2-16-0-new-features.md","google-antigravity-2-16-0-new-features","Google Antigravity 2.16.0 Released: Practical New Features Breakdown","Google Antigravity 2.16.0 arrives with native Windows WSL support, direct drag-and-drop parsing for Office attachments, subagent visualization, and faster scans.","2026-09-23",[12,24,25,15],"Google","WSL","google antigravity 2.16.0 released: practical new features breakdown google-antigravity-2-16-0-new-features google antigravity 2.16.0 arrives with native windows wsl support, direct drag-and-drop parsing for office attachments, subagent visualization, and faster scans. coder coder antigravity google wsl release google antigravity has rolled out its 2.16.0 release! beyond noticeable performance enhancements across large codebases, this release introduces several highly practical features addressing developer feedback. here is an overview of the key highlights. 1. native windows wsl support 🐧 a welcome addition for windows developers: 2.16.0 integrates first-class support for the windows subsystem for linux (wsl). you can now target and switch between installed wsl distributions directly within application settings. the title bar clearly reflects the active environment, offering a unified development experience across linux toolchains on windows. 2. direct drag-and-drop parsing for office attachments 📄 no more manual copying and converting tabular data. beginning with 2.16.0, you can drag and drop word (.docx), excel (.xlsx), and powerpoint (.pptx) documents directly into chat. powered by underlying multimodal parser upgrades, the gemini model processes document structure and data tables natively. 3. full visibility for subagents 🤖 multi-agent coordination is now significantly more transparent. subagent invocations render as dedicated interactive cards inline within the timeline. you can monitor their live lifecycle state in real-time—whether running, waiting, or completed. cards also feature hover-to-terminate controls and one-click deep links into sidecar session panels, removing guesswork from background delegation. 4. performance & polish ⚡ several refined touches round out the release: near-instant large project scans : scanning for custom skills and workspace configuration in monorepos or network-mounted directories has dropped from over a minute to sub-second speeds. improved image handling : context menus now support direct right-click copy and save for generated imagery. svg assets copy cleanly to the clipboard ready for pasting into design tools and editors. transparent execution feedback : enhanced progress indicators detail precise agent staging activities (such as tool initialization). during network retries, a live countdown with attempt counters keeps you informed. conclusion antigravity 2.16.0 delivers substantial upgrades across cross-platform environments (wsl), document understanding, and agent observability. the indexing speed improvements alone will save meaningful time in large projects. recommended update for all active users!",{"id":28,"slug":29,"title":30,"description":31,"date":32,"category":10,"tags":33,"fullText":37},"blog\u002Fen\u002Fblog\u002Fantigravity-agent-default-permissions-deep-dive.md","antigravity-agent-default-permissions-deep-dive","Deep Dive into Antigravity's New Default Agent Permissions","An in-depth look at Antigravity's terminal sandbox on macOS and Linux: how the Default mode strikes the right balance between safety and reduced prompt fatigue.","2026-09-16",[12,34,35,36],"Agent","Security","Permissions","deep dive into antigravity's new default agent permissions antigravity-agent-default-permissions-deep-dive an in-depth look at antigravity's terminal sandbox on macos and linux: how the default mode strikes the right balance between safety and reduced prompt fatigue. coder coder antigravity agent security permissions the permission architecture in google antigravity is undergoing a significant evolution. the short takeaway:  under the new default permission preset, you will be interrupted by far fewer confirmation prompts. by introducing upgraded operating-system-level sandboxing on macos and linux, terminal commands now execute inside an isolated sandbox by default. so long as the agent is interacting strictly with files inside your active workspace without outbound network access, commands proceed autonomously without manual approval. note: windows currently retains the legacy permission model. previously, developers had to choose between two extremes: fully permissive turbo mode, or an interactive review cycle that prompted on virtually every command. the new default preset establishes a well-balanced middle ground. mode overview request review every terminal command requires explicit human authorization; commands run outside the sandbox. read and write file access is restricted to the workspace. outbound network requests are blocked by default and require approval. default commands run autonomously inside the sandbox without manual confirmation. the agent can request unsandboxed execution when necessary, subject to human approval. sandbox file read\u002Fwrite is strictly confined to the active workspace and system temp directories. outbound networking inside the sandbox is blocked. to access external apis, the agent requests unsandboxed execution. turbo all commands execute automatically outside the sandbox without prompts. global filesystem read\u002Fwrite access is permitted. unrestricted network access is enabled for the agent. the update also refines how granular permission rules bind to sandbox states: when sandboxing is disabled, standard  command  rules govern all commands; when sandboxing is enabled, they govern commands running inside the sandbox. when sandboxing is enabled,  unsandboxed  rules apply exclusively to commands attempting to bypass the sandbox. permission presets in practice permission presets dictate baseline behavior, while your explicit  allow ,  deny , and  ask  lists layer on top with authoritative precedence. in default mode, terminal operations run inside an isolated terminal sandbox. when an agent legitimately requires host network access or system-wide resources, it petitions for unsandboxed execution. unless pre-cleared by a matching  command(...) allow  rule, antigravity pauses for your review. you can configure global presets under  settings → general → permission settings , or override them per project in  settings → projects . newly initialized workspaces default to  inherit global . glossary reference antigravity term context \u002F meaning security preset high-level baseline policy across sandbox and approvals default autonomous sandboxed execution with approval for host access turbo mode unsandboxed, fully autonomous execution local permissions filesystem access boundaries network access rules egress networking policies terminal commands shell execution rules commands outside sandbox unsandboxed execution permissions mcp tools model context protocol server capabilities sandbox isolated os process container agent autonomous coding persona (note: as of writing, this rollout is progressively deploying across active release channels.)",{"id":39,"slug":40,"title":41,"description":42,"date":43,"category":10,"tags":44,"fullText":47},"blog\u002Fen\u002Fblog\u002Fantigravity-cli-headless-remote-control.md","antigravity-cli-headless-remote-control","Beyond the Desktop GUI: Headless Remote Control in Antigravity CLI 1.2.0","Antigravity CLI 1.2.0 natively integrates a headless background daemon, enabling browser-based remote control of your dev machine without running the desktop GUI.","2026-09-10",[12,45,46,34],"CLI","Remote Control","beyond the desktop gui: headless remote control in antigravity cli 1.2.0 antigravity-cli-headless-remote-control antigravity cli 1.2.0 natively integrates a headless background daemon, enabling browser-based remote control of your dev machine without running the desktop gui. coder coder antigravity cli remote control agent when executing large-scale refactorings, comprehensive test suites, or multi-repo migrations, ai agents frequently run for dozens of minutes or hours. in the past, if you wanted to step away and monitor progress from a phone or browser, you had to keep the full antigravity 2.0 desktop editor running with remote control enabled. with the release of  antigravity cli 1.2.0 , google has baked this capability directly into the terminal runtime:  headless remote control (daemon) . you no longer need to keep a heavy desktop ui running or leave a terminal session active. your local dev workstation can now operate as an always-available headless daemon, ready for orchestration from any web browser on any device. what is \"headless remote control\"? \"headless\" means running without a graphical interface. previously, closing your terminal window or dropping an ssh connection would terminate the active cli session. the 1.2.0 daemon registers antigravity cli directly into your  operating system's native background service manager : linux : managed via  systemd  user services. macos : registered as a  launchagent . windows : registered as a scheduled task. once launched, the service establishes a secure reverse connection to antigravity's cloud relay. even if you close the terminal, lock your screen, or recover from unexpected crashes, the daemon resumes automatically. three essential commands for lifecycle management you don't need to handcraft systemd units or macos plists. the cli provides three concise subcommands: 1. register and start daemon:  agy remote-control start run in an authenticated terminal session: agy  remote-control  start\n the cli installs the system service and starts the background process immediately. if you manage multiple workstations under the same google account, assign a custom name to distinguish machines in the web ui: agy  remote-control  start  --name  \"workstation-mac\"\n (if omitted, antigravity assigns an auto-generated memorable handle like  my-machine-distant-plume .) 2. check status and identity:  agy remote-control status inspect daemon health, connection state, and assigned machine identifiers: agy  remote-control  status\n 3. stop and unregister:  agy remote-control stop when you no longer need the machine on standby, stop the daemon and cleanly deregister it: agy  remote-control  stop\n connecting via web browser once the daemon is active, interacting with it follows the familiar remote control experience: open the console : navigate to  https:\u002F\u002Fantigravity.google.com\u002F  on mobile, tablet, or another computer. authenticate : log in with the same google account used in your cli. select your host : choose your workstation from the instance roster. take command : launch new sessions, review active context, inspect code diffs and artifacts, and approve tool authorizations remotely with a single tap. (tip: on mobile devices, add the site to your home screen to receive native push notifications when background tasks complete or require input). key technical nuances independent auth profiles : the headless daemon utilizes the cli's authentication state ( agy login ), completely separated from the desktop antigravity ide app session. operating system lifecycle guarantees :\n linux : starts on boot and persists regardless of active interactive user sessions. macos : boots when the user logs into the desktop environment and pauses upon sign-out. windows : runs without logon if installed with elevated administrator privileges; otherwise starts upon user logon. renaming instances : to change your host alias, re-run  agy remote-control start --name \"new-name\" , or update  cliremotecontrolhostname  in  ~\u002F.gemini\u002Fconfig\u002Fconfig.json  and restart the daemon. with cli 1.2.0, your physical hardware transforms into a private, on-demand ai compute node—retaining the speed and toolchain depth of your local environment while freeing you from your physical desk. html pre.shiki code .sscjk, html code.shiki .sscjk{--shiki-default:#6f42c1;--shiki-dark:#b392f0}html pre.shiki code .szznc, html code.shiki .szznc{--shiki-default:#032f62;--shiki-dark:#9ecbff}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005cc5;--shiki-dark:#79b8ff}",{"id":49,"slug":50,"title":51,"description":52,"date":43,"category":10,"tags":53,"fullText":56},"blog\u002Fen\u002Fblog\u002Ffrontier-engineering-ten-core-principles.md","frontier-engineering-ten-core-principles","Frontier Engineering: 10 Core Principles","A manifesto for modern software engineering: moving from typist to system architect and building high-leverage workflows with autonomous AI agents.",[54,14,55],"Frontier Engineering","Software Engineering","frontier engineering: 10 core principles frontier-engineering-ten-core-principles a manifesto for modern software engineering: moving from typist to system architect and building high-leverage workflows with autonomous ai agents. coder coder frontier engineering ai agent software engineering source :  https:\u002F\u002Fkiro.dev\u002Ftopics\u002Ffrontier-engineering\u002F terminology note : terms such as  agent ,  prompt ,  context ,  steering file ,  skill ,  mcp ,  vibe coding ,  ci ,  pr , and  guardrail  are retained in their industry standard forms. overview and manifesto software developers are bifurcating into two distinct camps: those who fundamentally changed how they collaborate with ai agents, and those who merely swapped their editing tools. today, autonomous ai agents write code, run suites, diagnose failures, and iterate continuously for hours without human intervention. the nature of software development has shifted accordingly. the developers experiencing non-linear productivity leaps did not find a magic tool; they adopted an entirely different operational model: they no longer write software directly—they build environments in which autonomous agents reliably produce software. this guide is written for engineers on the ground. if you are already pairing with ai assistants but haven't seen a dramatic leap in shipping velocity, this manifesto lays out what needs to change. be warned: this is an engineering investment, not a toggle. cultivating intuition, writing  steering files , refactoring codebases for agent-readability, and mastering modular task decomposition takes deliberate practice. expect velocity to dip during the first few weeks before accelerating exponentially. the 10 principles at a glance you are the architect, not the typist maximize agent autonomy; minimize your interventions engineer the codebase for agents build fast, local feedback loops for agents execution is cheap; direction is everything treat code as disposable artifacts hold ai output to human standards trust guardrails, not agents involve agents across the entire lifecycle, not just implementation continuously tune your agent operating system frontier engineering is not \"vibe coding\" frontier engineering is not \"vibe coding,\" nor is it pasting casual prompts into a chatbox and hoping for the best. it is a disciplined, rigorous practice marrying traditional software engineering principles with the massive leverage of autonomous agents. over time, your primary scarce resource is attention. managing cognitive load across concurrent agent contexts, upholding rigorous code quality under high velocity, and resisting the urge to micromanage agent threads becomes the core skill. your job becomes a continuous filter: what demands human judgment, and what does not. we remain in the early adopter phase. standardized blueprints for agent-first infrastructure, test harnesses, and automated reviews are still emerging. much of the workflow relies on sharp engineering instincts: which tasks to delegate, where to place boundaries, and when to step in. once mastered, velocity surges—freeing bandwidth to tackle architectural debt, edge cases, and long-deferred ambitions that previously fell outside scope. 01. you are the architect, not the typist the core value of engineering is no longer typing syntax; it is clarifying intent. in practice, frontier developers directly write less than 1% of the code deployed under their names. the rest is produced, refined, and verified by agents under their direction. your role condenses into two pillars: defining what \"done\" means (requirements, operational constraints, acceptance criteria), and verifying that outputs match intent. clear communication of intent is not new, but it is now indispensable. stating \"add authentication to this api\" is insufficient. you must define token lifecycles, role permissions per endpoint, unauthorized handling behaviors, and regression expectations. then, let the agent construct the code. 02. maximize agent autonomy; minimize your interventions too many developers remain trapped in a fragile 60-second loop: submit a prompt, wait a minute, grab the snippet, test manually, paste errors back, and repeat. high velocity cannot exist in this loop. frontier engineers hand over long-running objectives complete with self-validation instructions:  \"implement this feature, write tests, run the suite, verify that all assertions pass, and maintain 90% branch coverage.\"  the agent can then operate uninterrupted for 30 minutes or more while you focus elsewhere. agents will encounter hiccups; allow them to cycle, self-correct, and converge autonomously. orchestrate multiple agents in parallel across decoupled tasks. your productivity ceiling is no longer your typing speed, but the number of meaningful concurrent threads you can keep effectively engaged. 03. engineer the codebase for agents an agent's effectiveness is constrained by the clarity of the codebase it encounters. foundational engineering practices that help human engineers pay massive compounding dividends with agents: clean readmes, explicit architecture specs, informative tests, strict module boundaries, strong typing, and deterministic build toolchains. in legacy systems, isolate and prep one module at a time rather than casting agents into unstructured chaos. human teammates onboard once; ai agents re-onboard on every new session. capture implicit institutional knowledge explicitly:  steering files  codify conventions,  skills  encapsulate procedural workflows, automated scripts bootstrap environments, and mcp servers expose dynamic context. instruct agents to leave durable decision logs and clear comments, ensuring future agent sessions inherit not just code, but the rationale behind it. 04. build fast, local feedback loops for agents if an agent cannot execute tests locally and diagnose failures before you read the diff, you remain the blocking bottleneck. invest heavily in deterministic, fast, locally executable test harnesses. agents must be equipped to run linters, execute unit tests, render ui changes via headless browsers, query mock services, and spin up local stacks. anything you use to validate your own code should be accessible to the agent as a tool. property-based testing is especially potent: it stress-tests edge cases that human developers and llms routinely overlook. high-velocity code generation without automated guardrails only accelerates tech debt; coupled with autonomous feedback loops, it elevates overall software robustness. 05. execution is cheap; direction is everything when complete features can be synthesized in an afternoon, the bottleneck shifts from implementation to problem definition: what is worth building, what constraints matter, and when to pivot. code is cheap; architectural trade-offs, api contracts, and domain models remain expensive. leverage agents during discovery as brainstorming partners to poke holes in assumptions, map alternative trade-offs, and prototype competing solutions. spec-driven development becomes mandatory: collaborate with the agent to draft concrete requirements upfront to prevent divergent downstream assumptions. 06. treat code as disposable artifacts with low generation costs, code is no longer precious. sunk cost fallacies must be abandoned: whether a prototype took a day or two weeks, if architectural validation fails, discard it cleanly. do not carry forward brittle code simply because effort was invested. rebuilding from a sharpened spec takes hours, not months. the critical exception lies in boundary tests. while ephemeral unit tests can be rewritten alongside implementation, high-level integration, property, and stress tests must be preserved—they represent the immutable contract that any replacement implementation must satisfy. 07. hold ai output to human standards speed without quality is pure production liability. regardless of what synthesized the lines, your name is on the commit, and ownership is yours. initially, this demands meticulous line-by-line review to establish calibrated trust. as velocity scales, manual review becomes unsustainable. introduce automated ai reviewer personas into pre-commit hooks and ci pipelines to audit correctness, security vulnerabilities, test depth, and idiomatic maintainability. reserve human attention for systemic architecture, downstream operational impacts, and security boundaries. ensure agents observe deployments into production and stand ready to remediate regressions. 08. trust guardrails, not agents long-duration autonomy requires robust, automated guardrails. avoid the false dichotomy of unbounded system access versus tedious per-tool confirmation fatigue. scope permissions strictly to the directories, toolsets, and network boundaries required for the task. enforce deterministic safety nets: sast scans, credential leak detection, and sandboxed runtimes. every guardrail automated is one less human interruption required. 09. involve agents across the entire lifecycle, not just implementation extend agent workflows beyond writing source code. system design docs, performance incident forensics, sprint summaries, documentation maintenance, and on-call runbooks can all follow the same pattern: provide context, specify constraints, generate a first draft, and refine via review. standardize steering files and mcp tool registries so pipeline agents, documentation agents, and triage agents share a unified foundation. 10. continuously tune your agent operating system every time an agent derails or forces an unnecessary human intervention, treat it as a bug in your operating system: add a steering rule, encapsulate a missing workflow in a  skill , automate a manual step via cli, or refine an mcp interface. frontier engineering is a meta-discipline: you are simultaneously building the product and iterating on the system that builds the product. over time, this compounding flywheel transforms reactive prompting into an autonomous, self-healing engineering engine.",{"id":58,"slug":59,"title":60,"description":61,"date":62,"category":10,"tags":63,"fullText":66},"blog\u002Fen\u002Fblog\u002Ffixing-macos-high-cpu-usage-in-dasd-process-with-antigravity.md","fixing-macos-high-cpu-usage-in-dasd-process-with-antigravity","Fixing macOS High CPU Usage in dasd Process with Antigravity","Today, my Mac (running the latest macOS 27.0 beta 8) su ...","2026-09-08",[64,65],"beta","macos","fixing macos high cpu usage in dasd process with antigravity fixing-macos-high-cpu-usage-in-dasd-process-with-antigravity today, my mac (running the latest macos 27.0 beta 8) su ... coder coder beta macos today, my mac (running the latest macos 27.0 beta 8) suddenly started lagging. opening activity monitor revealed that a system process named  dasd  was pinning a single cpu core at 90%–120%. a quick search yielded no useful answers. tracing it down with google antigravity, i uncovered a hilarious blunder:  an infinite loop caused by an apple engineer handling time zones incorrectly . tl;dr — run this command directly: defaults write com.apple.appstored arcadepayoutresetdate \\\n  -date \"$(date -v+3d -u +\"%y-%m-%dt%h:%m:%sz\")\" && \\\n  killall appstoreagent\n troubleshooting process with google antigravity conclusion & current status (bluf) dasd  continuously consuming 90%–99% cpu is  not routine background system maintenance, but rather  appstoreagent  (the app store background daemon) trapped in a hyperactive scheduling loop . the root cause has been isolated and  resolved . cpu usage for  dasd  dropped from  98.1% to 0.0% , and the system returned to normal without requiring a reboot. root cause analysis unified logging system captures and process call traces provided clear evidence of the infinite loop: offending task :  com.apple.appstored.arcaderesetpo  (apple arcade payout metrics reset task). logic flaw :\n the actual current time was in the afternoon, but  arcadepayoutresetdate  in  com.apple.appstored  preferences was pinned to midnight earlier that day:  2026-09-06 00:00:00 +0800  (a timestamp in the past). after finishing the reset,  appstoreagent  failed to advance the timestamp to the next cycle (the following day). instead, it re-registered the task using the already expired timestamp  2026-09-06 00:00:00 . when  dasd  (duet activity scheduler) received the registration, it saw that the scheduled execution time was in the past, marked it as overdue, and triggered it immediately ( running immediately on submission ). outcome:  over 400 dispatch and ipc events triggered per second , keeping  dasd  pegging a full cpu core continuously. unified log trace appstoreagent: [arcadepayoutreset] payout metrics reset with current payout reset time: 2026-09-06 00:00:00+0800\nappstoreagent: [arcadepayoutreset] reset with reason: rescheduling\nappstoreagent: [arcadepayoutreset] using new date: 2026-09-06 00:00:00+0800 with reason: rescheduling\nappstoreagent: [arcadepayoutreset] activity not scheduled; submitting request\ndasd:          submitting: 501:com.apple.appstored.arcaderesetpo\ndasd:          running immediately on submission\ndasd:          requesting start: 501:com.apple.appstored.arcaderesetpo\n mitigation & verification the loop was broken by manually pushing the scheduled date forward in user defaults and gracefully restarting  appstoreagent : command executed :  defaults write com.apple.appstored arcadepayoutresetdate -date \"2026-09-06t16:00:00z\" && killall appstoreagent verification results :\n monitored via  top  \u002F  ps :  dasd  (pid 404) cpu usage instantly fell to  0.0% . after restarting,  appstoreagent  suspended normally and stopped flooding the system log at 400+ entries\u002Fsec. after working through the trace with google antigravity, cpu usage is back to normal.",{"id":68,"slug":69,"title":70,"description":71,"date":72,"category":10,"tags":73,"fullText":75},"blog\u002Fen\u002Fblog\u002Fantigravity-2-12-0-boost-command.md","antigravity-2-12-0-boost-command","Antigravity 2.12.0 Introduces the \u002Fboost Command","A deep dive into Antigravity 2.12.0's new \u002Fboost command, comparing its focus, workflow, and execution model against \u002Fteamwork-preview multi-agent collaboration.","2026-09-03",[12,14,74],"Boost","antigravity 2.12.0 introduces the \u002Fboost command antigravity-2-12-0-boost-command a deep dive into antigravity 2.12.0's new \u002Fboost command, comparing its focus, workflow, and execution model against \u002Fteamwork-preview multi-agent collaboration. coder coder antigravity ai agent boost both  \u002Fboost  and  \u002Fteamwork-preview  represent advanced execution paradigms in antigravity for tackling sophisticated engineering tasks. however, they differ fundamentally in  architectural focus, team topology, and upfront alignment : 1. core positioning and target scenarios dimension \u002Fboost  (deep hardening \u002F focused delegation) \u002Fteamwork-preview  (multi-agent teaming \u002F systems projects) primary focus vertical depth : solves singular, highly complex tasks requiring sustained deep reasoning and exhaustive verification. horizontal scale : coordinates large, cross-module systems requiring multi-role specialization or massive parallel exploration. use cases • complex architectural refactoring and non-trivial algorithms • elusive bug root-cause analysis, deadlock\u002Fperf troubleshooting • single-topic technical investigations and strict trade-off evaluations • green-field system builds from 0 to 1 (e.g., compilers, full-stack web applications) • formal theorem verification and large-scale parallel search • comprehensive multi-stakeholder technical documentation reviews agent topology orchestrator delegating to specialized deep agents: •  deepcoder  (laser-focused implementation) •  deepinvestigator  (root cause & empirical verification) dynamic multi-agent team tailored to project archetype: • review panels \u002F formal verification pipelines • massive parallel exploration swarms (scaling to dozens\u002Fhundreds of agents) • modular development and adversarial auditing squads 2. workflow and interaction differences \u002Fboost : rapid routing and autonomous convergence zero front-loaded bureaucracy : the orchestrator automatically selects solo vs. delegation execution without requiring extensive requirement negotiation. high-fidelity goal handoff : delegates the exact context directly to deep subagents without forcing users into rigid specification templates. iterative verification loop : once the worker completes a draft, the orchestrator acts as a strict adversary—challenging edge cases and driving extra correction turns until requirements are fully satisfied. \u002Fteamwork-preview : rigorous specification and acceptance contracts two-phase methodology : enforces a strict boundary between  (1) prompt engineering & contract definition  and  (2) formal autonomous launch . anti-self-certification : interactively drafts objective acceptance criteria and guardrails to prevent agent teams from prematurely declaring success without verification. artifact-driven state : actively maintains a structured  prompt_draft.md  draft artifact before commissioning multi-agent swarms. 3. rule of thumb choose  \u002Fboost  when you have a  single tough nut to crack  (a gnarly bug, a delicate refactor, or complex algorithms) and need an expert agent to drill deep and stress-test the solution. choose  \u002Fteamwork-preview  when you are  kickstarting an expansive system project  or parallel exploratory workload where defining explicit acceptance criteria and coordinating diverse sub-agents is crucial.",{"id":77,"slug":78,"title":79,"description":80,"date":81,"category":10,"tags":82,"fullText":86},"blog\u002Fen\u002Fblog\u002Fgemini-3-8-flash-stealth-release.md","gemini-3-8-flash-stealth-release","Gemini Stealth-Launches 3.8 Flash: Google's Release Cadence Is Accelerating","Gemini quietly rolled out 3.8 Flash in production canary traffic. Analyzing Google's rapid release cadence and how Flash serves as an agile testbed.","2026-09-02",[83,24,84,85],"Gemini","LLM","AI","gemini stealth-launches 3.8 flash: google's release cadence is accelerating gemini-3-8-flash-stealth-release gemini quietly rolled out 3.8 flash in production canary traffic. analyzing google's rapid release cadence and how flash serves as an agile testbed. coder coder gemini google llm ai today, on a whim, i asked gemini on the web app what model it was running. its response directly identified itself as  gemini 3.8 flash . curiously, the bottom-right badge still displayed \"flash,\" while the top dropdown selector still read 3.7. when i pressed it on why the ui was out of sync, it explained the architectural reality matter-of-factly: frontend copy and cached assets hadn't updated yet, but backend request routing had already been switched over to the newer model. no launch tweets, no official blog posts—a classic dark launch in production. what does this screenshot reveal? looking at the model's self-explanation, it aligns closely with standard canary deployment practices in large-scale web services: frontend-backend decoupling : static ui labels follow longer deploy cycles, whereas backend model routing and a\u002Fb test experiments can shift dynamically on the fly. progressive rollout : if you ask now, some sessions might still resolve to 3.7, while new chat sessions or assigned experiment cohorts route to 3.8. once again, this release targets the  flash  tier. as the lightweight, low-latency, and cost-efficient member of the family, flash is designed for daily automation and rapid back-and-forth tasks. google uses flash to deploy iterative optimizations directly into real production traffic to evaluate performance at scale. an unusually fast release rhythm looking back at gemini's trajectory over the past six weeks, the velocity is unmistakably different: late july : gemini 3.6 flash rolled out. mid-august : gemini 3.7 flash launched roughly three weeks later. early september : gemini 3.8 flash is already running live in canary buckets, under three weeks after 3.7. jumping two sub-versions (from 3.6 to 3.8) in just over a month highlights two broader shifts: point releases are becoming agile sprints \nin the early days of llms, a dot release (like 3.0 to 3.5) signified structural architectural shifts or substantial benchmark jumps. today, a .x increment functions more like a bi-weekly agile sprint: refinement of alignment, localized data supplements, or targeted fixes for specific domains, shipped as soon as quality gates pass. flash as the innovation proving ground \ncompared to compute-intensive, high-cost models like pro or ultra, flash has near-zero barrier to entry and minimal latency. google clearly favors deploying high-frequency improvements to flash first to validate behavior against massive interactive volumes. for developers relying on models for daily programming, workflow automation, or accelerated research, continuous incremental tuning provides a noticeably smoother curve. you might not see dramatic leaps overnight, but under the hood, the foundation is continuously evolving. try asking your own web session what version it is running to see which canary pool you've landed in.",{"id":88,"slug":89,"title":90,"description":91,"date":92,"category":10,"tags":93,"fullText":96},"blog\u002Fen\u002Fblog\u002Ffix-antigravity-chrome-devtools-mcp-permission-prompt.md","fix-antigravity-chrome-devtools-mcp-permission-prompt","Fixing Frequent Chrome DevTools MCP Permission Prompts in Google Antigravity","A practical guide to configuring server-level permissions in Google Antigravity to eliminate repetitive Chrome DevTools MCP authorization dialogs.","2026-08-23",[12,94,95,14],"Chrome DevTools","MCP","fixing frequent chrome devtools mcp permission prompts in google antigravity fix-antigravity-chrome-devtools-mcp-permission-prompt a practical guide to configuring server-level permissions in google antigravity to eliminate repetitive chrome devtools mcp authorization dialogs. coder coder antigravity chrome devtools mcp ai agent when using google antigravity (or the gemini agent environment) for frontend debugging and web automation, many developers configure and enable the chrome devtools mcp plugin. in practice, however, you may encounter an annoying loop:  even after selecting \"yes, and always allow\" every time a dialog appears, new permission prompts continue to pop up every couple of steps. this post explains the underlying cause and the one-line configuration that permanently resolves it. problem description while an agent executes web workflows, confirmation prompts frequently interrupt execution: allow using this mcp tool?\nchrome-devtools\u002Flist_network_requests\n\n1. yes, allow this time\n2. yes, and always allow in this conversation\n3. yes, and always allow in this project\n4. yes, and always allow\n5. no (tell the agent what to do instead)\n even if you choose  4  (globally allow forever), another dialog appears the moment the agent attempts to inspect console logs, take a screenshot, or click a button. why does it still prompt after choosing \"always allow\"? the issue lies in permission granularity. when you choose  4. yes, and always allow , antigravity adds only the  specific invoked sub-tool  to your allowlist: mcp(chrome-devtools\u002Flist_network_requests) mcp(chrome-devtools\u002Fevaluate_script) however, the chrome devtools mcp suite exposes more than 20 distinct tools ( click ,  fill ,  hover ,  navigate_page ,  take_snapshot ,  get_console_message ,  lighthouse_audit , etc.). during a multi-step workflow, an agent dynamically invokes different sub-tools as needed. whenever it calls a tool that hasn't been individually whitelisted yet, the confirmation dialog triggers anew. solution: authorize the entire mcp server the fix is straightforward: grant permission at the  mcp server level  rather than the individual sub-tool level. steps open your global configuration file:\n path:  ~\u002F.gemini\u002Fconfig\u002Fconfig.json locate the  usersettings.globalpermissiongrants.allow  array. add  \"mcp(chrome-devtools)\"  to the array. example configuration: {\n   \"usersettings\" : {\n     \"globalpermissiongrants\" : {\n       \"allow\" : [\n         \"mcp(chrome-devtools)\" ,\n         \"command(git log)\" ,\n         \"command(npm run)\"\n       ]\n     }\n   }\n }\n comparison permission format scope use case mcp(chrome-devtools\u002Fnavigate_page) single sub-tool only strict boundaries (e.g., read-only inspection tools) mcp(chrome-devtools) all  tools under this mcp server fully trusted server, zero interruptions across sub-tools additional tips universal across mcp servers : if you integrate other custom or third-party mcp servers (like local shell runners or ssh managers), you can apply the same  mcp(\u003Cserver-name>)  wildcard pattern to bypass prompts entirely. project-scoped overrides : if you prefer not to whitelist it globally, configure  permissiongrants  in the project-specific config file ( ~\u002F.gemini\u002Fconfig\u002Fprojects\u002F\u003Cproject-id>.json ) so it only applies within that repository. changes take effect immediately without restarting antigravity. subsequent agent calls to any chrome devtools tool will execute smoothly without interruptions. html pre.shiki code .svt8b, html code.shiki .svt8b{--shiki-default:#24292e;--shiki-dark:#e1e4e8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005cc5;--shiki-dark:#79b8ff}html pre.shiki code .szznc, html code.shiki .szznc{--shiki-default:#032f62;--shiki-dark:#9ecbff}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"id":98,"slug":99,"title":100,"description":101,"date":92,"category":102,"tags":103,"fullText":107},"blog\u002Fen\u002Fblog\u002Fsix-cities-which-one-is-most-vivid.md","six-cities-which-one-is-most-vivid","Six Cities: Which One Captures the Essence Best?","An exploration of six city visual portraits constructed around landmarks, transit, daily life moments, native flora, and authentic compositions.","editor",[104,105,106],"City","AI Art","Visual Design","six cities: which one captures the essence best? six-cities-which-one-is-most-vivid an exploration of six city visual portraits constructed around landmarks, transit, daily life moments, native flora, and authentic compositions. editor editor city ai art visual design interpret the unique visual identity of  city name  and construct each composition around five core elements: a recognizable architectural feature, landmark, or skyline silhouette. a distinctive local mode of urban transit. a subtle, intimate moment of everyday street life. native vegetation, local terrain, or environmental atmosphere. a compositional perspective and angle that naturally belongs to the city. the overall scene architecture must vary distinctly across cities, deliberately avoiding repetitive object placement or templated visual formulas.",{"id":109,"slug":110,"title":111,"description":112,"date":113,"category":10,"tags":114,"fullText":115},"blog\u002Fen\u002Fblog\u002Fmacos-golden-gate-27-0-beta-2-fixing-appstoreagent-at-100-cpu-with-sigstop.md","macos-golden-gate-27-0-beta-2-fixing-appstoreagent-at-100-cpu-with-sigstop","macOS Golden Gate 27.0 Beta 2: Fixing appstoreagent at 100% CPU with SIGSTOP","1. Symptoms After upgrading to macOS Golden Gate 27.0 D ...","2026-07-04",[64,65],"macos golden gate 27.0 beta 2: fixing appstoreagent at 100% cpu with sigstop macos-golden-gate-27-0-beta-2-fixing-appstoreagent-at-100-cpu-with-sigstop 1. symptoms after upgrading to macos golden gate 27.0 d ... coder coder beta macos 1. symptoms after upgrading to macos golden gate 27.0 developer beta 2 (build 26a5368g), my macbook began running extremely hot and the battery drained rapidly. i checked the process status in terminal: $  ps  aux  |  grep  appstoreagent\n \u003C username >        19002 107.0  0.1 488771680  25088    ??   r    12:20am  14:55.36 \u002Fsystem\u002Flibrary\u002Fprivateframeworks\u002Fappstoredaemon.framework\u002Fsupport\u002Fappstoreagent\n even though the app store app was not open, the  appstoreagent  daemon continuously consumed more than 100% of one cpu core. force-quitting it did not help: the process was relaunched immediately and returned to full load. 2. tracing the logs and finding the root cause to identify the actual failure, i queried macos unified logging for messages from this process: $  \u002Fusr\u002Fbin\u002Flog  show  --predicate  'process == \"appstoreagent\" and eventmessage contains \"recent_launch_times\"'  --last  5m\n the command produced the following error: 2026-07-04  00:34:55.462135+0800  0x7969e     error        0x0                   19002   0     appstoreagent:  (libsqlite3.dylib) [com.apple.libsqlite3:logging] no such column: active_launch_events.recent_launch_times in  \"select active_launch_events.rowid, active_launch_events.bundle_id, active_launch_events.containing_bundle_id, active_launch_events.event_source, active_launch_events.is_extension, active_launch_events.launch_end_time, active_launch_events.launch_start_time, active_launch_events.recent_launch_times, active_launch_events.timestamp, active_launch_events.payload from active_launch_events\"\n what the error indicates root cause:  while macos golden gate 27.0 beta 2 builds or migrates the security database schema in memory, its upgrade migration appears to omit the  recent_launch_times  column from the physical  active_launch_events  table. why cpu usage spikes:  because the column is missing, the underlying sqlite query repeatedly throws a  no such column  error. after catching the error,  appstoreagent  immediately retries at high frequency with no delay, creating a query-fail-retry loop that saturates one cpu core. 3. why a normal kill does not fix it on macos,  appstoreagent  is a user agent managed by the system’s root  launchd  daemon. when you force-quit it with  kill -9 : the process exits and briefly releases the cpu. launchd  detects that the managed service exited unexpectedly and immediately relaunches it. the new  appstoreagent  instance runs the same database initialization query, hits the missing-schema error again, and returns to 100% cpu usage. force-quitting the process therefore creates a repeated launch-crash-relaunch cycle, adding system overhead and generating large volumes of logs. 4. a sigstop \u002F sigcont workaround because the system’s read-only volume is protected by sip (system integrity protection), a regular user cannot directly repair the underlying database schema. a temporary behavioral workaround is therefore the practical option. the strategy is to control the process with signals and  suspend it . send  sigstop : this places the process in the  t  (stopped) state. macos stops scheduling cpu time for it, so  cpu usage immediately falls to 0% . crucially,  launchd  still considers the process alive and does not relaunch it. send  sigcont : when you need the app store, this signal resumes the process immediately so downloads and updates can work normally. the following python 3 daemon,  guardian.py , automates this behavior: #!\u002Fusr\u002Fbin\u002Fenv python3\n import subprocess\n import time\n import os\n import sys\n import signal\n \n def get_pids(process_name):\n     \"\"\"return all pids for the specified process name.\"\"\"\n     try:\n         output = subprocess.check_output([\"pgrep\", \"-x\", process_name], text=true)\n         return [int(pid.strip()) for pid in output.strip().split(\"\\n\") if pid.strip()]\n     except subprocess.calledprocesserror:\n         return []\n \n def is_app_store_running():\n     \"\"\"check whether the app store gui client is running.\"\"\"\n     return len(get_pids(\"app store\")) > 0\n \n def get_process_state(pid):\n     \"\"\"return the process state. 't' means stopped; other values mean running.\"\"\"\n     try:\n         output = subprocess.check_output([\"ps\", \"-o\", \"state\", \"-p\", str(pid)], text=true)\n         lines = output.strip().split(\"\\n\")\n         if len(lines) > 1:\n             return lines[1].strip()\n     except subprocess.calledprocesserror:\n         pass\n     return none\n \n def main():\n     print(f\"[{time.strftime('%y-%m-%d %h:%m:%s')}] appstoreagent guardian daemon started.\")\n \n     while true:\n         try:\n             agent_pids = get_pids(\"appstoreagent\")\n             app_store_active = is_app_store_running()\n \n             for pid in agent_pids:\n                 state = get_process_state(pid)\n                 if not state:\n                     continue\n \n                 # resume appstoreagent when the app store is open and the process is stopped.\n                 if app_store_active:\n                     if 't' in state:\n                         print(f\"[{time.strftime('%y-%m-%d %h:%m:%s')}] app store is running. resuming appstoreagent (pid {pid})...\")\n                         os.kill(pid, signal.sigcont)\n                 # suspend appstoreagent when the app store is closed and the process is running.\n                 else:\n                     if 't' not in state:\n                         print(f\"[{time.strftime('%y-%m-%d %h:%m:%s')}] app store is closed. suspending appstoreagent (pid {pid}) to save cpu...\")\n                         os.kill(pid, signal.sigstop)\n \n         except exception as e:\n             print(f\"error in guardian loop: {e}\", file=sys.stderr)\n \n         time.sleep(5)\n \n if __name__ == \"__main__\":\n     main()\n 5. running the guardian silently with launchd to keep the guardian running silently in the background, package it as a macos launch agent. 5.1 create the configuration file create  com.user.appstoreagent-guardian.plist  locally: \u003C?xml version=\"1.0\" encoding=\"utf-8\"?>\n \u003C!doctype plist public \"-\u002F\u002Fapple\u002F\u002Fdtd plist 1.0\u002F\u002Fen\" \"http:\u002F\u002Fwww.apple.com\u002Fdtds\u002Fpropertylist-1.0.dtd\">\n \u003Cplist version=\"1.0\">\n \u003Cdict>\n     \u003Ckey>label\u003C\u002Fkey>\n     \u003Cstring>com.user.appstoreagent-guardian\u003C\u002Fstring>\n     \u003Ckey>programarguments\u003C\u002Fkey>\n     \u003Carray>\n         \u003Cstring>\u002Fusr\u002Fbin\u002Fpython3\u003C\u002Fstring>\n         \u003Cstring>-u\u003C\u002Fstring>\n         \u003Cstring>\u002Fpath\u002Fto\u002Fguardian.py\u003C\u002Fstring>\n     \u003C\u002Farray>\n     \u003Ckey>runatload\u003C\u002Fkey>\n     \u003Ctrue\u002F>\n     \u003Ckey>keepalive\u003C\u002Fkey>\n     \u003Ctrue\u002F>\n     \u003Ckey>standardoutpath\u003C\u002Fkey>\n     \u003Cstring>\u002Fpath\u002Fto\u002Fguardian.log\u003C\u002Fstring>\n     \u003Ckey>standarderrorpath\u003C\u002Fkey>\n     \u003Cstring>\u002Fpath\u002Fto\u002Fguardian.err\u003C\u002Fstring>\n \u003C\u002Fdict>\n \u003C\u002Fplist>\n [!warning] replace  \u002Fpath\u002Fto\u002Fguardian.py  and the other example paths with absolute paths on your mac. the  -u  option is strongly recommended so python writes unbuffered output to  guardian.log  immediately. 5.2 load and activate the service make the guardian script executable:  chmod +x \u002Fpath\u002Fto\u002Fguardian.py copy the configuration file into the user’s launchagents directory:  cp com.user.appstoreagent-guardian.plist ~\u002Flibrary\u002Flaunchagents\u002F load and bootstrap the guardian with  launchctl :  launchctl bootstrap gui\u002F$(id -u) ~\u002Flibrary\u002Flaunchagents\u002Fcom.user.appstoreagent-guardian.plist verify the service status:  launchctl print gui\u002F$(id -u)\u002Fcom.user.appstoreagent-guardian if the output shows  state = running  and the expected pid, deployment succeeded. while the app store is closed,  appstoreagent  should appear as  t  (stopped) in  ps aux , with cpu usage holding at  0.0% . opening the app store immediately wakes the process so it can provide normal service. 5.3 remove the service after apple ships a later beta that fixes the schema-migration bug, remove this temporary guardian with the following commands: # stop the background service\n launchctl  bootout  gui\u002F $( id  -u ) \u002Fcom.user.appstoreagent-guardian\n \n # remove the configuration file\n rm  ~\u002Flibrary\u002Flaunchagents\u002Fcom.user.appstoreagent-guardian.plist\n html pre.shiki code .sscjk, html code.shiki .sscjk{--shiki-default:#6f42c1;--shiki-dark:#b392f0}html pre.shiki code .szznc, html code.shiki .szznc{--shiki-default:#032f62;--shiki-dark:#9ecbff}html pre.shiki code .szbvr, html code.shiki .szbvr{--shiki-default:#d73a49;--shiki-dark:#f97583}html pre.shiki code .svt8b, html code.shiki .svt8b{--shiki-default:#24292e;--shiki-dark:#e1e4e8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005cc5;--shiki-dark:#79b8ff}html pre.shiki code .sj8bj, html code.shiki .sj8bj{--shiki-default:#6a737d;--shiki-dark:#6a737d}",{"id":117,"slug":118,"title":119,"description":120,"date":121,"category":10,"tags":122,"fullText":123},"blog\u002Fen\u002Fblog\u002Fchengdu-in-3d-miniature.md","chengdu-in-3d-miniature","Chengdu in 3D Miniature","","2025-12-14",[],"chengdu in 3d miniature chengdu-in-3d-miniature  coder coder  ",{"id":125,"slug":126,"title":127,"description":128,"date":129,"category":10,"tags":130,"fullText":131},"blog\u002Fen\u002Fblog\u002Fsecurely-access-remote-synology-ssh-using-cloudflare-tunnel.md","securely-access-remote-synology-ssh-using-cloudflare-tunnel","Securely Access Remote Synology SSH Using Cloudflare Tunnel","Do you have a Synology NAS in a remote location (like y ...","2025-07-12",[],"securely access remote synology ssh using cloudflare tunnel securely-access-remote-synology-ssh-using-cloudflare-tunnel do you have a synology nas in a remote location (like y ... coder coder  do you have a synology nas in a remote location (like your home or office) and wish you could securely manage it via ssh just like you would locally, no matter where you are? this guide documents how to achieve this using cloudflare tunnel (a zero trust tunnel). advantages of using cloudflare tunnel: no public ip required : even if your synology nas is behind a complex internal network, you don’t need to worry about having a public ip address. no open ports : you don’t need to configure any port forwarding on your router. this significantly enhances security by preventing your ssh port from being exposed to malicious scans on the public internet. highly secure : all traffic is encrypted and protected through cloudflare’s global network, and you can benefit from its powerful ddos protection capabilities. stable and free : cloudflare offers a generous free plan for personal users, which is more than sufficient for remote ssh management needs. prerequisites: a synology nas : you must know its administrator account and password. your own domain name : for example,  yourdomain.com . you must be able to change this domain’s dns settings. part one: cloud-side setup on cloudflare in this part, we will create a tunnel in the cloudflare dashboard and obtain the token required for the connection. step 1.1: add your domain to cloudflare if your domain is not yet managed by cloudflare, first log in to the  cloudflare website , click “add a site,” and follow the instructions to add your domain. this usually requires you to change your domain’s name servers to the addresses provided by cloudflare in your domain registrar’s settings. step 1.2: enter the zero trust dashboard on the main cloudflare dashboard, select  zero trust  from the left-hand menu. the first time you enter, you may need to select a free plan and set up a team name. step 1.3: create a tunnel in the zero trust dashboard, select  access  ->  tunnels  from the left-hand menu. click the  create a tunnel  button. give your tunnel an easily recognizable name, such as  synology-nas , and then click  save tunnel . step 1.4: get and save the connector token after creating the tunnel, you will see a “choose your environment” page. this page provides commands to install the connector ( cloudflared ) on different operating systems. this is a very crucial step!  in the command box on the right, you will see a full installation command, similar to  cloudflared service install ey... . you only need to copy the long, random-looking string that follows  install . this is your tunnel token. please copy this token completely and save it in a safe place, as we will need it on the synology nas shortly. part two: installing and configuring the tunnel on synology nas (package center version) now, we will use the more convenient package center method to install the  cloudflared  software on your synology nas and connect it to cloudflare. step 2.1: add a third-party package source log in to your synology dsm desktop and open the  package center . click the  settings  button in the upper-right corner. in the pop-up window, select the  package sources  tab. click  add , enter  synocommunity  in the “name” field, and enter the following address in the “location” field:  https:\u002F\u002Fpackages.synocommunity.com click  ok  to save. step 2.2: install cloudflared from the package center return to the main package center interface and select  community  from the left-hand menu. in the search box in the upper-right corner, type  cloudflared  and search. find the  cloudflared  package and click  install . wait for the installation to complete. this step automatically handles user, permission, and background service configurations. step 2.3: configure the tunnel token after installation, find  cloudflared  in the package center and click  open . the package’s configuration interface will be very simple, usually with an input box prompting you to enter the  tunnel token . paste the long  token string  you copied from the cloudflare dashboard in  step 1.4  completely into this input box. click  apply  or  save . the package will automatically start in the background and use your token to connect to cloudflare’s network. step 2.4: verify the connection and point it to the ssh service go back to the cloudflare zero trust dashboard in your browser. refresh the page, and you should see your connector status display as  “connected”  on the tunnel configuration page. if so, your synology nas has successfully connected to the cloud! now, let’s tell the tunnel to forward incoming requests to the synology’s ssh service. click the  public hostnames  tab. click  add a public hostname . fill out the rule:\n subdomain : enter a subdomain you like, e.g.,  ssh  or  nas . domain : select your domain. path : leave this blank. service :\n type :  you must select  ssh . url : enter  localhost:22  (where  22  is the default port for the synology ssh service). click  save hostname . at this point, all server-side configuration is complete! part three: configuring the ssh client on your computer for the final step, we need to configure the ssh client on your own computer so it knows how to connect through the cloudflare tunnel. step 3.1: install  cloudflared  on your computer your computer also needs this tool installed to act as a “client-side proxy.” you might wonder why you need to install it on your computer if it’s already on the synology. this is because they play different roles: the  cloudflared  on your synology nas is responsible for securely “sending” the internal service to the cloud, while the  cloudflared  on your computer is responsible for securely “bringing” your ssh command to the cloud. they shake hands in the cloud to form a complete, encrypted channel. official download link :  https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fconnections\u002Fconnect-networks\u002Fdownloads\u002F please download and install it according to your operating system (windows\u002Fmacos\u002Flinux). for example, on macos, it’s recommended to use homebrew:  brew install cloudflared . step 3.2: modify your local ssh configuration file this is the key step that makes the magic happen. open your computer’s ssh configuration file with a text editor. it is usually located at  ~\u002F.ssh\u002Fconfig  (macos\u002Flinux) or  c:\\users\\yourusername\\.ssh\\config  (windows). if the file or directory does not exist, please create it manually. add  the following configuration block to the file: # connect to synology nas via cloudflare tunnel host ssh.yourdomain.com proxycommand \u002Fopt\u002Fhomebrew\u002Fbin\u002Fcloudflared access ssh --hostname %h be sure to modify the following :\n host ssh.yourdomain.com : replace  ssh.yourdomain.com  here with the  full hostname  you set up in  step 2.4 . \u002Fopt\u002Fhomebrew\u002Fbin\u002Fcloudflared : replace this with the  actual installation path  of  cloudflared  on your computer. you can find it by typing  which cloudflared  (macos\u002Flinux) or  where.exe cloudflared  (windows) in your terminal. part four: time to connect! all configurations are complete! now, no matter where you are, just open your computer’s terminal and type the familiar ssh command: ssh  [your_synology_username]@ssh.yourdomain.com\n (please replace  ssh.yourdomain.com  with your own hostname) you will find that the system prompts you for your password as usual. after successful authentication, you have successfully logged into your remote synology nas! conclusion and troubleshooting congratulations! you have successfully built an extremely secure and convenient path back to your nas. q: what should i do if the connection times out or fails?  a: first, go back to the cloudflare zero trust tunnel management page and confirm that your tunnel connector has a green “connected” status. if not, try restarting the cloudflared package in the synology package center. if the status is normal but you still can’t connect, carefully check that the hostname and  proxycommand  path in your local  .ssh\u002Fconfig  file are completely correct. q: i get a  classic tunnels have been deprecated  error when connecting via ssh?  a: this is because the  proxycommand  in your ssh config file is outdated. make sure you are using  cloudflared access ssh --hostname %h  and not the old  cloudflared tunnel ...  command. q: when using  sudo , it fails even with the correct password?  a: this is likely due to a mismatch between your local computer’s keyboard layout and the remote server’s layout, causing special characters (like  @ ,  ! ,  # ) to be entered incorrectly. you can use an “echo test” to verify or temporarily change your password to something simpler to resolve this. html pre.shiki code .sscjk, html code.shiki .sscjk{--shiki-default:#6f42c1;--shiki-dark:#b392f0}html pre.shiki code .svt8b, html code.shiki .svt8b{--shiki-default:#24292e;--shiki-dark:#e1e4e8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"id":133,"slug":134,"title":135,"description":136,"date":137,"category":102,"tags":138,"fullText":139},"blog\u002Fen\u002Fblog\u002Fsource-note-ian-johnsons-foreword-to-faithful-disobedience.md","source-note-ian-johnsons-foreword-to-faithful-disobedience","Source Note: Ian Johnson’s Foreword to Faithful Disobedience","This page accompanies my Chinese translation of Ian Joh ...","2025-04-10",[],"source note: ian johnson’s foreword to faithful disobedience source-note-ian-johnsons-foreword-to-faithful-disobedience this page accompanies my chinese translation of ian joh ... editor editor  this page accompanies my chinese translation of ian johnson’s foreword to  faithful disobedience: writings on church and state from a chinese house church movement . the original english text is copyrighted and is not reproduced here. please consult the  published book  for the original foreword. about the author:  ian johnson’s official website .",{"id":141,"slug":142,"title":143,"description":144,"date":145,"category":146,"tags":147,"fullText":148},"blog\u002Fen\u002Fblog\u002Fremembering-my-mother-in-hope.md","remembering-my-mother-in-hope","Remembering My Mother in Hope","While I was still in a meeting, I received a call from ...","2025-02-14","christian",[],"remembering my mother in hope remembering-my-mother-in-hope while i was still in a meeting, i received a call from ... christian christian  while i was still in a meeting, i received a call from my younger brother telling me our mother had passed away. i did not expect it to happen so quickly. during the spring festival, we had been in chengdu. while video chatting with mother, she seemed perfectly fine. i hastily booked a ticket and returned to my hometown in shandong. my mother’s name was he naixiang; she and my father were from the same village. the village had a beautiful name—xilou (west tower). however, its poetic name did not come from romantic imagery like “moonlight bathing the west tower.” instead, legend says it originated from a landlord’s tower or blockhouse built by villagers with the surname he, hence initially called hejia lou (he family tower). later, some villagers moved eastward, creating donglou (east tower), and the original settlement became xilou. the tower itself disappeared long ago, yet the area is still colloquially known as “lou di” (tower bottom). my mother was born in this area called lou di. my maternal grandmother passed away very early; mother was only two or three years old at the time. grandfather raised her alone, and their life was very hard. life was difficult for most families, let alone theirs. later, mother married my father from the same village. their life was tough initially. eventually, my father started driving a tractor, later taking out loans to buy another tractor for transportation, and their living conditions gradually improved. good days did not last. in 1987, my father died in an accident; mother was only 35. thinking about it now, as a man in my forties, i can only imagine how painfully she endured that period. perhaps since then, her asthma became severe. later, my stepfather married my mother, moving into our home to help carry the family burden. my mother first had a little sister, who passed away before reaching six months. then my younger brother was born. from junior high school onward, i lived at school, seldom staying home. holidays in junior high were somewhat frequent, but in high school, i could only go home once a week, just for half a day. my memories of mother are fragmented. as a child, i frequently asked about my birth. she told me when pregnant with me, my sister was not yet three, making me an illegal birth under the one-child policy. thus, she ran away, hiding at her aunt’s home. i no longer recall those details clearly. but these stories made watching shows like “guerrilla against birth control” painful rather than comedic. hiding with fear and anxiety, how could this be humorous? some painful memories remain vividly etched. one year, mother’s aunt came to visit and handed me ten yuan. i was in elementary school and had never seen so much money. after sending her off, i immediately headed to school with the ten yuan. mother chased me for nearly two kilometers and took the money back. recalling this incident now fills me with both sorrow and humor; mother was still healthy back then. mother had limited literacy; her teaching was simple yet practical. our surname “he” was widespread in the village, and due to her low seniority, nearly everyone we met outside had to be addressed as “uncle,” “aunt,” or “grandparent.” mother instructed us to respect elders, greeting everyone politely, regardless of age. in junior and senior high school, she encouraged me to study diligently; in university, to make good friends and avoid trouble; when i began working, to cooperate well with colleagues; when i married, she advised me to be gentle and kind. i rarely responded beyond agreeing. conversations between mother and me were limited. her world consisted of neighbors and relatives; my life outside left me unfamiliar with these details. likewise, my work and social circles were beyond her grasp. each time i returned, mostly she spoke and i listened. i knew she cared deeply, and all i could say was, “i’m fine, don’t worry.” for over a decade, mother’s health was frail. asthma deteriorated into severe pulmonary heart disease. my stepfather, brother, and sister cared for her tirelessly. born in 1952, according to our local age reckoning, she would be 74 this year. without their painstaking care, she likely would not have survived these additional years. in august 2022, mother’s condition worsened again. hospitalized in rizhao people’s hospital, her prognosis seemed bleak. with strict pandemic restrictions in place, it was difficult for me to enter the hospital. when i finally saw her, she still recognized me. during her hospitalization, my wife shared joyful news of her pregnancy, which i told mother. perhaps coincidentally, mother pulled through. the night before discharge, i stayed at shuqi’s home; their child k had just been born. they even lent me their car to transport mother back to wulian from rizhao. on that occasion, i once again shared the gospel with her, leading her in the prayer of acceptance, which she repeated after me word by word. “dear jesus, i acknowledge i am a sinner and need you. you sacrificed yourself on the cross for me, saving my life. i repent and desire eternal life. in jesus’ name, amen.” i encouraged her to pray to jesus in every difficult situation, simply saying, “jesus, save me.” i assured her we would meet again in heaven one day. but i knew nothing about local churches. she had no subsequent pastoral care, follow-up, or baptism. whenever i returned, i would only remind her of our hope and final destination. when mother passed away, i contemplated arranging a christian funeral through rizhao’s church. but upon returning, i found my brother and sister had already made arrangements. out of deep respect for them and immense cultural pressure, i complied with their wishes. yet i hold this hope firmly in my heart—i believe mother confessed with her mouth, believed in her heart, and was thus saved. west of the village lies a ridge. the day after the burial, the weather was clear. i captured the sunset’s glow from the rooftop. seeing the sun still hanging above the western ridge, i drove quickly, hoping to catch one more photo. yet, within mere minutes, by the time i arrived, the sun had already vanished. as a child, i gazed at the mountains in the east and ridges in the west, wondering what lay beyond. once i walked eastward to kunshan mountain, though never reached its peak. westward, i traveled as far as mantangyu village—my paternal aunt’s home and the ancestral place of an elder brother from our church in chengdu. seeking a broader world, i chose sichuan university in chengdu for college, nearly the farthest option available, requiring a two-to-three-day train journey. nearly thirty years have passed; i’ve traveled extensively and experienced much. yet unlike my wife, who dearly loves her hometown harbin, i harbor less attachment to any specific place. i care deeply only for people. wherever the ones i love reside, there my heart calls home. even if they lived on mars, i would regard mars as my hometown. my sister said that in recent bedridden years, mother often gazed outward through the window, perhaps yearning for a walk, perhaps awaiting visitors. i feel profound regret for not spending more time with her, sympathizing deeply with her soul trapped in a fading body. now, mother rests somewhere unknown to me. yet i am certain her name is inscribed in the book of life, and one day, surely, we will reunite. in memory of my mother, he naixiang (may 14, 1952 – february 8, 2025).",{"id":150,"slug":151,"title":152,"description":153,"date":154,"category":146,"tags":155,"fullText":156},"blog\u002Fen\u002Fblog\u002Fmy-testimony-of-faith-in-christ.md","my-testimony-of-faith-in-christ","My Testimony of Faith in Christ","I was born in a rural area of Shandong. During my child ...","2025-02-02",[],"my testimony of faith in christ my-testimony-of-faith-in-christ i was born in a rural area of shandong. during my child ... christian christian  i was born in a rural area of shandong. during my childhood, until i went to elementary school, we did not have electricity. what left a deep impression on me was that in the summer nights, people liked to cool off in the grain fields. i saw many starry skies there and heard many ghost stories. among them were the famous “ghost hitting the wall” (a phenomenon where a person is inexplicably trapped, walking in circles and continually ending up back where they started, as though guided by an unseen force) and various ghost tales from  liaozhai ( a collection of ancient chinese ghost stories) . as a result, i was too scared to walk alone at night when i was young, always afraid of ghosts. the story of my father’s death in the countryside, there are people who are said to be able to “communicate with spirits,” usually middle-aged or older women, whom we call “shen pozi” (spiritual mediums). when someone in the family falls ill or something bad happens, they often seek the help of these mediums. in march 1987, my father died in a tractor accident. on the third day after his death, a woman, my aunt, who was also a “shen pozi,” came to our home, suddenly collapsed to the ground, and started speaking to my mother. her tone and the things she said sounded exactly like my father, and she spoke about many things only my parents knew. everyone said that my father’s soul had possessed her, and i was terrified. there was another time when i witnessed my uncle being possessed by a ghost. his body and arms trembled at a speed far beyond what a normal person could do. it terrified me deeply. therefore, from a very young age, i realized that there was another realm, the spiritual world, beyond what i could see with my eyes. these events were kept inside me, and i always tried to seek an explanation. my scientific explanation when i went to university, i took a first-year course called  modern technology , which introduced the concept of entropy. i tried to use scientific principles to explain the phenomenon of ghost possession. i believed that each person has an energy field emitting signals, like a television tower. when the tower loses power, its signals can still linger, and if these signals are picked up by someone else, they might cause a reaction. ghost possession, in my view, could occur when a deceased person’s energy is received by someone else, resulting in the effect of possession. i felt good about my explanation; it seemed logical. the paranormal event in 2004 however, a few years after i graduated from university, i had an experience where i saw a ghost. in the fall and winter of 2004, for a period of time, every night when i lay in bed and closed my eyes, i could feel a dark shadow at the foot of my bed. when i opened my eyes, i saw nothing. the feeling was very real, and it terrified me; i couldn’t sleep the entire night. i worried that it might be a mental issue, so i inquired and heard that a philosophy professor who had just returned from france, studying under a master of psychoanalysis, had opened a clinic at sichuan university. i contacted him and went. this professor’s clinic was located in the faculty dormitory area of sichuan university, and there was a reclining chair in the room that could be adjusted to any position. the process had no set procedure—he just let me talk, whatever i wanted to say, without offering any feedback. after i finished speaking, he would simply tell me to come again next time, charging fifty yuan per session. on the third visit, i arrived on time, but the professor opened the door and said my time was up. he asked me to pay another fifty yuan. i paid, feeling resentful, and decided not to return. when i was in college, my dorm was on the same floor as the philosophy department, so i was familiar with many of the philosophy students. many of my friends were preparing for graduate school, so i went to ask them for advice. one of them, a buddhist, said that reciting the  diamond sutra  would help calm the situation. so, i started reciting: “thus i have heard. at one time, the buddha was staying in the country of shravasti…” but even though i recited it, the situation did not improve. bible study there was a graduate student in the philosophy department, named wang, who was studying christianity. previously, a korean student had preached the gospel to me, but i didn’t feel anything. one day, while having a meal with wang, i asked him if the christian god could control chinese ghosts. he didn’t answer directly but shared many testimonies of christians driving away ghosts and invited me to a bible study held at an office in the campus every week. i went and started attending the study, and through it, i learned that there is one god, and indeed only one god. around the same time, a debate between a christian apologist gideon ( 基甸) and the scientist fang zhouzi (方舟子) was published in  new threads  (a chinese publication), and besides attending bible study weekly, i also watched their debates daily. i started seeing the flaws in evolutionary theory from a scientific perspective and tried to find the evidence for god’s existence, which shattered my previous “scientific view.” there was one example that i still remember vividly: we say that cameras are designed based on the principle of how the human eye works. yet, while we believe a camera must be designed and created by someone, the human eye, which is far more sophisticated than a camera, doesn’t need any design—it naturally forms in nature. this is very unscientific. before long, i could no longer see that shadow at the foot of my bed, and my ghostly encounters problem were over. quitting smoking i started smoking after graduating from high school, smoking heavily—about three packs every two days. my ex-girlfriend also wanted me to quit, and i wanted to as well. i tried to quit eight or nine times, but it was always very difficult, with my longest period being a month. one time, after bible study, i went downstairs and lit a cigarette. a brother saw me smoking and said, “brother ye, your body is the temple of the holy spirit. how can you burn fire in the temple?” i felt deeply ashamed and decided to quit smoking before my baptism, asking others to pray for me. one day, i was in my office, looking at a website called  chinese   christian life web  (which still exists today, cclw.net). the site had a story about a christian who wanted to quit drinking. he threw away all the alcohol he had collected. at that moment, i seemed to hear a voice, or maybe it wasn’t a voice, but an awareness or command that said, “throw the cigarettes on your desk into the trash can.” i did as instructed. it was a very miraculous experience. from that day on, whenever i smelled cigarette smoke, i felt disgusted and had no desire to smoke. twenty years have passed now, and while i may occasionally smoke a few cigarettes to accompany someone, i no longer have a craving. i generally don’t urge others to quit smoking because i know it’s really hard, and for me, it was god’s grace. he helped me quit in a miraculous way, so i don’t feel comfortable asking others to quit. i pray that god will help those brothers bound by nicotine addiction and that he may personally assist them. baptism 2005-03-27 on march 27, 2005, easter, i was baptized in the fuhe river upstream from sandao yan and officially became a christian. this march marks exactly twenty years. over these years, i’ve encountered many events—some that require rational understanding and others that defy explanation and must be accepted in faith. there have also been times when i doubted god, but through my experience of faith and the wonderful miracles he has given me, these graces have confirmed my belief and i no longer waver between faith and doubt. my testimony may not be very rational, and it may not align with the style of early rain covenant church (ercc). but god’s way of choosing people is wondrous, and everyone’s path is different. my path seems to be—between science and superstition, fear of ghosts led me to become a disciple of jesus. thanks be to god for his selection, glory be to him forever.",{"id":158,"slug":159,"title":160,"description":161,"date":162,"category":163,"tags":164,"fullText":165},"blog\u002Fen\u002Fblog\u002Fmy-son-ye-jiale.md","my-son-ye-jiale","My son Ye Jiale","March 15th marks the birthday of my son, Ye Jiale. If h ...","2023-03-31","father",[],"my son ye jiale my-son-ye-jiale march 15th marks the birthday of my son, ye jiale. if h ... father father  march 15th marks the birthday of my son, ye jiale. if he were still alive, he would have turned seven years old. pregnancy in july 2015, my wife was found to be pregnant. in early 2016, while i was at work one morning, i received a call from my wife informing me that the hospital had detected a problem of the baby with the fetal heart’s aortic valve during a check-up. at that time, she was already seven months pregnant. later, we went to anzhen hospital in beijing, where the issue was diagnosed. at that time, my wife was hesitant about whether or not to have the child. i encouraged her and said that the sovereignty over the child belonges to god, not us. what god gives, god will take care of. if we reject the child, the guilt will fall upon us. so we encouraged and supported each other to welcome the birth of our child. we named him ye jiale, which means “may he be rewarded by god for his joy” in chinese. birth just two hours after he was born, we had to transfer him to another hospital because the one where we gave birth didn’t have an icu. we consulted some pediatric experts and found that during the newborn stage, there was no intervention available for aortic valve stenosis. however, the hospital was afraid of taking responsibility and refused to keep him. with the accompaniment of pastor li xiangxue and teacher li xiaodong from our church, i left the hospital carrying ye jiale. we ran halfway across beijing and eventually decided to take him home. it was a difficult decision, but it was the best one for him because subjecting a newborn to meaningless treatments and separating him from his parents would have been cruel. treatment during that time, he also went through a relatively long period of jaundice. later, we admitted him to peking university hospital where the doctors issued a critical illness notice. one day, while we were registering for his hospital stay, i accidentally pushed him into a catholic church, where we took a photo together and prayed. after some time, he miraculously recovered, and we were happy that the doctor’s diagnosis was wrong. joy when our baby was 100 days old, we planned a diy photo shoot. in the summer, we went back to grandpa and grandma’s house, took a walk together by the songhua river, and also visited the sophia church. in the autumn, we went on a barbecue and autumn outing with brothers and sisters from the church. ye jiale and i often had a lot of interactions. i just found out that he has a slight “lazy eye,” but so what? when he looks into my eyes, my heart melts. spring has come again in the blink of an eye, and on march 15th, his birthday, we took him to buy a toy car, played at chaoyang park, and had a birthday meal together. admission to hospital. finally, not long after his first birthday, due to a minor cold, he had difficulty breathing and was admitted to the children’s hospital. the severity of his condition far exceeded our imagination. we had previously envisioned surgery for him when he was a few years old, but this time, the doctor quickly gave us a critical illness notice. on march 29th, the doctor said he had to be transferred to the pediatric icu, and we saw him cry bitterly when he left us, which broke our hearts. but that was not the most desperate moment yet. despair in less than half an hour, the icu doctor called us for a meeting. the doctor said that now all treatments were meaningless, and hoped that we could take him home. they even suggested preparing a few bags of oxygen for us to use on the way home. if he stopped breathing on the way, we could go to a nearby hospital to get a death certificate. we were grateful for the doctor’s decision, and didn’t want him to walk the rest of his life alone in the hospital. this was the longest road i had ever walked. i drove in front, while my wife held him in the back seat, crying and shouting his name, trying to keep him conscious. at the same time, we called all of our relatives and church brothers and sisters to come and say goodbye to him. that night, all of our relatives gathered. we asked the pastor to baptize him. the moment of farewell had finally arrived. leaving on march 30, 2017, my son stopped breathing at home and ended his labor. that day, god gave me three marks of comfort and hope. first, at the moment of lele’s passing, i remembered two occasions when he often cried and refused to sleep at night, and i treated him poorly because of my exhaustion, and even spanked him. i told him, “daddy’s attitude was not good, and i hit you. i’m sorry. please forgive daddy.” his breathing was rapid and heavy at the time, but he responded with a loud “yes.” my child, ye jiale, really forgave me. second, after he stopped breathing, i went to his room and saw that his mouth was upturned with a smile. third, on that day, god spoke to us through reading the bible, and it became our greatest comfort. truly, i say to you, unless you turn and become like children, you will never enter the kingdom of heaven. whoever humbles himself like this child is the greatest in the kingdom of heaven. (matthew 18:3-4 esv) farewell on april 1st, 2017, we held a memorial service for ye jiale at our church in beijing. many people came together to bid him farewell. thank you for loving me. going to heaven is not a permanent goodbye. our heavenly father loves you, and if you believe in jesus, we will see each other again. \nye jiale \n2016.3.15-2017.3.30 someone asked us, do we regret giving birth to him? no, we don’t regret it. we are especially grateful that lele brought us 1 year and 15 days of joy. the length of life, whether it’s a day, a year, or a hundred years, is just a moment in eternity. the bible says, “you do not even know what will happen tomorrow. what is your life? you are a mist that appears for a little while and then vanishes.” the world will eventually forget the name of lele, but his name is written in the book of life. as parents, isn’t our lifelong effort to bring our children before god and give them eternal life? on christmas day of 2016, we wrote him a card, hoping that he would live well for the glory of the lord. now that he’s no longer on this earth, may the glory of god be upon him. in chengdu do we miss him? yes, we do. every day. is it hard? of course it is. sometimes we cry when we look at his pictures and videos. are there moments of joy? yes, there are. we find comfort in knowing that he is safe in god’s hands, and that he is doing better than we could ever imagine. after we came to chengdu from beijing, the experience of ye jiale also helped many families who lost their children, such as the family of yangbiao and xiaolan, who lost their son zimi, and the family of zhongge and hailing, who lost their son li zhuoqian. on the memorial service of brother li zhuoqian, i wrote the following prayer: … my son, ye jiale, was my helper. in the past, my flesh was heavy and i was attached to earthly things, and did not long for the kingdom of god. after my son left, whenever i think of him, i feel that i should serve lord more, and i hope that through my service, god’s kingdom will come quickly.。  for the world, the greatest success in one’s life is to live for a few decades, at most a hundred years. but for a person in christ, the greatest success in life is to be able to go to heaven and bring others to heaven. now, these two children in jesus have achieved it… by the grace of jesus, one day, we will meet them in heaven. i look forward to singing praises and serving together with them in heaven. glory be to our father god forever and ever. in jesus’ name, amen. afterwords on march 30th, 2023, exactly six years after the passing of ye jiale, god’s grace has allowed us to give birth to a younger brother. we have named him ye jiaxin(叶嘉信) – in the hope that he will receive god’s reward for his faith.",{"id":167,"slug":168,"title":169,"description":170,"date":171,"category":172,"tags":173,"fullText":174},"blog\u002Fen\u002Fblog\u002Fmy-personal-history-with-television-media.md","my-personal-history-with-television-media","My Personal History with Television Media","After I came to Chengdu, I discovered that many brother ...","2022-10-04","technician",[],"my personal history with television media my-personal-history-with-television-media after i came to chengdu, i discovered that many brother ... technician technician  after i came to chengdu, i discovered that many brothers and sisters’ families did not have tvs installed in their homes for the sake of their children’s education. this was quite surprising to me, as i felt differently. ever since i went to elementary school, i have liked watching tv after watching tv shows such as “ journey to the west ” and “ ikkyū-san “. black and white tv i remember that there were a total of two or three tvs in my village. when watching “journey to the west”, a yard was filled with dozens or hundreds of people. in reality, without amplification, the sound was faint. from over ten meters away, you couldn’t make out details on the small 14-inch screen. what i loved was the atmosphere; what i yearned for was a glimpse into a larger world. the scene of watching tv in the movie “hello li huanying” color tv in the late 1980s, my stepfather brought a 14-inch color tv produced by sichuan changhong factory, which finally ended the history of going to other people’s homes to watch tv. this type of television is terrestrial television, which is transmitted wirelessly and requires an indoor antenna or an outdoor antenna. this tv has 8 buttons for switching channels. the right side of the button can be opened, and the signal and color can be fine-tuned inside. i have been living on campus since i was in junior high school. i come back once or twice a week. when it was time to leave, i felt reluctant to part with the tv. i’d often linger to watch shandong tv’s afternoon ‘advertising and literature’ segment before heading back to school. satellite tv i didn’t watch tv in high school, and i watched videos and movies in college. in 2005, i went to work in beijing and became obsessed with satellite tv. at that time, i lived in the mingguang beili community next to the jimen bridge on the north third ring road. i had a balcony facing south, and the headquarters of china university of political science and law was downstairs opposite. on a balcony less than two square meters, i began my journey into satellite tv enthusiasm. an antenna supported by an electric fan stand, the highest point is the tuner the main satellite receiver is dm500s. i forgot what model of the machine i used before. many satellite tvs are not free and require a subscription card. the subscribe card is very expensive. some subscribe cards on a satellite will cost about several hundreds dollars. in my country of piracy, they came up with a plan. just buy a genuine card, put it on a server, and then all receivers connected to the internet to read the account information on the genuine card. with this small dish antenna, i could probably receive signals from a few satellites. but i mainly receive programs on the asia-pacific 5c satellite at 138 degrees. on this satellite, there are several channels of bbc, cnn, hbo, ctitv, ebc, phoenix tv, national geographic, as well as cctv. what i often watch is a gospel tv station in taiwan – goodtv. there is a christian talk show “true love blog” that i often watch, and it is for some christians to share their testimony. one episode featured an interview with a christian named jiang ximing, titled ‘rivers in the desert’. jiang played a live poem of his own creation (the video starts at 45 minutes and 11 seconds), and i still remember it now: no longer go with the flow from now on, i will walk with the lord, no longer go with the flow, i will turn back now, please love me, and no longer go with the flow \nlost, i didn’t know to turn back; jesus pleaded for me. henceforth, the prodigal returned; jesus still loves me. true love blog” hosted by li jingyu the station also broadcasts many preaching programs, such as “joel osteen” ( https:\u002F\u002Fwww.joelosteen.com\u002F  ). i later realized that this is the standard prosperity preaching exactly. then why not use youtube? youtube was only established in 2005, and there are not many program sources then. maige box in 2012, an iptv box called “maige tv” became popular. i use its service from 1st generation to 3rd generation. its general method is: collect some satellite tv or cable tv signal sources in hong kong, taiwan or somewhere in the mainland china, and then broadcast it through video streaming. about one or two hundred tv stations can be received, including various tv stations in europe, america, hong kong, taiwan and mainland china. therefore, this box was used not only in mainland china, but also by chinese tv lovers all over the world. i am debugging the machine, the white box is the first generation of maige box. there are many program sources, the lower right is the second generation of maige box. in the second half of 2014, after the launch of the third-generation h3d model, within a year, hong kong and the mainland began to crack down on this piracy. the server was shut down. sometimes the service was not very stable at the end of 2020, one day i suddenly received a qq message from a maige box agent i had added, and asked me if i remembered him. he had just been released from prison in those days and had been isolated from the world for five years. he was afraid that the world had forgotten him. online tv android tv was only released in 2014. it can be said that this is a set of operating systems. i bought several xiaomi boxes based on android tv, and the most impressive one is the enhanced version of xiaomi box 3. it can install google framework with root permission, thus you can install youtube in it. but it was later abandoned due to xiaomi’s censorship of user-installed software and its secret deletion. mibox s international version is a tv box launched by xiaomi for foreign markets. in addition to youtube, it has the certification of netflix and can watch netflix. i remember being excited for a while after installing netflix successfully for the first time. in 2019, using netflix for the first time this year, when recommending a tv box to a friend, i found that mibox s are not very popular anymore. google built google tv on the tv stick chromecast and launched chromecast with google tv. the price is $39.99, and the domestic price is less than 400 rmb. in addition to its beautiful appearance, the chromecast has a very beautiful interface. if you can have a us ip address, you can see this interface with many options. if it is a non-us ip, it is a very concise interface. interface when using the usa ip address. moreover, users in the united states will have built-in tv stations by pluto tv. there are probably hundreds of tv stations to broadcast. free live tv station provided by pluto tv as a fan of marvel and national geographic, i subscribe to disney+ . it has five parts of tv to watch: disney, pixar, marvel, star wars and national geographic (subject to change based on ip). disney+ is worth subscribing, although its ip requirements are very strict. disney+ interface conclusion the important role of television media is to transmit information, and access to information is a basic human right. i don’t believe it makes no difference who holds power. if mao had lived another 40 years, i likely wouldn’t have been able to watch any television programs from outside china, similar to the situation in north korea. reform and opening up gave me the opportunity to know more about the world.",{"id":176,"slug":177,"title":178,"description":179,"date":180,"category":146,"tags":181,"fullText":182},"blog\u002Fen\u002Fblog\u002Fformat-specification-for-chinese-sermon-documents-first-draft.md","format-specification-for-chinese-sermon-documents-first-draft","Format Specification for Chinese Sermon Documents (First Draft)","In the past few years, I have done a few sermon transcr ...","2022-09-08",[],"format specification for chinese sermon documents (first draft) format-specification-for-chinese-sermon-documents-first-draft in the past few years, i have done a few sermon transcr ... christian christian  in the past few years, i have done a few sermon transcriptions. during the process, i found that there is no complete specification of chinese sermons transcription on the internet. i tried to make some norms myself and discuss them with brothers and sisters. title and article structure this part of the specification takes the use of markdwon as an example, and the same is true for word documents. hierarchy the title is divided into four levels - 一级标题：文章的标题 三级标题：文章主要部分的大标题 四级标题：三级标题下面一级的小标题 五级标题：四级标题下面某一方面的小标题 here is an example # 渴望完美的带领与顺服 引言 超然带领与顺服 通常带领与顺服 1、上帝子民的合一与前行（10.1-7） 1）子民的合一 2）子民的前行 2、上帝子民的争战与敬拜 （10:8-10） 结论 the rendering result of the above example is as follows: 渴望完美的带领与顺服 引言 超然带领与顺服 通常带领与顺服 1、上帝子民的合一与前行（10.1-7） 1）子民的合一 2）子民的前行 2、上帝子民的争战与敬拜 （10:8-10） 结论 why is starting with a secondary heading deprecated? in the default font size rendering of each editor, the font size of the first-level heading is the largest, and the font size of the following headings becomes smaller in turn. heading no. 2 is used in the main text, and is appropriate if the article is very long, such as a longer paper or book. but in a sermon article, the amounts of words generally does not exceed 20,000 words. the main structure of the article generally does not exceed the third level, so that the main text starts with the second level title, and the font size is too large. therefore, it is recommended to start with heading3. in principle use headings in the body to avoid isolation, that is, there cannot be only one heading at the same level. example: in the article structure below,  二级标题 a  only one is included  三级标题  and can be completely omitted  三级标题 a . ## 二级标题 a 三级标题 a 二级标题 b subordinate headings do not repeat the name of the previous heading example: in the following article structure, the second-level title has the same name as the subordinate third-level title, and it is recommended to avoid it. ## 概述 概述 try to avoid the following situations subordinate headings do not have to repeat the parent heading ## 概述 概述-第一点 概述-第二点",{"id":184,"slug":185,"title":186,"description":187,"date":188,"category":146,"tags":189,"fullText":190},"blog\u002Fen\u002Fblog\u002Fhow-a-church-organize-a-wedding.md","how-a-church-organize-a-wedding","How a church organize a wedding","There is nothing wrong with saying that a couple is the star of a wedding. But for a Christian, the primary purpose of life is to glorify God, not to mention your wedding. Essentially, a wedding is the worship of God through the union of a couple. That’s why we call it a “wedding service”, or “wedding” for short.","2021-08-22",[],"how a church organize a wedding how-a-church-organize-a-wedding there is nothing wrong with saying that a couple is the star of a wedding. but for a christian, the primary purpose of life is to glorify god, not to mention your wedding. essentially, a wedding is the worship of god through the union of a couple. that’s why we call it a “wedding service”, or “wedding” for short. christian christian  marriage is a worship there is nothing wrong with saying that a couple is the star of a wedding. but for a christian, the primary purpose of life is to glorify god, not to mention your wedding. essentially, a wedding is the worship of god through the union of a couple. that’s why we call it a “wedding service”, or “wedding” for short. pre-marriage counseling the secular world believes that marriage is something that does not have to be learned, or at least can be learned on its own. however, most christians and their churches believe that marriage requires bible-based teaching. in my church, for example, it usually takes eight sessions of premarital counseling lasting 3-6 months to successfully complete before a wedding can take place wedding place a congregation is the preferred venue for weddings. however, for a couple in a church that does not have a synagogue or has lost one, the first thing that needs to be determined for a wedding is the venue. the following factors need to be considered in determining the venue. the number of people attending the ceremony. estimate the number of relatives, friends and church members who will come to the ceremony to determine the number of seats. budget. in the case of a congregation, the cost of the venue is not a consideration. however, in the case of no synagogue, the venue needs to be paid by the couple and needs to be mutually agreed upon by both parties according to the actual situation. venue style. each person’s preferred wedding style is different, and with an appropriate budget, both parties can choose a style that suits them, such as indoor, outdoor; central or suburban with different venue styles. layout style. the following are some of the venues available for reference. different star hotel ballroom \npark outdoor \nsmall museums \nlive house \nshowrooms in large shopping malls \nprofessional exhibition venues timing in secular weddings and wedding receptions throughout china, there are different customs and time periods for choosing the time of the wedding. our churches generally hold weddings in the afternoon, and it is generally recommended to start within the time period of 14:00 to 15:00 and finish by 16:30. the exact time can be worked out by both parties according to the actual situation. some of the benefits of holding a wedding in the afternoon are as follows. no need to get up too early, including the couple, the ministry participants and the people watching the ceremony. no banquet for church weddings; possible delays in the morning when the ceremony is held will delay the meal for everyone. the venue requires a lot of flowers to set up; if held in the morning, it would need to be all set up the night before and the flowers may not be fresh. invitation list after the venue and time is indeed good, the couple needs to be determined by the invitation candidates, including wedding process faq when is the right time to prepare for the wedding? if you have started marriage assistance, you can start to prepare some preparations. what are the fees paid by the newcomer? in the absence of a synagogue, all expenses related to the wedding need to be paid by the newcomer, including but not limited to: venue fees, decoration costs, required materials, refreshments, etc.; if the church is still available, there is no venue fee. the service of the church is limited to manpower. if the fee is advanced, the consent of the newcomer is required. why don’t you give gifts and newcomers treat? the primary purpose of the wedding is to witness the glory of god. the wedding of the friends is a blessing to the newlyweds and a worship to god. it is the most important thing for newcomers to get everyone’s blessings. from a practical point of view, in a larger church, if there are more weddings a year, giving gifts will impose a financial burden on friends, and attending a wedding will lose the meaning of blessing. if you are both a friend and a good friend of a newcomer, gift-giving is a category of private intercourse, which should be held before (after) of the wedding. however, if the newlywed holds some positions in the church, they must abide by the relevant rules for receiving gifts in the church. what if a friend sends gifts at the wedding? when many unbelieving relatives and friends attend the wedding, it may involve gift-giving situations. the newlyweds should designate 1-2 relatives and friends to record and keep the gifts received.",{"id":192,"slug":193,"title":194,"description":195,"date":196,"category":146,"tags":197,"fullText":198},"blog\u002Fen\u002Fblog\u002Fremembering-pastor-and-elder.md","remembering-pastor-and-elder","Remembering my Pastor and Elder","Next to the Jiangxin Building, the waves on the Jinjian ...","2021-06-01",[],"remembering my pastor and elder remembering-pastor-and-elder next to the jiangxin building, the waves on the jinjian ... christian christian  next to the jiangxin building, the waves on the jinjiang river are rippling. it has been almost three years since the farewell in the winter of 2018. in the fall of 2017, i moved from beijing to live in chengdu, while my work required me to travel between beijing and chengdu, delaying several transfer studies. it wasn’t until june of the following year that i transferred to earlyrain covenant church. after serving for a long time, i became very familiar with the brothers and sisters, as if i had known them for many years. however, i generally avoided the pastors and elders. i was afraid that if they had any gift that could read my mind since i am a sinner, wouldn’t it be troublesome? by september, we knew that the new church was ready. i went to the sixth floor and saw that the new church was in a mess. elder qin, who manages the synagogue, was busy moving around inside. i went to ask him to assign something to do, and he said, “you install the tvs”. elder qin is not tall, but has a good figure, fair skin, good looks, and always has a smile on his face even when he is busy. that day i worked with him until the dark night, that was our first acquaintance. the pastor has a round face, he writes poetry and articles well, and he is very easy-going and joyful. his sermons were like the flowing water of a mountain river, sometimes trickling, sometimes surging. i first knew him from the internet and only met him when i arrived in chengdu. for more than a year, i sat in the front row of the church because i was afraid of the noise in the back that would interfere with the sermon. i often smiled at him after the meeting, shook his hand and greet each other. until the december 9th persecution, there was no serious talk between us. after that, i could only watch his photos and videos and listen to his sermons on the salvation of jesus christ to remember him. oh! i often tell my brothers, if you love someone, you must say it early. alas. the ancients said, “what you encounter in life is actually a divine arrangement.” just as paul was taken to the city of rome, and john was imprisoned on the island of patmos, how could they make their own decisions? when my brother is locked up for four years and my pastor for nine years, in order to test them, and what the lord has done will be accomplished, what can i do ? when i couldn’t sleep, i remembered that i was a coward and a coward to make a living. what hope can i have when i feel so much sorrow? but the bible says, “lord, what am i waiting for now? my hope is in you! deliver me from all my transgressions, and do not put me to the shame of fools.” god has mercy on his people, and though we are scattered to the winds, yet in jesus christ we become one. the high walls cannot stop the contact in the lord, and the mountains and seas cannot separate us. may brothers and sisters in the lord often raise their hands in prayer, saying, “holy is the lord! your glory fills the whole earth! look after their food and shelter, and protect their parents and wives and children. wipe away our tears that we miss them. hear my prayer, o lord.” this is what i want to say. written by ye, a brother who is in the lord with you, in june 2021.",{"total":200,"posts":201,"totalPages":200},1,[202],{"id":77,"title":79,"body":203,"canonical":120,"category":10,"date":81,"description":80,"extension":327,"image":229,"meta":328,"navigation":329,"path":330,"seo":331,"slug":78,"status":332,"stem":333,"tags":334,"translationSlug":78,"__hash__":335},{"type":204,"value":205,"toc":321},"minimark",[206,215,218,221,224,230,235,238,254,261,263,267,270,291,294,313,315,318],[207,208,209,210,214],"p",{},"Today, on a whim, I asked Gemini on the web app what model it was running. Its response directly identified itself as ",[211,212,213],"strong",{},"Gemini 3.8 Flash",".",[207,216,217],{},"Curiously, the bottom-right badge still displayed \"Flash,\" while the top dropdown selector still read 3.7. When I pressed it on why the UI was out of sync, it explained the architectural reality matter-of-factly: frontend copy and cached assets hadn't updated yet, but backend request routing had already been switched over to the newer model.",[207,219,220],{},"No launch tweets, no official blog posts—a classic dark launch in production.",[222,223],"hr",{},[207,225,226],{},[227,228],"img",{"alt":120,"src":229},"\u002Fimages\u002Fposts\u002F2026\u002F09\u002Fimg-mtjvebm8351v.jpg",[231,232,234],"h3",{"id":233},"what-does-this-screenshot-reveal","What Does This Screenshot Reveal?",[207,236,237],{},"Looking at the model's self-explanation, it aligns closely with standard canary deployment practices in large-scale web services:",[239,240,241,248],"ol",{},[242,243,244,247],"li",{},[211,245,246],{},"Frontend-Backend Decoupling",": Static UI labels follow longer deploy cycles, whereas backend model routing and A\u002FB test experiments can shift dynamically on the fly.",[242,249,250,253],{},[211,251,252],{},"Progressive Rollout",": If you ask now, some sessions might still resolve to 3.7, while new chat sessions or assigned experiment cohorts route to 3.8.",[207,255,256,257,260],{},"Once again, this release targets the ",[211,258,259],{},"Flash"," tier. As the lightweight, low-latency, and cost-efficient member of the family, Flash is designed for daily automation and rapid back-and-forth tasks. Google uses Flash to deploy iterative optimizations directly into real production traffic to evaluate performance at scale.",[222,262],{},[231,264,266],{"id":265},"an-unusually-fast-release-rhythm","An Unusually Fast Release Rhythm",[207,268,269],{},"Looking back at Gemini's trajectory over the past six weeks, the velocity is unmistakably different:",[271,272,273,279,285],"ul",{},[242,274,275,278],{},[211,276,277],{},"Late July",": Gemini 3.6 Flash rolled out.",[242,280,281,284],{},[211,282,283],{},"Mid-August",": Gemini 3.7 Flash launched roughly three weeks later.",[242,286,287,290],{},[211,288,289],{},"Early September",": Gemini 3.8 Flash is already running live in canary buckets, under three weeks after 3.7.",[207,292,293],{},"Jumping two sub-versions (from 3.6 to 3.8) in just over a month highlights two broader shifts:",[239,295,296,305],{},[242,297,298,301,304],{},[211,299,300],{},"Point Releases Are Becoming Agile Sprints",[302,303],"br",{},"\nIn the early days of LLMs, a dot release (like 3.0 to 3.5) signified structural architectural shifts or substantial benchmark jumps. Today, a .x increment functions more like a bi-weekly agile sprint: refinement of alignment, localized data supplements, or targeted fixes for specific domains, shipped as soon as quality gates pass.",[242,306,307,310,312],{},[211,308,309],{},"Flash as the Innovation Proving Ground",[302,311],{},"\nCompared to compute-intensive, high-cost models like Pro or Ultra, Flash has near-zero barrier to entry and minimal latency. Google clearly favors deploying high-frequency improvements to Flash first to validate behavior against massive interactive volumes.",[222,314],{},[207,316,317],{},"For developers relying on models for daily programming, workflow automation, or accelerated research, continuous incremental tuning provides a noticeably smoother curve. You might not see dramatic leaps overnight, but under the hood, the foundation is continuously evolving.",[207,319,320],{},"Try asking your own web session what version it is running to see which canary pool you've landed in.",{"title":120,"searchDepth":322,"depth":322,"links":323},2,[324,326],{"id":233,"depth":325,"text":234},3,{"id":265,"depth":325,"text":266},"md",{},true,"\u002Fen\u002Fblog\u002Fgemini-3-8-flash-stealth-release",{"title":79,"description":80},"publish","en\u002Fblog\u002Fgemini-3-8-flash-stealth-release",[83,24,84,85],"X5hcvNvMkjvEMAcqKJrCIezLIeTs_55K5YpZ29SURU8",1790609508058]