Home

Awesome

Project Portfolio

Shield.io MIT License Shield

Beginner 🐣

#ProjectTopics CoveredProgress
0🛠<br>Introduction to Swiftplaygrounds, constants & variables, data types, operators, string interpolation, arrays & dictionaries, conditional statements, control flow, functions & methods, optionals, enumerations, classes & structures, property observers, access control, typecasting, closures
1📱<br>Storm ViewerXcode, UIKit, UIViewController, super, viewDidLoad(), FileManager, app bundles, try-catch blocks, Storyboards & Interface Builder, UITableView, UITableViewDelegate, UITableViewDataSource, UIImageView, UIImage, UIButton, Auto Layout, Outlets & Actions, UINavigationController, view stacking
2🎮<br>Guess the FlagUIButton, action handling, asset catalogs, retina displays & @2x and @3x images, UIControlState, CALayer, UIView, UIColor, CGColor, random numbers, UIAlertController, UIAlertAction, UILabel, Auto Layout and alignment
3🛠 Social MediaUIActivityViewController, UINavigationBar, UIBarButtonItem, #selector & @objc, Info.plist, privacy & permissions
4📱<br>Easy BrowserWKWebView, URL, URLRequest, UIToolbar, UIProgressView, KVO (Key-Value Observing) design pattern (not sure if this is an optimal design for most cases, though), WKNavigationDelegate, classes (instances passed by reference) vs structs (instances passed by copy), class inheritance and protocol conformance
5🎮<br>Word Scramblestring methods, NSRange, UITextChecker, lowercased(), IndexPath, anagrams, inserting rows into tables without reloading, UIAlertController text fields, constants can be declared w/o a value, as long as it's set before use
6a🛠<br>Auto LayoutCtrl-drag, Auto Layout Visual Format Language (including anchors, metrics, priority, and vertical/horizontal specifications)
6b🛠<br>Guess The Flag V2Ctrl-drag, Auto Layout Visual Format Language (including anchors, metrics, priority, and vertical/horizontal specifications)
7📱<br>Near Earth ObjectsUITabBarController, UITabBarItem, parsing JSON for structs that implement the Codable protocol, didFinishLaunchingWithOptions
8🎮<br>Seven Swifty WordsaddTarget(), enumerated(), index(of:), joined(), replacingOccurrences(), property observers, range operators, programmatic button event handling
9🛠<br>Grand Central DispatchGrand Central Dispatch, async(), DispatchQueue.main, Quality of Service, global(), performSelector(inBackground:), never do UI work on a background thread
10📱<br>Names to FacesUICollectionView, UICollectionViewCell, UICollectionViewDelegate, UICollectionViewDataSource, UIImagePickerController, UUID, Custom NSObject Classes, URLs for app directories, writing JPEG data to disk
11🎮<br>PachinkoCGFloat, SKSpriteNode, UITouch, SKPhysicsBody, circleOfRadius/rectangleOf for shaping physics bodies, SKPhysicsContactDelegate, SKActions — and adding them to nodes, SKLabelNode, SKEmitterNode, sprite drawing blend modes,
12a🛠<br>Saving User Defaults & Data: NSCodingUserDefaults + NSCoding/NSKeyedArchiver
12b🛠<br>Saving User Defaults & Data: CodeableUserDefaults + Codeable/JSONEncoder/JSONDecoder
13📱<br>InstafilterUISlider, CIImage, CGImage, CIContext, CIFilter, UIImageWriteToSavedPhotosAlbum, Using full function signatures with #selector
14🎮<br>Whack-a-PenguinSKCropNode, SKTexture, SKActions, GCD's asyncAfter(), SKAction.playSoundFileNamed, SKAction.wait, run(block:)
15🛠<br>Core AnimationSwifty switch/case statements, animate(withDuration:), CGAffineTransform, view.transform, changing animatable properties of UIViews within an animation closure

Intermediate 🐥

#Project NameTopics LearnedProgress
16📱<br>Safari Extension & JavaScript InjectionNSExtensionItem, plists (property lists), NSDictionary, NSExtensionJavaScriptPreprocessingResultsKey, UITextView, NSItemProvider, kUTTypePropertyList, keyboard notifications, NSValue, CGRect, CGPoint, CGSize, view.convert, UIEdgeInsets
17🎮<br>Swifty NinjaSKShapeNode, CGPath, UIBezierPath, AVAudioPlayer, CaseIterable & custom enums, SKAction sequences and groups, default method parameters
18🛠<br>Debuggingprint, assert, breakpoints, visual debugging, conditional breakpoints, lldb printing and expressions
19📱<br>Capital CitiesMKMapView, MKAnnotation, MKPinAnnotationView, CLLocationCoordinate2D, dequeueReusableAnnotationView(), switching between different map styles
20🎮<br>Fireworks NightTimer, SKNode, SKAction.follow() and its awesome orientToPath option, motionBegan(), prefersStatusBarHidden, Timer.invalidate(), colorBlendFactor for SKSpriteNodes
21🛠<br>Local NotificationsUNUserNotificationCenter, UNNotificationRequest, UNNotificationAction, UNNotificationCategory, UNUserNotificationCenterDelegate, UNNotificationDefaultActionIdentifier
22📱<br>Detect-A-BeaconiBeacons, Core Location, CLBeaconRegion, CLLocationManager, startMonitoring(for:), startRangingBeacons(in:), uuidgen, CLBeaconRegion, CLProximity
23🎮<br>Space Raceper-pixel collision detection, advancing particle systems, adjust linear & angular damping, touchesEnded(), touchesMoved(), touchesBegan()
24🛠<br>Swift Extensionsmutating methods, Protocol-Oriented programming, Self vs self, conventions regarding methods (generally, verbs) vs computed properties (generally, nouns/state), ExSwift
25📱<br>Photo ShareMultipeerConnectivity, MCSession, MCBrowswerViewController, showConnectionPrompt(), MCPeerID, MCAdvertiserAssistant, MCSessionDelegate, MCBrowserViewControllerDelegate, MCSession.send
26🎮<br>Marble MazecategoryBitMask, collisionBitMask, contactTestBitMask, CMMotionManager, startAccelerometerUpdates, reading accelerometer data, compiler directives
27🛠<br>Core GraphicsCore 👏 Graphics 👏, UIGraphicsImageRenderer, exporting images with UIGraphicsImageRenderer.image(), UIGraphicsImageRendererContext, CGContext, CGContext.addRect(), CGContext.addEllipse(), NSString.draw(with:), UIFont, NSMutableParagraphStyle(), drawing UIImages straight into a rendering context
28📱<br>Secret SwiftUsing the KeychainAccess library, resignFirstResponder(), NotificationCenter, UIApplication.willResignActiveNotification, LocalAuthentication, LAContext, canEvaluatePolicy(), .deviceOwnerAuthenticationWithBiometrics, evaluatePolicy(), privacy for Touch ID & Face ID, simulating Face ID with the Simulator
29🎮<br>Exploding MonkeysUIKit + SpriteKit, texture atlases, scene transitions, destructable terrain, using stride to create a sequence of evenly-spaced numbers 💥, HSB FTW 🎨
30🛠<br>InstrumentsProfiling applications with the Instruments app, view debugging, draw debugging, memory pressure debugging, Time Profile debugging

Advanced 🦅

#Project NameTopics LearnedProgress
31📱<br>MultibrowserUIStackView, iPad multitasking, addArrangedSubview(), WKNavigationDelegate, UITextFieldDelegate, UIGestureRecognizerDelegate, App Transport Security, Adaptive UI (Size Classes and Dynamic Type), using StackView.removeArrangedSubview alongside WKWebView.removeFromSuperview
32📱<br>Swift SearcherDynamic Type, NSAttributedString, SFSafariViewController, SFSafariViewControllerDelegate, Core Spotlight, UIContentSizeCategoryDidChange, responding to the CSSearchableItemActionType activity during app startup to handle CoreSpotlight search hits
33📱<br>Name That TuneAll about CloudKit ☁️: loading and saving text data, loading and saving binary data, subscribing to CKRecord updates, delivering push notifications, CloudKit Dashboard and more; AVAudioRecorder; AVAudioSession; requestRecordPermission(); CKRecord; CKAsset; CKQueryOperation; NSPredicate; CKRecord.Reference; fetch(withRecordID:); save(); CKQuerySubscription; NSSortDescriptor
34🎮<br>Four in a RowGameplayKit AI, GKGameModel, GKGameModelPlayer, GKGameModelUpdate, AI Heuristics, NSCopying, GKMinmaxStrategist
35🛠<br>Random NumbersInt.random(in:), Float.random(in:), Double.random(in:), CGFloat.random(in:), Bool.random(), arc4random(), GKRandomSource.sharedRandom(), GKLinearCongruentialRandomSource, GKMersenneTwisterRandomSource, GKARC4RandomSource, GKRandomDistribution, GKShuffledDistribution, GKGaussianDistribution, Fisher-Yates Algorithm, arrayByShufflingObjects(in:), the importance of being able to seed the source of randomness 🌱
36🎮<br>Crashy Planescale modes, parallax scrolling, SpriteKit Physics, SKPhysicsContactDelegate, SKPhysicsBody, SKAudioNode, managing game state with enums, restarting entire game scenes
37🎮<br>WatchKit ESP TesterView Controller containment, WatchKit Extensions, 3D Touch, CAEmitterLayer, CAGradientLayer, @IBDesignable, @IBInspectable, transition(with:), WCSession, WKInterfaceLabel, WKInterfaceButton, WCSessionDelegate overrides, passing messages between a phone and a paired watch
38🛠<br>Github Commits (Core Data)All about Core Data 💪, NSFetchRequest, NSManagedObject, NSManagedObjectContext, NSPredicate, NSSortDescriptor, NSFetchedResultsController, ISO8601DateFormatter, Core Data relationships and attribute constraints
39🛠<br>Unit testing with XCTestXCTest, Test-Driven Development in iOS, XCTestCase, setting a baseline, measure() NSCountedSet, XCUIApplication(), XCUIElementQuery, UI test recording, Continuous Integration with Xcode Server

Challenges 🥅

#Project NameProgress
0🛠<br>Fizz Buzz
1📱<br>World Flags
2🎮<br>Hangman
3📱<br>Storm Viewer 2 (Collection View)
4📱<br>Country Facts
5📱<br>Imitation Apple Notes App🚧
6🛠<br>Expanding on Extensions
7🛠<br>Core Graphics Rainbow 🌈
8📱<br>Private Photos App
KEY
📱 = App
🎮 = Game
🛠 = Technique
✅ = Complete
🚧 = In Progress
🛑 = Not Started