Saturday, August 29, 2015

Why I wrote my last blog post

A lot of people have been asking why I wrote my last blog post, or have been blogging in general.

Here's why:

  1. I failed to adopt the pomodoro method about 2 years ago. If I blog about it, and highlight the important details, I feel like I am more likely to stick with it.
    1. Consider the analogy of learning to program by typing out the code vs merely copying & pasting the code. If you type out the code, you learn it significantly better.
    2. Consider the analogy of learning how to derive an equation vs merely knowing the equation. If you understand the theory behind something, you understand it better, and you value it more highly.
  2. My family has told me that I should use a diary over the years. I've only used it occasionally. I am essentially using a private diary again, but some lessons I feel like I should share with others.
  3. My family has tried to persuade me repeatedly over the years that playing video games is a waste of time. Although they are indeed a less productive use of my time than contributing to open source projects, they are extremely good ways of teaching people lessons about life.
    1. Just as Star Trek is a "morality play set in the future", video games are often great ways of teaching people lessons too.
    2. To a degree, it wasn't that I was playing video games that was a waste of time. It was that I was playing the wrong video games. I played "Prince of Persia: The Sands of Time" in 2003-2004, and that game was all about rewinding time. But I recently played Assassin's Creed III. And the lesson from AC3 is that the past is read-only, the present is read-write, and you have to learn from the past to save the present/future.
  4. I feel like my family/friends (fraternity brothers) will be very happy for me when they read my blog. Some fraternity brothers already have, and they have given me great feedback (although not in the form of comments on my blog.)
  5. Yes, I do feel like I have lessons to share with open-source projects. But I have now learned that I need to persuade them with code rather than with words.
  6. As Scott Adams (Dilibert author) wrote for his "Robots Reads News" comic strip:
Developing it is a system :-) I’m learning as I go.

Update 2015-08-30: Added #6 (Robot Reads News) with quote

Tuesday, August 25, 2015

How I learned to stop being a perfectionist, and when FAILURE is OK

Fate has ordained that the men who went to the moon to explore in peace will stay on the moon to rest in peace.
- President Richard Nixon, in the event of a disaster besetting Apollo 11
The Soviet Union launched Sputnik 1 ... on October 4, 1957... (They) didn’t announce the launch until the next day.
(The Soviet first stage engines) repeatedly failed in flight tests. It is a more catastrophic failure in flight than on a test stand.
On the cloud-base model... you can fail quickly, and at a low cost, and the net result is more innovation.

In 1997, I played The Curse of Monkey Island.

You see that screenshot? No matter how you respond, you cannot die.

And this next screenshot? You are actually still alive. The game is simply parodying other games where you can die.

And this was my favorite point-and-click adventure game of all time!

However, I sucked at it. I would spend days trying to figure out each puzzle unsuccessfully. It took me months to reach the end.

I never played the adventure games where you could die. So part of that scene's humor was lost me.

Compare that to a game that I started playing about 1 month ago:

Yes, a game based on the books by the murderer himself.

Uh oh.

I have a bad feeling about this.

Limited amount of time? I am not used to this!

What! I made a mistake?

Dear God No!

Needless to say, in this game, mistakes are fatal. Especially in level 1.

I have already broken the Planet Fedora copyright policy. So this post will not be in the Planet Fedora.

There's another reason too:
Khaytsus> mikedep333: I, personally, am tired of your spamming your blog.
mikedep333> Khaytsus, you have persuaded me to blog less often.
Khaytsus> Spam less often too.  That'd be great.
mikedep333> K, I will send the commands to my botnet
* Khaytsus shakes

Middle School: Perfectionism & Math

From 1999 to 2001 (7th to 8th grade), I attended middle school. In 7th grade, I was promoted from regular math class to honors math class.

It took me a while to understand the theory behind each equation, but once I understood it, I understood it extremely well. And I could infer things from the theory extremely well.

And I daydreamed about math! In addition to video games.

At one point I went to a math competition at my future high school's annual math competition for middle schools. Each middle school team had 5 students. Our team received 50 points. I received 20 points.

40% of our team's score! I scored higher than some entire schools even! Why? Because I understood the theories extremely well.

High School: Perfectionism & IT

Starting 9th grade, I attended that high school. I applied to the IT internship there. But I wasn't initially accepted.

Although my resume was not as impressive as at least 1 of my friend's who was initially accepted, I was rejected for another reason. As I walked past the office of the 2 IT employees, I heard them reading aloud the "referral" letter from my math teacher. She mentioned that I was "slow" to learn theories.


I was accepted into the IT internship program mere days later. And over time, IT replaced math as my passion. Nay; it was my obsession. I daydreamed about IT instead of math, and less and less about video games.

However, throughout those 4 years, my math skills deteriorated.

I have always been a slow writer, but a decently fast (or very fast) typist. So as the derivations got longer, I could not keep up in in my notebook as my teacher derived equations on the board.

And I spent the minimum amount of time possible doing math homework. I spent the maximum amount of time on IT (and video games) instead.

So needless to say, I had a very poor understanding of the Math theory, even though I received "good enough" grades.

Until I started reflecting on my life over the last week, my greatest regret has always been neglecting my math skills.

Sophomore year, even though a got an OK grade in the class, I failed the semester geo-precalc exam! It was the first F I had ever seen!

I was devastated, and daydreamed about going back in time.

Needless to say, that daydream did not come true.

I did great in almost every other class though, especially history. But there were still signs that I was a perfectionist.

For example, senior year, I took multiple AP exams. The last exam was the AP history exam, I was not quite good enough at budgetting my time. I had 10 seconds more of writing. The school administrator shouted:
Pencils down.

I kept on writing. So he shouted again:
Pencils down!
It was clearly directed at me. I got to complete the paper though in those 10 seconds though.

And I did not get penalized.

Case Western Reserve University: Electrical Engineering FAILURE

For 1.5 years at CWRU, I tried to become an electrical engineer.

At one point I told my (IT intern) friend that I wanted to design and develop operating systems. He told me that I should go into computer science instead.

I am not sure what I was thinking. I was probably thinking that EE was more "well-rounded."

I had always been fascinated by operating systems. "The most complex things created by man." And remote desktop was my favorite feature of them.

Yet with my poor math skills, this was hopeless.

So I failed. And I did not let go.

I made other mistakes too. Do to my actions, I was not accepted into a generic-sounding-but-nerdy fraternity. Only years later, did I realize that those actions were social mistakes.

So I moved onto a new college. And just like a video game score, my GPA was reset
But years later later, I would daydream about being conferred an honorary degree from CWRU. So I still hadn't learned how to accept failure.

Penn State: IST & Superficial Success

At Penn State, I majored in Information Sciences & Technology.

I did significantly better.

For example, in 1 class, my instructor said that another student and I were the 2 best students in the entire class. There was a group project due and he put the best 5 students into the same group, so that we would not "do all the work" if talent were evenly distributed across all groups.

That other student and I were the only 2 who knew how, and were willing to use version control though.

I also joined an engineering fraternity. So clearly my social skills had improved. They actually offered me a bid after I rushed only 1 evening; they were that impressed.

And I met a business major who failed to become an EE also. He failed Calculus II 3 times! And he had a better attitude than I did.

I did internships, and landed a job.

But there was one class where I did not complete the work, and did not withdraw in time, so I got an F. Again!

And that F continued to haunt me. I wanted to retroactively withdraw. I felt like I had "unfinished business" and that "I'll be back" (in person) to get the retroactive withdrawal completed.

Working World: Pencils Down

As I have been working, I have heard repeatedly from my manager:

Pencils Down

Although I have heard it less often over the years, so clearly I have been improving.

The Last 2 weeks: Learning Long Overdue lessons

2 weeks ago I attended Flock.

And I have been doing a lot of self-reflection over the last week. And reflection about open source.

And the fact that I hated playing Game of Thrones was the perfect example of what I was doing wrong.

I have long thought about about my education like how I played Monkey Island. I cannot reload the past. I have to make more decisions on my feet, If I want to survive in George R. R. Martin's video game. Because Game of Thrones is more similar to the real world than Monkey Island is.

To avoid perfectionism, I should follow the pomodoro method. 30 minute blocks are great for budgeting time.

Yes, my physical pomodoro timer broke (on its own) 2 years ago. It was a piece of crap. But I can find a smartphone app if nothing else.

I feel I have lessons to share about The Init Wars. And I could spend time trying to explain them.

But then I realized a great lesson that was already shared by Jonathan Corbet.

Some of us will remember the multi-year dispute over the devfs filesystem,
 He goes onto explain:

If systemd turns out to be an equally bad idea, it can be removed in the same manner. It is entirely possible that we'll eventually look at it the way we look at devfs — as an experiment in the wrong way to solve a problem. Or perhaps it will be seen more like sendmail: the best solution available at the time, but one that few of us wish to deal with now. However things turn out, if it becomes clear that there is a better solution than systemd available, we will be able to move to it.
So what Jonathan is essentially saying is that "it should be OK to fail."

And failures can be creative ways for testing your system too. Google SREs simulate Zombie Apocalypses. On their production environment!

And in general, I feel like every open source project needs an upstream project, or an experimental branch. Perhaps even some upstreams even need an upstream? Where it is OK to break APIs and ABIs. Or merge features that the BDFL won't accept yet. Where it is OK to fail. Where failure is cheap.

How can failure be cheap in today's open source projects?
  • Cloud infrastructure. You should be able to re-spin up your entire open source project's infrastructure automatically. And give out numerous badges for breaking it.
  • 100% insistence on best practices like automated testing, and packaging standards. If a package/feature cannot meet these, let downstream decide whether to accept it. Even if downstream is an upstream for something else.
  • In general, lowest possible maintenance/labor.
  • Process implemented as automation rather than bureaucracy.
Consider some more advice:
Scott Adams' Secret Of Success: Failure
The way I see open source based on Scott's advise, it is not enough to be passionate about what you love. You need to be passionate about it, and then realize that your are failing in 1 aspect or another. Either through your own self-reflection, feedback from others, or both. If you spent 12 hours solving a problem, but solved it successfully, you probably should have used a pomodoro timer. After 2 30-minute blocks, you should have used your judgment about whether to continue.

Some lessons are worth spending 12 hours on. Most are not.

I told myself I would finish this blog post by 22:00 tonight. And I shall do so.

America may have lost the space race initially. But we made steady progress towards the moon landing, largely by testing our stage 1 rockets on the ground; where failure was cheap. We had to build test facilities before we could test them, which the soviets did not do. But that was project management; and that's why we need business majors, not Commisars.

My failure at EE may not have been cheap financially. But it became valuable personally once I reflected on it.

Same thing for my other failures.

And remember those AP exams? I got a 3 on Calculus. But I got 5's Microeconomics, Macroeconomics, and History.

And even astronauts had to comply with bureaucracy: Once they landed downstream.