## Questions
* Quick introduction Khoi Denis Thibault.
* Computer engieer for 20 years?
* First half was Java J2EE, C++, backend engineer
* Created his own company doing "integraion"
* started doing Android because of Java and didn't want to do Objective-C
* Moved to Canada mobile engineer specialized in open source development
* Specialized on iOS and Swift
* Do a lot of reactive programming, involved in the oepn soruce community
* Became a senior iOS developer,
* Team lead, bootstraped a new mobile team
* manage, doing architecture 4 android 4 iOS
* CI/CD pipeline
* became interested in uni directional data flow architecture, redux
* 2 years ago, want to focus on the architecture for both iOS/Android
* Doesn't use Spin but other internal implementation
* Currently porting that architecture to structural concurrency
* descriptive state machine using DSL
* Have u worked on multi platform project in the past? Any thought on that? Exp working with macOS/AppKit?
* Nope
* SwiftUI 100% now
* Are you familiar with any other frameworks apart from UIKit?
* CoreBluetooth, was using an SDK that uses it
* some CoreData, Firebase
* What memory management model does Swift use?
* Explains it okay
* Capture list unowned (i think only theory applies here for him)
* "What is a memory leak? Can you show me an example of one that you have encountered at work? How do you discover them in your day to day work? How have you planned (if any) in the past to keep them away, do you run any X period of time a check on the memory graph or something else for example you would like to share?"
* in code review, for suspicious PRs
* CoreData? Realm? Sqlite? Why? If u were tasked to rewrite Toggl app what would u choose? < Segway to the NSUserDefaults assignment followup k later on
* Offline-first
* CoreData (iCloud?)
* Realm because of synchronization
* Synchorinization by hand? (?!) (I think he is meaning what we do with "_backup, _current..." which seems to come for free with Realm)
* looks like he redo the assignment in Core Data
* What kind of Data structures are u familiar with? What about algorithms, particular algo/ds u found useful in iOS developemnt
* rarely have to use algorithms
* use value type as much as possible
* ramble about state machine, value type, which is kinda not relevant
* (i would have wanted to ask about CoW types :P but another time maybe)
* know the complexity of lookingup an item in Set Array O(1), O(n)
* mentioned he use Deque maintaining backpressure queue in his architecture package
* Can we check on this if he knows about CoW?
* know Cow
* Do u code in any other language? Do u have any exp writing mobile tooling scripts? (localization/fastlane)
* a swift cli to generate code coverage report from XML
* also write some Bash
* Familiarity with The Composable Architecture? Can u quickly compare it to your own's Spin (He wrote this Spin thingy)
* mentioedn Mealy and Moore thingy
* find the syntax complicated, not natural. mentioned ViewStore
* unsure if having a GlobalStore
* in his architecture there is no store, so no need to zoomout, zoomin on a state.
*
## Assignment improvement
* Architecutre walkthrough
* I have trouble following his explaination on the arctehicture
* Why the use of NSUserDefaults?
* No fancy request, fitler
* can't have a hierarchy of an object
* Moved to CoreData
* `StateMachine.swift` line 97, retaining self behavior
* in staet machine sometimes u don't want to performa transition
* his Swift navigation is kinda weird, does't knkow how to split
* `makeTimerView()` passing onStop in, what if the subview is deeply nested, how do u notify its parent about a change?
* mediator pattern in the architecture layer
* `private var start = Date.now`, refactor the code so these props are coming in from the architecture
* struggle to move it out because when introducing new prop to the "phantom protocol" he has, all the sub states have to somehow implement it.
## Get to know Thibault
- Tell me about someone who is better than you in an area that really matters to you.
- :+1:
- *“Look for the candidate to demonstrate a genuine appreciation for others who have more skill or talent.”*
- What is the hardest you've ever worked on something in your life?
- :+1: (kind of)
- *“Look for specific examples of real but joyful sacrifice. In other words, the candidate isn't complaining, but is grateful for the experience.”*
- What kind of people annoy you the most, and how do you deal with them?
- :+1:
- *“What you're looking for here are self-awareness and self-control.”*
- Ask him about his remote work exp
- Questiona bour remote work
- Why do u want to work here, Why do you think you will be a good fit for our team
- Used Toggl in the past
- Able to work in a well-known application which he "doesn't do" rightnow, becuse he's doign B2B
- because of background in architecture world and reactive programming, saw Compsable architecture for Android. He's intesreted in architecture
- Anything u want to ask us?
- More about the context of the position
- Ask whether who is making architecture decision
- Ask question about TCA its pros and cons and stuff
- Whether we have CI/CD