### Elliptic Curve Cryptography Explained

Recently, I am learning how Elliptic Curve Cryptography works. I searched around the internet, found so many articles and videos explaining it. Most of them are covering only a portion of it, some of them skip many critical steps how you get from here to there. In the end, I didn’t find an article that really explains it from end-to-end in an intuitive way. With that in mind, I would like to write a post explaining Elliptic Curve Cryptography, cover from the basics to key exchange, encryption, and decryption.

To plot the curve for writing this article, and also get a sense of how things work, I wrote a Jupyter Notebook for curve plotting and calculations in Python. The plotting library is matplotlib. And if you want to play around an elliptic curve and feel how it works yourself, lucky you! I made the source code open-sourced here on GitHub, one for real numbers and one for finite field:

Screenshot of my Jupyter notebook for plotting Elliptic Curve

You can find most of the article diagrams in the notebook.

Please note that this article is not meant for explaining how to implement Elliptic Curve Cryptography securely, the example we use here is just for making teaching you and myself easier. We also don’t want to dig too deep into the mathematical rabbit hole, I only want to focus on getting the sense of how it works essentially. So we will strip out many math details and only provide a reference read for it.

Now, shall we begin?

Clip from Star Trek Into Darkness movie

...

### Ninja Speed Vim-like Debugging with Ergonomic Keyboard and Trackpad

Have you ever felt wrist pain after long time typing and using a mouse? Yep, I bet you are like many of us, who spends their entire life in coding, it’s inevitable to experience the pain of wrist at some point. Your career is like a marathon, to go far, it’s critical to treat yourself well.

A while back, wrist pain stroked me again, I’ve lost count how many times it is. It made me decide to spend some effort to find out the best ergonomic keyboard and trackpad setup that works for myself. After I did my research and bought the keyboard, while exploring the right keyboard layout configuration, I noticed that with the customizable layout, I can design a layout that makes Vim mode like debugging experience that I’ve been dreaming for a long time. As a result, it boosts the speed of tracing code by orders of magnitude. Basically, it makes you debug like a ninja.

So in the end, I not only feel more comfortable when working with a computer but also become more productive. Sounds too good to be true? Read on, today I would like to share the experience of my keyboard, its layout, and trackpad setup with you. Before we jump into the article, let’s what it looks like:

...

### How I learn programming by building an MMORPG from the ground up 7 times

It has been twenty years since I started programming. Today I want to share the story of how I learn to code by building an MMORPG from the ground up 7 times since I was 12 years old. Sounds crazy? Yep, that’s how I did it. It all starts with an MMORPG I like a lot while I was a kid, it’s called Lineage.

Back in my day, it was the most popular online game in Taiwan, and surely the most popular one among my classmates. The game was designed to always be exponentially harder to get to the next level from the previous one. As a 12 years old kid, I didn’t have time to get to the top level. So I talked to myself:

...