apps
Side projects. Small, native, privacy-first. Tap cat PRIVACY.md on any of them for the full policy.
-
Timefold — On This Day
iOS
DESCRIPTION
Privacy-first iOS app that surfaces photos taken on this date in past years from your Apple Photos library. No accounts. No analytics. Everything runs on-device.
LINKS
▸ cat PRIVACY.md
last updated: January 2026
Timefold is designed with privacy as a core principle. The app does not require accounts, does not use analytics or advertising, and does not send your data to external servers.
Information We Do Not Collect
Timefold does not collect, store, transmit, or sell any personal data. Specifically:
- No user accounts are created
- No analytics or tracking frameworks are used
- No advertising or marketing SDKs are included
- No data is transmitted to external servers
Photos Access
Timefold accesses your Apple Photos library locally on your device using Apple's Photos framework.
- Photos are processed entirely on-device
- Photos are never uploaded, synced, or backed up to any servers operated by the developer
- Any sharing actions are initiated explicitly by you using Apple's system share sheet
Timefold works only with Apple Photos at this time. No third-party photo services (such as Google Photos, Facebook, or cloud storage providers) are accessed.
Optional Actions
If you choose to:
- Share a photo, it is shared using Apple's built-in sharing tools
- Delete a photo, the deletion is performed directly within your Photos library using Apple's APIs
These actions are always user-initiated.
Data Storage
Timefold does not maintain user databases or cloud storage. Any app preferences are stored locally on your device using standard iOS storage mechanisms.
Children's Privacy
Timefold does not knowingly collect any data from children. Since no data is collected, stored, or transmitted, there is no personal information to manage or disclose.
Changes to This Policy
If Timefold's functionality changes in a way that affects privacy, this policy will be updated accordingly.
Contact
If you have questions about this privacy policy or Timefold, contact me.
-
BETATimefold — On This Day
Android
DESCRIPTION
Android port of Timefold built with Kotlin + Jetpack Compose. Same privacy promise, same on-device-only design — surfaces photos and videos taken on this date in past years from your device's MediaStore. Includes a Glance home-screen widget and optional local daily reminders.
▸ cat PRIVACY.md
last updated: May 7, 2026
Timefold is built around a single privacy promise: nothing about you or your photos ever leaves your device.
What Timefold Accesses
When you grant permission, Timefold reads photo and video metadata from your device's media library (
READ_MEDIA_IMAGES,READ_MEDIA_VIDEO) so it can find media taken on this day in past years. It also reads the underlying image and video files in order to display them inside the app, generate thumbnails, and — if you choose — render a branded share image. That is the entire scope of data access.What Timefold Collects
None. Timefold has no servers. The app does not contain analytics SDKs, telemetry, crash reporting, or any other data-collection mechanism. There is no account system, no login, and no user identifier. The developer has no way of knowing who you are, what photos you have, what days you've opened the app, or whether you've used it at all.
What Timefold Transmits
None. Timefold does not connect to the internet. It has no network code other than what your device's operating system uses to load the photo library and what Android's standard share sheet uses when you explicitly tap Share. The app itself opens no sockets, makes no HTTP requests, and contacts no servers — including ours, because we don't run any.
What Timefold Shares With Third Parties
None. We have no third parties.
Permissions Explained
READ_MEDIA_IMAGES,READ_MEDIA_VIDEO— find photos and videos taken on this day in past years from your local library.READ_MEDIA_VISUAL_USER_SELECTED— honor Android 14+ "Selected photos only" mode if you grant partial access.POST_NOTIFICATIONS— show the optional "Daily Reminder" if you enable it in Settings. Notifications are scheduled and rendered locally; no server is involved.
Permissions can be revoked at any time in Settings → Apps → Timefold → Permissions.
Notifications
If you enable Daily Reminders, Timefold uses the Android
WorkManagersystem to schedule local notifications up to 30 days in advance, only on days when your photo library has enough memories. These notifications run entirely on your device. There is no notification server.Children's Privacy
Timefold is not directed at children under 13. The app does not knowingly collect data from anyone, regardless of age — see "What Timefold Collects" above.
Open Source
Source code: github.com/rcurranmoz/Timefold-Android. You are encouraged to review it and verify these claims yourself.
Contact
Questions: ryanpcurran@icloud.com.
-
Crumb — Don't give a crumb
Firefox
DESCRIPTION
Firefox extension that blocks cookie-consent banners. Declarative-only, zero telemetry, ~25 lines of runtime. MIT-licensed and reproducible from source.
LINKS
▸ cat PRIVACY.md
last updated: 2026-05-05
Crumb is a content-blocking extension for Firefox. It does not collect, store, transmit, or share any data about you, your browsing, or your device.
What Crumb does
When you visit a web page, Crumb inserts a stylesheet that hides cookie-consent banners, and the browser's built-in
declarativeNetRequestengine blocks a fixed list of consent-management scripts at the network layer. Both the stylesheet contents and the network rules are bundled with the extension and do not change at runtime.What Crumb does not do
- No telemetry, analytics, crash reporting, or usage metrics.
- No remote configuration or rule fetching after install.
- No reading or transmission of page content, form data, cookies, or browsing history.
- No background script and no persistent storage.
- No advertising or third-party SDKs.
Permissions
Crumb requests two permissions, both used solely for the local blocking described above:
declarativeNetRequest— to install the static block list.<all_urls>host access — to inject the stylesheet on every page.
Neither permission is used for data collection.
Source code
Crumb is open source under the MIT license. The full source — including every filter list and the build pipeline that produces the extension — lives at github.com/rcurranmoz/crumb.
Contact
Issues or questions: github.com/rcurranmoz/crumb/issues.
-
BuildWatch — Firefox CI on your phone
iOS
DESCRIPTION
Native iOS app for Mozilla engineers — sheriffs, on-call, and devs — to monitor Firefox CI build status without opening a laptop. Live push lists, per-platform results, retrigger actions, and grouped failure summaries pulled from TreeHerder, TreeStatus, Taskcluster, and Bugzilla.
LINKS
▸ cat PRIVACY.md
last updated: May 8, 2026
BuildWatch is a thin client over Mozilla's public CI APIs. It does not run a backend, does not collect telemetry, and does not transmit data anywhere except to the Mozilla services it queries on your behalf.
Information Stored On Your Device
- Your Mozilla / LDAP email address (optional — used only to filter the "My Pushes" tab)
- Your app preferences (default repository, tier visibility, notification opt-in)
- The set of pushes you've marked as watched
All of the above is stored locally on your device using
UserDefaults. None of it is transmitted to any server operated by the developer, because the developer does not operate any servers.Network Requests
BuildWatch communicates only with public Mozilla services:
- TreeHerder — push list, job results, retrigger actions, text log errors
- TreeStatus — open/closed/restricted state of Mozilla trees
- Taskcluster — deep links to individual tasks
- Bugzilla — opening bug links found in commit messages
These services have their own privacy and data-handling policies, governed by Mozilla. See mozilla.org/privacy.
What BuildWatch Does Not Do
- No analytics, crash reporting, or behavior tracking
- No advertising or third-party SDKs
- No accounts created or managed by the developer
- No data sold or shared with third parties
Children's Privacy
BuildWatch is a developer tool for adult engineers working on Firefox. It is not directed at children under 13 and does not knowingly collect data from anyone, regardless of age — see "Information Stored On Your Device" above.
Source Code
BuildWatch is open source under the MPL-2.0 license. Source: github.com/mozilla-platform-ops/BuildWatch. You are encouraged to read it and verify these claims.
Contact
Questions or issues: contact me.
-
MoodRing — Play What You Feel
iOS
DESCRIPTION
iOS app that turns a sentence about how you feel into an Apple Music playlist. Powered by Claude via a Cloudflare Worker proxy. No accounts, no tracking.
LINKS
▸ cat PRIVACY.md
last updated: January 2026
MoodRing is designed with privacy as a core principle. The app uses AI to generate playlists but does not store your personal information or track your behavior.
Information We Collect
MoodRing collects minimal information necessary to function:
- Your emotion descriptions are sent to our AI service (Anthropic's Claude API) to generate playlist recommendations
- These descriptions are processed in real-time and are not stored or logged by MoodRing
- No user accounts are created
- No personal identifiable information is collected
MoodRing accesses your Apple Music library to create playlists.
- Music library access is processed entirely on your device
- Playlists are created directly in your Apple Music library using Apple's MusicKit framework
- No music data or listening history is transmitted to our servers
- All Apple Music interactions use Apple's secure APIs
Information We Do Not Collect
- No analytics or tracking frameworks are used
- No advertising or marketing SDKs are included
- No browsing history, location data, or device identifiers
- No data is sold to third parties
Third-Party Services
MoodRing uses the following third-party services:
- Anthropic Claude API: Your emotion descriptions are sent to Anthropic's AI service to generate music recommendations. Anthropic's privacy policy applies to this data processing. Visit anthropic.com/privacy for details.
- Apple MusicKit: Used to search Apple Music and create playlists. Apple's privacy policy applies. Visit apple.com/legal/privacy for details.
Data Storage
MoodRing does not maintain user databases or cloud storage. The app does not store your emotion descriptions or playlist history.
Children's Privacy
MoodRing does not knowingly collect data from children under 13. Since minimal data is collected and not stored, there is no personal information to manage or disclose.
Required Permissions
- Apple Music Library: Required to create and manage playlists
- Internet Access: Required to communicate with AI service and Apple Music
Changes to This Policy
If MoodRing's functionality changes in a way that affects privacy, this policy will be updated accordingly and users will be notified through an app update.
Contact
If you have questions about this privacy policy or MoodRing, contact me.