Philip Guo (Phil Guo, Philip J. Guo, Philip Jia Guo, pgbovine)

Articles

Besides playing with computers, one of my main hobbies is writing articles on this website. One heuristic I use when deciding what to write is to ask myself:

Will at least 100 people care about this topic three years from now?

The following don't qualify, so I rarely write about them:

  • commentary on news events or fads
  • reactions to someone else's article
  • personal notes that only my friends would care about

Also, if I see many people writing about a topic, then I avoid it unless I have a drastically different perspective.


Find an article within this site using search terms:

2017

PG Vlog #13 - Conan O'Brien: "Work Hard, and Be Easy to Work With" 2017-01-13

PG Podcast - Episode 21 - Trey Hunner on teaching programming to working professionals 2017-01-13

Python Asynchronous I/O Walkthrough 2017-01-09

PG Vlog #12 - Thoughts on Working Hard 2017-01-07

2016

PG Vlog #11 - Playing Opens the Door to Serendipity 2016-12-29

PG Vlog #10 - Managing is Nudging 2016-12-26

PG Vlog #9 - For Aspiring Creators, Content Means Everything 2016-12-24

PG Vlog: why I'm trying out videos 2016-12-23

PG Vlog #8 - Starting Creative Projects in Private 2016-12-22

PG Podcast - Episode 20 - Cat Hicks on ethical data science 2016-12-20

PG Podcast - Episode 19 - Jean Yang on time and serendipity management 2016-12-11

PG Podcast - Episode 18 - Michael Kennedy on podcasting as a career 2016-12-09

A Five-Minute Guide to Ph.D. Program Applications 2016-12-09

PG Podcast - Episode 17 - Tess Rinearson on dropping out of college and into the tech industry 2016-11-21

PG Vlog #7 - "Everybody has a plan, until they get punched in the mouth." 2016-11-20

PG Vlog #6 - Too Much Early Feedback Can Be Harmful 2016-11-19

PG Vlog #5 - Walk Before You Can Run 2016-11-19

PG Podcast - Episode 16 - Claire Le Goues on the glamorous life of assistant professors 2016-11-13

PG Vlog #4 - Getting Your First Job 2016-11-04

PG Vlog #3 - Time Delay of Creative Work 2016-11-04

PG Podcast - Episode 15 - Robert Ikeda on pivoting from grad school to startups 2016-11-03

PG Podcast - Episode 14 - Carrie Cai on pivoting into computer science after college 2016-10-27

PG Vlog #2 - Going All Out 2016-10-22

PG Vlog #1 - Doing Publishable Academic Research 2016-10-20

PG Podcast - Episode 13 - Lindsey Kuper on a new kind of computing conference 2016-08-23

PG Podcast - Episode 12 - Adam Marcus on human-assisted A.I. 2016-08-22

PG Podcast - Episode 11 - Brad Miller on building long-lasting software in academia 2016-08-12

PG Podcast - Episode 10 - Julian McAuley on 24-hour live-streaming from his office 2016-08-12

PG Podcast - Episode 9 - Edmond Lau on three mistakes that new engineers make 2016-08-03

PG Podcast - Episode 8 - Amy Chen on being a CS student and software engineer 2016-07-29

PG Podcast - Episode 7 - Neha Narula on bitcoin and the future of digital currency 2016-07-29

PG Podcast - Episode 6 - Julia Evans on productivity in engineering teams 2016-07-25

PG Podcast - Episode 5 - Amanda Comi on visual storytelling in comic books 2016-07-25

PG Podcast - Episode 4 - Ted Benson on starting a company from Ph.D. research 2016-07-22

PG Podcast - Episode 3 - Audrey Boguchwal on a historian's view of code culture 2016-07-22

PG Podcast - Episode 2 - John DeNero on teaching statistics using programming 2016-07-22

PG Podcast - Episode 1 - Mitchell Gordon on why he decided to pursue a Ph.D. 2016-07-21

PG Podcast: video interviews of interesting people I know 2016-07-20

Migrating a 10,000-line legacy JavaScript codebase to TypeScript 2016-06-16

Moving to UC San Diego Cognitive Science 2016-06-05

Python Tutor: The First Three Years 2016-06-02

What I would've wanted to know as a first-year assistant professor 2016-05-29

How to Get Hired 2016-05-27

My faculty job application materials 2016-05-18

Comparing academic departments when deciding between faculty job offers 2016-04-16

What is a programming language? A six-layer model 2016-03-28

Fellowships Considered Harmful (not really, but I wanted a clickbait title) 2016-03-11

How to write a good HCI research paper (tips from senior colleagues) 2016-03-06

What is HCI research? And what is its relationship to computer science? 2016-02-29

Econ 101 for Assistant Professors: A Simple Guide to the Economics of Grants 2016-02-24

Interactive Systems for Learning Programming at Scale 2016-02-19

Forcing Functions 2016-02-06

Examples of Good and Bad Cold Emails 2016-01-16

Python Compiler Workbench: Using a live coding environment to quickly develop intuitions 2016-01-03

Childhood Dreams 2016-01-02

2015

How to set up a web development environment with React, Babel, Webpack, and JavaScript ES6 2015-12-27

Minimal fuss setup for getting started with React and JavaScript ES6 2015-12-25

Research Group Dynamics 2015-12-18

Unicode errors in Python 2 2015-12-02

Unicode strings in Python: A basic tutorial 2015-11-30

Automatically create Docker images by running the program you want to package 2015-11-23

Shadow Writing 2015-11-19

Twelve Tips for Data-Driven Research 2015-11-05

Advice for first-year Ph.D. students 2015-11-05

Web Programming Video Lectures 2015-11-01

What is a programming language? (45-minute lecture) 2015-10-28

Why universities should offer a programming interview prep elective course 2015-10-15

REST Web APIs: A Super-Simple Tutorial 2015-10-12

My simple policy for class project groups 2015-09-01

My policy for using laptops in the classroom 2015-09-01

The N=2 Interview about Ph.D.s in Computer Science 2015-08-26

Learning programming at scale 2015-08-13

How did I get my first batch of students? 2015-07-28

An example of command-line bullshittery in computer science research 2015-06-17

What to expect over the next decade and beyond (CS graduation speech) 2015-05-16

On Writing 2015-05-08

Failure to Launch 2015-04-24

Stumbling in the right direction 2015-04-18

Deconstructing Research Advising 2015-04-17

Deconstructing Luck 2015-03-09

The Tenacity Test 2015-02-28

Filtering 2015-02-19

Opportunistic Paper Reading 2015-02-12

Parsing Raw Data 2015-01-27

Maintaining Student Morale 2015-01-16

Academic High Achievers At Age Thirty 2015-01-11

Why Trying To Impress People Is Pointless 2015-01-09

2014

Doing less risky research is more risky for your career 2014-12-17

Industry versus academia: A junior employee's perspective 2014-12-14

Why Acting Arrogant Is Pointless 2014-12-07

Writing for One 2014-12-04

My CS Education Zoo interview 2014-11-26

Basic tutorial on Flask, a Python-based Web application framework 2014-11-25

My Basic Technology Stack for Teaching Web Programming 2014-11-24

Programmers: Please don't ever say this to beginners ... 2014-11-22

Hello World in HTML/JavaScript/CSS 2014-11-20

Basic Git and GitHub tutorial 2014-11-20

How to use assertions to make your code more reliable 2014-11-18

Hello World in C and Python 2014-11-05

Why academics feel overworked 2014-11-01

Basic Unix-like command line tutorial 2014-10-25

Python data analysis screencast 2014-10-20

Helping my students overcome command-line bullshittery 2014-10-08

CPython internals: A ten-hour codewalk through the Python interpreter source code 2014-10-08

How I've been spending my time as a first-semester assistant professor 2014-10-01

A Simple Guide to Professor Job Titles in the United States 2014-09-26

Superpowers of Highly Successful People 2014-09-20

Motivation, Momentum, and Marketability: New Faculty Edition 2014-09-12

Pep talk for new Ph.D. students 2014-09-06

The single most practical reason for pursuing a Ph.D. that I can think of (and I've thought a lot about this topic!) 2014-09-05

Organizational Orders of Growth 2014-09-04

Maximizing Personal Potential 2014-08-29

Whose Critical Path Are You On? 2014-08-26

Working on Weekends 2014-08-10

Tiger Parenting Explained (guest article) 2014-08-09

Exit Interviews for Ph.D. Students 2014-07-27

Ten Stories From My Childhood 2014-07-25

Python is now the most popular introductory teaching language at top U.S. universities 2014-07-07

Motivation, Momentum, and Marketability 2014-06-26

Small-Group Code Reviews for Education 2014-06-19

Python Tutor Live 2014-06-16

Postdoc Year-In-Review 2014-05-31

Mandatory course load limits for undergraduate students? 2014-04-21

The benefits of working on research as an undergraduate student 2014-04-08

Interested in being an undergraduate research assistant in my lab? 2014-04-07

How MOOC Video Production Affects Student Engagement 2014-03-12

Demographic Differences in How Students Navigate Through MOOCs 2014-03-12

Advice Saturation Point 2014-03-02

Live Paper Editing 2014-02-24

Academia and industry aren't that different 2014-02-16

Three Dimensions of Work 2014-02-08

Passive Pair Programming 2014-02-02

Writing an NSF Grant Proposal: A First-Timer's Perspective 2014-02-01

Early-Stage Grad Student Depression 2014-02-01

Why do you want to be a CS professor? 2014-01-30

Writing for Work 2014-01-29

NPR Interview on Silent Technical Privilege 2014-01-22

Learning Time Management 2014-01-22

Adulthood: Ten Years In 2014-01-20

My book notes on Unlocking the Clubhouse 2014-01-15

My Childhood Home Environment 2014-01-15

Silent Technical Privilege 2014-01-05

Intense Single-Tasking 2014-01-04

2013

Work Time Scales 2013-12-30

The Two Cultures of Computing 2013-12-24

Preparing for Junior Faculty Life 2013-12-22

Three quick tips for faculty job applications 2013-12-20

Student Fizz Buzz 2013-12-19

Code Carabiners 2013-12-14

Unicorn Jobs 2013-12-11

Hour of Code: Observations from a Middle School Classroom 2013-12-10

My Unexpectedly Awesome AP Computer Science Class 2013-12-09

Getting Past Superficial 2013-11-26

How to effectively ask for help as a junior employee 2013-11-25

Advice for new Ph.D. students 2013-11-24

Hacker School Residency 2013-11-14

Hacking the Ph.D.: Three Serendipitous Projects 2013-11-11

Faculty job search timeline 2013-11-09

Data Science Workflow: Overview and Challenges 2013-10-30

edX blog: Optimal Video Length for Student Engagement 2013-10-29

What makes a good engineering culture? (guest article) 2013-09-24

Teaching Librarians Programming 2013-08-25

Dropbox: Sweating the details 2013-08-03

First impressions of the IPython Notebook 2013-07-25

How effective is your research programming workflow? 2013-07-22

Why scientists and engineers must learn programming 2013-07-18

Research Hackathons 2013-07-15

Open-plan vs. cubicles vs. closed offices 2013-07-11

Education Removes Fear: Some Examples From CS Courses 2013-06-30

Why Wrangle Data? 2013-06-29

The Ph.D. Grind: tl;dr Edition 2013-06-29

Data Wrangling with MongoDB 2013-06-28

Mac OS X 10.8 Lightweight Developer Setup 2013-06-25

Research Directory Structure 2013-06-24

A Bit Better 2013-06-21

Ph.D. Dissertation Summary 2013-06-18

Lightweight Static Website Generator 2013-06-15

How my mother made tenure 2013-06-08

Coping With Linux Distro Fragmentation (Visualized in One Giant Diagram) 2013-05-30

My thoughts on "The N=1 guide to grad school" by Adam Marcus 2013-05-08

Why pursue a Ph.D.? 2013-05-02

The Business of Academia 2013-04-17

How to deliver a great academic job talk 2013-04-17

General advice for faculty job interviews 2013-04-17

Reflections on my tenure-track assistant professor job search 2013-04-16

Two Examples of HCI Research 2013-04-10

Teaching Real-World Programming 2013-01-07

Lessons from the Grind (MIT Technology Review) 2013-01-02

2012

The Journey of a Tiger Child and Beyond (guest article) 2012-10-20

The Ph.D. Grind: Lead From Below 2012-09-28

My Undergraduate Research Experience and Decision to Pursue a Ph.D. (guest article) 2012-09-08

The Ph.D. Grind - Answers to Reader Questions 2012-09-03

Raising Producer Kids 2012-09-01

The Ph.D. Grind: Main Grinds and Side Grinds 2012-08-25

How to Do What You Love: Get Good, Get Known, Get Lucky 2012-07-22

The Ph.D. Grind 2012-06-29

Overview of U.S. Science and Engineering Ph.D. Program Requirements 2012-06-20

One Teenager's Backlash Against Overbearing Asian Parents (guest article) 2012-04-18

My Back Pain Story (guest article) 2012-04-04

Why Scientists And Engineers Must Master Strategizing and Selling 2012-04-02

Teaching Programming To A Highly Motivated Beginner 2012-03-15

An Open Letter to Khan Academy et al. 2012-03-13

Implicit Privilege 2012-03-12

How To Be Effective 2012-02-26

Dining with a Tiger Cub (guest article) 2012-02-11

2011

My Computer Setup 2011-12-10

Human Performance Bounds 2011-12-08

What is research? 2011-11-07

Desktop Photo Montage 2011-10-18

Enforcing diversity in online media consumption 2011-09-25

Programming Interview Tips 2011-09-12

Oral Presentation Tips 2011-07-15

Tips for giving a live software demo 2011-06-30

Google Tech Talk - CDE: Using System Call Interposition to Automatically Create Portable Software Packages 2011-02-11

2010

The main purpose of education 2010-10-04

How to choose an English name 2010-08-10

What kids can learn from doing homework 2010-08-09

My "modest proposal" for reforming K-12 math education 2010-07-11

JSON Photo Gallery 2010-06-30

My predictions for the state of the art in programming technology in the year 2030 2010-06-01

How a lack of communication skills hurts Asian immigrants (guest article) 2010-04-24

The similarities between being a junior researcher and a high-tech entrepreneur 2010-03-06

What is Computer Science? Efficiently Implementing Automated Abstractions 2010-02-04

Portrait of an overbearing Indian father (guest article) 2010-01-10

Overcoming the effects of being raised by overbearing parents: There are other kinds of lives just waiting to be discovered! (guest article) 2010-01-03

Is there life after high school? (guest article) 2010-01-02

2009

Understanding and dealing with overbearing Asian parents 2009-12-21

My plea for a more compassionate work environment 2009-12-19

Happiness and Academic High-Achievers 2009-10-17

How Immigrant Job Woes Shape Parental Expectations 2009-09-23

The advantages of attending a prestigious name-brand university 2009-09-21

MathViz: Math expression code visualizer 2009-09-20

Social tips for geeks 2009-09-07

My advice for kids: The 1,000-hour rule 2009-02-09

On remembering and dealing with people's names 2009-01-19

2008

Responses to 'Attention: Overbearing Asian Parents' 2008-12-28

Common English mistakes made by native Chinese speakers 2008-12-24

Geek behaviors present during conversations 2008-12-21

Knowing a lot about a little versus knowing a little about a lot 2008-12-16

Same interface, works better 2008-11-28

Hey, your Python code is unreadable! 2008-10-31

Which college major should I choose? 2008-10-14

What I learned from my friends during my Summer 2008 Boston/NYC vacation 2008-09-21

Reflections and advice on life as a mid-stage Ph.D. student 2008-09-20

The practical implications of computer program running times 2008-07-30

The benefits of programming with assertions (a.k.a. assert statements) 2008-06-20

The benefits of object-oriented programming using class invariants (a.k.a. representation invariants) 2008-06-20

Hobby projects as platforms for active learning 2008-06-20

On Expertise 2008-05-24

Material Possessions 2008-05-24

Advice for Social Interactions and Relationships 2008-05-24

Summary of Statistical Tests 2008-03-28

2007

Summer of Gluttony 2007-12-01

The Delivery Man 2007-12-01

Chinese School in Church 2007-12-01

Chinese vs. American Flags 2007-12-01

Subtle Racism 2007-12-01

Wishing I Were White 2007-12-01

Learning English at an Inner-City School 2007-12-01

Learning French in Switzerland 2007-12-01

A Chinese Restaurant in Switzerland 2007-12-01

My Early Education 2007-12-01

On the Move 2007-12-01

Python programming idioms 2007-11-10

Lightweight File Versioning and Synchronization with Git and Unison 2007-09-14

Types of Friends 2007-06-05

Introductory Computer Programming Education 2007-05-24

Why Python is a great language for teaching beginners in introductory programming classes 2007-05-18

The power (but enormous setup cost) of scripting 2007-05-13

Greg FAQ 2007-04-28

Cars and Computers 2007-04-07

Random Browser: An innovative hierarchical photo browsing application 2007-03-03

Gallery Lite: Yet Another Lightweight Web Photo Gallery Generator 2007-01-07

Recommended Reading (from childhood and student years) 2007-01-01

2006

Computer Science in Modern Everyday Life 2006-12-12

Tips for First-Time Teaching Assistants 2006-11-21

Advice for Ph.D. Program Applications 2006-09-30

Email analysis scripts for mbox mailbox files 2006-09-16

On Popularity 2006-09-01

Setting up Unison for your mom 2006-08-29

MIT: A Life in Emails 2006-08-28

How to painlessly migrate your email after you graduate from MIT 2006-08-20

Attention: Overbearing Asian Parents 2006-08-15

Programming in a Vacuum 2006-08-02

Advice for Science Fellowship Applications: NSF, NDSEG, Hertz 2006-07-02

Email Writing Tips 2006-06-23

On Grades 2006-06-17

MIT classes that I have taken 2006-06-01

Java and Software Engineering Notes 2006-03-07

Advice for MIT Undergraduates 2006-01-12

CVS Lite: A Lightweight Alternative to CVS 2006-01-10

2005

C Programming Tips 2005-11-26

Tips for Casual Digital Photography 2005-08-26

XML Photo Gallery 2005-08-03

Unison File Synchronizer: Liberation through Data Replication 2005-08-03

Ten 'tips' for life 2005-05-30

Image Harvester 2005-04-29

Animated GIF Maker 2005-04-01

2004

Integrity in Digital Photography 2004-01-12

1998

Why CTY Rules 1998-08-15