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

Articles and Videos

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.

In 2016, I started producing more video-based content in addition to writing text-based articles.


Find an article within this site using search terms:

2017

PG Vlog #29 - Closing the Gap (WLOG!) 2017-07-25

How did I find my second batch of students for my lab? 2017-07-23

PG Vlog #28 - Successful Research Collaborations 2017-07-22

PG Vlog #27 - Directed Play (WLOG!) 2017-07-20

PG Vlog #26 - What Does "Academia" Mean? 2017-07-19

PG Vlog #25 - Be Wary of Early Successes (WLOG!) 2017-07-19

PG Vlog #24 - Ira Glass and the long road to mastery 2017-07-18

PG Vlog #23 - University Computing Infrastructure (WLOG!) 2017-07-17

Working Effectively With Me as Your Research Advisor 2017-07-11

Making Programming Accessible for All (MIT alumni profile) 2017-07-08

PG Vlog #22 - Tolerance for Messiness 2017-06-29

PG Podcast - Episode 29 - Jean Hsu on engineering leadership consulting 2017-06-26

PG Vlog #21 - Getting Really Good at the Most Important Thing 2017-06-26

PG Podcast - Episode 28 - Aayesha Siddiqui on Star Trek! 2017-06-25

Human-Centered Programming Tools: Spring 2017 Class Readings 2017-06-12

PG Vlog #20 - One-Page Project Proposals: Click and Pop 2017-06-06

PG Vlog #19 - My First Ten Years of Research Papers 2017-05-29

PG Vlog #18 - Managing Your Manager 2017-05-24

PG Podcast - Episode 27 - Roger Peng on being a podcasting professor 2017-05-18

Older Adults Learning Computer Programming (CACM summary) 2017-05-15

Attending Professional Conferences as a Newcomer 2017-05-13

PG Podcast - Episode 26 - Pamela Fox on meditation, mindfulness, and relaxation 2017-05-05

PG Vlog #17 - Recovering from Early Failures 2017-05-03

PG Vlog #16 - Talking-to-Doing Ratio 2017-04-30

PG Podcast - Episode 25 - Rose Hendricks on public science communication 2017-04-27

PG Vlog #15 - The Dangers of Premature Cynicism 2017-04-24

Five Years After My Ph.D. Thesis Defense 2017-04-23

Older Adults Learning Computer Programming (press release) 2017-04-18

PG Podcast - Episode 24 - Jason Shen on The Asian American Man Study 2017-02-21

PG Podcast - Episode 23 - Jake VanderPlas on data science writing and teaching 2017-02-13

PG Podcast - Episode 22 - Jess Hamrick on teaching programming to social scientists 2017-02-08

PG Vlog #14 - A Tour Through pgbovine.net 2017-01-25

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 - Mike Tyson: "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 conversations with 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

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 find my first batch of students for my lab? 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

Philip's Ph.D. Portal 2013-08-27

Teaching Librarians Programming 2013-08-25

Why pursue a Ph.D.? 2013-08-21

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

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