CN Podcast #49: Practice vs Game Time

My uncle coached youth baseball for a number of years and he left a huge impact on the way I handled myself and players when I started coaching. In this episode, I talk about how that influence has impacted my work as well.

Episode Link

Give yourself the time and space to learn. There are enough stress/distractions on the playing field (i.e. at work). Kids are hearing their teammates, their parents and the opposing team. Likewise, you’ve got the voices of all of your responsibilities vying for your attention. All of these voices create a significant amount of noise and it’s very hard for signal to get through. 

Proper practice makes you prepared. The more preparation done in practice, the less there is to think about on the field. This preparation includes not only focus on technique but contingency plans and working under duress. The reason teams practice hurry-up offense and audibles is because the conditions won’t always be ideal.

Leave the judgement on the practice field. Mechanical thinking during game time is counterproductive. My biggest flaw in golf was that I was overly focused on position during play. Instead of simply trusting the process that I’d established in practice, I was judging myself as I was doing it. 

Have fun at practice. The time you spend honing your craft doesn’t have to be dour or onerous. I grew up with coaches yelling at us with colorful language but we also had fun even as we were working hard. Make sure that you make room for that in your practice. Balance is key.

You can listen to the Cocoa Nomad Podcast on the following services:

I’d love to hear from you. Reach out with comments, feedback or show ideas on Twitter or Instagram

CNPodcast – Retrospective #22

In the latest retrospective, I share my excitement about the launch of my YouTube channel, how fun it’s been to build a SwiftUI app for Menus Del Día and my progress with doing training in Spanish.

Episode Link

Show Notes:

You can listen to the Cocoa Nomad Podcast on the following services:

I’d love to hear from you. Reach out with comments, feedback or show ideas on Twitter or Instagram

The Best Time

The best time to look for the next opportunity is when you already have one. 

The best time to start your side hustle is when you don’t have to depend on it for income.

The challenge is that there’s no sense of urgency.

You have comfort.

You have consistent income.

Things are getting taken care of.

Eventually, you’ll “find the time” to work on it, right?

As someone who’s been frustrated with his progress, I had to finally get fed up with the feast/famine cycle of client work to finally make a change.

I encourage you, MAKE the time to get that project going TODAY.

Technology's Impact on Work

I had the pleasure of sitting down and talking with Prof. Temple this past week in Medellin. In the wake of so much technological change and it’s impact our lives, we need to reevaluate what it means to be a human being and how we define our worth. He impressed upon me the need for intergenerational work in order to confront this sea change.

  • Are we prepared for high rates of employment due to increased automation?
  • Are we ready to discuss our relationship to work and its impact on our self-image?
  • Will we continue to measure our value by our jobs or our wealth?


These aren’t new questions but rapid change has made it imperative that we decide who we are and who want to be.


Donald Temple: The Social and Political Implications of Technology

CN Podcast #46: Finish The Season

When setting goals it’s important to establish boundaries to avoid negative thinking about your journey. Committing to a certain period and then evaluating afterwards is good for a number of reasons. In this episode, I talk about the importance of “finishing the season” 

Episode Link

Show Notes:

You can listen to the Cocoa Nomad Podcast on the following services:

I’d love to hear from you. Reach out with comments, feedback or show ideas on Twitter or Instagram

Passion isn't Enough

Photo by Jefferson Santos on Unsplash

Passion is often talked about in computing as the secret key ingredient in the work that we do. The true power that separates you from the “pretenders”, the newbies that are in it for the money. It has grown louder of late as the field has grown increasingly larger and more diverse. The newbies are often decried as not being “passionate” about programming because they don’t think about it day/night. They’re not spending every spare moment polishing their code late into the night. Heaven forbid they have other interests or priorities.

That’s not what’s most important in the work that we do. I find it often used as a tool for gatekeeping, seeing those who see tech careers as a path to upward mobility as somehow undeserving. As someone who spent most of my youth doing manual labor in agriculture and the service industry, not once was my “passion” ever questioned. Other than at a pep rally for my job at Arby’s, passion was never even mentioned (people get worked up over Beef N’ Cheddars).

But you know what was questioned? My competence and commitment.

Passion is hailed as the thing that will keep you going when thing go sour or as a defense against of burnout.

It’s simply not true.

I started programming when I was 12 but I was burned out on programming a few years ago and needed a break, precisely because my passion allowed my life to get out of balance.

Passion doesn’t imply greater ability either. I went to high school with many passionate basketball players who just weren’t good enough to make the team.

And even after accounting for competence, we often assume passionate people willingly provided what’s needed by the team. There are plenty of talented and passionate running backs that are not committed to picking up the blitz. Similarly, I know many passionate developers uninterested in mentorship, even when the organization sorely needs it. You have to understand what people are specifically passionate about. They may be passionate about “their” code. Passionate developers can often be an impediment to team success, if the passion is self serving.

I live in Mexico and one of my favorite activities is taking early morning walks. I like to see people get ready for the day, watching a city literally wake up before my eyes. All the shop owners, vendors and employees, often getting ready before sunrise, so that people like me can get a coffee or tacos de canasta as we start our day. They have bills to pay and mouths to feed. I have no way to quantify their passion but I’m certain of their competence and commitment because they show up each day without fail. And I’ll take that over passion any day of the week.

Fluttering toward Cross Platform Solutions

After reading yet another piece on “Why We Switched To/From CrossPlatform/Native”,  I decided that it was time to examine the state of cross platform app development for myself and not rely on the opinions of others, as their reasons for landing on their chosen solutions vary.

Why Now?

After watching the talks at this year’s Google I/O and  Apple’s WWDC, it’s clear that the development puck in mobile is moving toward declarative UI with reactive state management. Much like Swift  and AutoLayout, despite my initial feelings about these technologies, I’ve had to reconcile them against the reality of their increased presence. I believe that cross-platform development is no different. It’s simply a matter of the form that I find most palatable.

What about SwiftUI?

While my original intent was to build a SwiftUI app in time for the release of iOS 13 but I ran into too many issues early on to make that viable. However, these approaches are not mutually exclusive and maintaining development “purity” is far less important to me than putting  solutions into people’s hands. Done is better than perfect after all. For now, I think a side-by-side comparison of the respective approaches  of SwiftUI/Combine versus Flutter will provide enough some insight into where each each is in terms of maturity and utility. There may still be cases where the SwiftUI/Combine approach would make the most sense.

The Roadmap

I’ve decided to proceed with a few of my existing iOS apps as a base to provide a point for comparison, each with escalating complexity.

GWTA

A transit schedule app, for the Goldsboro-Wayne Transit Authority in Goldsboro, North Carolina, this is the simplest of my current apps. The goal here is to finally provide the long intended Android version to complement the iOS version that shipped in 2018.  There are 3 screens of content that will provide a solid foundation using Flutter for:

  • connecting to Firebase to provide bus route data (JSON)
  • displaying provide route  and estimated bus locations on a map
  • simple UI animations and transitions

 

Capoeira Songs

I’m bringing my very first mobile app back from the grave. The current iteration is being built natively on iOS in Swift but I’d like if I can move faster with a cross-platform approach (factoring in the learning curve). The original version of the app was as simple as GWTA but the latest incarnation in more complex and will provide a nice testbed beyond the basics so that I can see what Flutter/Dart is capable of, specifically:

  • how to implement business logic in Dart versus Swift
  • advanced UI animations and transitions
  • shared user data (e.g. leaderboards and song lists) in Firebase

 

Gobo

My expense tracking app for digital nomads will provide an opportunity to investigate state management in Flutter, as there are various screens throughout the app that are affected by changes to expenses. The newest version is almost ready to ship on iOS and getting a comparable Android version built will take some effort. On the positive side, I will be forced to ship smaller, more frequent updates in order to reach parity. From there, I will evaluate whether I should port the iOS version over to Flutter.

I have no idea where I’m going to land on the cross-platform vs. native debate but I imagine that like all things in development, the age old answer of “it depends” will still apply.

The Cocoa Nomad Podcast #24: Arbitrage

In this episode, I talk about the concept of arbitrage, share the ways in which I have used it and  how you can make it work in your own life.

Show Links:

 

You can listen to the Cocoa Nomad Podcast on the following services:

I’d love to hear from you. Reach out with comments, feedback or show ideas on Twitter or Instagram

Photo by Artem Beliaikin on Unsplash