iCalvin.org

MacStories iOS 12 Review

iOS 12: The MacStories Review

Man, I’ve been on iOS 12 since WWDC and been pretty deep into the APIs, but ‘Ticci is still showing me plenty of things I had no idea about. Make sure to check out his extensive review asap!

#ios12 #iPad #shortcuts

25% Uptime

CastKit 4: 25% Uptime

A while ago I realized that for three months of every year, I voluntarily make my phone work worse. I brought some friends on to help me figure out why, and to discuss what Apple products we still want to see before 2019.

#swift #iPhoneX🅂 #WatchS4 #AirPower #beta

IPhone XS Event

Well that was sort of a bummer.

Don’t get me wrong, the XS looks like a great iteration over the X, but all in all what was missing from this event certainly loomed large over it.

Starting from the beginning, I enjoyed the silly intro video, and it was awesome to get to see more of Apple Park. I did pick up on what I assumed to be hints at the new AirPods. Hey Siri and waterproofing seemed to be specifically highlighted to get people excited. And since I was keeping up with Twitter I enjoyed the tie in to Tim’s fake missent DM. At least Tim quickly dashed my hopes soon into the video with the callout that we were only going to be hearing about two products today, which I assumed to be the iPhone and the Watch, but because of the intro video I figured they just weren’t counting the many accessories they were surely going to launch! Nope.

As I knew would happen, I was more tempted by the Series 4 than I thought I would be. My intention when I got the S3 was to skip this years model, and when I saw the leaks a few weeks ago, as nice as the larger display looked, I was still feeling good about that decision. But as always, the leaked product images didn’t show everything. The ECG functionality is really impressive, and the fall detection is something I’ve been waiting for since the launch of HealthKit in iOS 8 (I never liked that there weren’t apps to write the Time Fallen data type, and even tried to make my own a few times to varying degrees of success). But once I saw that prices were lifted across the board, and that the cheapest cellular Stainless Steel model I would want would be $750, I’m back to feeling like I’m waiting for the S5.

iPhone XS and XS Max (sigh), while certainly seeming like a solid iteration over the X, also don’t really call out to me. I have the Focos to adjust my portrait mode photos, and the rest of the improvements fall into the typical ‘S year’ category, impressive but not necessary for me. What I am very, very happy about is that there doesn’t seem to be any compromises between the two sizes. Unless I missed anything there weren’t any features of the XS Max that weren’t also present on the smaller phone. I’m very happy about this development, and hope this remains true in the future. I’m still gonna be passing on this phone though. I love my iPhone X, and because of the iPhone Upgrade Program if I did opt to upgrade I would have to trade it in. I would much prefer to just skip this S year and hold onto my iPhone X as a seconday phone for the forseeable future.

Then came the XR. It’s beautiful, the colors are great, and it’s also a great update to the X with reasonable compromises to hit that lower price point. I don’t like that they are now doing software Portrait mode like Android phones, but what can you do, it’s a popular feature and the single camera phones were starting to look bad against Android phone cameras. What I’m dissapointed in is that they never acgknowledged the weirdness of this model. It’s a cheaper phone than the XSs, but with the same screen size (in points) as the Max. So now the story seems to be that small size is a luxury, but then getting the bigger XS is also a luxury? Are they just understanding that most people will want the smaller XS so they’ll price gouge on that desire? It seems very odd that the cheapest 2018 iPhone model has more screen real estate than this year’s flagship. We obviously knew this based on leaks for months now, but I was expecting Apple to tell a compelling story to rationalize this strangeness. They choose not to.

So then what was missing? AirPower and new AirPods (at least a case) were my safe bets. It is starting to look like something went very wrong with AirPower. Perhaps they’re having trouble covering an adequate amount of the surface area with chargable space, or there were distinct spots that were more reliable to charge on that they didn’t want to ship with? I really wish there were some public, or even off the record talk about what’s going on with this really exciting product that now hasn’t been mentioned in a year. Still have a few months before it’s officially ‘late’, but it’s looking elss and less likely now.

And then iPads. They were looking like a long shot, but it would have been really exciting to see the entire iOS line come into the future today. That appears to be being reserved for an October event, so I guess we’ll just hope that we come out of that event more excited than this one.

#iPhoneXS #iPhoneXR #AppleWatchS4 #AirPower

iPhone Tennis Event Predictions

Just a handful of hours to go until the event kicks off. Looking forward to watching it with my team at work today and snacking on some Shake Shack, but first I wanted to jot down some predictions. That’s a big part of the fun of these events, and this time I wanted to put them here so I can be held accountable for how wrong I turned out this evening.

Leaks have pretty much confirmed the big things. iPhone XS, XS Max, and XR, Series 4 in 40mm and 44mm are pretty much locked in. As for what’s different with the XS, I’m gonna say in addition to the regular improvements on speed and such we’re gonna see a faster, wider viewing angle for FaceID, and a much improved microphone (using what they learned from HomePod) for better Hey Siri. Maybe even 120hz refresh rate on the display!

I’m expecting some updates on AirPower, ship date for the same day as the iPhones (presumably next week) and price info ($199 minimum), but no major differences between this and what was announced last year. Hopefully the Series 3 will still work with it, but that could always be something they had to adjust during the delay, which I am concerned about, but 🤞.

It’s been odd that iPad info hasn’t leaked, but I am predicting an update to the Pro line to bring it in line with the iPhone features, being FaceID, edge to edge screen, gesture based navigation (which already happened with iOS 12.) Last minute leaks are suggesting this won’t happen, but I think there’s still a better chance.

As for AirPods I don’t really expect a significant update, but we will get more info after the event about the inductive charging case. My guess is $59-79 for the case itself, no price drop on AirPods themselves.

HomePod may be mentioned and there may be a price adjustment, but we won’t get a significant update to it.

And that’s pretty much what I’m expecting. I’d love to be wrong about some of the stuff we won’t see, in particular I’d love an update to the MacBook, Mac mini, and maybe a lower cost addition to the HomePod line, but I guess we’ll see this afternoon!

#iphoneXS #ipad #event #apple #airpods #appleWatch

Headline Game On Point

Did Apple Forget About Dre?

Interesting article, and I’m really curious to see where Apple is going with this brand behind the scenes, but more importantly this is one of the best headlines I’ve read in a very long time.

#verge #beats

CastKit #3: Spend Different

Spend Different

This month I was lucky to be joined by my best friend and JavaScript engineer Austin Shoecraft to talk about all the things we’d like to see Apple do with their obscene stockpile of cash, as well as all the stupid things I shouldn’t buy.

#castKit #Apple #trillion #AirPower

Hate Speech Isn’t A Point Of View

apple infowars app store

Disgusting and disappointing. What the hell happened to Courage?

On Podcast Hosting

Anchor on free podcasting

Now I’m certainly the furthest thing from an expert on this subject matter, plenty of more qualified people have already gotten involved in this discussion, but having recently wandered into podcast hosting I felt I had a thing or two to say on the subject.

I already pay to host this website, and I can do whatever I want with this server and this traffic. When I recorded a Podcast at WWDC this year I had nothing to say when people asked me what my show was called or about, but I got together some mp3 files, threw it on my server with an RSS feed and a crappy name, and anyone with the URL could already listen to my show. It was far too easy to distribute this.

And while I’ve been really interested to check out Anchor, both the tool and the community, I’ve held myself away from it. As someone who already pays for for podcast hosting that’s available to any audience, asking me to pay for hosting on another platform with my data instead, and then to declare that the future of the medium, feels really cynical to me.

On the other hand, Micro.Blog has been a really great service, and community, built around the premise that any feed of any medium should be equally accessible. Users just need an RSS feed, regardless of the source or if they choose with data or cash. I’m grateful that this service is furthering a great goal of the open web, and I’m excited that it had inspired me to spend more time on projects like this.

#podcasting #microBlog

CastKit

CastKit

So while at WWDC this year I was able to get an appointment to check out their Podcast studio with a few friends of mine. I didn’t have a show and didn’t really know what we’d be recording, but I just knew that we all had plenty to say about the week and the new things announced on Monday.

We ended up actually having a great discussion and a lot of fun, and even though I didn’t have an actual show in mind, I went about getting this podcast we recorded uploaded, so I gave it the name CastKit and got it into the Podcast directory.

Well ever since then I’ve had a bit of a bug. I really liked the experience of getting to talk and share things online, even if very likely no one had listened to it outside of those of us who recorded it. But Jason Snell and Mike Hurley convinced me on the latest episode of Upgrade (Summer Of Fun!), that it wouldn’t be terribly expensive to grab some equipment and give this another shot and see how it goes.

I followed Jason’s guide on building a podcasting studio for under $100, got it delivered and set up, and went to work recording a practice run of a Tech Talk I’m giving at work tomorrow on iOS 12 and Siri Shortcuts.

So now that’s gonna be episode 2 of CastKit. I don’t know what the eventual format is going to be, or even how long I’ll keep doing it, but so far it’s something I’m enjoying and the only way I can think of to get better at it is to keep doing it, so here goes nothing!

Check out CastKit, give it a recommendation on Overcast if you like it, and if you don’t, I would really love to hear any feedback you can provide. Enjoy!

#podcast #CastKit #Siri

Experiences And Thoughts On React Native

react native at airbnb

I don't have much experience with cross-platform tools in general, but in 2016 I took a job with a React Native shop. I had never worked with React or React Native before, but I had dipped my toe into ReactiveCocoa and was starting to wrap my mind around the reactive coding paradigm. The company explained to me that React Native is a cross platform layer that relies on a solid bridging code, explained to me like an API between the iOS SDK and their RN codebase. They needed someone to own the iOS layer, and I was enjoying API design at the time and looking for a change, I said yes.

The team had no iOS experience, outside of what the very talented JS engineers had pieced together enough to ship an iOS app, and the native bridging layer was suffering for it. Startup times were very slow, memory usage was excessive, transitions and animations were very janky, and much of the code that was living in the React Native layer was better suited for the native layer but the engineers had played to their strengths and written it in JS instead. I was excited. I had a lot of work to do and could make a big impact. I started outlining the work that would need to be done, teaching the mobile team about the unique aspects of the iOS SDK.

After a month I started learning, with the help of a great mentor who was very active in the React Native community, the front end layer, to support my work on the Native layer. I rebuilt an app of mine in React Native. It took about a week to get a quick and dirty UI/UX implementation. Animations weren't quite as smooth, and it was pretty awful doing my layouts in JSX, but I got past the learning curve and felt ready to really dive in on the iOS side. But our team got excited about having three engineers who knew RN, and started moving fast on the UI layer. Pretty soon all my work was in React Native.

I was building new screens, new components, new transitions. I wouldn't touch Objective-C or Swift, outside of a small bug fix here or there, for weeks. I spoke to the mobile lead about my list of work that would need to be done on the iOS side to get our app rolling smoothly. I was told we'd get to it when we have more engineers to handle the RN work, probably in a year or two. For a time they switched me from working on a 80% RN app to a 95% RN app. I brought up my desire to return to the iOS side once more, and outlined exactly what changes I was proposing, what priority order it would take, what the impact would be on the Android 'team' of one, and how it would benefit our app and create a solid foundation to grow on. I was again told, a week later once the lead had actually read my proposal, that we'd likely get around to it in a couple years. I quit after 9 months.

Reading Gabriel of the Airbnb team's Medium posts brought a lot of this back to me, and it was very validating to see a large team that had bet big on React Native and certainly included many, many engineers who are much smarter than I am, come to the same conclusions I had soon after starting work in RN. Plenty of people find a way to work in React Native efficiently and effectively, so why was it so hard for me?

For one, it seems like the period where I was deepest in RN, mid 2017, was a particularly rough time for the toolset. I remember spending far too much time and energy trying to get the upgrade to take, bouncing back and forth between npm versions, react-native versions, various versions of our large set of dependencies, just trying to get things to build so I could get back to struggling with whatever component view I was working on at the time.

Then there were the dependencies. I was in the foundational stages of my "All third party code is evil" mentality and every problem in a JS based toolset is solved with a dozen dependencies, each of which have a dozen dependencies on their own, and it's turtles all the way down. That just seems to be a function of the JS community and a lot of the reason why JavaScript libraries make the web so slow and awful to use today.

Xcode has its problems, but when I need to work on an iOS app it's the only app I need open. When I started React Native work I was, for the first time since college, writing my code in a text editor. I know thousands of developers do this and have convinced themselves that this is fine. They're wrong, and my time working on server side Swift, where you can build and run a server stack right from the editor complete with breakpoints, a debug area, and a console, all in the same window of the same app, has convinced me of that. With React Native I was working with Sublime and the Chrome Debugging Tools (I use Firefox as my secondary browser, I will go to any lengths not to have Chrome installed on my Mac). Eventually I discovered other debugger tools I could connect to, that only occasionally required fiddling with preferences and overrides to make work correctly. Eventually I was able to move to fiddling with my preferences to work in VSCode instead of Sublime, and gasp it included breakpoints that worked most of the time. What an amazing development in the toolset, that only required that I move my development environment into what was essentially a web browser. I still wasn't pleased.

Then, in the midst of this professional angst, came WWDC '17, an undeniably exciting time in any Apple Platform Developer's year. As with every year, I was quick to install betas, get the new Xcode, and start plugging away with the new SDKs and fixing any low hanging fruit that needs to be taken care of in my apps. Except now I wasn't limited only by the reliability of the betas, but also that fact that React Native itself needed to be patched so it could even build function correctly against the iOS 11 SDKs. Talking to my team to figure out how long this would take only got me confused looks. "Whenever it's ready," with no worry about the distinct possibility that Facebook's bottleneck wouldn't leave us enough time to actually properly support iOS 11 by the time it came out. So instead of actually getting to work on iOS 11 support I was identifying and reporting bugs in the RN layer. This is when I started working on personal apps on work time, justifying it to myself that otherwise I would fall behind on iOS.

The final straw for me was the dismissive attitude with which most people in the team treated my various concerns about us leaning too hard on React Native, one of only two issues with the job I blame on the people rather than the toolset. I was constantly told that React Native was a better way to work with designers (it wasn't, designers had to use unintuitive JSX), that it was a faster way to iterate (we spent more time tweaking with tools than we saved in build times), that web-style deploys made for faster releases (they bypassed useful security and reliability checks, and left users with unexpected 'updates' when they just wanted to check the app, not to mention we were constantly worried that Apple would rightfully decide to no longer allow it), and finally that focusing my professional development solely on Apple Platforms was a professional liability. A common metaphor was that a Formula 1 racing team wanted a driver who could drive a Toyota Camry just as well as a F1 car. That I would be a better developer if I stopped caring about the iOS best practices I was pushing and instead went all-in on cross platform Javascript tools and whatever the community decides is the hot shit this month. Now that UIKit is coming to macOS and I'm planning ways I can port my personal and work iOS apps onto this new platform, which will have none of the JS baggage that comes with web development, and as I watch many web based companies, including my previous (and current) employers struggle with GDPR compliance because their toolset encouraged them to throw ideas like user privacy to the wind in favor of invasive JS monitoring for abstract 'benefits' that often have nothing to do with the core business of the company, I couldn't be happier that I ignored this advice and removed myself from that situation.

I'm grateful for the experiences I had on this team. It really was a group of amazingly smart people working on interesting problems, who I got along with well and loved spending my days at work with. Also, it gave me the insights I have now to be informed while I watch the React-Native community develop (and dwindle). I firmly believe that there are teams for whom React Native was a great solution. These were teams who, between the years of 2016 and 2018, were made up of web developers who loved JavaScript and open source communities, who had small mobile engineering departments with little to no iOS or Android experience, who wanted to focus on cost-efficiency, needed to move very quickly to release an iOS and Android app, and were fine sacrificing the native experience to come to these solutions. For those who found themselves in this situation, I completely understand the appeal of React Native. If any of those things are not true of you or your team, I would encourage you to focus on native development. It's just better and more rewarding in the long term.

But now here we are, where one of the highest profile users and contributors to the React Native project outside of the creators, are leaving it behind. This is a serious blow to the future of the platform. No doubt many engineers will continue to use React Native, to build great components and open source tools that the entire community will adopt and contribute to, but the effects of Airbnb's abandonment will be felt for a long time. I believe this puts an expiration date on the lifetime of the toolset, and that two years from now React Native will be borderline unusable, especially if as it seems they perform a major re-architecting of the platform.

Finally, if you are a team looking for React-Native engineers, please, for the love of all that is decent in engineering principals, don't put out a requisition for iOS native engineers who are looking to make great iOS apps. There are plenty of web developers who would love to do this work and won't find themselves terribly depressed coming into the office everyday.

#ios #reactNative #employers

More Posts