About

Hi there,

My name is Fang-Pen Lin. I am a one-person-army software engineer. Currently working at Niantic AR team, opinions are my own.

I taught myself programming since I was 12 by building a hobby MMORPG from scratch 7 times. It has been twenty years since I started programming. In twenty years, I spent almost every single day in programming. You can get a sense of it by looking at my GitHub history in the recent ten years:

Screenshot GitHub history in recent ten years
Screenshot GitHub history in recent ten years

These are just the part on GitHub. Yep, I heard what you say, you probably have no life. Well, yeah, maybe I am actually a robot sitting behind the screen 😂

In the past, I’ve been working on software projects in very different fields, be it games, GUI apps, large scale networking servers, web backend servers, front-end websites, mobile apps, embedded system, DevOps and even security. For example, recently, I found and disclosed a critical security bug CVE-2019-13132 in ZeroMQ. You can also check out some of my works.

By one-person-army, it means I am not limiting myself by any particular tool, language or fields. I learn new things quickly, focus on solving the problem, and can leverage different available open source tools to build different ends of software products in a vast range of aspects: mobile to web, client to server, single node to cluster, development to devops, prototype to production and user experience to security.

Oh, besides building software, I also like writing. I love to share the lessons I’ve learned from building software. I am also authoring a book about building software engineer career from the ground up. Hope you enjoy my articles, feedbacks are welcome 😊

PGP key:

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
tnid7tUSePwnPJvOa3g1Jl1iLme0
=uUn1
-----END PGP PUBLIC KEY BLOCK-----