30th
2010
Jan
permalink

To die without your love knowing how you really feel…

…must be the worst fate imaginable.

Question: How do you communicate how you really feel? How do you let your love know that she is loved? Really loved. You know you love her… but does she really get it?

I struggled with these questions for a long time. Being naturally bad at communicating due to programmers’ Asperger’s didn’t help. Last year, though, I stumbled on The Five Love Languages.

The premise of the book is that there are concrete ways to communicate love and appreciation for another person (all forms of it, not necessarily romantic). The author gives many examples and shows a pattern among them. The ways to communicate love can be grouped into 5 categories, each embodying a “love language”.

According to Chapman, the 5 languages are:

  • Words of Affirmation
  • Quality Time
  • Gifts
  • Acts of Service
  • Physical Touch

Think of a time in your life when you really felt loved. That one time… Was it when someone told you were great at something you thought you were lousy at? Was it when you hung out together at the bus station because the bus was late, and ended up talking for hours? Was it the time years ago that you received a gift, that maybe wasn’t expensive, but meant so much to you that you cherish it to this day? Was it the time someone trudged out in the pouring rain for you, so you didn’t have to? Or was it the time someone embraced you, at just the right moment?

We naturally try to give what we think is valuable. But the more I learn about other people, the more I learn that different people are different. They value different things. They think differently. They perceive the world differently.

If you really care about someone, give them what they want, not what you wish others would give you.

This is quite possibly the only book I have ever read that I think would be valuable for any person on the planet. Maybe how to communicate love is obvious to some people, but it was never obvious to me.

30th
2009
Dec
permalink

It’s hard to change a little. It’s much easier to change a lot.

When you try to change a little, your old mindset still has its old values and attachments, and you inevitably slide back into your old groove. But when you change enough to create a new mindset, you can free yourself from your old way of looking at things and create a new groove.

rut

Homer Simpson’s ass groove comes to mind. Moving over a few inches would be painful at best. Moving across the couch to a new cushion would be like starting fresh. The mind and habits work the same way.

This has happened to me a number of times.

Waking Up Earlier

For years I tried to wake up about 30 minutes earlier than my regular routine. It would work for a while, but then I’d inevitably start waking up later and later until I reached my regular schedule. However, when I got a new job that required me to wake up 2 hours earlier, sure it was tough at first, like adjusting to jet lag, but it became my new routine. And I’ve had no problems consistently waking up 2 hours earlier than my old routine.

CVS/Subversion -> Distributed Version Control

I used to use CVS for version control at work. For a small project, a co-worker and I tried using Mercurial. On the surface, Mercurial is very similar to CVS, and it was very easy as a CVS user to just pick up Mercurial and get started using it. It ended up being nice, but we perceived it as CVS + local commits and a few other “neat” features. Nothing game-changing. Months go by and I decide to give distributed version control another shot. This time I tried git. Git is so different from CVS that I was forced to literally stop what I was doing and learn git. This seemed bad, but it forced me to change how I thought about version control. I used to think of version control as something that was akin to writing in stone because it was expensive and could never be changed. However, now I see everything as patches, and patches are cheap, can be applied, rolled back, and re-ordered. A completely different mindset. Now I’m hooked on distributed version control and couldn’t live without it.

Imperative Programming -> Functional Programming

People I have known who tried learning functional programming using a language that supports functional features but allows falling back on imperative loops and statements… they end up never really getting it because they inevitably fall back on their old imperative ways. When I was taught functional programming at Carnegie Mellon, it was mandated that we use Standard ML without any assignment statements (i.e. no references). I was completely lost for the first couple weeks, but after a certain point, it clicked — and from then on, I have been thinking functionally ever since.

So if you want to change how you think about something, in the long-run it’s hard to change a little; it’s much easier to change a lot.

13th
2009
Dec
permalink

Robot Visions

When I was a kid, barely old enough to read, I saw this book Robot Visions, by Isaac Asimov in the bookstores. I poured over Ralph McQuarrie’s illustrations (long before I ever knew who he was) and wanted to read it more than anything else.

Now, almost 20 years later, I discovered it in my uncle’s library — the original hardcover edition — and I’m finally reading it. And loving it!

It is truly an exciting time. Many predictions seemingly of the distant future are likely just around the corner. Others, we must still dream about.

It is my guess that the 21st century may see a society in which one-third of the population will be engaged in entertaining the other two-thirds.

And there are bound to be new forms of entertainment that one can now foresee only dimly. Three-dimensional TV is easy to forecast. And space may become a new arena for activity. In near-zero gravity, for example, the manipulation of balls may produce far more complicated forms of tennis or soccer. Ballet and even social dancing may become incredibly startling and require a new kind of coordination that’s delightful to watch, as it will be as easy to move up and down as it is to move forward and backward or left and right.

We’re already beginning to see this “work as play” phenomenon. People in my generation expect work to be fun. When it’s not, they quit and do something else (or “bum around” as long as their funds allow it). In fact, in my recent letter of resignation, I even stated that I was leaving “to pursue fun in the web startup world”. I considered writing something more “professional”, but decided against it because I wanted to be honest.

Experts in learning-theory like Kathy Sierra are realizing that you can apply game-design to just about anything, making even the most tedious tasks fun. After seeing this, there’s no reason to ever go back to the old way!

For those who see patterns and the robotic nature of decision-making (like science-fiction writers), the future may not be as clear as the past, but it is just as obvious.

1st
2009
Dec
permalink

The Purpose

I want to make software that people use. I’m tired of making stuff that gets used by one person once a month.

Pathway to the Sun

The purpose of software ultimately boils down to one of these things:

  • To help people work
  • To entertain people
  • To teach people
  • To keep people safe
  • To help people pursue happiness

Software can help people. If it doesn’t, it hasn’t fulfilled its purpose.

I always tell people at work that my job as a developer is to remove myself from the process — by replacing myself with software. If I do that, I’ve created an asset for the company. If I don’t, I’ve created a liability.


Related: The Question
Photo by jedzer