One Inbox, Many Masks gave every product its own contact@ address inside a single Google Workspace seat. Opening the first YouTube Shorts channel for Zestimer asked the follow-on question: sign up as contact@zestimer.com , or as contact@magicparklabs.com ? Both — and which does which turns out to depend on the platform. The address that owns the account should belong to the studio. The address the…
English · 中文 English The honest origin story is smaller than the engineering: I got tired of remembering asc flags. Not the hard kind of tired — I could look them up. The kind where every release starts with re-deriving a workflow I had already invented twice, because it lived as shell history in three different repos and none of the three agreed with each other. I wanted one thing that was…
I run three products — Zestimer , Furioke , and Tefuda — plus a studio domain, magicparklabs.com . All four domains sit on a single Google Workspace seat, because Workspace charges per user , not per domain: a product needs an address, not an account. Below is the whole click path for adding one new domain, newproduct.com , so its mail lands in the inbox you already have open. You’ll work in…
English · 中文 English Tefuda is a small card game I built. It ships as a website, an iOS app, and an Android app — all three backed by the same server-verified leaderboard. The combination isn’t the hard part. The hard part is that the same ruleset has to hold in four places at once : each of the three clients runs it, and the server recomputes the score itself, trusting nothing the client…
English · 中文 English Tefuda has exactly one field a player can type free text into: sixteen characters, under the results panel, next to a button that says Post. Everything else on screen is a card. One text box. It cost two hundred lines, five languages, and an apology to a town in Lincolnshire. The Cap on the Input Is Not the Cap A name is the one thing a player writes that everybody else reads…
English · 中文 English Updated 6 August 2026. The shape below is the one I still use; the parts underneath it changed. The pipeline is now one installed program, appkit — the stage-by-stage sections have been rewritten to match, and the fastlane and NumPy versions are gone. If you want the engineering rather than the blueprint, that’s appkit: One Installed Program . App Store screenshots are…
macOS Storage settings told me I had 271 GB of “System Data.” That number made no sense. My whole life on this machine is Claude Code, xcodebuild , and adb install — I don’t hoard 4K movies, I don’t run a fleet of VMs, and I certainly can’t point at a quarter-terabyte of anything I’d call “system.” The short version: “System Data” is a…
Between January and July this year, I shipped two apps by myself. If you had told me that three years ago, I would have assumed you were describing a team. Zestimer , started in January, is an interval workout timer: a library of 212 illustrated exercises, an AI workout builder, a paste-a-YouTube-link-get-a-circuit importer, an Apple Watch app, widgets, eight languages, now at v1.3.4. Furioke ,…
This year I shipped two indie apps: Zestimer , an interval workout timer I started in January, and Furioke , a karaoke lyrics companion for learning Japanese that I started at the end of May. Different products, same person, and — it turns out — mostly the same opinions. This post is about the stack and architecture choices behind both: what I deliberately kept identical, what I deliberately made…
SwiftUI’s zoom navigation transition can look wonderful when it works: a card or thumbnail stays visually connected to the detail screen, and dismissal feels like the screen knows exactly where it came from. The failure mode is just as memorable. During the first or last frame of the transition, the source card suddenly turns black. Then, a beat later, it resolves back to the app background…
After completely reinstalling macOS, here’s how I like to set up a clean, powerful, and personalized development environment. 1. Initial macOS Configuration 🧑💻 User Account Setup Create a temporary Admin user Name it Temp Login with Temp , then: Rename your home folder from jay to Jay Open System Settings > Users & Groups Change Account Name : jay → Jay Change Home Directory : /Users/jay…
These are handy tools and tweaks that aren’t required for a clean install, but can improve workflow or handle specific tasks. 🔧 Git Utilities Revert repo to a previous commit Rebase without changing timestamps : git rebase -i --root # Change pick → edit GIT_COMMITTER_DATE = 'YYYY-MM-DDTHH:MM:SS' git commit --amend --date = 'YYYY-MM-DDTHH:MM:SS' git rebase --committer-date-is-author-date…
Learn how to set up AWS CLI for your AWS account in a few easy steps! This comprehensive guide walks you through enabling IAM Identity Center, adding a user to your AWS account, installing and configuring AWS CLI V2, and setting AWS environment variables. You’ll even get to test your AWS CLI skills by creating a role using AWS CLI V2. Follow along and become an AWS CLI pro! Enable IAM…
第一篇記錄算法的文章,來介紹下新學到的算法:Digit DP。 暴力解 題目模版一般會長的像這樣:給定區間 \([L, R]\) 和一個函數 \(f(x) \to \{\texttt{True}, \texttt{False}\}\),問在 \([L, R]\) 之間的正整數,滿足 \(f(x)\) 的數量有多少? 現在我們可以帶入一個真實的例子,在 \([L = 19, R = 9999]\) 區間,每一位數的總合為 \(k = 23\) 的數字共有幾個? 暴力解用 C++ 代碼演示如下: bool DigitSum ( int num ) { int sum = 0 ; while ( num > 0 ) { sum += num % 10 ; num /= 10 ; } return sum ; } int GetSatisfiedCount ( int l , int r ,…
遇見 Hugo 今天來談談 Hugo 環境設定時所遇到的一些問題及解決辦法。 預備環境 要開始使用 Hugo ,若您的環境跟我一樣是 macOS 的話,可以使用套件管理工具 Homebrew :在終端機輸入以下指令後,便會開始下載需要的套件。 brew install hugo 設定本地端 初始化並創建 Git 倉庫 REPO_NAME = blog hugo new site $REPO_NAME -f yaml cd $REPO_NAME git init git add . git commit -m ' $ hugo new site blog -f yaml' 使用 Git submodules 新增主題 git submodule add --depth = 1 https://github.com/adityatelange/hugo-PaperMod.git…
Swift Style Guide Updated for Swift 5.0 The goals are clarity , consistency and brevity , in that order. Clarity at the point of use. Codes should always be consistent within one data set. Pay attention to spelling and case; most frequent problems are with abbreviations. Clarity is more important than brevity. Write a documentation comment. References This guide mainly follows: Swift.org - API…
7. 觀念小叮嚀:名稱/值配對與物件 Conceptual Aside: Name/Value Pairs & Objects Name/Value Pair : A name which maps to a unique value. The name may be defined more than once, but only can have one value in any given context . That value may be more name/value pairs. JS 中的物件,單純的是 Key-Value 的關係,而物件中也可以再包含物件,像 Address 包含 Apartment 。 const Address = { Street : 'Main' , Number : 100 , Apartment : { Floor : 3 , Number…
Paper Link 現在 image to image 的 tasks 已經是當紅炸子雞,NVIDIA 這回和 MIT CSAIL 直接更上一層樓,開發出了 video to video 的轉換系統,並且能夠支援到 2K 的解析度,就讓我們來看看這篇 vid2vid 吧! 1 Introduction 建模和動態地重建視覺世界的能力對於構建 intelligent agents 是至關重要的。除了科學興趣導向外,學習連續視覺經驗在計算機視覺、機器人和計算機圖形學中有廣泛的應用。 Figure 1: Generating a photorealistic video from an input segmentation map video on Cityscapes. Top left: input. Top right: pix2pixHD . Bottom left: COVST .…
Paper Link 今天是台灣九合一縣市長選舉隔天,決定要來看一篇 1950 年,由計算機科學之父 A.M. Turing 所寫的 Computing Machinery and Intelligence。 這篇 paper 提出了電腦智能當中幾個重要的想法,數學描述不多,主要著重在理論上的描述。 圖靈測試(Turing test)是 AI 領域中,一項著名且具爭議的測試方法。這是以 Alan Turing 在 1950 第一份論文「運算機器與智能」(Computing Machinery and Intelligence)為基礎所設計的問答,目標在分辨機器是否具備人類所具有的智能(Intelligence)。 文本很長,又是 1950 年的英式英文,但我會試著去翻譯並整理這經典的 paper。 1. The Imitation Game 首先圖靈提出了一個問題: “Can…
Paper Link 1. Introduction 這篇是 Stanford 在 CVPR 2017 所發表的 PointNet,從名字中可以知道是有關處理 3D 資料的論文。全文目標就是要對點雲(point cloud)做各種分類,最關鍵的方法為: single symmetric function max pooling(解決無序性) Figure 1. Applications of PointNet. We propose a novel deep net architecture that consumes raw point cloud (set of points) without voxelization or rendering. It is a unified architecture that learns both global and local point…
Paper Link 此篇 paper 的主要目的是要解決,但送進網路 training 的 3D 資料是稀疏的(sparse),用原本的描述方式會太耗費記憶體而難以實作,因為實際上很多地方都是沒有值的,本篇 paper 重點是:使用 octree 的方法來表示高解析度的「立體圖像」,卻又不失本來「完整地」表示方式。 1. Introduction 現有的 3D 網路架構,大多會用像類似 2D pixels 的表示方示,在 2D 我們稱之為 pixel,在 3D 的話就稱之為 voxel。同理,在 2D 世界的 convolution kernel 在 3D 就會變成一個長方體,大小可能是 \(3 \times 3 \times 3\) 之類。 引述原 paper 中的描述: a dense and regular 3D voxel grid, and process this grid…