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?

· · Web · 2 · 0 · 0

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.

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!

Show newer

@gueorgui Sounds like you’re getting into serious territory now; I don’t remember Objective-C having those features!

@amdt Nope, Obj-C doesn't have these features if I recall correctly! It's quite complex, but I can see how useful it can be.

@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.

Show newer

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

Show newer
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.