Skip to main content


New Features

  • Recover from Trash
    • Now when you delete a Card, a Deck, or even an entire Box, they go into the Trash instead of getting deleted immediately.
    • You can open the Trash and recover the items (available in the Full Edition, not CE).
    • Items you leave in the Trash will be automatically deleted after 32 days (so you always have at least a month before they are permanently deleted.)
  • Flags for Entries
    • Similar to how you can Mark a Deck or a Card, now you can Flag any Entries.
    • Whether to mark imprecise, approximate values, or to just denote special Entries, now you have an additional tool to organize your data.


  • more consistent context menus
    • Look Up, Speak, etc.
  • more robust file operations
    • no more “don’t have pemission” errors with AccessSecuredURL


  • Side-by-Side view: multi-line text was not showing

updated 2024/03/15


Kase 4.2 will be realizing a major part of my dream that started 10 years ago...

A number is usualy not just a number. It is often a quantity associated with a unit. Without the unit, it is a figure floating in a vague dimension. But when paired with a unit, the number becomes a measurement carrying a concrete value.

Kase 4.2 helps you keep track of numbers with units.

Open letter to all numbers

Here is an open letter to all numbers:

updated 2024/03/13
  • 2024/02/02
  • 2024/02/01

4 = 4.0 + 0.1

Kase 4.0 was a huge update. It was so big that compiling the list of changes was almost as big a task as making the app itself...

Inevitably, bugs got in. Especially when we are supporting three major releases of iOS/iPadOS (15, 16, and 17), and Apple likes changing things around with little to no documentations... (e.g. SF Symbols names, hi, what are you now?[^sfs])

4.1 is what 4.0 should have been, if i had more time...


But 4.1 is much more than bug fixes. It is a very important release on its own:

(2022/04/01: updated and expanded)

NSUserDefaults → UserDefaults

In the beginning, when Cocoa was hot (circa 2001), there was already NSUserDefaults, a thoughtful API for the seemingly simple task of persisting preference settings.

Swift (since 2014) gave it a cleaner name (UserDefaults, without the NS prefix), but it also created new expectations that the plain old class was not delivering:

  • strong type checking
  • easy value types usage
  • modern Swiftness, etc.

This is where Swiftified UsersDefaults libraries come in. Here we look at a few of them:

  1. SwiftyUserDefaults: "Modern Swift API for NSUserDefaults"
  2. Defaults: "Swifty and modern UserDefaults"
  3. Foil: "A lightweight property wrapper for UserDefaults done right"

(last updated: 2022/04/26)

Kase 3 was designed for iOS1 13, and it has been updated numerous times to work well with later releases of iOS 13 and 14.

Kase 4 will be the recommended version of Kase for iOS 15 and greater. This post will document how the older Kase 3 works under iOS 15.


  1. iOS here refers to both iOS and iPadOS,

updated: 2021/01/01 [^ⓤ]

var year = 2020 2021

🎄 Merry Christmas and Happy New Year! 🙏🇺🇸

This is the 2021 new design for It should be live at 2:30 PM (Pacific Time) on this very first day of 2021.

Please pardon any rough edges for the moment...