TinyDevCRM Update #18: Hedging my Bets

This is a summary of TinyDevCRM development for the week of June 6th, 2020 to June 13th, 2020.

Goals from last week

  • [❓] Write up README and specification documentation.
  • [❓] Write up and publish docs.tinydevcrm.com.
  • [❓] Begin production Dockerization; pip install daphne and remove uwsgi, and finalize Dockerfile definitions for docker-compose.aws.yaml.
  • [❓] Publish Dockerfile images to Elastic Container Registry.
  • [❓] Update app.yaml CloudFormation stack definition in order to integrate Pushpin reverse proxy.
  • [❓] Re-deploy CloudFormation stack to release Pushpin into production.
  • [❓] Connect AWS application to AWS database, and add migration task definition.
  • [❓] Add back security group restrictions (policies and security group ingress/egress rules) for all CloudFormation resources
  • [❓] Deploy database cluster underneath private subnets + NAT instead of public subnet, and turn off direct SSH access and mapping of EC2 instances to IPV4 addresses
  • [❓] Add HTTP redirect to HTTPS using ACM-defined *.tinydevcrm.com SSL certificate.
  • [❓] Alias the DNS-qualified name of the app load balancer to api.tinydevcrm.com.

What I got done this week

  • [❌] Write up README and specification documentation.
  • [✔] Write up and publish https://docs.tinydevcrm.com.
  • [❌] Begin production Dockerization; pip install daphne and remove uwsgi, and finalize Dockerfile definitions for docker-compose.aws.yaml.
  • [❌] Publish Dockerfile images to Elastic Container Registry.
  • [❌] Update app.yaml CloudFormation stack definition in order to integrate Pushpin reverse proxy.
  • [❌] Re-deploy CloudFormation stack to release Pushpin into production.
  • [❌] Connect AWS application to AWS database, and add migration task definition.
  • [❌] Add back security group restrictions (policies and security group ingress/egress rules) for all CloudFormation resources
  • [❌] Deploy database cluster underneath private subnets + NAT instead of public subnet, and turn off direct SSH access and mapping of EC2 instances to IPV4 addresses
  • [❌] Add HTTP redirect to HTTPS using ACM-defined *.tinydevcrm.com SSL certificate.
  • [❌] Alias the DNS-qualified name of the app load balancer to api.tinydevcrm.com.

No, not a great week. The documentation took two days instead of two hours like I thought it would. Food security this week also went down, which impacted my cognitive abilities. Ultimately though, I think my battery is winding down a bit. Hopefully a change in environment, pace, and focus might help bring this MVP to production on a favorable basis.

Metrics

  • Weeks to launch (primary KPI): 1 (14 weeks after declared KPI of 1 week)
  • Users talked to total: 1

RescueTime statistics

  • 77h 54m (45% productive, 12% decrease from week before)
    • 24h 11m “software development”
    • 19h 37m “utilities”
    • 12h 56m “entertainment”
    • 7h 5m “uncategorized”
    • 6h 26m “communication & scheduling”

iPhone screen time (assumed all unproductive)

  • Total: 25h 29m
  • Average: 3h 38m
  • Performance: 7% decrease from last week

Hourly journal

https://hourly-journal.yingw787.com

Goals for next week

  • [❓] Begin production Dockerization; pip install daphne and remove uwsgi, and finalize Dockerfile definitions for docker-compose.aws.yaml.
  • [❓] Publish Dockerfile images to Elastic Container Registry.
  • [❓] Update app.yaml CloudFormation stack definition in order to integrate Pushpin reverse proxy.
  • [❓] Re-deploy CloudFormation stack to release Pushpin into production.
  • [❓] Connect AWS application to AWS database, and add migration task definition.
  • [❓] Add back security group restrictions (policies and security group ingress/egress rules) for all CloudFormation resources
  • [❓] Deploy database cluster underneath private subnets + NAT instead of public subnet, and turn off direct SSH access and mapping of EC2 instances to IPV4 addresses
  • [❓] Add HTTP redirect to HTTPS using ACM-defined *.tinydevcrm.com SSL certificate.
  • [❓] Alias the DNS-qualified name of the app load balancer to api.tinydevcrm.com.

Write the documentation within README.md and SPEC.md after I have shipped something to production.

Things I've learned this week

  • I think this project is more comparative to Firebase or AWS Amplify. A bunch of cloud-based resources meant to help mobile/web app teams succeed without a backend or database developer? Yup, that's pretty much what it is. I think my project doesn't have language-specific SDKs, because I don't want to maintain them and because I don't foresee a need for special duplex realtime protocols like WebSockets

  • There's a goodly number of React.js table and grid component libraries. One is the venerable DataTables library built on jQuery. Then, there is HandsOnTable, which looks and feels like Excel (could be good or bad thing). Grid.js is extremely new and isn't a full tables plugin, but looks the slickest of the bunch (and doesn't include older dependencies like jQuery). There's probably a bunch more.

    It's nice that these libraries are bundled together because that means fewer dependencies to maintain! Also it's insane how much complexity goes into tables.

    I think if you took something like PostgREST and Grid.js, and you were able to type the outputs of each column (e.g. PDF, Image, Date, etc.), you could build your own ersatz Airtable if you wanted to by dispatching against the type of the returned column to retrieve the proper component view in React.js. You could also write up a connector for Google Sheets or a Microsoft Excel document from Windows Remote Desktop Connection, and use a DBI driver like DBD::Excel in order to run SQL queries against your spreadsheets.

Subscribe to my mailing list