
Sign up to save your podcasts
Or


Guest
Previous Episodes
Sponsors
360|iDev - August 25 - 28th - Denver, CO
Use the promo code FriendsInHighPlaces to get 20% off registration.
BrightDigit
Contact me if you need help today.
Thoughts on WWDC
Business + Developer Conferences
Why Should You Be A Subcontractor?
Things to Consider for iOS Developers
Challenges of Being a Subcontractor
Speaking at 360|iDev
Social Media
Twitter - @brightdigit
Facebook - BrightDigit
LinkedIn - BrightDigit
Instagram - @brightdigit
Guest
Why should companies go with a cross-platform solution?
What are the differences between cross-platform solutions?
What are the challenges with cross-platform solution?
Social Media
Twitter - @brightdigit
Facebook - BrightDigit
LinkedIn - BrightDigit
Instagram - @brightdigit
Transcript
[00:00:00] Leo Dion (Host): Today with us. We have Rob Kerr. You want to go ahead and introduce yourself.
[00:00:05] Rob Kerr (Guest): My name is Rob Kerr. I'm a consultant working primarily in mobile platforms a lot of native development but more and more it's cross-platform with Xamarin, Flutter, and some other tools and I work with primarily business customers who are looking to deliver applications to both IOS and Android with the most efficient development process that they can experience.
[00:00:29] Leo Dion (Host): Awesome, really glad to have you on Rob. I've known you for three or four years now. It seems like.
[00:00:35] Rob Kerr (Guest): Something like that.
[00:00:37] Leo Dion (Host): Yeah, and we've met either at meetups or touch base every so often. So it sounds like recently you've been doing a lot of cross-platform development. And like I said, I have a little bit of experience with that of dabbled a little bit in Cordova as well.
[00:00:54] My bread-and-butter, my expertise is obviously Swift [that is] native Swift development. That's what I like to do. I think it has a lot of advantages but there could be situations like business reasons valid business reasons to go cross-platform, right?
[00:01:10] Rob Kerr (Guest): Yeah, I think so. And I think you and I have similar backgrounds in solutions as far as Apple. I've done a ton of native development in Swift and iOS and some on Android as well. Probably the last year or two a lot of my work has been cross platform and it's kind of driven by that business need or want to you know, hit both platforms efficiently. And currently in the IOS app store has you know about 1.8 million apps and the Play Store has about 2.1 million but the stats tell us that I think AppFigures had a study that only 450 thousand apps are truly cross platform where the same application is deployed in both platforms, which is you know, it's really small numbers less than 10 percent.
[00:01:54] And so when will you find is you know, Everyone would kind of like to be on both platforms at the same time, but not a lot of folks are or at least not not an efficient way. So in the past you mentioned Cordova and PhoneGap and probably five or six years ago that was almost the only game in town.
[00:02:11] But now this cross-platform frameworks are you know sprouting up quite a bit and all of the mega vendors offer something like Flutter or React Native or Xamarin from Microsoft. And so it's definitely coming into its own and there's certainly those those applications like business applications, especially where you need to have both platforms, but maybe don't want to fund building the app twice once for each so yeah, I think so.
[00:02:38] Leo Dion (Host): What are some situations where businesses should choose cross platform as opposed to a native?
[00:02:46] Rob Kerr (Guest): Yeah, that's a good question. And that's you know comes up a lot because the sort of the reasons not to usually drive into accessing very exotic APIs and things like that. In my mind if a business really wants to deliver on both platforms, especially if they like to do it at the same time that kind of tends toward cross-platform if you can particularly if the user experience they wanted to be the same on both platforms then using something cross-platform maybe doesn't mandate it but certainly makes it much likely that an application is going to work the same way so that when the support call comes in then you know somebody who needs to help a user doesn't have to think about you know, how does this work on Android how does this work on iOS. How's the potentially work on Windows?
[00:03:29] Then the obvious, you know elephant in the room is just budget. If you have to build the same application twice that costs, you know potentially twice as much typically usually other different teams that work on IOS and Android if they're done completely native.
[00:03:44] And then you know, you really have to think about in the long term how does that go into support cost? So if the application has to have a life cycle, new features that we added bugs need to be fixed, if they're written in two different languages than two platforms than that's something to think about so. As I think about it and on the consumer market, if you are going to develop an application to compete with one of Apple's native apps or Android and it needs to be really exotic, you know, cross-platform might not be the right choice for that.
[00:04:16] But for the vast majority of apps are content consumpution or business orientated and so on It's probably the majority of the leading cross-platform tools can deliver an app with the same user experience. So something to think about.
[00:04:33] Leo Dion (Host): It's funny you mention user experience. I would say that can be a benefit of cross-platform but also a hindrance in a lot of ways because like recently I was doing work with the client and they were really good about making sure that the user experience was actually different on both platforms precisely because of the expectations that certain like Android users have with their UI and Apple users have with their UI - there are definitely big differences. Specificly I'm just like thinking about like hamburger menus is like we don't have hamburger menus is very much on iOS and that's that's one of the jarring things is when you use a cross-platform app.
[00:05:18] It can be obvious and jarring when you're using an app that is built cross platform, but doesn't like take into account like the user experience differences between both platforms.
[00:05:33] Rob Kerr (Guest): Yeah, there's a little bit to unpack there because as I've worked with clients that you know, definitely wanted pixel-perfect identical experiences in both platforms.
[00:05:42] Now, you might argue that you shouldn't do that right and Google and Apple and tell you shouldn't do that because you're not following their conventions and that's a very va...
Guests
Book - iOS Test Driven Development
Links
Previous Episodes
Show Notes
The Components of Test-Driven Development
How to Encourage TDD in Your Team and Company
Common Mistakes When Doing Test Driven Development
For Experimenting with New APIs
Continuous Integration Tools
WWDC and TDD
WWDC 2019 - Testing in Xcode
Social Media
Twitter - @brightdigit
Facebook - BrightDigit
Brand New Instagram! - @brightdigit
Full Transcription
Leo Dion (Host): So hey guys, how's it going?
[00:00:01] Michael Katz (Guest): Great. How are you?
[00:00:02] Leo Dion (Host): Good good, just been trying to catch up with WWDC. What's your general thoughts so far.
[00:00:07] Michael Katz (Guest): It seems like this is about the biggest one we've had since they introduced Swift. There's just so much stuff.
[00:00:12] Leo Dion (Host): Yeah, that's exactly what I was thinking especially with the UI changes. So have you started investing money to buy a $1000 stand?
[00:00:20] Michael Katz (Guest): Yeah, I wish. Fortunately at my company, we actually do video editing. We have editing bays already have racks of Mac Pros. So I assume that those will get upgraded with the new machines at the fancy monitor so I can go downstairs and drool over them when I'm not actually. It's working on my MacBook.
[00:00:36] Leo Dion (Host): Yeah, I mean that's the thing about these devices. They're not for developers like there for video editing like massive 3d rendering that kind of stuff and big production companies
[00:00:45] Joshua Greene (Guest): Maybe if you're doing like 3D games or something as a developer. I could see it being really worthwhile but for business or Enterprise type apps it may be a little bit of an overkill which is definitely pretty awesome. But day to day maybe not so much.
[00:00:59] Leo Dion (Host): Yeah, exactly. So if people want to tweet at us or we're also at brightdigit on Twitter at brightdigit on Instagram and Facebook. Let us know your thoughts on WWDC and any thoughts you might have about all the new stuff that's coming out.
[00:01:15] Guys, so apparently you have a book coming out pretty soon. Is that correct? So go ahead and introduce yourselves to let me know a little bit about this book.
[00:01:24] Joshua Greene (Guest): So my name is Joshua Greene. I am a longtime author for RayWenderlich.com
[00:01:30] I've done everything from creating tutorials to books to videos. This is a new project that we're putting together to teach test-driven development it's called iOS Test-Driven Development by Tutorials
[00:01:45] Michael Katz (Guest): And I'm Michael Katz and similar story. I've been with Ray Wenderlich for a number of years and also done books tutorials.
[00:01:53] Spoke at the RW Devcon. Haven't done any screen cast yet, but maybe someday and they are passionate about test-driven development and we both came I think independently to the idea of writing a testing book and editor-in-chief put us together. And here we are most of the way through it.
[00:02:11] Just getting ready to finally finish it up.
[00:02:13] Leo Dion (Host): So test-driven development, I remember once it was like almost more than half decade ago, probably almost 10 years ago, I went to a conference in Chicago and I think it was Bob Martin who gave a talk on test-driven development the idea being like first you write your test and then you write your code.
[00:02:33] Is that kind of the gist of it or what are the components of test-driven development? What exactly does that mean?
[00:02:39] Joshua Greene (Guest): Yeah, definitely writing tests first is definitely a big part of it. Keeping iterations small. I think test-driven development is all about, you know, writing one small thing you write a small test to implement something that you need to get implemented.
[00:02:54] You show the test actually doesn't pass you implement. Whatever code is required to get it the pass and then you verify it passes. And you just repeat this process over and over so that when you finally, you know, got your app out not only have you got all the features written you've got all of the tests that you're going to need alongside it but it's not like you just write all the tests in advance. It's literally a small step by a small step is kind of what makes it different and special.
[00:03:20] Michael Katz (Guest): It's a circle you just go over and over again at a little test and yet add some code to fix that test and you test the next piece and you add the code for that and so on so you're always in lockstep.
[00:03:31] Leo Dion (Host): So the problem I have had with test-driven development and iOS is some of the stuff that is pertaining to like the UI or perhaps like test-driven development, sometimes you have different screen sizes, obviously, you might have to deal with something like core data or networking. How do you overcome tho...
Guests
Book - Advanced iOS App Architecture
Links
Previous Episodes
Show Notes
Challenges with Architecture in iOS Application Development
Applying Patterns to iOS Application Architecture
WWDC Hopes and Dreams
Josh Berlin - @jab2109
René Cacheaux - @RCachATX
Leo Dion - @leogdion
What happened to Alcatraz and Xcode Extensions?
Social Media
Twitter - @brightdigit
Facebook - BrightDigit
Brand New Instagram! - @brightdigit
Transcript
Leo Dion (Host): [00:00:00] Hello, welcome to another episode of EmpowerApps Show today. We have with us René Cacheaux and Josh Berlin. Guys, thanks for coming on.
René Cacheaux (Guest): [00:00:08] Thanks for having us.
Josh Berlin (Guest): [00:00:09] Yeah.
Leo Dion (Host): [00:00:09] So I've heard a lot of issues that companies have with architecture especially architecture with iOS apps and I know you guys have a book coming out as part of the Ray Wenderlich series - IOS app architecture. So this is something I'm really interested [in]. Maybe if you can kind of define the problems you've seen a lot of companies run into when it comes to architecting a successful mobile app, especially in iOS.
René Cacheaux (Guest): [00:00:40] Yeah, one of the biggest challenges with iOS development is that there's really no strong opinion from Apple. So everyone's really kind of left to roll their own patterns. The biggest issues that I've seen is just slow in-team velocity, because we read a lot more code than we write. Everytime that we go into a code base to add a new feature, fix a bug, or something - the more tightly coupled all the pieces of your app are [and] the more you have to read to kind of understand all the things that you need to understand to make a safe change without breaking something. And so, kind of architecture really helps speed up your team because if you can kind of use the right patterns and break things up into no easy to reason about chunks. It's much much easier to find where you need to make the change and have confidence that you are not going to break something. So that's what I would say kind of like the main points on that.
Josh Berlin (Guest): [00:01:39] Yeah and another thing is like a lot of apps that are built usually start with maybe like one person or a small team and that developer has an opinion about how to architect the app and as a team grows and the product org wants more changes [it] becomes a lot harder to make those changes if the team isn't on board with one type of architecture and everyone is going to have their own opinion. It's going to be a lot easier to make these changes. If everyone agrees on one architecture and knows where to our find everything, everything is documented because one day when the team grows more, you know, you're going to potentially have more problems - like René was saying finding things in the code base. When the app is small it's not as big of a deal but when it grows it becomes a lot more challenging, so it's good to get these architectural patterns in early on and have everyone on board.
Leo Dion (Host): [00:02:36] Maybe talk a little bit about your background and how did you guys get into iOS development?
René Cacheaux (Guest): [00:02:40] So I got into it back in around 2008. I was doing a bunch of kind of web Java server face, you know internal it development and my wife had bought an iPhone and was kind of really trying to get me on board with the Apple ecosystem. Back then I was kind of Microsoft guy. You know, I was like, I'll try developing for this it would be interesting and I just got hooked honestly like. Working with like very abstract things kind of in the cloud and kind of in the background versus working on something that you can kind of feel and touch and look and show your friends kind of a really really cool thing. That's how I got into it.
Leo Dion (Host): [00:03:17] How about you Josh?
Josh Berlin (Guest): [00:03:18] Yeah. So in college, it was like maybe 10 years ago and iOS first came out. No one was really teaching this in school and I wanted a fitness tracker. So I built one for myself and ended up getting a job at a company building business products for Windows. They wanted to Android and iOS...
UnoDeuce Multimedia and Storytelling
Previous Episodes
March 25th Event
How to start telling stories with video now
Running IT in an Apple Run Business
Archiving and Hard Drives
Lansing Marketing Hackers
WWDC
Alex's Links
On Twitter @alex_v_bush
iOS Interview Guide
Inside iOS Dev Podcast
Previous Episodes
Episode 8 - Cloud and Backend Services For Apps
What makes interviewing iOS Developers special?
Common mistakes employers make interviewing iOS candidates
Interview Questions about building a UI in iOS
Common mistakes iOS developer applicants and candidates make
Full Transcription
Leo Dion (Host): Hey Alex
[00:00:01] Alex Bush (Guest): Hey Leo
[00:00:01] Leo Dion (Host): how are you doing, sir?
[00:00:02] Alex Bush (Guest): Great. How are you doing?
[00:00:04] Leo Dion (Host): Fantastic glad to have Alex Bush on from IOS interview guide and inside iOS Dev podcast. If you are interested in iOS development, you should definitely check his podcast out. Alex, what are you up to right now?
[00:00:21] Alex Bush (Guest): I am sort of getting up to speed after Microconf and vacation.
[00:00:27] Leo Dion (Host): I hear you. I'm in the same boat microconf and peers and vacation and starting a new contract. So I know where you're coming from.
[00:00:35] Alex Bush (Guest): Right and yeah, and I'm Contracting as well iOS so doing that getting up to speed on that
[00:00:42] Leo Dion (Host): Who are you working with right now?
[00:00:43] Alex Bush (Guest): Currently with Uber. Yeah, Silicon Valley, you know all the companies, around probably be looking for another gig soon enough.
[00:00:53] Leo Dion (Host): Yeah. If you are interested in architecture, definitely check Alex's podcast out like your specialty really is in helping iOS developers get jobs and specifically the interview process, correct.
[00:01:11] Alex Bush (Guest): Yes, that's sort of been my aim my focus lately last couple of years. Yeah, I wrote a book as you mentioned on the topic helping iOS developers get jobs right prep for interviews.
[00:01:26] Leo Dion (Host): Okay. So if you're like a company hiring iOS developers, what are some things that make interviewing a potential iOS Developer different from - I guess the biggest thing is web developers, right? So what makes it different from hiring your standard web developer.
[00:01:45] Alex Bush (Guest): That's a good question and it's sort of how the whole book thing and helping iOS devs interview started. I was at the time at a different consultancy helping them hire people for their iOS project. And as I was interviewing sort of same things will come up and I would kind of jot some notes take some notes on what to ask what to remember you get to ask and probe as I interview people and in general sort of when you interview, let's say a web developer or just a software developer right you go for a broader software topics, right?
[00:02:30] Roughly speaking algorithms and then design patterns and architectures, right but overall for software not specific for iOS and I think that's what's different when you're interviewing and hiring iOS people. The one thing is to in the sort of web world and specifically backend world in my opinion.
[00:02:52] You can hire a generalist and they can adapt. Quick enough I guess but in the iOS world it's very crucial to for for developers to really know very well the the frameworks that they work with and I think that's the main biggest difference when you're interviewing iOS people to sort of aim at that and assess their knowledge not just overall software development knowledge, but specifically iOS development.
[00:03:23] Leo Dion (Host): But I guess like you like it comes to mind because it drives almost everything maybe we'll particulars about UI kit are you thinking people should really know about
[00:03:34] Alex Bush (Guest): it also depends right? Like if you're hiring for just I guess you don't have a heavy UI animation or performance concerns for your project or your app.
[00:03:46] Then you don't really need a specialist. Who knows. Low-level details some of that right but sometimes for example social networking apps or apps that have social networking aspect of some kind they struggle with scrolling performance. Right? Let's say you have a some sort of a Instagram like feed with pictures infinitives feed that you can scroll and it's dynamically size, right if that's a crucial part of your app.
[00:04:14] It's important to make the performance buttery smooth right and not every developer. Like this is what in regards of UIKit what you want to dig and assess more in that case
[00:04:26] Leo Dion (Host): Okay,
[00:04:27] Alex Bush (Guest): rather than just overall. You know, what is MVC? Right right.
[00:04:32] Leo Dion (Host): So maybe we should clarify the audience like UI kit is the basic framework for the user interface on iOS. So if you're going to do any. Simple menus tables with navigation UI kit is the bread and butter of that and then like Apple kind of they teach an MVC pattern or model view controller, which I think correct me if I'm wrong like every developer who does iOS development should know that in an interview correct.
[00:05:00] Alex Bush (Guest): That is correct. Although I would say these days that's a prerequisite to Simply develop for iOS, but to be sort of hired for position. You should know more than that. At least be aware. Right?
[00:05:16] Leo Dion (Host): I agree. I think that's the very basics what are some other things you should know about
[00:05:20] Alex Bush (Guest): what comes to mind the core apple design pattern...
Previous Episode
Guest: Jaim Zuber of Sharp Five Software
Sharp Five Software
Jaim Zuber Blog
March 25 Apple Event
What does that mean working with external developers?
What is the best way to know you have a good developer?
Follow Jaim at jaimzuber.com
Previous Episodes
Reddit Threads
Database Collaboration Tool
Managing Devices
Managing Software and Disk
Creative Apps
Marketing Apps
Communication and Todo Apps
Finances Apps
Music by Bimbotronic from Fugue
Apple March Event
History of the iPad
Limitations of the iPad
Hardware Limitations
UI Issues
App Store Monetization
Enterprise Licenses
Previous Episodes
Define Whether You Do Need Cloud or Backend Services
You Do Not Need If…
You Do Need If..
What To Consider When Deciding How To Store Data?
Build a Custom Web App
Virtual Machine Options
Web App Options
Database Options
Programming Options
Swift Options
Server Software Options
Other Software Considerations
Mobile Backend As A Service
Music by Roman Bulakhov from Fugue
Full Transcript
[00:00:00] Erik Gillespie (Host): Hi Leo, it's me. Again.
[00:00:01] Leo Dion (Host): Hey, Eric. Glad to have you on to help host this episode. So today we're going to talk about back-end and cloud services for your IOS app. And I think first we should talk about when you should need a back-end or cloud service because I don't think it's needed in every absolute case when it comes to an IOS app or any mobile app.
[00:00:25] Erik Gillespie (Host): Yeah, I'm really curious to hear what your ideas are on this.
[00:00:27] Leo Dion (Host): So one thing to consider is there's a lot you can get away with without even doing cloud services. The thing with an IOS app is if you're storing your data in something that is like iCloud or in a lot of cases people really don't need the cloud to store their data. They can just sort on their phone itself. I think often times when we think about building an app that's something to think about is like do you really need this stored in the cloud and if you maybe can provide a manual mechanism to backup the data into some sort of iCloud storage as a file that saves a lot of trouble and saves you a lot of time and money quite frankly when you're building your mobile app. And then that way you don't really need a cloud service or a back-end service in a lot of cases.
[00:01:15] Erik Gillespie (Host): What are some situations where you think it's okay to go with a back-end service or on the flip side choose to only or mostly store things directly on your users phones.
[00:01:27] Leo Dion (Host): I think anything that's privacy sensitive. I think you should definitely just store on the phone locally because that's a whole other headache you having to deal with if you're worried about that stuff being stored in the cloud and if it's very simple stuff if it's things that they just need on their phone and if they lose it, it's not the end of the world I think it's totally legitimate to only store that stuff on the phone. Also, if you're using any third party apis in other words. Like let's say you're using Twitter or YouTube or some other API where you're not really storing data. Data that's being stored is essentially being stored in this third party structure than it's not really necessary because you can just use that third party API as your database in many ways.
[00:02:06] I'll just tell you one case I built an app for nurses and doctors to do continuing education for their career and all that data was just stored in core data, which is essentially a SQL lite database abstraction layer. And so all that stuff was sort of essentially in SQL and it was all sort of locally and there was just a simple option. They don't have the budget for it. They didn't have the timeline for it either. So the simple way we did it is we just have a manual backup process that you can run and it essentially creates a zip file of this data stored as a Json or JavaScript object notation file. And so if they wanted to back up they can just sort it in iCloud and if they ever wanted to restore it they can always restore it back on their iPhone. Where I think a back-end service and a cloud service is really helpful is if you're going to have it available on multiple devices .So for instance I'm a big user of Bear, which is an awesome note taking app that's available on all Apple devices and they use kind of combination iCloud and CloudKit they store their stuff in the back end and then that way if I pull up my notes on a Mac or on my iPad or my iPhone. I always have it accessible because it's all stored in the cloud. I think that's where something like a back-end service is really useful.
[00:03:19] Erik Gillespie (Host): Like when you need to synchronize data across multiple devices
...From the publisher's feed