Weekly Update 07/25/2020 - 08/01/2020

This is a summary of whatever progress I've made on my technical learnings for the week of July 25th, 2020 to August 1st, 2020.

Now that my sabbatical is over, I'm trying a newer format where I'm mostly posting whatever I did get done over the past week or so, with lower expectations of getting stuff done. I would like to keep posting here since I've found it's a great source of personal accountability.

Goals from last week

  • [❓] Connect user login/registration to backend API
  • [❓] Add route protection based on user management (public-only routes like /user/login and /user/register, and private-protected routes like /dashboard)
  • [❓] Add billing screen
  • [❓] Connect billing screen to Stripe checkout workflow
  • [❓] Template + add remaining sample screens to sample application.

What I got done this week

  • [❌] Connect user login/registration to backend API
  • [❌] Add route protection based on user management (public-only routes like /user/login and /user/register, and private-protected routes like /dashboard)
  • [❌] Add billing screen
  • [❌] Connect billing screen to Stripe checkout workflow
  • [❌] Template + add remaining sample screens to sample application.
  • [✔] Got all existing preview.pro.ant.design screens templated; https://app.test.paintcreeksoftware.com/

Metrics

RescueTime statistics

  • 69h 38m (57% productive, 50% increase from week before)
    • 21h 59m “software development”
    • 15h 15m “entertainment”
    • 11h 46m “communication & scheduling”
    • 8h 17m “utilities”
    • 4h 17m “uncategorized”

iPhone screen time (assumed all unproductive)

  • N/A (will update when I have access to my phone)

Hourly journal

https://hourly-journal.yingw787.com

Goals for next week

  • [❓] Connect user login/registration to backend API
  • [❓] Add route protection based on user management (public-only routes like /user/login and /user/register, and private-protected routes like /dashboard)
  • [❓] Add billing screen
  • [❓] Connect billing screen to Stripe checkout workflow
  • [❓] Template + add remaining sample screens to sample application.

Things I've learned this week

  • Google Cloud Platform is markedly different from AWS. I think there's academic differences, like how GCP Cloud CDN does not have its own API endpoint. Apparently you can attach a CDN endpoint to a GCP Cloud Storage, but you can't directly reference it in Terraform or anything like that, so many people deploy their static website to GCP App Engine and cough up the $18 / mo., which makes Netlify and co. seem worth it.

    But I think there's also a great deal of philosophical difference as well. Whereas AWS forks an open-source repository and builds its own stuff on top of it, GCP respects open source boundaries and works within their design parameters. At least, there's a great deal of overlap between learning Apache Beam and GCP DataFlow (I think DataFlow might just be one of the backends for Beam), and Apache Airflow and GCP Cloud Composer (hosted version of Airflow). I could be wrong, but I can also see how a separate approach would result in a different value proposition.

  • Pulumi is markedly different from CloudFormation. CloudFormation is easier to get started with, since it's fundamentally a superset of YAML. However, I've found it difficult to extend, since it has all these one-off functions you have to tie together in special arrangements. Since I like to segment my CloudFormation templates, I oftentimes have to chain !Ref and !ImportValue together, which can get annoying real fast. But all AWS services I've used (besides maybe AWS Mechanical Turk) have an API, and there's great AWS support for any broken CloudFormation deploys.

    By contrast, Pulumi seems a bit more difficult to start off. For example, the default auth workflow is to use OAuth, which when I'm Dockerizing my development environment results in manually clicking URL links in order to auth…every time…which can get annoying really quickly. I think by the time you get automated deployments working via CI, you're using the credentials.json method instead, which does exist. It also uses a Python-based virtualenv vis-a-vis infrastructure-as-code (emphasis on the code), and you need to install a requirements.txt into the virtual environment before proceeding with Pulumi execution. But there's pretty great support from the Pulumi Community Slack channel, and I'm just starting off with Pulumi anyways, so a bunch of stuff remains up in the air.

Subscribe to my mailing list