Our little girl Ida has arrived ❤️. She started off at 2720 grams (a few weeks earlier than planned), but is getting stronger every day. Mom and Ida are doing well!
I've been working on porting our SwiftUI layout implementation to the Terminal, so you can build Terminal apps with it. While it currently already supports a whole bunch of views, it is still pretty far from being usable.
I love living in Germany, but if there's anything I absolutely hate it's the car drivers. Literally every day I'm on the street I see cars on bicycle paths, cars parked on the sidewalk or cars overtaking me without taking into consideration the minimum safety distance.
For 4 years, I tried beating my marathon PB and run once more under 3 hours. I always believed I could do it, but something always went wrong. Finally, today all the hard work paid off: 2:52. (2:57 if you include the crying after the finish line)
We've been working on an app that takes Markdown and turns it into beautiful PDFs. There are some excellent apps that do this (
@MarkedApp
,
@ulyssesapp
, both highly recommended). We want to focus on interactive styling, with a feel similar to Pages.
We (quietly) relaunched Swift Talk last week, and rewrote the backend from Rails to Swift. Without any performance tuning, it uses less than half the memory, and everything is much faster.
WIP: Playing around a bit with more visualizations for SwiftUI's layout algorithm (as part of our SwiftUI workshop). Of course, the visualizations are all done in SwiftUI.
This is awesome, Thomas is building a non-trivial app in SwiftUI, including animations, custom interactions and other cool features. And it's all open source. Thanks for making this (and making it open!).
So I'm finally 99% done with the discover part of MovieSwiftUI. Filtering works, I even have two .presentation() modals with success! All the code available here. Form, Gesture, animations and more!
I won my first marathon today! I went out fast (but really comfortable) and had to pay the price in the second half. Still, a new PB and a win. Beautiful course and well organized.
I finally have the feeling that I understand SwiftUI well enough so that we could write a (short and simple) book about it. The more I understand it, the simpler and more elegant it seems.
We tried building a flexible loading animation for the Swift Talk app. It animates along any kind of path, here it is animating along a path in the form of a rotated 8 sign:
Managed to implement goroutines in Swift using GCD. Took a while to figure out, but the implementation and usage ended up simple (and hopefully, correct).
Many people really don’t want to make their own decisions, but rather point at a source of authority. Same with many topics: App Architecture, Core Data, reactive programming... usually thinking for yourself is the better option!
AirBnb says RN is bad: Everyone, let's stop using RN.
Artsy says RN is good: Let's adopt RN. It's the future!
I call it MDD "Medium Driven Development"
I think I wasted enough time figuring out things like include paths, dynamic linking, static linking, module maps etc. without *really* understanding it. Who has some good reading on this?
Loading images asynchronously in SwiftUI is not too hard, here's a simple example. You can control the lifetime of the loader by putting it in a different view (for example, you could put it in a cell row, or somewhere similar).
During debugging I often don't want to create a "real" Mac app but just want to quickly launch a SwiftUI view as a Mac app (e.g. from a command line tool / Swift package). I simply paste in this code and call `run`:
I missed this bit but you can actually render a (vector) PDF out of SwiftUI views now in iOS 16. That's going to be incredibly useful for our book. It's even well documented in the ImageRenderer docs (I don't know if it's online but it is in the Xcode beta).
Heads up: a SwiftUI navigation destination is not lazy. In other words: the destination “view controller” (and all of its resources!) are constructed when you create a navigation button, not when it gets pushed onto the stack. (I filed FB6303777).
Thanks, it's ok. People are ungrateful, dishonest, and other things. Not much I can change about that, but I can change how I perceive it. I try not to get upset too much by nasty people, and if I do, I'll walk around the lake or go for a run. 🤷♀️
We should applaud the time and energy great developers like
@chriseidhof
put in participating in Swift Evolution and writing proposal. So let’s all stay civil. Thanks
@ericasadun
for writing this up!
It's so nice (and a little scary) to finish our new book. We've been working on it for over a year now, and we'll finish the last bits of writing (and minor code changes) this week. Then: copy editing, polishing, layout, etc. Should be done very soon.
We are working on a new app to record your screen (think QuickTime) and add your camera as an overlay. This makes your videos much more personal. If you're interested in having a look at the beta, check out
Here's a demo video:
I ran a half marathon yesterday, and while it wasn't a fast time due to the wind, it was epic: battled for the lead with another guy. I think he was the stronger runner, but after him messing up the water stations multiple times I dropped him at the last water station and won! 🥇
Three things I wish Swift would have:
* Stable and working playgrounds
* A stable, working, simple and widely used web server a la ruby's rack (server wg doesn't seem to be active, and NIO too low level).
* A stable, working, and widely used SPM
We started a new project. For the past week and a half, I've locked myself away from 8am until 3pm in a holiday apartment at cycling distance. No distractions, no cell signal, no wifi. It's been amazingly productive.
Check out my new framework ObjectiveCUI. It's like SwiftUI but better. OOP done right, with a procedural layout system, lots of runtime programming and messages all the way down. Because there are no static types, the compiler will never be in your way:
Won my second ever marathon yesterday! Compared to a road marathon it was pretty tough, and it was quite hot so no fast times. That was all made up for by the beautiful course. They even showed it on local TV!
I had so much fun at BA: Swiftable. I think it's the best organized conference I've ever spoken at. I think you can see from the picture how much fun it was on stage =). Thanks to everyone involved.
I worked as a freelancer on a very small feature that took way longer than expected because all the code was duplicated everywhere. When I quit I told the CEO this was a problem. The CTO (who did this) was also there. The CTO told me "it's just a different programming style".
Instructional content for devs on Apple platforms has never been better.
@dimsumthinking
,
@rwenderlich
,
@twostraws
, and
@johnsundell
spoil us for choice, and we are never short of a Googled solution. I do miss advanced content though.
@objcio
do a great job, but others?
I realized that for me, the most important part of business is being able to sleep with the feeling of having done my best work and with a clear conscience. I’m sure we could make lots more money if we’d let go of these things, but I hope I’ll never have to.
We're really happy to announce the release of our new book today! It's been a lot of fun writing, and the weekly hangout with
@cocoawithlove
was one of the highlights of the writing process.
I have a MSc. degree in CS, have >20y of work experience, wrote and published multiple books on computer programming, yet almost always write `min` when I want to use `max`.
Some (many) things are just *way* faster to build in SwiftUI compared to UIKit. I think I'm anywhere between 2 and 10 times as fast (depending on the task). One thing people don't seem to realize: when you learn SwiftUI, your UIKit skills won't disappear. You can still use it!
Almost all architectural patterns on iOS focus on dealing with messy view controllers by splitting them up. It's easy to make it messy, because view controllers are both controller layer and view layer, and data flows in an uncoordinated way.
I love debugging with print statements but have always been annoyed by the fact that it's just plain text. Why can't we have nice things? Here's a prototype where you can just log any SwiftUI view:
I wonder if subclassing/inheritance will become an anti-pattern in some years (5 years? 50 years?). While there are some good use cases for it (just like for goto) I think there are much simpler alternatives (composition, protocols, enums, etc).
I was trying to create an NSImage out of a simple SwiftUI View. Turns out to be surprisingly difficult: `dataWithPDF` is completely broken, `cacheDisplay(in:to:)` has strange artifacts and good old `CGWindowListCreateImage` works as expected.
I really still can't wrap my head around that it might just be a handful of people who are responsible for starting this war, putting millions of people in danger and killing thousands. I know the easy thing is to stay silent but this is so distressing to me.
We updated Advanced Swift for free every year since we first released it. This update is quite significant, and took us quite some time. If you already own Advanced Swift and feel like supporting us, please consider buying the video upgrade: Thanks 💖
Reading very carefully through Advanced Swift, for the first time in almost a year. Lots of little things that we will update for Swift 5. Really looking forward to that! More news on the update very soon...
Working on a small prototype debugger for TEA on iOS. On the left are the messages/actions, in the middle the state after that message, and on the right the full payload of the message. Works over Bonjour. Allows you to travel back in time as well.
I thought about this before, but I think developers for Apple's platforms should form something like a union to get some leverage. I think there were some efforts a while ago, but I might misremember.
I ran a windy solo marathon today (there are no races in Germany). Attempted to run 2:30, but after halfway (1:15) I had to let go of the pace and hang on for dear life to finish in 2:36. Still a huge PR and really happy about it!
When WWDC happens, I like to watch the videos afterwards at increased speed (option-click on the fast-forward button in Quicktime). It's so weird when I then watch things at normal speed. Feels a bit like Dory speaking whale.
I ran 34:09 for the 10k yesterday (my previous PB being 36:4x). A bit unexpected in the middle of my marathon training, especially since running under 35 minutes has been a dream of mine for many years!
@stroughtonsmith
I've ported most of our SwiftUI layout reimplementation () to a Terminal-based version so that we can build Terminal apps in something that's very much like SwiftUI.
(This is very far from done, but I'm hoping to make some progress on this next month).
We're building a Swift Talk app (prototype) in SwiftUI. One of the amazing things of having our backend in Swift is that we can share a bunch of code: for example, we can share our custom date formatters and the structs used for encoding/decoding JSON.
During the last year of writing the book, we have thrown away the first version, and days before releasing the early access, we decided to completely restructure what we had. Was painful each time, but the book got much better for it.
SwiftUI still seems to be full of bugs, making it hard to learn. You don’t know if it’s you making a mistake, or the implementation. Here’s another one:
There is a big opportunity for larger companies doing iOS in Berlin. The iOS scene is great (lots of talent and experience), but there are only a few great places to work for experienced engineers where you can contribute, grow, and earn a good salary.
Most conferences invite people who speak at other conferences. A few years ago, when I gave many talks, I got invited a lot. Now that I give very few, I get way less invites to speak 🙃. I think this works almost regardless of the quality of the talks someone gives.
Here's a reminder for everyone using Terminal on macOS: if you have long output, use Cmd+↑ (up arrow) to scroll to the beginning of that output. Saved me a lot of unnecessary scrolling today (I had lots of errors that needed to be fixed top-to-bottom).
With all this complaining about Xcode's download size, I wonder why no one writes a Download Manager, like in the olden days. Kids, this is what I used to download my first MP3s way back.
This is something fun we've been working on. Another cool feature: the entire (document-based) app comes from a Swift package and is created in code (we even have a code-drawn app icon by
@cocoawithlove
(!)).
Being more active in the community requires a thick skin. I've been called names, people regularly write nasty criticism of my work without having read it, and I've been threatened (almost called the police once). Reading Stoic philosophy helps, not reading Twitter helps too.
Our new book isn't trying to teach you all possible APIs. Rather, it tries to help you build an intuition of how SwiftUI works, focusing on view updates, layout and animations. Enjoy!