Readit News logoReadit News
lostgame · 3 years ago
I'd like to recommend this - I had to learn SwiftUI recently for my work and I found these courses to be absolutely perfect for learning.

I've also found SwiftUI to be a fantastic little language, I think especially for prototyping it would be fantastic.

One thing I preferred with these courses to so many similar other courses is that the video is not required. I much prefer to read, I don't like videos in tutorials unless completely necessary - screenshots and text work just fine, and for myself; these exercises just hit the nail on the head. :)

dwmbt · 3 years ago
i used this to learn swift myself and wished there was a newsletter to send out a reminder for me. instead, i used this apple script to generate a reminder every day for me. you can open Script Editor on your mac and run this. it will start today and schedule a new alert with the appropriate link :)

```AppleScript

set baseURL to "https://www.hackingwithswift.com/100/swiftui/"

set numberOfDays to 100

tell application "Reminders"

set swiftList to make new list with properties {name:"100

Days of Swift"}

repeat with i from 0 to numberOfDays

  set dayNumber to "Day " & i

  set dayLink to baseURL & i

  set reminderDate to (current date) + (i \* days)


  tell swiftList to make new reminder with properties {name:dayNumber, body:dayLink, due date:reminderDate}

 end repeat
end tell

```

marcellus23 · 3 years ago
note that Swift != SwiftUI, and there are "100 days" courses for both of them.
solarmist · 3 years ago
The URL is correct for SwiftUI.
zengid · 3 years ago
Tangent but I'm holding out from learning Swift until I see how the "Cross platform UI" wars shake out. We've got at least Kotlin, Dart, and JavaScript all battling it out (via Kotlin Multiplatform, Flutter, React Native) to be the king of UI languages across all platforms. I really like Swift though (from the little I've learned), so it's too bad it doesn't really have a cross platform UI story yet.

(I could learn all four but I have kids, so it'll probably just be React Native for me.)

MobileVet · 3 years ago
I've worked in mobile since 2004 (not a typo, '04). The 'one platform to rule them all' has been just around the corner the entire time. As was already said, don't hold your breath.

All of that said, if you are time constrained and really want to look at a single thing, I would go with Flutter. It impressed me when I cranked out a side project with it a year or so ago. Hopefully they continue to put effort towards it.

rapsey · 3 years ago
From our experience Flutter apps are easy to start with but quite hard to maintain. The core system keeps changing so much you are constantly having to fix things and dealing with broken dependencies. Would never use it for anything important.
kitsunesoba · 3 years ago
In my experience the issue with Flutter apps is though they aren't too bad on Android, they have an odd off-putting feel to them on iOS, more than is typically visible with competing cross-platform UI frameworks.
lockhouse · 3 years ago
The biggest problem with Flutter is Dart. Not the language specifically (it’s a nice enough flavor of C-family language), but the ecosystem. Even Swift is better in this regard. Flutter ported to TypeScript and sufficiently distanced from Google would actually be very compelling.
madeofpalk · 3 years ago
More specifically, there are a bunch of efforts, but the Swift ecosystem doesn't seem too interested in this.

Even Apple can barely get it with SwiftUI being a dumpster fire on macOS.

Vt71fcAqt7 · 3 years ago
I have to agree. Also I feel like those complaining about dart just have a bad taste in their mouth from dart 1.0. Dart has named parameters (so better than java) and null saftey. It's a pretty standard GCed OOP language. I also don't understand when people complain about the dart ecosystem. Seems fine to me.
mikhael28 · 3 years ago
Dart and Flutter are totally fine, and great in production. I really don't understand the hate.

Dead Comment

cush · 3 years ago
I'm still holding out for Xamarin
afavour · 3 years ago
I’ve been dabbling in this space for a long time and I’ve become convinced there will be no good cross-platform mobile UI story. The UIs are too different for there to be a one size fits all solution.

(as an aside I really like Swift too and have been enjoying noodling around with it as a server language. Probably rarely a wise choice given that it isn’t their focus but there is some attention given: https://swift.org/server/)

waboremo · 3 years ago
Seconding this. The cross platform experience has been so abysmal for so long, that I question whether the benefits of "easier to support" are even real considering the generally worse experience, longstanding bugs that are harder to nail down, and the added time of having to switch mental models between cross platform and the native code you're going to have to eventually write.

I'm at the point now where native apps are still back in heavy consideration, as it's far more straight forward to cascade launch your products on different platforms than it is to half-ass everywhere.

criddell · 3 years ago
> there will be no good cross-platform mobile UI story

Generally (IMHO) there are no good cross-platform stories, mobile or otherwise with the notable exception of some game engines. The closest you can get is choosing the web browser as your platform and writing a web app (Electron).

If you want to make the best app you can, use the native toolkit directly or via a framework for your UI.

lewisgodowski · 3 years ago
> Probably rarely a wise choice

I think you'd be surprised! There are some big names using it at scale[1].

[1] https://youtu.be/Te0aCoenCMg?t=710

wiseowise · 3 years ago
There’s a good cross platform mobile UI story, it’s called browser.
danielvaughn · 3 years ago
Yep. The only real option is that each platform agrees to abide by a common protocol for describing GUIs. I don't see that happening.
snyp · 3 years ago
I’ve been writing mobile apps since 2013. Cross Platform UI is a myth. Just use a framework and language you are familiar or comfortable with. I prefer native so I just stick to that. You are sure to be most productive in languages you are familiar with rather than any new/old cross platform UI framework. Just be cognizant of the fact that all of them have trade offs.
nwienert · 3 years ago
A lot of people saying it doesn’t exist or work, but as the creator of Tamagui, I have to vouch for it. I think it works pretty amazingly, and we have some really beautiful apps in every App Store (plus web).
krembanan · 3 years ago
> Cross Platform UI is a myth

How can you say this when many of the worlds most used apps are written in React Native? Same with Electron and desktop apps. I find it hard to believe you can be more productive writing native code when you need two entirely different codebases, compared to a single one, no matter how good of an iOS and Android developer you are.

jb1991 · 3 years ago
No, it won't be Reactive Native or any other. There are no cross-platform UI wars any more. There are efforts at this, all with huge compromises, but working with a native UI toolkit on any platform will always offer a superior developer experience and a superior user experience; that's just the way it has always been, still is, and I'd predict always will be.
jeremy_wiebe · 3 years ago
The problem is that developer experience (and often user experience) aren’t always the highest priority. For many businesses that want to ship a mobile app, cost is by far the biggest constraint. And “writing once, shipping everywhere” pushes out native development.

We at Khan Academy have moved much of our app to React Native and overall it’s a great experience and much easier to maintain than two native apps.

Of course, the constraints and requirements vary by business and so what’s right for us may not be right for you.

tarkin2 · 3 years ago
I was put off my React Native and Flutter since they don't give a native experience and some native features. Good and fast at the start, but after a while they'll be lacking.

Kotlin multiplatform--with the business logic shared but UI native--seemed like the best bet, backed by an impressive stack and company. And KM has gained traction in quite a few companies, slowly moving shared logic to Kotlin, while keeping separate iOS, Android and web teams.

Yet I feel more companies value Flutter, or even React Native, because it allows companies to reduce the number of employees they need, and many companies will value that over than having a perfect native experience.

I can't see there being a winner anytime soon. Web-savvy companies will favour React Native, companies with native developers will move some things to Kotlin Multiplatform, companies looking to reduce head counts more than improve user experience will favour Flutter or React Native.

dlivingston · 3 years ago
I wouldn't hold your breath. It's very explicitly tied to Apple APIs and OS conventions; I doubt it will ever be cross-platform.

If you want a cross-platform SwiftUI, QtQuick/QML is probably your best bet.

nicoburns · 3 years ago
Add Rust to your list. The Rust UI ecosystem is still very immature, but it has a tendency to implement things very well once they are implemented and the potential is huge.
zengid · 3 years ago
Speaking of Rust UI, do you have any favorites? I've been casually watching for a long time but haven't seen a clear winner there besides Iced or egui.
zengid · 3 years ago
That's another one I'm watching for sure!
inopinatus · 3 years ago
I’ve written a few command-line utilities in Swift lately and really enjoyed working with it. The type system I find especially appealing, being an enabler far more than an impediment, and coming from writing tons of C and Ruby there’s a lot that is familiar. Thus making the current multi-platform story a real shame, it’s a massive barrier to ever choosing Swift for a significant project.

It feels like Apple’s reflexive parochialism is limiting their influence, and that is something only leadership could overturn. I doubt they feel any financial incentive to do so.

johnthuss · 3 years ago
The only cross-platform UI that is likely to be feasible to use long term is HTML/CSS/JS. That comes with significant downsides in terms of display fidelity. But that is going to be the case (to some degree) with any cross-platform toolkit.
mch82 · 3 years ago
This seems right, at least for the next decade.

Recently, I really enjoy running containerized apps locally and accessing the GUI as a website on localhost. It feels like there’s a lot of room to build on that model.

danielvaughn · 3 years ago
I really like Flutter's approach, I just wish they weren't so wedded to (a) Dart and (b) Material Design.
redsaber · 3 years ago
I'm still hoping that Kotlin Multiplatform succeeds. Since kotlin is now the language recommended by Google so should be able to natively write for Android while also being able to deploy to other OS.
chasing · 3 years ago
Learning one will make learning the others easier. They have conceptual differences, of course, but there's also a lot of overlap.

Regardless, the "cross platform UI wars shaking out" will mean there are three or four options with high market share that each have plusses and minuses depending on the specifics of your project. There won't be a single winner.

imachine1980_ · 3 years ago
for what understand (im not a mobile developer) the best of all of this is react native, works well most time the ux of expo is great and you can "port it to web" like twitter, all the people who use xamarin cry, all the comments who hear about kotlin multi platform is the ecosystem isn't there, and flutter is lots harder when thing make more complicate and google is unreliable they already kind kill flutter desktop or at leas the cut most funding, i feel react native is the only really companies beat real money in it, you have multiple app in your phone using it discord, instagram,pinterest, microsoft teams, they aren’t perfect but they aren't bad, also the comunity is huge, also i hear lots of bad things about swift so there too, the lack of docs and that.
037 · 3 years ago
While we were waiting for the perfect cross-platform solution, we underestimated the web standards that we've always had in front of us, and are slowly becoming the perfect, powerful common denominator.
dwaite · 3 years ago
sort of. From a user perspective, the app security model is brokered (by a store) while the web security model is a direct ad-hoc relationship to whoever [you _think_] owns the domain you are on. Apps tend to need reviews for republication, while a website could change owners (through acquisition, domain expiry or other exploit) at any given time.

Modern systems sandbox both application access for security exploit reasons as well as user privacy reasons. The web lets apps talk to one another arbitrarily, embed one another in frames, and so on.

Because of this, hardware access will always be significantly more constrained than store-reviewed apps.

lobstrosity420 · 3 years ago
Swift had no horse in that race whatsoever. It was made to interface with Cocoa and it excels at pretty much exclusively that.
cush · 3 years ago
The Browser Company is currently working on a Swift on Windows
Mertax · 3 years ago
Why not include C#/MAUI on this list to make it 5?
sirwhinesalot · 3 years ago
The moment it went with Catalyst on macOS and forgot Linux exists entirely it was dead on arrival. It's Xamarin Forms but worse. Well done Microsoft slow clap.
zengid · 3 years ago
I'm a C# dev but I don't really have faith in Microsoft sticking with any UI library longer than 5 years. They even seem to have embraced React Native to make their own products. I'd go with Avalonia if I picked a C# UI, but I prefer Typescript and JSX over C# and XAML.
Dennip · 3 years ago
From my experience with Xamarin i dont have high hopes. Every time i needed to some do something slightly interesting I had to write wrappers for both the iOS and Android API's to get anywhere.
egberts1 · 3 years ago
Let us not ignore Electron GUi kit.
erokar · 3 years ago
It's a good course, I went through it and soon after had an app published in the App store. (I assume it's still not updated with the improvements that came to SwiftUI with iOS 17, but not 100% about that.)
ericmay · 3 years ago
I agree. I went through it as well though I didn’t publish any apps to the App Store (lack of ideas :( ) but I personally adore Swift and SwiftUI and Hackingwithswift is such a great resource!
collenjones · 3 years ago
Same sentiment here. Absolutely incredible (and consistent) quality from Paul Hudson.
Apocryphon · 3 years ago
What's your app about?
erokar · 3 years ago
It's a mood tracking app. Saturated market, but it was a good first app for me because it's fairly simple.
sylens · 3 years ago
A few times I looked into Swift development but got a little confused on where to start - Swift? SwiftUI? Both? I don’t really have a desire to make an iOS app but would love to cut my teeth making a macOS app, maybe something like an RSS reader to start.
chipotle_coyote · 3 years ago
I'm working through the book Hacking with macOS from this same author (Paul Hudson), which is a Mac-focused Swift/SwiftUI book. It's not free, but it's extremely well-done so far.
Austin_Conlon · 3 years ago
Apple's tutorials have a good mix of teaching both, along with a section "Creating a macOS App": https://developer.apple.com/tutorials/swiftui.
rTX5CMRXIfFG · 3 years ago
Swift is the language. SwiftUI is one of the UI frameworks. You need to know the language before you can build apps using the UI frameworks.
noisy_boy · 3 years ago
I wonder how feasible it is do the course on Linux - I am interested in learning mobile dev but don't own a Mac.
vanous · 3 years ago
From what I understand, the swift UI is not open sourced and not on Linux or Android...
runjake · 3 years ago
Near the very top of the page, Paul says that there is a newer version[1] and that if you're not sure, you should go with the newer version instead of this.

I think with the target audience for this, you should just go immediately to the newer version[1].

1. https://www.hackingwithswift.com/100/swiftui

jshier · 3 years ago
Yeah, 100 Days of Swift is actually an introduction to UIKit, not the Swift language (aside from the first 10 days or so), so anyone starting fresh should do the SwiftUI version. I do wish Paul (or anyone) would write a good intro to Swift the language without any of Apple's frameworks.
lockhouse · 3 years ago
Apple has a really good first party book about the Swift language.

https://www.swift.org/documentation/

runjake · 3 years ago
Paul has many, many videos focused on just Swift, the language. I’d post links but I am on mobile. The “Swift In One Hour” video is good along with his few multi-hour series.
dang · 3 years ago
Ok, we've changed to that from https://www.hackingwithswift.com/100 above. Thanks!

Dead Comment