Skip to content

Instantly share code, notes, and snippets.

View prestonph's full-sized avatar
🎶

Preston Pham prestonph

🎶
  • Viet Nam
View GitHub Profile

Terms of Service for Monkey 996 Stickers

Last Updated: August 21, 2026

Please read these Terms of Service ("Terms") carefully before using the Monkey 996 Stickers mobile application ("Application"). By installing or using the Application, you agree to be bound by these Terms.


1. Acceptance of Terms

@prestonph
prestonph / PRIVACY_POLICY.md
Last active September 20, 2026 12:24
Privacy Policy for Monkey 996 Stickers

Privacy Policy for Monkey 996 Stickers

Last Updated: August 21, 2026

Your privacy is paramount. Monkey 996 Stickers is a simple iMessage sticker pack. This Privacy Policy explains how your information is handled when you use the Monkey 996 Stickers application for iOS.

If you have any questions or feedback regarding this Privacy Policy, please contact us at monkey996@fastmail.com.


@prestonph
prestonph / SUPPORT.md
Created August 8, 2026 15:25
SUPPORT
@prestonph
prestonph / Terms of Service for Strange Reminder.md
Created August 1, 2026 09:44
Terms of Service for Strange Reminder

Terms of Service for Strange Reminder

Last Updated: August 1, 2026

Please read these Terms of Service ("Terms") carefully before using the Strange Reminder mobile application ("Application"). By installing or using the Application, you agree to be bound by these Terms.


1. Acceptance of Terms

@prestonph
prestonph / Privacy Policy for Strange Reminder.md
Last active August 1, 2026 09:42
Privacy Policy for Strange Reminder

Privacy Policy for Strange Reminder

Last Updated: August 1, 2026

Your privacy is paramount. Strange Reminder is built with an offline-first, privacy-by-design architecture. This Privacy Policy explains how your information is handled when you use the Strange Reminder application for iOS.

If you have any questions or feedback regarding this Privacy Policy, please contact us at strangereminder@fastmail.com.


@prestonph
prestonph / consolelogger.go
Created January 31, 2024 04:42
Design Pattern: Chain Of Responsibility
type ConsoleLogger struct {
next Logger
}
func (l *ConsoleLogger) Log(level LogLevel, text string) {
fmt.Printf("%s | %s\n", level, text)
if l.next != nil {
l.next.Log(level, text)
}
}
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release \
vim
@prestonph
prestonph / gist:452942f4314982f072167111e81eac92
Created February 17, 2021 03:11
Recent Files - Finder raw query
(kMDItemContentCreationDate >= $time.today(-30)) && ((kMDItemContentTypeTree = public.content) || (kMDItemContentTypeTree = "com.microsoft.*"cdw) || (kMDItemContentTypeTree = public.archive))
@prestonph
prestonph / main.dart
Created September 17, 2019 04:02
Dart Static Enum Pattern
/// As of Dart 2.5, `enum` can still only support very simple use case.
/// To have a "rich enum" with custom value type and methods, we need
/// to use static class member. This is an example implementation.
void main() {
final s1 = 'done', s2 = 'waiting';
final done = Enum.parse(Status.values, s1);
final waiting = Enum.parse(Status.values, s2);
print(done);
@prestonph
prestonph / sbt_shading_fix.md
Created December 14, 2018 08:17
Fix SBT incorrect shading on Linux

Description

Shading using [SBT Assembly][assembly] plugin doesn't produce the correct jar structure

Reason

Inconsistent locale

Solution

Run these commands

export LC_ALL="en_US.UTF-8"