Peter's 2AM Thoughts

Probably not the most optimal time to be thinking, but somehow the most productive.

Lattice Problems

Cryptography relies on certain problems that we assume to be hard for computers to solve. These are the problems that we base encryption schemes on. For example, the factoring problem (restated generi...

How to Over Engineer a Website

Building a web application requires two (sometimes one) components: a frontend and a backend, and a lot of infra-engineering. But ultimately, creating a full stack application can be outlined in a few...

Startups are hard

It's definitely not easy to build a company. For the last 5 years I've been trying to launch companies full-time and on the side. Here are some lessons I've learned throughout that process.

Competitive Programming

Competitive programming is a great way to sharpen your skill in data structures and algorithms. Overall, it's a fun and gamified way of improving at coding. At the same time, it's not a skill that can...

End to End Encryption

Recently, I listened to an episode of the "Security. Cryptography. Whatever." podcast (which you should definitely check out). In that episode, they talked about the inadequate and hilarious security ...

LeetCoding

In a similar vein to competitive programming, LeetCoding is like a muscle that can be trained. Here are what I have learned from LeetCoding:

Practice Topics
A lot of people...

Good Sleep

Sleep should be a priority for everyone. Without good sleep, everything else in your daily life will shift out of balance. Think about it, the start of everyday depends on good sleep and each day ends...