Monday, September 1, 2014

Green Legos and Big Ideas

Yesterday I took Adi to the Lego KidsFest in Dallas. Our favorite part by far was the area sponsored by Honest Kids juice. They had a virtually unlimited supply of green 2x4 standard bricks. It was pretty amazing to see what people could build with just a single color and shape. I think it gets back to the core of what Legos should be. All the kits that contain specially shaped pieces that can really only be used for one thing seems like a limit to creativity.

Our first project was a house. When we were working on the roof, this girl came up and asked if she could help. 

After that we walked around to see the other exhibits, but finally came back to the green Legos. For a little while we helped another boy with his pyramid, but then moved over to a table to start something new. We experimented with a zig-zag shape, but then decided to try for our own giant pyramid. We used the same pattern that we came up with for the house roof, which used two brick wide layers and was much more stable than just single brick wide layers.

Adi said from the beginning that we would need help to build it, but we started the ambitious project anyway.

It was pretty amazing to me how fast you can build when you don't have to hunt for the right piece. You just grab a handful and continue the pattern.

After we built a few layers, a brother & sister came to our table and were talking about what they would build with their dad. We invited them to help us and they jumped right in. The dad took on the role of acquiring more bricks when our bucket started running low.

Next an 11-year-old boy asked if he could help. From there other kids just walked up and started helping without even asking.

At one point there were so many other kids working that Adi got pushed out and wasn't able to work for a while.

As it got near the top it started cracking. I think some layers didn't get put together exactly straight. (Next time we attempt a large Lego pyramid we'll add some internal support structure as we go.) As the layers got smaller and more out of square, it got very difficult to continue without breaking what had already been built.

So we took a group picture and abandoned the project.


Adi and I stayed at the same table and started working on the next thing. It was fun to hear people's reactions as they walked by. No less than three kids stopped at different times and said, "I have to finish this!"

On the drive home we talked about what we learned from all of this. Here's what we came up with:
  • If you want people to help you, then your idea has to be big enough so that there is room for lots of people. With a small project, there's just not enough space to include others.
  • You will probably need to start by yourself even when you don't know who will come to help.
  • Be prepared to step back and let everyone else work on your project.
  • If your idea is really big, people will keep working on it even after you leave.

We also talked about how we could start a Lego kids group that meets regularly to build together, but where would we store all those green Legos?


Friday, July 18, 2014

Window seats and the meaning of life

My favorite seat on an airplane has always been the window seat. I love being able to look out the window and see what we're flying over or through. Have you ever flown 30,000 feet above a thunderstorm at night? How about over fireworks? Or a pod of whales swimming in the ocean? Those are some amazing sights!

Trying to figure out where we are based on the mountains, lakes, rivers and other landmarks is great fun. Sometimes when I fly into Seattle, I can see the buildings where I went to high school. (The school has moved since then.)

On our family vacation this year I flew home by myself so I could go back to work while my wife and daughters stayed with friends. I was already missing them when I boarded the first of 3 flights that would get me home. As I sat down next to the window I realized it had been a long time since I've had the window seat. I saw a few cool things that I'd never seen before like a power generating windmill farm in the middle of the sea and clouds that were perfectly formed above an island while everywhere else was clear.

When each of our girls were little, we've had good success when we bring her car seat on board the airplane. She gets to sit in a seat she's comfortable and familiar with and we can be sure she's securely buckled in. We've even done this when she's under 2 and not required to have her own seat. Trust me. It's way better than trying to hold her on your lap for several hours -- especially when she's 23 months old! More than once I've carried a sleeping girl off the plane while she's still strapped into her seat.

I believe it's a safety regulation that dictates a car seat must always be placed near the window. So, now that I'm a dad I don't ever get to sit in the window seat. And you know what? I'm more than OK with that!

Even before we had kids, my wife preferred the aisle seat, which meant I was in the middle seat to be next to her.

The joy of having a family and traveling together far exceeds whatever pleasure I may have received from watching the clouds go by.

Viktor Frankl in his book Man's Search for Meaning (p.113-114) says:
Ultimately, man should not ask what the meaning of his life is, but rather he must recognize that it is he who is asked. In a word, each man is questioned by life; and he can only answer to life by answering for his own life; to life he can only respond by being responsible.

I've often said that I like who I am as a husband and father much more than I liked myself as a bachelor. I know my life has immeasurably more meaning now that I have a beautiful wife and two beautiful daughters that I'm responsible for.

In addition to responsibleness, Frankl describes love and sacrifice as other ways to find meaning. I love my family more than words can say and I would sacrifice anything to make their lives better. Even if that means giving up the window seat.

Thursday, June 2, 2011

Love your neighbor as yourself

In Mark 12:28-34 Jesus is asked the question, "Of all the commandments, which is the most important?"

His answer was that the most important commandment is to love God with everything you have. Then He added that the second most important commandment is to "love your neighbor as yourself."

Most sermons I've heard on this passage talk about the implied need to love ourselves, but I think Jesus was talking about something deeper than whether or not we like ourselves or have a good self image. He took it as a given that we love ourselves. This wasn't something He was commanding us to do. He knew that it was part of our human nature.

Here's my take on how we love ourselves and how that applies to the commandment to love other people.

We always judge ourselves by our inner thoughts and intentions, but we judge others by their words, actions and results. Loving others as you love yourself means always trusting that their actions are done with the best of intentions even if what they're saying or doing feels really hurtful.

I look at code I wrote more than a year ago and think, "man, that guy really didn't know what he was doing!" I know that I was doing the best I knew how at the time and it did produce the desired result. I have to remember to give others the same grace that I give my past self.

I know I have great potential and I'm learning new and better ways of doing things and relating to people all the time. I tend to look at myself through that hopeful filter. Loving others as I love myself means looking at them with unwavering hope for who they can become — believing in their potential and not getting hung up on their past mistakes.

In general, we are quick to forgive (or justify) ourselves. Even the worst criminals don't think of themselves as bad people. In the opening chapter of his book, How To Win Friends and Influence People, Dale Carnegie tells a few stories to make this point. Here's one of them:

When Crowley was captured, Police Commissioner E. P. Mulrooney declared that the two-gun desperado was one of the most dangerous criminals ever encountered in the history of New York. "He will kill," said the Commissioner, "at the drop of a feather."

But how did "Two Gun" Crowley regard himself? We know because while the police were firing into his apartment, he wrote a letter addressed "To whom it may concern." And, as he wrote, the blood flowing from his wounds left a crimson trail on the paper. In his letter Crowley said: "Under my coat is a weary heart, but a kind one — one that would do nobody any harm."

A short time before this, Crowley had been having a necking party with his girlfriend on a country road out on Long Island. Suddenly a policeman walked up to the car and said: "Let me see your license."

Without saying a word, Crowley drew his gun and cut the policeman down with a shower of lead. As the dying officer fell, Crowley leaped out of the car, grabbed the officer's revolver, and fired another bullet into the prostrate body. And that was the killer who said: "Under my coat is a weary heart, but a kind one — one that would do nobody any harm."

Crowley was sentenced to the electric chair. When he arrived at the death house in Sing Sing, did he say, "This is what I get for killing people"? No, he said: "This is what I get for defending myself."

The point of the story is this: "Two Gun" Crowley didn't blame himself for anything.

Loving others as ourselves means looking at those same people and not thinking of them as bad people, but instead hoping and praying that they find grace and mercy. Remember to "first take the plank out of your own eye, and then you will see clearly to remove the speck from your brother's eye." Matthew 7:3-5

Proverbs 10:12 says, "Hatred stirs up strife, but love covers all sins." If we ever make a mistake, we do everything we can to quickly cover it up and make sure nobody sees it. How often do we work that hard to cover up someone else's mistakes?

Loving others this way is not easy — that's why it has to be a commandment. We naturally love ourselves, but we can only love others as we love ourselves with God's help — that's why it's the second commandment.

Tuesday, March 22, 2011

Free often leads to entitlement

I just read Fragility of Free and wanted to share my own experience with offering a service for free. Back in the mid 90's, I created a system that gave people in the Greater Seattle area free local long distance calls. It was a great experience and taught me that once you start giving people something for free, they will start to think of it as something they'll always have a right to receive.

We'll need to start with a bit of a history lesson.

Long before we all had free nationwide long distance on our cell phones, land-line phone companies charged a lot for local long distance calls. In the Greater Seattle area it was more expensive to call from Renton to Redmond than it was to call New York! However, if you were inside the city limits of Seattle, then you could call to/from both of those locations as a free local call. This was true for most of the Seattle suburbs within King County.

Also, before the time of PBX business phone systems, there was a type of phone line known as Centrex, where all the switching was done at the central office. In order to transfer a call, you would do a hook flash and then dial the destination phone number.

At the time, I was writing code in Delphi 1.0 on 386 hardware and Windows 3.11. We knew that we could combine a Seattle centrex phone line with hook flash transfer to offer people in the suburbs free local calls. At the time, several so-called experts told us that in order to do that, we would need to use Windows 95 and a voice card that cost about $1000.

However, we were convinced that we could get it to run on a 386 and a $27 voice modem. It was late one Friday night (maybe even early Saturday morning) when I finally figured out that the bang (!) character would cause the modem to hook flash and I successfully transfered a call. That remains one of my favorite coding breakthrough moments of all time.

My partner's grandmother lived in an area where she could get phone lines with a Seattle prefix, so we order some Centrex lines and put 3 computers in a closet in her spare bedroom and started promoting the service.

When someone called the Seattle phone number, one of the 3 computers would answer the call and play a 30 second ad. Then it would prompt for an access code and the number they wanted to call and would transfer the call. As soon as a call was transfered, that phone line and computer were free to take the next call. At the peak usage, we were processing about 40,000 calls per month. We had a log of every number that was called through the system, but I don't think we ever did anything with those numbers.

We knew the phone companies wouldn't be happy about this, but we did want to make sure what we were doing was legal. Being young and without the budget to hire a lawyer, the best we could determine was that it was legal as long as we never charged anyone any money to use it.

We had advertisements built into the system from the beginning, but we also thought it would be illegal for us to sell ads to anyone else, so we just made our own ads for our other business.

People could get an access code to the system by visiting our website and passing a 10 question quiz. Answers to all the quiz questions were within the text of our website, so this was a way to make sure people read our site before we gave them free phone calls.

People really loved our service. We had our domain name painted on the side and back of our van and one time while stopped at a red light, the lady from the car behind us got out of her car and ran up to tell us how much she loved our free calling network! We also had jackets with our domain name on them. One time at a restaurant we met some guys that operated a BBS who said we were saving their users a lot of money. We also got our picture in the local paper along with a great article talking about what we were doing.

Needless to say, this whole thing was a very fun experience! However, we eventually decided that it wasn't worth the cost to keep it going, so we shut it down. I think if we could have charged a subscription fee or even could have sold advertising, it would have been a profitable venture. But the phone company had already shut off the phone lines once and we weren't sure how much longer we'd be able to keep it going anyway.

Much to our surprise, a short while later, we received a notice from the Better Business Bureau that someone had filed a complaint against us for shutting down our free service! Once we explained to the BBB rep that it had been completely free and that we never made any statements about how long it would be available, they closed out the complaint, but it has always made me think twice before ever offering something for free that cost me money.

As a Gmail, Blogger.com and Twitter user, I am thankful that these free services exist, but I also understand that if they change the deal or try to force advertising into the platform, they're just doing what they need to do in order to continue providing something for free that does actually cost them a lot of money to run.

Tuesday, March 15, 2011

"Save Game" for programmers

If you've ever played an adventure or saga type of video game, you're familiar with the option of saving your game. Just before a really difficult section or before facing a challenging level boss, you hit save so that if (when really) you died you could try again from that saved point.

Have you ever wished you could do that in real life? Just before embarking on some tough challenge you could hit save and easily get back to that point to try again until you were successful.

Well, if you're a computer programmer, that's exactly what you can do with version control! I've heard a few programmers ponder if it's worth it or not to use a version control system when working on a solo (or hobby) project, but I think it's always useful. Maybe even more so when working on a project that you only touch occasionally in your spare time.

Also, if you haven't checked out a distributed version control system (DVCS) such as Git or Mercurial, then you're working on an older generation of the technology. The lack of file locks and the ease of branching and merging make these systems a joy to work with.

Wednesday, September 29, 2010

Term limits is not the answer

I originally wrote this as part of a facebook comment thread, but wanted to put it in a blog post since it's something I feel strongly about. I'm amazed at how great a job our founding fathers did at forming our government and how it works. However, I don't think they envisioned a time when the majority of people either didn't vote or didn't really pay attention to whom they were voting for and why.

I've been hearing a lot of people pushing for term limits in recent years, but I don't think that's the best answer.

An educated public that actually votes is the answer. Term limits just makes more people apathetic -- doesn't matter who gets elected, they'll be gone soon.

Term limits does not prevent the phenomenon of career politicians. If people continue to vote for them, they'll find offices to run for. Let's say state legislatures allowed a total of 12 years, state Governorship was limited to 2 terms, Senate was 2 terms and Congress was 6 terms, then one person could be in office for 40 years, which I would considered a career. And then if they managed to get VP for another 8 years and President for 8 more years, that's a total of 56 years! And that's not counting any time as a Mayor or city council person. Term limits simply does not solve the problem. If they're not a good representative and the educated voting public keeps them accountable, then they might be in office for 2 or 4 years, if at all. That's the only logical solution. Pushing for term limits is easy, but if you stop and think about it, it just doesn't make sense.

Why wait for term limits to get rid of a bad politician when they can be gone at the next election?!?

Tuesday, June 15, 2010

Domain Specific Short URLs

This is an expansion of what I initially posted as a comment on Ed Bott's blog post Be careful what you click! The perils of URL shorteners.

I think we’ll start seeing moderately longer urls that actually give some info about what they are linking to.

The next trend is towards sites using their own domain specific short urls.

When my mother-in-law forwards me news stories from USA Today, the links are in the form http://usat.me?38738442 (If I was USA Today, I would make that even shorter by using letters.)

As Ed points out, ZDNet does have their own short doman name -- zd.net. YouTube has youtu.be, but I haven’t seen anyone actually use it. These new domain specific short urls are fighting an uphill battle because they depend on the person sharing the link to know about them and use them. General url shortening services like bit.ly or is.gd are easier to use because they work for any link.

I created a url shortening system that only works for Bible references at dbible.com. Instead of a randomly generated url, you can see the scripture reference in the link (as in dbible.com/Jn3:16). So even if someone doesn't click the link, they'll know the verse (or verses or chapter) that you're referring to. The other benefit of this system is that you don't need to visit dbible.com or use an API to compose these short urls. Just append the reference to "dbible.com/" and post your link.