A guide to help you get started deploying cross-platform builds from your M1 Mac

Apple Silicon M1 and Docker
Apple Silicon M1 and Docker
Apple Silicon M1 and Docker. Photo by the author.

I’m hoping this article will age well, as it’s not a guide on hacking a new Mac to run a incompatible version of Docker. I was able to get a beta build that ran on Apple Silicon but quickly ran into an actual learning curve related to different architectures and deployment. This was the error I saw when pushing an image built on a Mac with Apple Silicon to an ECS instance on AWS:

standard_init_linux.go:219: exec user process caused: exec format error

Hopefully, this guide will help you get up and running with Docker on your amazing new machine faster!

Install a Compatible Docker Version

Kudos to the Docker team for moving very fast on a build for the M1 chip. On December 16, they published a blog post in which you can download a beta build. …


As a mostly self-taught developer in startup environments here are my top tricks for learning what you need.

Image for post
Image for post

Create a feedback loop

Your goal is to maximize your time and condition your mind. Your most finite resource will be put to the best use if you can see it working or more importantly, failing.

There are two stages of the feedback loop. First you want to get to the point where you are able to view a valid error message about your code while trying to run it. It doesn’t matter if you are learning your first language or your 11th you will have to be able to copy and paste errors into google. …


In this article I will talk about some different techniques I use to maintain some sane code while learning Apples new declarative frameworks.

Image for post
Image for post

I created a project that will let my upload files to an S3 bucket using the AWS iOS S3 SDK. I also rely on notes from this project, Using Combine.

Legacy async to Combine Futures

The first thing I needed to do to jump into the word of Combine was turn some asynchronous code into a Combine Future publisher. A Future publisher is a “one shot” type publisher in contrast to a publisher such as PassthroughSubject that delivers values continuously. Here is code demonstrating how I wrapped the Async S3 uploads in Future's. Ignore the specifics of the S3Uploadable objects right now. …


An iOS developer’s bleeding-edge dream

Image for post
Image for post
Photo by the author.

Objective

We will introspect the Yelp GraphQL API using a Swift package and the Apollo iOS library. We will use the Apollo library again in the main project to work with the generated networking and model code. The app will observe your location and search input via Combine to display YELP API results in SwiftUI.


The two waves of software product automation.

Image for post
Image for post
Serverless, containers, big data, declarative frameworks and AI will all converge to make no code a reality.

Context

Any person who has made a serious commitment to writing software professionally knows there is a hum of anxiety in the back of your head about becoming obsolete and or feeling like you are not good enough. Mix that with some well executed motivation and I’m confident you can stay ahead of the game.

I try to avoid cult like infatuations with people but I am a fan of sound bites. In this case Jeff Bezos has a good one.

“Focus on the things that will not change”

- Jeff Bezos

I would like to take that a step further and make the assertion that if you can spot trends that will eventually end up being foundational you can get really far ahead. …


Besides wanting to learn SwiftUI and Swift Package manger I have always thought a grid style menu could be a great alternative to hamburgers or tab bars.

Image for post
Image for post

Source

The source code for this project can be found at this git hub repo.

Swift Package

I also wanted to break away from the cocoapods mindset so I decided to ship this as a Swift Package.

You could argue that you should not ship SwiftUI code in a Swift Package as a Swift Package can be used by anyone with the Swift runtime and SwiftUI is an exclusive Apple Framework. Also, Xcode allows you to open a swift package and build (command + B) however you can’t run “Live Reload” (option + command + P) unless you add it to a real project. Finally, SwiftUI is so powerful and concise that you could easily code this up on your own. …


A convergence of forces is making the scientific method more important than ever.

Image for post
Image for post

We all learned this one in school - “Facts are only a hypothesis that has not been proven wrong”

We are in the age of information and dis-information. Anyone can pull anything out of their ass and put it on the internet. Hell. That’s what I’m doing right now.

The scientific method is not someones thesis. It’s a succinct model that encapsulates the type of human thought that drives discovery, innovation, and change. Refined through the minds of enduring intellects throughout history.

There is a convergence of potentially powerful tools on our horizon. Quantum computing, Machine Learning / AI, and infinite cheep data are all combining to accelerate the pace of human progress. …


In our busy world compassion is an easy thing to avoid. Even if you are the person who openly admits you don’t care about certain things you can still gain perspective.

Image for post
Image for post

Why not make laws that help institutionalize this basic human emotion? If on an individual basis we get to choose to volunteer our time and money to a cause we deem worthy why not protect against bias by providing a basic level of income for people? Or providing a basic level of healthcare? Even more though provoking, a basic level of mental health care?

Suffering

It will never disappear from the world. It doesn’t matter how much we pray, how much technology we develop, or if we learn to manipulate our biologies. It’s a bleak and beautiful universe out there but the farther you look in time the bleaker it gets. Furthermore, humans are not masters of our destiny. We have the hottest year on record, weirdest weather I have ever seen, and Australia is being burned alive. Humans are very far from being able to end suffering. …


Impeachment is a catalyst for taming hyper partisanship.

It’s safe to say that impeachment of Donald Trump is “Live History”, an unsettling parallel to the fact that the sitting president is a reality TV star. America! Anything is possible.

Like most liberals I was shocked to see Donald Trump walking across his stage on election night. Slowly with dilated eyes like a shark he declared victory.

Image for post
Image for post

At this point every American should be aware of the hyper political polarization in our country. It was at its most visceral point on social media in 2016.

The Facts

We have learned a lot about the fact that our digital lives can be used to divide us. If this fact is a debate rather than a discussion to you then please go consider this Medium article from some UW researchers, topic II and III of the Muller Report, The Great Hack on Netflix and this bi-partisan Senate Intelligence Committee Report. …


Image for post
Image for post
ECS + Hasura = Amazing backend

We will be building a horizontally scalable GraphQL API that runs over a PostgreSQL database powered by AWS’s serverless Aurora product. We will be using Hasura for the GraphQL API, AWS ECR and ECS to run the docker image and AWS Cloudformation to deploy resources.

First, huge shout out to the team at Hasura. Their product allows any professional to feel like they are part of the GraphQL buzz and provides incredible value to any project.

To accomplish the article's title, we will need to assume some AWS resources are already in place.

  1. You should own a domain name and have a hosted zone for it on Route 53. …

About

Jon Vogel

I contribute to the start-up grind in Seattle as an iOS Engineer. I also used to fly airplanes.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store