Okay, I'm going to do , so please bear with my daily progress posts, please.

I hacked together exactly one app with Swift before and thought it'd be nice to actually learn the subtleties of the language.

Day 1/100 complete, just learning about variables and interpolations and type annotations.

Day 2 of complete. Learned about Sets, Tuples, Dictionaries, and so on. Looking forward to more exciting things.

Day 3 of complete. Still not much exciting, learning about various language operators. It was nice to see the range operator I'm familiar with from Ruby.

Day 4 of : Learned more about loops in Swift. One cool thing is that you can give loops labels, and thus break from them from inside nested loops.

Day 5 of : Learning about functions in Swift. One cool thing (and an inheritance from Objective C, I think) is having two different labels for function params: one for inside the function, and one for calling the function.

Day 6 of is the first part of learning about closures. Closures are fun, but I already know how to use them from years of Javascript. The closure syntax in Swift looks quite clean, but that's not too difficult to accomplish when the baseline is JS 😬

Day 7 of today, second part of working with closures. Learned some pretty crazy shorthands, closures seem quite powerful but also feel like they could get quite messy. Strong JS vibes.

Day 8 of today, learning about structs. An interesting thing is that in Swift, strings and arrays are structs rather than classes, like they are in Ruby. Wikipedia says Swift is a multi-paradigm language, and I feel that it shows here.

Day 9 of , second part of structs. More advanced stuff, and things that I'd expect to be part of classes instead, such as class variables (called static variables here), etc.

Day 10 of , learning about classes. No major surprises, besides the fact that Swift classes have deinitialisers in addition to initialisers — methods that are called when an instance of a class is about to be destroyed.

Day 11 of , learning about protocols and extensions. Fun stuff.

Day 12 of , learning about optionals, unwrapping, guard clauses, and the like. More and more I feel like Swift is a much more complex language than, for example, Ruby. Or maybe it's more full-featured?

Day 13 of : first of three days of reviews. I feel like I have a solid understanding of the foundations of Swift now, and I'm looking forward to starting on an app project in a couple of days. I feel quite positive about this course, I have to say!

Day 14 of , second day of three days of reviews. Feel like I could've skipped this because I understand a lot of this stuff from other programming languages already, but decided to trust the process.

Day 15 of : third and last day of reviews. Classes, structs, closures, yadda yadda. Starting a smol project tomorrow!

Took two days off! day 16: actually building little bits of UIs now, and learning how to managing state. So far, pretty simple, pretty straightforward, pretty pleasant.

Day 17 of : Actually built a small app, in real American fashion it's for splitting tips 🤪

I like the declarative aspect of SwiftUI, reminds me of Nix!

day 18, wrapping up the WeSplit project with a little bit of custom coding. This took like 10 minutes, so today is a short exercise, but tomorrow is a challenge day, and I'm looking forward to that!

day 19: a challenge today, build a conversion app from scratch. Not too hard, but fun to do!

, day 20: Learning a few more UI building blocks such as stacks, images/gradients, buttons and alerts. It's coming together nicely.

Got too excited and did day 21 of on the same day 😅 A simple flag-guessing game, a little rough around the edges still. I'm getting a bit impatient with the tutorial and can't wait to get on with building a real project.

Day 22 of , tiny improvements to the flag guessing game from yesterday and that's it... Starting to realise that maybe finishing these 100 days won't give me *all* the knowledge I need to build the slightly complex app idea that I have, but let's see.

Day 23 of : Learning a bit more about the underlying workings of SwiftUI views. Feeling a bit uncomfortable with the number of times I'm being told "but we don't really need to know what happens there" in this tutorial 🤔


Day 24 of , feeling that I'm starting to be a little bit bored with the tutorial. The urge to build real things is getting stronger. Have an idea for a small macOS app now as well...

Today was all about reviewing the internal working of views, and applying some of that to existing projects.

· · Web · 1 · 0 · 1

Forgot to post yesterday: Day 25 of , built a small rock-paper-scissors game to consolidates the concepts I've learned previously.

In parallel thinking and fleshing out my app idea a bit more... can't wait to get on with it.

Day 26 of : two slightly exciting things today — the discovery that SwiftUI code builds just as well for macOS as for iOS (that's cool!), and the first step in using machine learning with the Create ML app. I've never done any machine learning before and this is an exciting new step for me!

Day 27 of : used the machine learning data I generated yesterday in a simple app. Tell it when you want to wake up, how much sleep you want to get, and how much coffee you drink, and it will tell you what time you need to sleep, based on the CSV file I fed it yesterday. Pretty neat.

Day 28 of , happy Christmas everyone. Bits and pieces of tweaking of yesterday's app today, nothing too exciting. Taking it slow.

Day 29 of , getting ready for another project, learning about internals of Swift string management, and the weird features that come with needing to retain Objective C compatibility. Kind of a 🤷🏻‍♀️ day.

Day 30 of : building another simple app, a word scramble game (use letters from a word to make more words). One interesting aspect of this is that it uses the system spellcheck service to check if a word is a valid English word or not.

Day 31 of : challenge day adding 3 little features to yesterday's app.
- Add a button to reset the game
- Refuse words that are either shorter than 3 letters, or the word provided by the game
- Keep score. 1 point for each word, 2 extra points for words 6 letters or longer, 1 extra point for 4 letters or longer.

Fun stuff, but ready to move on to the next project!

Day 32 of : learning about animations. I have to say the animation facilities in SwiftUI are really quite impressive, and if you know how to work with CSS animations, the SwiftUI way is really easy to grasp. Good stuff.

Day 33 of : more animation stuff, including writing custom transitions, drag events, etc. Fun fun.

Day 34 of (skipped a day yesterday). Challenge day, the task was to add animation to the flag guessing game from a earlier.

Day 35 of is taking me a while: it's a challenge day involving building an app for practicing multiplication tables. I'm trying some fancier things this time, including splitting things into multiple views. Expecting to be finished tomorrow.

Finally finished Day 35 of . Just got the logic part of the app down, might come back later to make it pretty and more full-featured. Want to move on to the next project for now.

Day 36 of : Experimenting with some slightly more advanced UI patterns today, such as showing and dismissing views in sheets, and editing lists.

Day 37 of : Building on yesterday's UI patterns to implement a little expense tracking app that persists data between runs.

Day 38 of : Refining yesterday's app a little bit. Conditional formatting for amounts, Edit mode, input validation 👏

Day 39 of : Playing around with more UI patterns, NavigationView and NavigationLink.

Day 40 of : Learning about generics, loading resources from the application bundle, and date formatting.

Day 40 of : Finished the Apollo missions app, with more custom views building. Not super exciting UI bits, but I feel like I have a better idea of what it actually takes to build a "full" app. Nice.

Day 42 of : Challenge day for the Moonshot app, added a switch to show crew names instead of launch dates on the main list; launch dates on the Mission view, and other missions an astronaut participated in in the astronaut view.

Show newer

@gueorgui I was thinking about embarking into the same journey with the 100 Days of SwiftUI. How's it been for you so far? Should I have previous knowledge of Swift or can I start from scratch?

@levithan It's good! If anything the pace is a little bit slow, but that might be because of my previous programming experience. They walk you through the fundamentals of Swift, so there's no prior knowledge required (I think you can even do it without any prior programming experience!)

@gueorgui Thanks! I think I'll go for it and see if it fits me. I was going to start learning Kotlin for mobile development but there's something about the syntax and Java-like structure that I can't seem to like.

@levithan I never tried Kotlin, but since that runs on the JVM, is that for Android?

@gueorgui Yes, that's correct. Forgot to explain my motive for the question: I want to learn some mobile development and currently choosing my environment/language.

@levithan Ahh, I see! I'm learning SwiftUI because I have a specific iPhone/Apple Watch app idea I want to build (and also another project that needs a mobile app, though that could probably be done in some flavour of HTML)

@gueorgui Same here! haha And also, wanted to start 2021 with a new _modern_ language

@levithan Well, if you wanna build for iOS natively, Swift is pretty much the only option... which isn't great, but here we are.

@gueorgui I've been enjoying seeing the progress on these.

@ciel Thanks! It's been fun, and the method is obviously working :)

@gueorgui loving watching your progress! especially when everyone went nuts on AOC for like 1 week and you were just chugging along ^__^ 🔋 power to you. I think swift is an interesting language but never got into ios/mac related development. Your apps have polish so far though it looks!

@metasyn Haha, thanks! It took me a while to remember what AOC was. I also tried it last year, and gave up after like a week. This time I have two app ideas I want to build for iOS, so I see the learning as investment towards that rather than solving computer science puzzles, which I'm not a fan of (not that there's anything wrong with them).

I really do enjoy the daily aspect of this process!

Sign in to participate in the conversation

Merveilles is a community project aimed at the establishment of new ways of speaking, seeing and organizing information — A culture that seeks augmentation through the arts of engineering and design. A warm welcome to any like-minded people who feel these ideals resonate with them.