Big Projects
-
MLB for watchOS
MLB's official Watch app
-
Realtor.com for iOS
Real Estate & Rentals app
-
Yes Health
Individual, goal-oriented health coaching app
-
Smartcrypt
Personal file encryption as a service
-
Motif
Custom photo books, calendars, & cards right in Apple Photos
-
Ionic Files
User-facing desktop file protection software for macOS
-
PVP 3
Elegant & powerful video streaming software for statium-tier events
-
ProPresenter
Live video presentation & compositing software
-
NCR Silver
Point-of-sale software supporting mobile payments, sales reporting, loyalty rewards, business management, & more
-
The CSU websites
Over 100 specialized websites in one modern, responsive design that maintains compatibility with IE 8 through the latest Chrome. CMS integration allows school employees to maintain their own sub-sites
Big Personal Projects
-
This Website
I wrote all the code and designed all the UI on this site from scratch, without templates.
-
Project HOSTESS
Work-in-progress project to create an extensible task management system
-
Rent Split
Calculates how to split rent fairly based on income
-
Swift Mines
A clean and modern Mines game for macOS, written in SwiftUI and published on the Mac App Store
Open-Source Contributions
-
Kotlin Collection Literals (Proposal)
A proposal for how to implement collection literals in the Kotlin language
-
Kotlin Error Handling (Proposal)
A proposal for how to natively handle errors in the Kotlin language
-
Slide Social Buttons
A set of uniform social share buttons invented by Christopher Yee in 2013 and updated by myself in 2015
My Open-Source packages
My 24 contributions to the Swift Package Index
-
EfficientAverager
Uses exactly two floating-point variables to average indefinitely many numbers with a constant amount of memory usage.
-
Atomic
Uses `DispatchQueue` to ensure a value is only read from and written to by one thread at a time
-
BasicMathTools
Some basic tools for doing math in Swift
-
CollectionTools
A bunch of tools I tend to write to make collections easier to use
-
ColorSwatches
Turn an NSColor or UIColor into an image
-
ContextuallyUniqueIdentifier
An ID which is unique to this runtime / save
-
CrossKitTypes
Some types and extensions for those using AppKit and UIKit in the same project
-
DrawingTools
Some tools to help with drawing in Swift
-
Either
An `Either` type to use in Swift, allowing two different types to represent the same field
-
FunctionTools
Some tools to make functions easier to use in Swift
-
Introspection
Aides in checking information about the current app, system, & device
-
LazyContainers
A few lazy-initialization container types for Swift 5.1
-
MultiplicativeArithmetic
Formalizes an object's ability to be multiplied by something
-
OptionalTools
Some tools to make Optionals easier to use
-
RangeTools
Some tools to help you work with Swift ranges
-
RectangleTools
A set of Swift utilities for dealing with rectangles, including a way to generically build your own!
-
SafeCollectionAccess
Ever wonder why Swift crashes if you access a collection the wrong way? Me too here's some extensions
-
SemVer
A small Swift library that implements SemVer 2.0.0. This is designed to be simple to use and to easily fit into any Swift codebase.
-
SerializationTools
Some tools to help y'all serialize stuff
-
SimpleLogging
For when you need something more advanced than print, but not a whole heavy system
-
SpecialString
Ever need a string but also wish it weren't a String type?
-
StringIntegerAccess
I hate how Swift `String`s don't let you access their characters with `Int`s. This package lets you do just that.
-
TODO
For when you know you're gonna get to something, but right now you have other priorities.
-
UuidTools
Some tools for using UUIDs
My 8 other packages
-
Swift Safe Pointer
Lets you pass anything using reference semantics without the danger of unsafe pointers
-
SwiftUI Seven-Segment Display
A 7-segment display for SwiftUI
-
Swift PropertyWrapper Protocol
Lets you reference property wrappers as protocols
-
delete-duplicate-filesA small utility to delete all files in a folder matching the given hashes
-
Micro JS Enum
94 bytes to bring enums to JavaScript
-
Micro JS Tagify
154 bytes of JavaScript for turning user input like "tag-a,tag-b tag-c" into HTML tags
-
Micro JS Equals
A 157-byte, fully-functional JavaScript global .equals() implementation
-
Micro JS Array Shuffle
An array shuffler in 140 bytes