Rich, Famous, and Popular

for admittedly small values of r, f, and p

Greg Wilson

November 2017


What is this talk about?

  1. Why I might be worth listening to
  2. How to figure out what's worth doing in general
  3. How to figure out what's worth doing in tech
  4. A few examples
  5. How to start
  6. What to do next

The 10-second version

Start now.

Use what you have.

Help who you can.

Why is it worth listening to me?

How can I figure out what's worth doing?

  1. It will help people who actually need help.
  2. You will enjoy the work.
  3. What you learn will change how you see the world.
  4. You will meet people whom you like and respect.
  5. There's a reasonable prospect of revenue.

How can I tell what's not worth doing?

  1. There are already lots of books on the subject.
    • Yours will have to be pretty good to get attention.
  2. There's already an active community doing it.
    • Join that community!
  3. Your closest friends are politely noncommittal.
    • "A month of hard work can sometimes save you an hour of conversation."

A Note on Computer Science

  • Computer Science degrees don't prepare people for real-world programming jobs.
  • But they're not supposed to.
  • They're supposed to train the next generation of computer scientists.
  • Middle-class credentialism isn't the fault of CS.
  • Until society comes to its senses, we just have to work around it.

A Note on Talking to Strangers

  • "Scientists have odious manners, except when you prop up their theory; then you can borrow money from them." – Mark Twain
  • Most people are genuinely flattered and grateful that you want to bring their ideas to a wider audience.
  • But do your reading first.
    • People have no obligation to give you a free tutorial.
  • Realistic expectations: Beautiful Code was 300 emails ⇒ 250 responses ⇒ 34 contributions.

Sex & Drugs & Guns & Code: What Everyone in Tech Needs to Know About Politics, Economics, and Power

Sex & Drugs & Guns & Code: What Everyone in Tech Needs to Know About Politics, Economics, and Power

  1. It will save people from Silicon Valley's monoculture.
  2. You'll have to enjoy reading and writing.
  3. You will learn things that will change your worldview.
    • That's kind of the point…
  4. You'll meet lots of interesting people…
    • …some of whom may troll you because they feel threatened.
  5. You'll be the hit of the conference circuit.

The Undergraduate Operator's Manual

  • "The proper study of mankind is man."
  • Textbook for a course on the physiology, psychology, and anthropology of 18-25 year olds.
    • How do all-nighters affect the quality of your work?
    • What can science teach us about how to study?
    • What are productive ways to run a meeting?
    • What are warning signs of depression?
  • Some overlap with Sex & Drugs & Guns & Code.

The Undergraduate Operator's Manual

  1. Dunno about you, but it sure would have helped me.
  2. It would be fun to write.
  3. It applies to you as much as to students.
  4. It would be a great excuse to talk to people doing interesting research.
  5. Fewer revenue prospects: nobody buys textbooks any more.

Software Tools in JavaScript

  • "What I cannot create, I do not understand." – Richard Feynman
  • A 21st Century update of Software Tools in Pascal.
    • Then: Pascal, ASCII text, and standard I/O.
    • Now: mostly-functional JavaScript, JSON, and HTTP.
  • Use calendar aggregation as a running example and "Seven Ways to Think Like the Web" as a guide.
  • Build a simple web server and template system, add authentication, construct a unit testing framework and a little version control system…

Software Tools in JavaScript

  1. It will help programmers at all levels.
  2. Coding and writing together is a lot of fun.
  3. It will give you a chance to reflect on your craft…
  4. …and discuss it with others.
  5. Again, you'll be a hit on the conference circuit.

A Note on Marketing

FIXME: Marketing for Scientists

Software Engineering: An Evidence-Based Approach

  • How to get, clean up, model, analyze, and make sense of software engineering data.
  • How to use software analysis tools.
  • How to think sceptically about claims and evidence in software development.

Software Engineering: An Evidence-Based Approach

  1. It will be a lot more useful than a semester of UML plus project management.
    • And more honest than most project courses.
  2. If you enjoy statistics and coding.
  3. You will learn things (and so will everyone else).
  4. The people doing the research will love you.
  5. It will establish your credibility as a trainer.

Software Architecture by Example

  • Compare implementations of open source programs.
    • How are requests handled in Apache and Nginx?
    • How is undo/redo implemented in various editors?
  • Show programmers their peers' designs.
  • Teach them how to make sense of code.
  • Can be done for professionals or as a textbook.


  • A tool to create synchronized voiceovers for HTML slideshows.
  • Much smaller payload for mobile devices.
  • Plays well with search engines and accessibility aids.

Diff and merge for common document formats

  • Branch-and-merge is a scalable way to collaborate.
  • But today's tools don't support Word, Excel, and PowerPoint.
  • Give millions of people a ramp instead of a cliff.

Numerical JavaScript

  • Sooner or later, every programmer has to learn some JavaScript.
  • So give it numerical extensions instead of creating entirely new languages.

The Discussion Book online

  • 50 productive ways for groups to discuss things and make decisions.
  • Only a dozen have ever been implemented online.

Using machine learning to find actual design patterns

  • Analyze novice programs to find nameable (teachable) patterns.
  • Do the same for actual usage patterns in Git.

Teach programmers how to organize

How do I start?


How can I get other people involved?


How do I finish?


Start now.
Use what you have.
Help who you can.

Thank you.