Swift Protocols and Generics, Part 1: Protocol 和其他 Type 有什麼不一樣?

這是一系列以「建構基礎概念」為目標,希望能幫助 Swift 開發者更加瞭解 protocols 和 generics 的文章。文章索引、相關資源以及較詳細的介紹,請見系列簡介

希望讀者在看到文章裡提出問題的時候(請注意 [Q] 標示),能夠一起試著解釋看看,好深化你個人的理解。

Essential Questions

如果有人問你這個問題,你會怎麼解釋?[Q]

核心問題:

Protocol 作為一個 type,和 enum, struct, class… 等等其他的 type 有什麼不一樣?

延伸問題:

在 Swift 5.6 以後,protocol type 的 variables 前面要加上 any 一字。為什麼要改成這樣?

Continue reading

Thoughts on Writing Good SRS Prompts, Part 2: Using SRS Beyond Memorization

This is the second part of my thoughts on writing good SRS prompts after reading this guide by Andy Matuschak. In part 1, I mused on what it means for a prompt to be good. One aspect of judging whether a prompt is good has to do with what we intend to learn with the prompt. That is, how good is the learning goal underlying the learning tasks defined by the prompt? But given the diversity of goals that we might have, how do we know if the spaced repetition system is the right approach to achieve them?

To be more specific, SRS is tailor-made for memorization-type learning goals. But ideally, we want to learn things way beyond remembering facts, and it would be very exciting if SRS can be an effective tool for those as well. So this time, I want to focus on the very idea of using SRS beyond memorization. Do we have any reason to believe this is a good idea? What could go wrong? While I want to express certain concerns, I’ll also make some conjectures on how we might address those concerns.

Continue reading

DrillAI 筆記:Overengineering vs. Scaffolding

最近我把以前的一個 personal project 挖出來翻新,從中得到了許多奇奇怪怪的開發經驗。趁印象仍深,做點記錄。

對軟體工程師來說,這是個老掉牙的問題:實作一個功能的時候,要先保持簡單,避免 overengineer — 過度設計?還是預先拆設出架構、抽象化,來讓以後擴充功能的時候更順暢省力?

我想,雖然對於什麼是 “clean code” 普遍有各種原則,適當的平衡應該還是要視個人自身的經驗和能力和 project 的特性來拿捏。畢竟什麼東西是容易的,或是能判斷之後一定會用上的,並沒有標準答案。我其實也沒有什麼高見可以教別人,只是遇到了兩個相似的情況,產生了點想法,把它整理出來。

Continue reading

一段黑歷史:錄製 Auto Layout 課程

YouTube Playlist Thumbnails

大約 2016 到 2018 年間內,我曾經試著開一堂 iOS Auto Layout 的線上課程。我做為 iOS 開發者的經驗有限,但依著自己的數學背景以及對教育的興趣,那時覺得自己在這方面能做點什麼。

直到現在我仍認為,Auto Layout 中等到進階的知識,在網路上過於欠缺且分散。這世上並不存在一堂我心目中的 Auto Layout 中高階課程。

我閉門錄了些影片,且把課程預定的規模縮編了幾次,但這堂課從未真正上架。在我做了最後一次縮編,覺得可以先上一版時,SwiftUI 問世。綜合一些其它因素,終於不再歹戲拖棚而停手。而這也是幾個月前的事了。

雖說是個丟臉的失敗史,但也不甘就此淡忘。最近終於有些閒,決定來為這整件事稍做紀錄。文底會提供現有影片的連結,歡迎自由取用。

Continue reading