This weekend I delivered a talk on Building Cross-Platform apps with Flutter at the Hawaii iOS Developer Meetup. The talk went well and the audience seemed impressed. With the recent win of doing a great presentation, I’ve decided to blog the development of this Manoa Career Center app here in my blog.
I’ve already built the app in Swift. More than half the smartphone users are on Android. I need to make an app that works on Android. So I’ve decided to use Flutter to develop a single code base that creates a cross platform app.
This app will have 2 audiences: the students and the employers.
Here are the core features of the app:
- Display a map of the ballroom to show where each employer is stationed.
- Allow the student to set up a profile
- Allow the employer to set up a profile
- Allow the student and the employer to match-make easily. I am considering using QR codes so that usernames do not need to be searched for in the system.
Students and employers are the intended audience for the app:
The employers want to select candidates that are good for their business. Students want to find employers that will be a good fit for them when they graduate from college.
Here are the problems I am planning to solve with the creation of this app:
- Get students to use the app to save the employers they are interested in talking to.
- Make sending resumes to the employer as easy as possible.
- Facilitate a way to get our department a home on the student and employer’s phones.
Do you have any questions about the development of this app? Contact me, I’d love to hear about it.
During this meetup O’Neil presented on Core Data. He started with a keynote presentation that outlined NSManagedObjects in a flowchart. Then he went through this tutorial.
The tutorial was paced well even though we went a few minutes over 1 hour. O’Neil was gracious in answering questions.
I learned a lot during this presentation. It was good to actually code along with O’Neil while he did the presentation.
Holger will be presenting on the Alzheimer’s app he’s creating with a doctor. Please RSVP if you’re interested in attending.
Apple Push Notifications are intimidating if you haven’t done it before. There’s certificate signing requests and a lot of boilerplate code. But if you set them up a few times the process is a lot less intimidating. I suppose it’s like that for anything you do. Do it enough and it’ll eventually start to be easy.
During this meetup I went through the Ray Wenderlich Push Notifications Tutorial. I cut the stream after we finished the introductions because this meetup required me to share my Apple Developer account page and I did not want to stream that to the entire internet.
Once I finished up the tutorial, we had a chance to sit around and discuss iOS programming. Jordan attended and asked questions about the best ways to get started on a project. I felt his pain.
I’ve been programming iOS for nearly 10 years and a strange thought comes up – “Where do I even begin?” I thought the most helpful thing to do was to share some podcasts and video tutorials.
Here are the podcasts I shared:
Here are the videos I shared:
On April 5th O’Neil will be presenting on Core Data. Please RSVP you’re interested in attending the next meetup.
During this meetup Adam Smith presented on a chat bot he created to keep himself from eating sugar. It’s call Sugarbot and it’s available for free on the App Store.
We skipped introductions during this meetup to save time. Then Adam setup a project in Google Dialogflow. I suggested the topic of dogs and he went with it. He showed us how to create context and intentions for the chatbot and demonstrated that it worked.
Tyler suggested that the bot’s favorite dog was a sheep dog and Adam coded it. When he asked the bot what its favorite breed was it answered sheep dog.
Next Adam showed us how he created the back end for the bot. He brought up a term that I had heard before but had never know what it meant – webhooks. Adam mentioned that any time he creates a service that requires a call to an API he creates a webhook so that if the server does not respond, his server can handle the failure, and report back to the app with his own failure message.
Noel asked Adam what kind of backend he had set up to send the push notifications. Adam, very kindly, showed us the backend he has set up in Laravel (php and mysql) to run an hourly cron job to send out the push notifications.
I was so inpsired by this talk that I made the topic for March 15th’s meetup Apple Push Notification servers. Already have a few sign ups! This week I’ll be researching how to set this up and if all goes well, I’ll be able to demo something like Whatsapp for messaging with a Firebase backend.
Please RSVP if you’re intersted in attending the meetup on March 15th on Apple Push Notificaitons.
During this meetup I covered ARKit 1.5. Previously with version 1.0 we were only able to detect horizontal planes. With ARKit 1.5 we are now able to detect vertical planes, irregular objects, and image tracking – in addition to horizontal planes.
I also experimented with the format of the meetup last night. Usually we do introductions then dive into the code. Last night we did introductions then I set a timer for 20 minutes and oversaw a conversation amongst the developers to find out what they thought about Augmented Reality.
During the talk I learned 3 things:
- AR will bring about a change where every surface that we see will be potential advertising space.
- AR will only take off when the consumer application (advertising) of the technology has fully landed.
- AR will allow two people to be looking at exactly the same thing but see completely different things.
That last point has been swimming around in my head ever since last night. It’s a fundamental change in how we deal with physical objects. Two things come up in hindsight that lead me to believe that this is a fundamental change that seems trivial but is actually 80% of the profound changes coming.
When I was making iOS apps in 2009 I totally missed the fact that the majority of time people spend on their phones was on text messaging. I missed the entire picture when Whatsapp offered a free international/multi-carrier messaging service.
During the coding portion of the meetup I live coded an ARKit 1.5 app that tracks images in augmented reality. Here’s a link to the code on github.
This meetup marked a year of iOS development meetups. This has always been the goal when I started out a year ago. After the meetup, during the ride home with my wife, I shared how pleased I was that I had made it to 52 meetups – a year of iOS meetups.
There are so many things that we covered over the past year. I’m planning to write up the list and email the developers to thank them for attending and if they didn’t get a chance to attend yet, what they have missed.
Finally, after doing a meetup a week for a year I am planning to try out something new. Going forward, I am planning to have meetups every first and third Thursday.
On March 1st Adam Smith will be presenting on his new app Sugarbot. He used Google Dialogflow to create a chat bot. It’s great! I have it on my phone now. Please RSVP if you’re interested in attending this meetup.
During this meetup I covered a complicated topic – RXSwift. Last month my friend Nick shared that he was interested in learning RXSwift to allow him to create a datamodel then have RXSwift update the UI whenever the datamodel changed.
Nick’s put a lot of things on my radar that I would not have studied so closely. RXSwift is exactly that. I spent the week reading articles and watching videos.
There’s a saying, “The only way you’ll learn is by watching. So watch.” The best video to understand how this all works was RXSwift In Practice from the RW DevCon. The best article I found explaining how RXSwift works was Casey Liss’ primer on RXSwift. I went through all 5 parts of the primer 3 times.
Last night, I delivered the talk on RXSwift to Chae, Tyler, and Andrew.
While I’m no RXSwift master at this point, I’m looking forward to integrating RXSwift into my projects on a regular basis – like I’m trying to do with higher-order functions.
Next week O’Neil will be explaining how he used Core Data to store user times in his Rubik’s Cube app. Please RVSP if you’re interested in attending.
During this meetup we discussed ways to create a pomodoro timer that switches itself from working to resting. I ran this meetup a little differently from usual. I showed the finished product. Then the developers mob-programmed for 45 minutes and replicated it.
The run time on this recording is a full 30 minutes longer than any we’ve recorded in the past. I let this one roll while we finished up and tested the app.
Next week I’m doing a talk on creating a pomodoro timer for watchOS. Here’s a link to the completed code: https://github.com/Hawaii-iOS-Developer-Meetup/pomodoroWatch001
Please RSVP if you’re interested in attending
People love sudoku! This meetup generated so much attention and resulted in a large number of new developers attending. People love group work. And the chance to share how they would solve something with a computer.
Here’s how I ran this meetup. It’s different from the usual format. During this meetup, I had everyone raise their hand if they had played sudoku before. All hands went up. They obviously all knew how to solve the puzzle.
Next I had everyone count from 1 – 8. There were eight of us there. Each 1 got paired with the other 1. Each 2 got paired together, etc. Next I had them meet with their team mate, whom they’d never met before. And they brainstormed ways to have the computer solve the puzzle.
I gave them 15 minutes and set a timer. Everyone jumped up to start whiteboarding and the sound in the room grew. The timer chimed at 15 minutes and I asked if anyone wanted to share their solution.
O’Neil offered up his solution. It was exactly like mine. I looked around the room and asked if anyone had solved the puzzle in a different way from O’Neil’s. And no one had.
Next I stepped through the code I had written. Leo asked if there was a way we could make the code more efficient. Then he and Chae and Koa got into a discussion. We arrived at the solution that Sudoku, as coded in my solution is a problem with an order of magnitude of n cubed.
Once we finished reviewing the code, everyone sat around and talked about ways to optimize, other projects, and Googles new OS Fuschia.
Here’s a link to the code I created to solve the Sudoku puzzle: https://github.com/Hawaii-iOS-Developer-Meetup/sudoku002
Next week I’ll be building a “hands-off” Pomodoro Timer for macOS. Please RSVP if you’re interested in attending!
Wow, we’re getting so close to 50 meetups! During last night’s meetup I demonstrated installing Homebrew, installing Kitura, compiling a project, running it from Xcode, and accessing localost on port 8080. Then, since Chae had asked about virtualizing the server’s environment, I showed how to install Kitura 2.0 in a Docker container.
During this meetup the set up and demonstration of Kitura was so fast we cut the feed 30 minutes into the meetup because we had already accomplished what we set out to do in 1 hour, in 30 minutes.
Once the feed was off, I asked Chae, O’Neil, Tyler, Leo, and a new developer Makua what they wanted to do for the next hour and a half remaining in the meetup. Leo mentioned that he was interested in continuing with Kitura to build a JSON endpoint. Everyone agreed to the challenge and we spent the next hour setting up a new route, testing the route with GET request variables, and finally getting the JSON endpoint in Kitura to return the current date as JSON. Here’s a link to the repo: https://github.com/Hawaii-iOS-Developer-Meetup/kituraJsonEndpoint001
We’re take a month off for the holidays. Please RSVP if you’re interested in attending the next meetup on January 11 where we will be creating a Sudoku Puzzle Solver in Swift.
So it’s about 10 minutes later and now I can access Kitura running inside a Docker container. The final screenshot shows Kitura running inside of a docker image that’s running from the commandline.
I followed the Kitura: Running Inside a Docker container tutorial.
Let me know if you have any questions.