SwiftUI: Almost Too Much Fun

June 12, 2019

In my previous post, I described the JDBP band app I want to build and the technologies introduced at WWDC 2019 that I think might make it much easier to create.

Part of the process is exploring these new technologies and SwiftUI is first on my list.

As I’m playing with SwiftUI, I’m not thinking too much about the app I want to build. For me, and probably many others, my first step beyond watching videos and walking through tutorials is to play with it, use it to build a few small throwaway apps, and try to develop as good a feel for it as I can in a short period of time.

I’m not at a point where I can nitpick over whether I agree or disagree with this or that design choice in the framework. I definitely don’t know it well enough yet.

Currently, I’m in the process of building up my mental model of how all of this works. This also includes mentally diffing that model with my existing mental models of AppKit and UIKit.

That’s a lot of brain cycles. This is going to take a while and is probably also going on as a background process as I sleep.

I found these two sessions really helped me begin to build that mental model of the frameworks beyond tutorials and demos:

I am sure I will watch them multiple times. I also hope we get more documentation, more tutorials, and maybe even more WWDC-like videos from Apple. I feel like what we saw in sessions at WWDC and in the tutorials only scratch the surface of SwiftUI.

How Does It Feel?

I don’t have enough experience with the framework yet to declare that SwiftUI is the shortest path to great apps.

But I’m sure having a blast playing with it!

I haven’t felt a sense of joy and exuberance like this about UI programming for a very long time.

Will that sense of joy fade as I start trying to use SwiftUI for a ‘real app’?

Certainly the excitement of novelty will fade as it becomes more familiar. For other aspects, time will tell, but for now I’m just going to enjoy the ride.

Joy

For me, there’s joy is in how quickly you can compose a complex view—even a live data-driven view—without much code at all. There’s joy in the tooling and preview mechanism, which is flexible and fairly responsive.

And there’s joy in the fact that the views that you compose are well-behaved.

All those things that may have caused you to breathe a tired sigh in the past—things you knew you should or must support, like Dynamic Type, Right-to-Left UIs, Dark Mode and more—now happen automatically and correctly.*

The framework and tools seem to be very thoughtfully designed, in terms of the functionality that is provided, but also in the unified way that things fit together, scaling from structural components like navigation to views and controls, all the way down to shapes, paths, and graphics operations.

MemeMaker

Yesterday, I posted a meme that seems to have gotten a few amused smiles:

Meme of Scarlett O'Hara with words "As God is my Witness, I'll never type translatesAutoresizingMaskIntoConstraints again"
I’ve been playing with SwiftUI and have a declaration to make.

I used SwiftUI to compose the meme and have posted the MemeMaker project on GitHub.

Meme Maker is a not-particularly-functional app created by someone on their couple of days using a new technology:

  • You can’t edit the text except by editing the code
  • You can’t different image unless add other images to the project
  • You can’t export or share the meme

The app composes some text over an image in a few different ways and then you can take a screenshot of the result to share if you want to.

But it also shows a few things people might find interesting:

  • The main list uses AnyView to pass destination view into row
  • The Overlay example uses the overlay modifier to overlay the text on top of the image. Probably the cleanest solution
  • The ZStack example shows my original example using nested zstacks to pin text to top and bottom of image
  • The Text Gone Wild example shows what happens when the text is allowed to spread out as far as it can
  • All examples show using a named font instead of a semantic font
  • All examples show adding a shadow to text and using a non-named color

So, I put it out there if you want to check it out.

Feel free to download it or fork it and use it as a starting point for your own explorations. If you discover alternate ways to achieve the same result or any other cool things, let me know at @jamesdempsey at Micro.blog or Twitter. •

Feedback

I’m also trying to post a record of feedback I’ve filed. If anything sounds good to you feel free to file similar feedback.

Feedback Filed:

  • FB6145912 Would love an ‘Embed In…’ menu option when writing SwiftUI code

  • FB6145990 Would be great to have option to refactor a View directly into a new SwiftUI file

  • FB6139401 Framework Reference docs should include a Symbol Index Oh how I miss having that big, high info density index of Class / Struct / Protocol / Function symbols!


*And you didn’t breathe that heavy sigh because you didn’t want your app to have that functionality—it was because it takes a chunk of time and work to do and do correctly—time you wish you could spend improving the core functionality of your app or maybe even spending with family and friends.


Categories: Apple, Software Development, iOS

The Shortest Path To A Great App

June 10, 2019

The Shortest Path To A Great App” That is the phrase Apple used in a number of the SwiftUI sessions at WWDC last week. But beyond SwiftUI, there were a number of other announcements at WWDC 2019 that also could lead to a shorter path to a great app.

Taken in total, these announcements have left me feeling incredibly energized.

An Oddball WWDC Week

I have an oddball WWDC week compared to most people attending WWDC, AltConf, or Layers.

For the last eight years, I’ve organized and performed in the annual LIVE near WWDC concert on Wednesday night. The last four events have been benefit shows for App Camp For Girls.

I’ve also had the honor the past few years of closing out AltConf on Thursday afternoon with a lighthearted musical Week In Review session. Of course, I have no idea what I’ll be talking about until after Monday’s announcements.

Preparing for these events keeps me pretty busy until late Thursday afternoon—with a large chunk of Monday set aside for the Keynote and Platforms State of the Union—and then viewing sessions or snippets of sessions as I can.

So Friday is the first day of WWDC week I can dig deeper into everything that has been announced.

An Aha! Moment Before Breakfast

It dawned on me early Friday morning that a set of announcements at WWDC 2019 should make an app I have wanted to build much easier and quicker to create.

The annual LIVE near WWDC show is a complicated undertaking. This past year we had 24 performers playing 18 different instruments on 18 different songs.

In addition, for the past few years, Adam Tow has taken some really fantastic photos of the show.

So, for a long time I’ve wanted to build an app for my band, James Dempsey and the Breakpoints (JDBP). The app would be a place to share photos, lyrics and info with fans, and also be a resource for people performing in the show—the Breakpoints.

Fans would be able to download the free app and without an account, see photos, browse photos of past performances, see lyrics, maybe even play JDBP songs from Apple Music if they are subscribed.

Breakpoints would be able to sign in, see info about the upcoming show they are performing in, view the (ever changing) set list, know which songs they are playing on, and be able to swipe through the chord charts for the songs they are playing on, in order on an iPad (or iPhone in a pinch).

But, until last week, just thinking about building that app was exhausting. It would be just me writing it and would need a lot of infrastructure code to get it right.

Then, Friday morning, the thought occurred to me that these three newly announced technologies could make writing this app significantly faster and easier:

  • SwiftUI
  • Sign in with Apple
  • Core Data / CloudKit interoperability

A Journey of Discovery

Will these three newly announced technologies do the trick? What dead ends, limitations, and blind alleys will I discover?

At the moment I have no idea, and that’s exciting.

I still have videos to watch, documentation to read, and lots of code to write and fiddle around with.

The app I’m building won’t be open source, but I’m hoping to make it an ‘open process’ app. My plan is to write little blog posts as I go.

These posts will be me thinking out loud — expressing what I want this app to do before I’ve even fully investigated how I will implement it. And then reporting what I find as I investigate things and see how they work in practice. The intent is for this to be a public journal or technology travelogue as I go through the process of building an app.

I’m also hoping the posts will help spur discussion and feedback and help us all come to understand these technologies better.

Thanks Brent!

This approach was greatly inspired by Brent Simmons. I’ve always admired Brent’s ability to post in the casual and open manner of “Hey, I’m working on a thing. I’m learning it and I’m not an expert. Here’s what I’m discovering and here’s what is confusing to me.” Brent has been a prolific developer for many years, but he never claims to have all the answers. (Plus he plays a mean keyboard.)

A Last Caveat

This app is a side project. As the glow of WWDC 2019 fades and day to day tasks come back to the fore, there may stretches of time between posts about this app. I appreciate your patience in advance.

Let’s see how short that path really is.

I’m so excited to get started! •


Categories: Apple, Software Development, iOS

Where I’ll be at WWDC 2019

May 31, 2019

I’ll be doing a few things next week at WWDC 2019 and wanted to pass along my schedule. Hope to see you at one or more of these happenings!

Tuesday: Micro.blog Meetup

Micro.blog Logo

Tuesday at lunch time, I’ll be at the Micro.blog meetup at the Grace Deli, across from The Hilton.

My good friend—and meetup organizer—Jean MacDonald and I co-host The Weekly Review, a ‘microcast’ podcast about personal productivity hosted on Micro.blog.

Stop by and say hello! We’ll also have The Weekly Review stickers to hand out. You can RSVP here.

Micro.blog Meetup, June 4th, 12 – 2 pm

Wednesday: LIVE near WWDC 2019

James Dempsey and the Breakpoints JDBP Logo
Wednesday night, my band, James Dempsey and the Breakpoints, _performs our 8th annual _LIVE near WWDC show. The party starts at 7 pm—tickets include an open bar. The band goes on at about 8:30 pm, playing a full concert of original, humorous, programming-oriented, and yes, even chart-topping music.

But the night is more than just music and fun—it’s a benefit concert for App Camp For Girls, with ticket proceeds going to support their mission. Come on out on Wednesday night to a great event for a great cause!

Tickets are still available but going fast. Click through to get all the details and buy tickets.

James Dempsey and the Breakpoints, LIVE near WWDC, presented by Capital One
Wednesday, June 5th, Doors open at 7:00 PM, show starts at 8:30 PM. Party until 11:00 PM

Thursday: AltConf WWDC 2019 Week In Review

AltConf Conference Logo
I’ll be closing out the week at AltConf with my sixth annual WWDC Week In Review, a lighthearted look back at the announcements and events of the week.

After a week front-loaded with announcements and technical talks—this easy-going closing session of AltConf combines humor, music, and perspective.

Join me for what usually proves to be an entertaining and occasionally enlightening session.

And, as usual, there will be a bit involving a ukulele.

AltConf 2019, June 3 – June 6, 2019
Closing Session, Thursday, June 6th, 3:00 PM

A Busy WWDC 2019 Week + Stickers!

As usual, it will be a busy WWDC week with plenty of new announcements and technology to wrap our heads around. If you see me out and about during the week, please say hello!

I’ll also have brand new James Dempsey and the Breakpoints and The Weekly Review stickers to hand out. Just ask for a sticker or two when you say hello!

I hope you can make it out to one or more of these events—see you at WWDC! •


Categories: Apple, Mac, Music, Software Development, iOS

Disney California Adventure—A Visual History

June 25, 2018

Pixar Pier opened at Disney California Adventure this past Saturday, giving Paradise Pier a new theme and a new name.

This inspired me to create this timeline showing the evolution of lands at DCA since its opening.

Timeline of how the lands evolved at Disney California Adventure Park, 2001 - 2018

Click for PDF Version

With the renaming of Paradise Pier, none of the opening day lands of Disney California Adventure remain.

This does not mean that all attractions, buildings, or theming of the original lands have been replaced. It means that every land existing on opening day has at least been renamed, with many rethemed, and some reassigned to other lands.

On opening day, DCA guide maps listed four lands: Entry Plaza1, Hollywood Pictures Backlot, Golden State, and Paradise Pier. These are all now gone.

Golden State was divided into areas, mini-lands within a big land: Grizzly Peak Recreation Area, Condor Flats, The Bay Area, Pacific Wharf, and Golden Vine Winery. These were not full lands when the park opened. Over time, some areas have disappeared as separate areas (The Bay Area, Golden Vine Winery), while others have become lands of their own (Grizzly Peak, Pacific Wharf), and one area even managed to do both (Condor Flats).2

I believe DCA is the only Disney park that has replaced or renamed all of its opening day lands.3

Research for the timeline was done using my collection of guide maps from the park as well as online announcements or news articles of land and attraction openings and closings. Please feel free to send me any feedback or corrections at https://jamesdempsey.net/contact.

Also feel free to contact me at https://jamesdempsey.net/contact if you have guide maps from the early years of DCA that you are willing to sell – or send photos of. I am particularly trying to find DCA maps between late February and late May 2001 to pinpoint the change from Entry Plaza to Sunshine Plaza.

I’ve enjoyed witnessing the transformation of Disney California Adventure over its seventeen year history and hope you enjoy this visual history of its lands. •

About me: I’m a Disney, Pixar, and Apple history hobbyist. I worked at Apple for fifteen years then set out on my own as a software developer, technical trainer, speaker, and musician. I write humorous songs about technical things. My album debuted at #5 on the Billboard comedy album charts and was the #1 comedy album on iTunes in the US, UK, and Canada. If you or someone you know (or someone in Disney Imagineering) needs an original song with clever lyrics contact me!


Yes, Entry Plaza. The opening day DCA guide maps use this name. Within months, the name on the maps changed to Sunshine Plaza

Golden Vine Winery is a good example an area which is still very similar to opening day, but has technically ‘disappeared’. This was originally an area, or sub-land, of Golden State. When the Seasons of the Vine attraction closed and became reopened as Walt Disney Imagineering Blue Sky Cellar, the reopened attraction was now listed as part of Pacific Wharf, where it remains as of 2018. 

Pacific Wharf is the only remaining original land or area that has not been renamed. But it was not a land on opening day, it began as an area of Golden State and was not promoted to a full land until 2012. Grizzly Peak Recreation Area was renamed to the much simpler Grizzly Peak when it also became a full land in 2012.


Category: Disney

Where I’ll be at WWDC 2018

June 2, 2018

I’ll be doing a few things next week at WWDC and wanted to pass along my schedule. Hope to see you at one or more of these happenings!

Tuesday: Speaking at the NextDoor Conference

Logo for the Next Door Conference

Tuesday morning, I’m speaking at the Next Door conference, located, remarkably enough, next door to WWDC.

I’ll be talking about two of the more glamorous aspects of app development: build settings and xcconfig files. In the session, we’ll cover the why and how of giving your build settings an out-of-project file experience to make build settings easier to manage.

Registration is open until Monday and a there’s a great lineup of speakers. I encourage you to check the conference out.

NextDoor Conference, June 4th – June 7th
My session about xcconfig files: Tuesday, June 5th, 10:00 AM

Wednesday: LIVE near WWDC 2018

James Dempsey and the Breakpoints JDBP Logo
Wednesday night, my band, James Dempsey and the Breakpoints, performs our 7th annual LIVE near WWDC show. The party starts at 7 pm—tickets include an open bar. The band goes on at about 8:30 pm, playing a full concert of original, humorous, programming-oriented, and yes, even chart-topping music.

But the night is more than just music and fun—it’s a benefit concert for App Camp For Girls, with ticket proceeds going to support their programs. Come on out on Wednesday night to a great event for a great cause!

Tickets are still available but going fast. Click through to get all the details and buy tickets.

James Dempsey and the Breakpoints, LIVE near WWDC, presented by Capital One
Wednesday, June 6th, Doors open at 7:00 PM, show starts at 8:30 PM. Party until 11:00 PM

Thursday: AltConf WWDC 2018 Week In Review

AltConf Conference Logo
I’ll be closing out the week at AltConf with my fifth annual WWDC Week In Review, a lighthearted look back at the announcements and events of the week.

After a week front-loaded with announcements and technical talks—this easy-going closing session of AltConf combines humor, music, and a bit of perspective. I hope you join me to be entertained and maybe occasionally enlightened.

And, as usual, there will be a bit involving a ukulele.

AltConf 2018, June 4 – June 7, 2018
Closing Session, Thursday, June 7th, 3:00 PM, Room 1

A Busy WWDC 2018 Week

As usual, it will be a busy WWDC week with plenty of new announcements and technology to wrap our heads around. If you see me out and about during the week, please say hello!

I hope you can make it out to one or more of these events—see you at WWDC! •


Categories: Apple, Mac, Music, Software Development, iOS