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