Chris Profile Banner
Chris Profile
Chris

@chriseidhof

Followers
28,464
Following
770
Media
363
Statuses
16,775

Founder of — Hardly here anymore, moved to @chris @m .

Fürstenberg/Havel, Deutschland
Joined April 2007
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
Pinned Tweet
@chriseidhof
Chris
2 years
I'll be here and hopeful that Twitter will be around, but I'm @chriseidhof @mastodon .social in case Twitter blows up.
3
2
30
@chriseidhof
Chris
4 years
Here's a first draft of a decision tree for how to define your SwiftUI properties...
Tweet media one
29
377
2K
@chriseidhof
Chris
3 years
I'm hoping that Apple will finally announce different Xcode colors at WWDC:
Tweet media one
26
127
1K
@chriseidhof
Chris
6 years
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!
Tweet media one
137
0
562
@chriseidhof
Chris
5 years
I created a small hack to visualize SwiftUI's animation curves:
7
67
520
@chriseidhof
Chris
3 years
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.
16
50
429
@chriseidhof
Chris
3 months
I'm not very active here anymore, but I made something:
11
100
416
@chriseidhof
Chris
6 years
I sometimes add a toggle extension on Bool:
Tweet media one
10
62
385
@chriseidhof
Chris
3 years
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.
28
26
362
@chriseidhof
Chris
5 years
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)
38
0
363
@chriseidhof
Chris
3 years
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.
16
30
318
@chriseidhof
Chris
7 years
In small-town Germany the neighbors think I'm jobless, because they notice I never go to an office and go shopping in the middle of the day.
20
19
314
@chriseidhof
Chris
5 years
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.
7
71
309
@chriseidhof
Chris
7 years
When I read, I feel like I know a lot. When I write, I realize how little I know.
5
104
303
@chriseidhof
Chris
2 years
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.
9
26
308
@chriseidhof
Chris
5 years
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!).
@Dimillian
Thomas Ricouard
5 years
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!
8
73
579
2
38
303
@chriseidhof
Chris
5 years
Been hacking a bit more on the flow layout during my train ride. Now with sample code as well! (lots of hacks in there, unfortunately).
5
26
295
@chriseidhof
Chris
4 years
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.
37
0
302
@chriseidhof
Chris
5 years
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.
19
9
288
@chriseidhof
Chris
5 years
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:
8
13
288
@chriseidhof
Chris
6 years
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).
Tweet media one
9
48
281
@chriseidhof
Chris
6 years
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!
@fcbunn
Bunn
6 years
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"
13
152
507
14
82
262
@chriseidhof
Chris
2 years
We did some more work on visualizing swift-async-algorithms in RxMarbles style. Coming soon to a Swift Talk near you!
4
25
259
@chriseidhof
Chris
4 years
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?
13
22
245
@chriseidhof
Chris
5 years
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).
9
35
241
@chriseidhof
Chris
5 years
Our new Mac app is open source! Enjoy =)
@objcio
objc.io
5 years
In other news: we're open-sourcing Markdown Playgrounds today 🎉 Now you can run Swift code blocks in a Markdown file, without leaving the editor! 😊
Tweet media one
1
46
148
2
45
239
@chriseidhof
Chris
8 years
How I parse JSON in Swift now fits into a tweet: I just use if-let, no extras, and put it in a convenience init:
Tweet media one
18
63
235
@chriseidhof
Chris
4 years
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`:
0
26
230
@chriseidhof
Chris
7 years
Protocol Oriented Programming is not a Silver Bullet:
10
114
230
@chriseidhof
Chris
2 years
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).
13
31
229
@chriseidhof
Chris
5 years
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).
16
40
221
@chriseidhof
Chris
6 years
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. 🤷‍♀️
@dhartbit
David Hart
6 years
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!
0
8
68
18
9
220
@chriseidhof
Chris
7 years
When talking about iOS architecture, people often want to find the "one way". There is none. Each solution comes with tradeoffs!
12
65
220
@chriseidhof
Chris
7 years
I wrote a response to @unclebobmartin 's article:
16
103
220
@chriseidhof
Chris
6 years
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.
7
17
215
@chriseidhof
Chris
3 years
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:
22
24
214
@chriseidhof
Chris
3 years
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! 🥇
13
0
200
@chriseidhof
Chris
5 years
I think most reactive frameworks are misguided and make it too easy to write brittle code. So no book from me ;).
13
26
188
@chriseidhof
Chris
6 years
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
23
23
190
@chriseidhof
Chris
7 years
Swift 4 really helps to clean up many examples in Advanced Swift:
Tweet media one
5
33
186
@chriseidhof
Chris
5 years
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.
16
5
187
@chriseidhof
Chris
3 years
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:
23
13
188
@chriseidhof
Chris
6 years
We've been writing a new book with @cocoawithlove , and it's available for early access today! 🎉 Get it while it's fresh:
@objcio
objc.io
6 years
Introducing our new book: App Architecture 📗😊 Early Access starts today!
20
102
353
11
40
185
@chriseidhof
Chris
2 years
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!
21
1
182
@chriseidhof
Chris
4 years
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.
@baswiftable
BA: Swiftable
4 years
What an amazing first day! Can’t wait till tomorrow #BASwiftable 💥🚀
Tweet media one
Tweet media two
Tweet media three
Tweet media four
3
14
85
6
14
177
@chriseidhof
Chris
4 years
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".
@vojtastavik
Vojta Stavik
4 years
For an article I'm writing: 📢 Have you ever quit a project/job because of the codebase you had to work with?
12
4
8
19
15
176
@chriseidhof
Chris
4 years
Who says you can't dress up when working from home? In other news: episode 200 of Swift Talk is coming up! 🥳
Tweet media one
9
1
178
@chriseidhof
Chris
7 years
Two-way, type-safe data binding for NSObject with Swift's new keypath-based KVO:
Tweet media one
4
30
173
@chriseidhof
Chris
4 years
For SwiftUI specifically, I can recommend , and . I think also looks amazing (although I still haven't bought or read it).
@drewmccormack
Drew McCormack
4 years
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?
14
4
67
6
17
174
@chriseidhof
Chris
3 years
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.
3
4
172
@chriseidhof
Chris
7 years
If I'll ever organize a Swiss Swift conference I'd definitely call it Swiftzerland.
7
17
171
@chriseidhof
Chris
6 years
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.
@objcio
objc.io
6 years
We finished the App Architecture book, and it's out today! 🎉
14
76
297
16
24
170
@chriseidhof
Chris
2 years
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`.
15
7
170
@chriseidhof
Chris
2 years
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!
10
17
164
@chriseidhof
Chris
6 years
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.
21
32
165
@chriseidhof
Chris
2 years
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:
8
5
163
@chriseidhof
Chris
9 years
One of my biggest life goals achieved! Thanks for all the support, made all the difference. Tears of joy ❤️ http://t.co/cFYToIsqb3
Tweet media one
30
4
162
@chriseidhof
Chris
6 years
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).
22
36
163
@chriseidhof
Chris
2 years
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.
Tweet media one
10
10
159
@chriseidhof
Chris
7 years
Nice trick: sometimes I use an in-line computed property for lazy computation.
Tweet media one
8
22
156
@chriseidhof
Chris
2 years
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.
3
8
156
@chriseidhof
Chris
7 years
I wrote a post about a micro Auto Layout DSL: -- Three Methods, 15 lines in total and Auto Layout life becomes a little bit easier.
7
44
157
@chriseidhof
Chris
5 years
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 💖
5
30
153
@chriseidhof
Chris
5 years
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...
5
14
150
@chriseidhof
Chris
6 years
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.
11
30
152
@chriseidhof
Chris
5 years
Played around with shapes in SwiftUI today. I managed to draw an activity indicator, the next challenge is to rotate it infinitely.
Tweet media one
4
11
153
@chriseidhof
Chris
4 years
Coming soon to a Swift Talk near you.
6
7
147
@chriseidhof
Chris
7 years
A micro AutoLayout DSL. Coming soon to a Swift Talk near you!
Tweet media one
8
19
147
@chriseidhof
Chris
4 years
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.
10
14
145
@chriseidhof
Chris
3 years
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!
15
0
146
@chriseidhof
Chris
6 years
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.
10
4
146
@chriseidhof
Chris
4 years
In my talk I'll go over how SwiftUI's layout system works. I'll show some basic views, modifiers, backgrounds, geometry readers and preferences.
@baswiftable
BA: Swiftable
4 years
All our talks videos are now live!! Take a look at all these amazing speakers in action 🔛
Tweet media one
1
43
147
6
14
144
@chriseidhof
Chris
5 years
@mbrandonw Things look much better now. She’s recovering well, and won’t need surgery. Thanks for all the well wishes. 💖
11
0
143
@chriseidhof
Chris
2 years
Played around a bit visualizing the new stuff from SwiftAsyncAlgorithms () in a way similar to RxMarbles ().
3
12
143
@chriseidhof
Chris
4 years
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!
19
0
142
@chriseidhof
Chris
3 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).
8
16
139
@chriseidhof
Chris
5 years
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.
5
7
136
@chriseidhof
Chris
6 years
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.
7
20
137
@chriseidhof
Chris
8 years
Next Monday is the official release of Advanced Swift. It took a bit longer than expected, but it's awesome:
3
60
136
@chriseidhof
Chris
7 years
I wrote a post about using reducers to refactor an asynchronous view controller:
2
37
136
@chriseidhof
Chris
5 years
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:
19
15
132
@chriseidhof
Chris
6 years
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.
11
9
134
@chriseidhof
Chris
6 years
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.
5
13
133
@chriseidhof
Chris
2 years
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).
5
18
133
@chriseidhof
Chris
8 years
A proof print of Advanced Swift arrived. It looks very nice. Getting very close to the final version now!
Tweet media one
7
21
131
@chriseidhof
Chris
7 years
Not sure if it's useful, but you can make a `ReadOnly` class which takes an object and only allows read-only access to its direct properties
Tweet media one
3
33
132
@chriseidhof
Chris
6 years
Wow, using libSyntax in Swift is easy using a recent Swift toolchain. Importing SwiftSyntax actually works:
Tweet media one
1
26
135
@chriseidhof
Chris
5 years
I walked into the coffee shop, saw the dude’s beard, and I just knew he was going to make me a great flat white. Which he did.
4
5
129
@chriseidhof
Chris
7 years
I have a fairly decent working implementation of the Elm architecture in Swift... will write this up soon. It's very weird, but awesome.
Tweet media one
7
18
131
@chriseidhof
Chris
3 months
Today we added a section about building a flow layout in SwiftUI using the Layout protocol:
2
20
130
@chriseidhof
Chris
8 years
Whenever an iOS developer makes fun of Android, it makes me cringe. I think it's unprofessional and close-minded. Let's learn instead.
12
50
130
@chriseidhof
Chris
3 years
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.
Tweet media one
21
2
129
@chriseidhof
Chris
8 years
If you're into Swift, make sure to take a look at @kylefuller 's GitHub repo's on a regular basis: - golden stuff.
1
17
125
@chriseidhof
Chris
5 years
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 (!)).
@objcio
objc.io
5 years
We’re trying something new...
9
37
295
7
11
127
@chriseidhof
Chris
8 years
🎉 Good Morning WWDC! We launched Swift Talk today: weekly episodes of us live-programming in Swift: 🎈
6
51
125
@chriseidhof
Chris
7 years
Shoutout to @rwenderlich for creating his invaluable site. One of the best things about it is that they always update their tutorials.
2
17
124
@chriseidhof
Chris
6 years
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.
25
6
123
@chriseidhof
Chris
4 years
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!
@objcio
objc.io
4 years
Introducing our new book: Thinking in SwiftUI Early Access starts today!
10
40
201
4
19
120
@chriseidhof
Chris
3 years
When you want to be absolutely sure that `Index` is the same `Index` for subsequences and `Indices`. And subsequences' indices. And their indices. 🤪
Tweet media one
3
11
121