A repairable future

A while back, my mouse Logitech G502 LIGHTSPEED started malfunctioning. It seems to be the infamous double click issue. It registers double click randomly, which was very annoying and renders the mouse completely unusable. I got my replacement from Logitech quickly after contacting their customer support since it was still in the warranty period. After my new mouse arrived, I could throw away the broken one and enjoy the new one and then end the story here, but it seems silly to throw the whole mouse away as the only broken component is the micro switch.

We live in a world where electronic devices are expected to be extremely cheap, serve only a short period, and then be replaced with better, faster, and newer ones later. While we enjoy the exciting moment of unboxing new gadgets, at the same time, we feel guilty about making e-waste from throwing the old devices away. I love this mouse. I really do. It was one of the best I’ve ever used. But it’s a shame that it wasn’t built for lasting. I am an engineer, a software one, but well, my job is to build stuff and fix stuff. Why not I just fix it myself?

Repaired Logitech G502 LIGHTSPEED with new Kailh GM 8.0 Mouse Switch

So I did.

...

read the full article

Why build a messenger app only for sending to yourself?

Orignally posted in Monoline’s blog

My name is Fang-Pen Lin, and I am the founder of Launch Platform, a software company that builds and launches various software products. Today, I am very proud to announce that the company has launched its first app product – Monoline. This new app was just released and is available on the following platforms:

What’s Monoline, you ask. Monoline is your personal micro journal. Put simply, it’s an app that looks like and works like a messenger app; but unlike messenger apps, it’s only for sending messages to yourself. Here’s what it looks like:

Monoline app iPhone mockup screenshot for messages Monoline app iPhone mockup screenshot for search feature Monoline app iPhone mockup screenshot for command feature

Why build a messenger that can only send messages to yourself, you ask. Well, because:

...

read the full article

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
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
Clip from Star Trek Into Darkness movie

...

read the full article

Ninja Speed Vim-like Debugging with Ergonomic Keyboard and Trackpad

This article is also published at Medium and dev.to

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:

My keyboard and trackpad setup
My keyboard and trackpad setup

...

read the full article