Skip to content

100 days, at least 1 hour a day, of learning the Swift programming language.

Notifications You must be signed in to change notification settings

jhrcook/100DaysOfSwift2

Repository files navigation

100 Days of Swift (Part II)

100DaysOfCodeSwift jhc github jhc twitter jhc website

Start Date: March 20, 2020
End Date: June 28, 2020
(incorrect, sorry)

Plan

My goal for this 100 days is to build an iOS application. It will be an application that helps me monitor my seedlings, helping me track their growth and my thoughts along the way. I want it to be built well, have some key finctionalities, and be avilable on the iOS App Store.

To this end, I will first refresh myself with iOS app development by following some tutorials from Hacking with iOS, particularly those that touch on API's and tehcniques I hope to incorporate into my app. I will then follow the 100 Days of SwiftUI tutorials so that I can create my application using the modern Apple framework. Finally, I will pursue additional tutorials to fill in the gaps, such as testing and using instruments effectively.

Tutorials to do:

  1. Hacking with Swift - Project 9: Grand Central Dispatch
  2. Hacking with Swift - Project 12: UserDefaults
  3. Hacking with Swift - Project 15: Animation
  4. Hacking with Swift - Project 21: Local Notifications
  5. Hacking with Swift - Project 30: Instruments
  6. Hacking with Swift - Project 32: SwiftSearcher
  7. Hacking with Swift - Project 38: GitHub Commits
  8. Hacking with Swift - Project 39: Unit testing with XCTest
  9. 100 Days of Swift UI
  10. Swift Package Manager
  11. SwiftLint
  12. Documentation with Swift markdown and Jazzy

Progress

I'm just getting started!

Log

Day 1 - March 20, 2020: I got a refresher on Grand Central Dispatch from Hacking with Swift.

Day 2 - March 21, 2020: A good refresher on using UserDefaults and Codable from Hacking with Swift.

Day 3 - March 22, 2020: I reviewed Project 15 on Animation from Hacking with Swift.

Day 4 - March 23, 2020: A good refresher on local notifications from Hscking with Swift.

Day 5 - March 25, 2020: I began working on the GitHub Commmits project to learn about CoreData. I didn't finish it (it is dense), but pasued at 'Time for some useful code' on page 4 of the tutorial.

Day 6 - March 26, 2020: I learned even more about CoreData as I continue through the Hacking with Swift project. I'm taking my time and making sure I understand each step because I would really like to use it in my app.

Day 7 - March 30, 2020: I finished the CoreDate tutorial from Hacking with Swift and am planning to do a prototype app to further practice using CoreData.

Day 8 - March 31, 2020: I began work on my CoreData demo app. It is at the repository jhrcook/CoreDataDemo2. I am walkign through Apple's guides and haven't gotten lost (yet).

Day 9 - April 01, 2020: I have CoreData up and running! I need to do some adjusting to the UI before going much further, but I am feeling confident.

Day 10 - April 03, 2020: I started the second round of the CoreData demo which introduces relationships between multiple entities.

Day 11 - April 05, 2020: I am still working on the CoreData demo app, but I think I am almost done. I was able to add a feature that I though was going to be rather complicated, but it turned out to be very simple. I think I am getting the hang of it.

Day 12 - April 06, 2020: I have moved on from the CoreData demo because I think I covered the topics I wanted to. I have begun the 100 Days of SwiftUI from Paul Hudson and completed the first day. It's such a weird paradigm and is completely different from UIKit.

Day 13 - April 07, 2020: I finished day 17 of 100 Days of SwiftUI and we learned about adding more UI controls including text fields, pickers, and segmented controllers.

Day 14 - April 08, 2020: I completed the first challenge and built a unit converting app that converts temperatures.

Day 15 - April 09, 2020: I began project 2 of Hacking SwiftUI. We went over a few more common views such as the Stacks, buttons, images, colors, and gradients. SwiftUI makes so many things so simple, but I'm afraid it will make other things incredibly difficult. I'm optmistic though.

Day 16 - April 12, 2020: We built a far more complex app than we have done previously. This was good experience in styling and organizing the views.

Day 17 - April 13, 2020: Today was a technical day in the 100 Days of SwiftUI series, so I learned a lot about the mechanics and basics of SwiftUI. A lot still doesn't make any sense, but this did clarify a lot about the structure of SwiftUI.

Day 18 - April 15, 2020: After watching a bunch of technical videos yesterday, today's Hacking with Swift had us edit a few of the projects to add custom ViewModifiers and Views.

Day 19 - April 16, 2020: I attended (on Twitch) the Learn Swift Boston Meet-up where we learned about debugging an iOS app.

Day 20 - April 17, 2020: I began the challenge project after the first 3 projects for the 100 Days of SwiftUI. I have laid out most of the UI and now need to workout the actual game logic.

Day 21 - April 18, 2020: I spent more time styling the app, mainly playing round with colors, stacks, spacing, etc.

Day 22 - April 19, 2020: I spent more time playing around with design in SwiftUI and made some nice-looking neumorphic buttons!

Day 23 - April 21, 2020: I finsihed up the milestone project BrainTrainingChallenge, it was pretty easy, I just spent a lot of time playing with SwiftUI design. I also started the next project where we are learning about new user input methods and are getting some experience with dates.

Day 24 - April 22, 2020: I continued with the BetterSleep project where we trained and implemented a simple CoreML model using CreateML. The codegen is wonderful.

Day 25 - April 24, 2020: I wrapped up the BetterSleep project and began the WordScramble game app. This looks like it will provide a good intro to working with strings.

Day 26 - April 27, 2020: We built the word scramble game. It was a bit more complicated, but nothing crazy.

Day 27 - April 29, 2020: I completed the wrap-up for the Scrambled game - it was nothing complicated. I then began the next project where we are focusing an animation in SwiftUI.

Day 28 - April 30, 2020: Continued learning about animations, adding in gestures and transitions.

Day 29 - May 01, 2020: I added some animations to the flag game from a few projects ago to wrap up the Animations project. I began the next project where we will learn about using multiple views and passing data between them.

Day 30 - May 03, 2020: I finished the introduction to Project 7 were Paul introduced more SwiftUI property wrappers and UserDefaults/JSONEncoder.

Day 31 - May 06, 2020: We learned how to show and hide views while passing data back and forth. Also, we practiced reading and writing information.

Day 32 - June 29, 2020: I have picked up a little before where I left off by restarting Project 7. We covered showing and dismissing view, the ObservableObject property wrapper, and storing data using UserDefaults and Codable.

Day 33 - June 30, 2020: I played around with some animations and styling in SwiftUI and then finished the iExpenses project in 100 Days of SwiftUI.

Day 34 - July 01, 2020: We began working on the Moonshot project, getting a lot of practice in decoding JSON. Paul demonstrated techniques for extending bundle with a decode function and formatting dates.

Day 35 - July 02, 2020: Practiced using multiple views and passing data in SwiftUI. We also worked on some different types of standard view layouts.

Day 36 - July 04, 2020: We started a new project to learn about darwing with Path and Shape objects.

Day 37 - July 06, 2020: We continued learning about Shapes and experimenting with AnimatableData.

Day 38 - July 07, 2020: I took on the challenge following project 9 to build a HabitTracking app. There are a few bugs, but most of the functionality is there and working.

Day 39 - July 08, 2020: We learned about how to make an @Published variable conform to codable. We also briefly learned about disabling a button based on some boolean statement.

Day 40 - July 09, 2020: We created a more complex app with a more complex data type with multiple publishers.

Day 41 - July 10, 2020: I worked on my own project in SwiftUI.

Day 42 - July 11, 2020: I worked on my own project in SwiftUI.

Day 43 - July 12, 2020: I worked on my own project in SwiftUI.

Day 44 - July 13, 2020: I worked on my own project in SwiftUI.

Day 45 - July 14, 2020: I worked on my own project in SwiftUI.

Day 46 - July 15, 2020: I worked on my own project in SwiftUI.

Releases

No releases published

Packages

No packages published