Here’s what I’ve been up to in Q4 of 2020: Building, building, building… And thinking about things like, “how to scale, and how be secure. This is a super brief recap of some
This was the first piece of tech I wanted to learn, and the driving force was work requirements — I switched teams and needed to finish off the tail end of a Cognito implementation, despite never having used it before nor having any dedicated experience in authentication and authorization. Looking back, that was kind of a proud accomplishment in my books at least.
On my own time I went on to learn about federated identities (Cognito <> Facebook <> Google), and implemented both social sign-in and passwordless (temporary PIN) email authentication on this blog itself.
I’ve also been thinking about building a pretty app. I thought Vercel’s UI was really cool, so I copied it. Plain and simple, and no time wasted on decision making!
I used Vercel’s css stylesheet with MaterialUI’s component library, and recreated components like fieldset from their component library. I also constantly looked at their logged-in dashboard for layout and other various inspiration. In the end, I tried to timeblock myself for anything style/css because I found myself going down rabbit holes.
Github Discussions have been around since May, but I didn’t really notice it until very recent.
I simply wanted to recreate this feature, using DynamoDB, as a learning exercise. So I did. There was a lot I had to juggle between the API design, and UX flow, and the bulk of the challenge was the DynamoDB key modelling.
Alex DeBrie states in his dynamo db talk that you need to approach DynamoDB with a query-first mindset rather than the entity-first mindset for traditional relational databases, so I wrote down a ton questions, on paper, like:
- Do I want to paginate my query for discussions?
- Should I include all comments and replies under a parent partition key for a single discussion?
- How do manage many users to many discussions/comments/replies?
I learned a ton of things like how to sort DynamoDB items, how to use different global secondary indexes to support more query patterns, and what “eventual” and “strong” consistency are.
I also impulse-bought The DynamoDB Book 😅. I never got along with books, but it has been useful to a small degree.
About I a year ago, I made a feature to upload a and crop a user avatar, but at the time, I never quite two issues on mobile — EXIF data cause your image to rotate, and EXIF data cause my cropper preview to traverse the image in rotated directions as well.
I revisited this super spaghetti code, and eventually got it working. It was enough of a headache that I should probably write a dedicated post about it.
It’s already been a few days since I started writing this post, and I’ve been moving on to other projects. But I do want to keep of some to-do’s that are a result of these features I worked on.
- Write a dedicated post on AWS Cognito: Passwordless login and Federated login with Social Identity Providers..
- Write a dedicated post on DynamoDB key-modeling for using multiple entities in a single table design.
- Write a dedicated post on EXIF data handling for mobile-correct image crop and upload.
My next two goals are to learn the AWS-CDK and set up a CI/CD pipeline with Github Actions.
Thanks for reading! That is all for now.