Picture of Michael Lee
:wave: Hey hey, I'm Michael Lee! This is my site about being a developer, a dad and a maker.

Thanks Anders Borum for Working Copy

Written on January 1, 2019

One of the apps that has made an impact on me in 2018 was Working Copy for iOS by Anders Borum. Most, if not all of my projects are versioned using git and are stored in a remote server. Being able to access them on my phone has been a pretty phenomenal experience.

While I admit the limited real estate on the iPhone can be challenging at times for a git workflow that’s quicker on a laptop. But being able to make changes on my phone on the go and then push up those changes and have it appear on a live site all without a laptop has felt pretty magical.

Paired with some basic Shortcuts on iOS, writing blog posts and keeping Spell It Out up-to-date in the last few months of 2018 with Working Copy has made me happy. This is because I can capture things almost instantly and publish it right away.

For these reasons, I want to thank Anders Borum for his amazing work on Working Copy.

Whee!, a newsletter highlighting the funnest web dev things

Written on December 9, 2018

Years ago, the reason why I got into web development was because it was fun. I loved spending hours in front of my computer, experimenting, tweaking and reloading to see the magic of code transform things on my screen.

My new newsletter, Whee! is an attempt to stir that feeling of fun and excitement with experimenting and playing with code. Whee! is a newsletter that curates the funner web dev things around the Internet — whether it’s cool visual experiments on CodePen, an homage to 8-bit graphics in a new CSS library or programming concepts using the latest popular pop song.

My goal with Whee is to share my awesome findings with you every Wednesday to get you over that hump and into the rest of the week saying wheeeee! :raised_hands:

To get the funnest web dev things from the Internet into your inbox every Wednesday, sign up for Whee!

My thanks to Learn AWS By Using It :anchor:

Written on December 1, 2018

I’d like to thank Kyle Galbraith for sponsoring my site this week with his excellent book, Learn AWS By Using It. Being a person who enjoys sharing his knowledge with others and making side projects, I’ve come to appreciate Kyle’s work. We’ve friended each other online and I’m excited for the things he’s currently working on.

As a fellow maker I’m always on the look out to support other makers and their work. When I discovered Kyle’s writings, I knew he had the knowledge I needed to take my AWS knowledge to the next level. I had tinkered with the various technologies that AWS provided, but always felt like I was missing something or going at it blind.

After the first couple of chapters in Learn AWS By Using It, I picked up on industry standards like how to secure your root user and how to utilitize libraries like Serverless to help orchestrate various services through code and not manually clicking through endless amount of screens. This boosted my confidence in cloud services and it was a no brainer for me to reach out to Kyle and see if I could get his book in front of my readers.

I was stoked when Kyle agreed to have his book sponsor my site this week and he was generous to even provide an exclusive code for my readers to get 35% off his book with the coupon code michael18. If you’ve been looking for a resource to help you get familiar Amazon’s AWS services, check out, Learn AWS By Using It.

Avoid setting up an inbox for MailChimp by using AWS's Simple Email Service (SES)

Written on December 1, 2018

MailChimp has become synonymous with email newsletters. Their service is feature rich and provides a generous free tier. It has been my service of choice when I wanted to create a newsletter for a side project. But the one thing about using MailChimp that’s painful, is it’s need for a verified, custom domain, email.

What a custom domain, email is is an email address tied to a custom domain that you own and not a free email like pizzaeatingdude@gmail.com.

Really, I don’t think it’s MailChimp’s fault, or at least all their fault. I think Gmail is also to blame. There once was a time when setting up email for a custom domain with Google was free. Those were the days when getting set up on MailChimp was a breeze and cheap. But gone are the days that Google allows for free email for custom domains and now they charge $5/month for an inbox with added features.

$60 a year may not seem like much but for an indie hacker, that tries to stay nimble and cost effective it is a lot. The other alternative is Zoho, which shined as an alternative when Google phased out their free custom domain applications. I’ve set up a couple of custom domains in the past with them. As generous as the service is and the fact that it gets the job done, it also means it is one more email account to setup and manage.

The solution that I wanted was a place to host a custom domain inbox, so that I can verify the email to use with MailChimp, not have to manage a new inbox and keep costs fairly low.

With this in mind, I thought I’d check with AWS’s Simple Email Service to see if I can utilize it for my needs. And it turns out you can. On a high level you can set up a domain on SES, then you can set up a rule that allows SES to receive emails for a specific email address which acts like an inbox, then you can have this rule dump all messages into an S3 bucket so that you can read the contents of the messages.

You might read this and think, dude this is overkill. It might be, but it fits my needs perfectly. I didn’t want to pay a lot to set up an inbox, I didn’t want to manage another inbox, I wanted to verify my account on MailChimp. An added benefit to using SES is that I’m using a service that I already have an account with, AWS. So it meant one less thing to sign up for.

Avoid setting up an inbox for MailChimp by using AWS’s Simple Email Service (SES)

To get started, I’m going to assume a few things:

  • You’ve got an AWS account
  • You’ve got Simple Email Service setup and out of sandbox
  • You’ve got a custom domain name with a registrar
  • You know how to update your DNS records
  • You’ve got a MailChimp account

Setup your custom domain on SES

In SES, you’ll want to click on Domains listed under the Identity Management heading. Then click on Verify a New Domain.

When the modal for the new domain name pops up, type in the domain name you’d like to verify in the field labeled Domain. You’ll also want to check the option to Generate DKIM Settings. Finally click on the Verify This Domain button.

What proceeds are the various values you’ll need to update for the DNS records of your custom domain. This can be done with the registrar for the domain.

The values given are a TXT record for the actual verification, two CNAME records for setting up DKIM and an MX record for receiving emails to your SES account.

Upon updating the DNS with these records, your domain should now be verified. The DKIM verification may take a little longer.

“Setup your new inbox” or getting your email receiving rule setup in SES

Now that your domain is verified, you can set up a receiving rule for it in SES or what I like to call the faux inbox. What this rule will do is allow for emails to come in for an address you’d like to use and then dump the contents of its messages into an S3 bucket.

Click on the Rule Sets link under Email Receiving heading in SES. Then click on Create Rule. First it’ll ask for a recipient — I used a specific user, but also listed on this page should be examples of how to match addresses in all sorts of variations. Enter the email user you’d like to use for this rule and click on Add Recipient to add them as a recipient. Then click Next Step.

Next, you’ll define an action. I’ve selected the S3 action. In selecting the action, you’ll be given the option to select or create a new S3 bucket to use with this rule. Either select or create a new bucket. I left all other options alone and proceeded to the next step by clicking Next Step.

On the next screen you’ll be asked to give more details for the rule. The options here are definitely changeable and is advised to change later. For now, I’ve found that you’ll have to turn off some things in order for the verification email from MailChimp to arrive successfully.

Fill in the Rule name with something that will help you identify this rule. Then you’ll want to have these options checked:

Enabled                        [x]
Require TLS                    [ ]
Enable spam and virus scanning [ ]

While I suspect that it’s the spam and virus scanning that caused my verification email to bounce from MailChimp, I went ahead and left TLS checked off too, since you’ll be turning them both back on after you’ve verified your MailChimp account.

Now click on Next Step, which will bring you to a review screen and then click Create Rule. With this new rule set up, you’ve essentially got a low cost inbox, all within your AWS account.

Set up MailChimp list

In your MailChimp account, click on Lists in the top nav. Then click on Create List. MailChimp might ask you if you’d rather use tags instead of creating a list, but click on Create List because that’s what we’re really here for :v:

On the next page, you’ll want to fill out the details of the list. In particular, the field that says Default From email address you’ll want to use the same email address we had used to set up the rule in SES. Once you’re done filling out all the details, click on Save.

Now you should have your new list created. But before you can start sending off emails from this list, you’ll need to verify your email address. To verify, go to Settings > List name and defaults in your newly created list.

Scroll down and you should see a section labelled Campaign defaults. Here you’ll see a field similar to the one you saw earlier when creating the list labelled Default From email address now with your email filled in and a little reminder that You must verify you have permissions to send from pizzaeatersunited.com. You can do so by clicking on the link next to the reminder labelled verify domain.

Now, you should see a modal on the screen that explains what the verification process is and the email it will send the verification email to. Click the Send Verification Email.

Immediately a verification email is sent off and you’ll be presented with another modal asking you to Enter verification code from the email it just sent off.

Switch back to your AWS account and go to the S3 bucket that you’ve designated to receive emails from the SES rule. You should now see a file in there that should correspond to the email that MailChimp sent. While the title of the file in S3 will be unrecognizable, the timestamp should be pretty close to the time you have on your system. To read the contents of the file on S3, you can first download it to your local system and then open the file in any text editor.

Scroll down the content of the file and you’ll find the verification code that MailChimp is asking for. Copy it from the email and paste it into the modal field on MailChimp labelled Enter verification code and then click Verify :tada:

Now you should have your MailChimp list ready to go, to start collecting readers and creating relationship and value for those readers.

Secure SES rule

Now that our MailChimp list is verified, we’ll want to go back to the SES rule and turn on the options we had left off — TLS and scanning for viruses and spam.

To do this, go back to AWS and select Simple Email Service, then click on Rule Sets under Email Receiving. Next click on View Active Rule Set. You should see the previously created rule listed. Click on the rule name to open the details of this rule. At the top you should see the options for requiring TLS and enabling spam and virus scanning. So now your rule should be set up like this:

Enabled                        [x]
Require TLS                    [x]
Enable spam and virus scanning [x]

Once you’ve selected the options, click on Save Rule and your rule will now be updated.


Woohoo, now you’ve got a new MailChimp list with a custom domain email set as its from sender. You didn’t have to sign up for another email service just to have another inbox you probably won’t manage. You’re also saving a pretty penny and everything is managed from within your AWS account.

While this solution works for getting a MailChimp list setup, there are definitely additional things that could be setup to make it even better. For example, getting Simple Notification Service setup to email me whenever a new email hits S3. Or setting up a Lambda function to read and then forward the contents of the email to my personal email address that I use on a free Gmail account. For next steps I’ll definitely be picking cloud guru, Kyle Galbraith’s brain, but for now I’m happy with this setup and now I can move onto setting up what I hope will be a great newsletter.

The innovators always got to wear a different, more exclusive shoe than anybody else, mainstream consumers had the satisfaction of wearing the same brands. - Malcolm Gladwell

Written on November 24, 2018

I’ve been listening to Malcolm Gladwell’s The Tipping Point, on audio book. It’s a book I’ve been wanting to read for a while. I just finished it and found the topic of the book intriguing. I’m still processing the book, but wanted to quote this sentence from the book.

It is towards the end of the book, where Mr. Gladwell, uses Airwalk as an example for dissecting how their popularity tipped in the 90s. At the peak of Airwalk’s success, the book talks about how Airwalk had segmented their product. For the stores that were the initial catalysers of the shoe brand, Airwalk supplied them with a more higher end, better quality shoe. It was these smaller, boutique shops that the innovators — the folks whom Mr. Gladwell describes as those who sets the trends and introduces them to the mainstream — would get their shoes.

I thought this juxtaposition of consumers was so intriguing to me. When I heard that sentence I understood both sides and could quickly draw examples from my personal life. It also made me think of the scene in the movie, The Incredibles, when Helen Parr, was having a talk with Dash, her son. Dash says, “Our powers make us special,” to which she responds, “Everyone is special, Dash.” The clincher is Dash’s response, “Which is another way of saying that no one is.”

In the same section about Airwalk, Mr. Gladwell shares about DeeDee Gordon, whose task was to find the innovators and the trendsetters and then inform the ad agency that helped tip Airwalk to a global market. DeeDee shares that innovators and trendsetters are outcasts in that they feel different from the crowd. Dash in the Incredibles is an outcast, that’s different because of his super powers and when mom argues that everyone is special, she’s forcing him to not be himself and be different and pushes him in line of the cookie cutter shape of his peers.

In the same way, I think that’s what Mr. Gladwell is saying about the innovators of Airwalk. With the company converging the product line, they were alienating the innovators and keeping them from being unique and different from the rest of the crowd.

Rolling my own site sponsorships

Written on November 21, 2018

I really don’t like web ads. I especially hate ads that are irrelevant, ugly and distract a user from reading a site’s content. This is why since the beginning of my site’s existence, I’ve never added ads to my site.

It wasn’t until I saw Carbon Ads pop up on various dev and design blogs, where I thought wow, this is something different in the ad space. The ads are minimal, clean and aligns well with what I’m interestd in. I’ve reached out to Carbon Ads in the past to see if I could have their ads on my own site. At the time I inquired my site’s metrics didn’t meet their requirements.

For a period, I thought I could just pump out more content to try and get the numbers up, but then I began to understand that my intentions were not good. My goal shouldn’t be to get numbers up and maintain them, but I should always strive to put out really good content, that I would be proud of and that I would want to read myself.

I’ve tried experimenting with my own tip jar to not much success. I’ve also noticed other devs and makers using services like Patreon and Ko-Fi these days to help support their work. While I’ve thought about setting up my own accounts, it was another service to sign up for and another service that at any point could go under and stop working or their agreement with their users could change based on their business needs. So I decided not to sign up for the services.

Instead, I’ve decided to have sponsors on my site that I run myself by building relationships with friends and other businesses. I’ve befriended many talented friends that are makers of all sorts of things such as books, icon sets and apps. In having sponsors, I’d like to use my site, to help provide a platform for such makers to reach an audience that they might otherwise not have access to.

In providing such an opportunity, my hope is to highlight some awesome products and services to my audience and give exposure to those who make them. My other hope is that by taking a small fee to sponsor on my site, that it would help offset some of the costs of the projects, products and things that I make for others and keep me motivated to keep making great stuff.

So if you’ve got a product or service that you’d like to share on this site as a sponsorship, head on over to the sponsorship page for more information.