Wednesday, October 24, 2018

Steve Job's Simplicity

The past couple of days I decided to read Creative Selection by Ken Kocienda. Ken walks the reader through his experiences at Apple. He is known for developing Safari, the Mail Composer and notably the iPhone/iPad keyboard and gestures.

One excerpt that comes into mind was when Ken was assigned with  creating the first keyboard for the iPhone. Remember this is the first iPhone where the screen was 3.5" much smaller than the iPhones that are available today. Around this time, almost all phones had physical button keys and touch screen keyboard was very new. There wasn't any similar reference Ken could get inspiration from for creating a keyboard on the iPhone. Along with figuring out how to make individual keys tappable onto the small retail space was a daunting task. Ultimately, Ken along with Bas (another Apple colleague) came up with 2 keyboard designs.

The first keyboard layout had numerical keys at the top. The second had missing numerical keys and other extra keys, but that allowed each individual keys to be much bigger. Ken decided that there would be an option for users to switch between the two keys to allow users to choose their preference.

When demoing to Steve Jobs, he immediately knew to remove one of the two keyboards. This decision had cascading effects toward great simplicity. One of the hard decisions was confusion around which keyboard to show in different situations. "For example, should the software remember that you used the bigger-keys keyboard in the Notes app and the more-keys key-board in Mail, and should these keyboard choices be stored in some situations but no others? These questions became moot, and that's good, because they don't necessarily have easy answers. Steve figured that the best way to answer difficult questions like these was to avoid the need to ask them."

Steve Jobs was one of the few early champions on emphasizing how important user experience was. Today, almost all companies follow suit and talk about the experience we want to give to users. This excerpt stood out to me. There are often times in my career experience where we emphasize how important user experience is, creating multiple screens for a wholesome experience, but wound up introducing more complexity.

In the example above, one could argue that having multiple keyboard layout for the user to choose is a better user experience because empowers the user to choose their own preference. The engineers could have gone back to the drawing board and solved the complex problem by having individual apps remember what keyboard layout it used last, but that would .have costed more development time as well. Sometimes decisions aren't always so black and white. That's what made Steve Jobs remarkable, he was able to make tough decisions simpler.

Thursday, October 18, 2018

The nightly todo list

Hours would go by watching Youtube videos, playing video games and glancing over social media pages. It's designed to be addicting. Millions of dollars are poured into research so users latch on. I was one. Before bed, I would constantly go into sleep hating myself for being unproductive. Desiring for a change going into the next morning, only to find myself repeating the dreadful cycle. Somehow the pattern finds a way to repeat.

For some it may last weeks, months and even years. It's healthy that I acknowledge this addiction. That's the first step. The next step, which is considered by most the hardest step is taking action. The uphill battle, you're constantly climbing. The top seems afar, some give up the first hour, some make it through the first day. Some use hiking poles, others using hiking boots.

Before planking on my bed, I would write down tasks I wanted to achieve the next day. This to-do list became my tool. The reason why writing it before bed was powerful was because the next day would be a fresh start. Now this is what I do everyday because it gives me a sense of accountability and accomplishment. Even if an interference were to come up last minute, I would stay true to the list because that's what I wanted to achieve the day before. I wouldn't let last minute events

Maybe this is an app idea where the app notifies you at night to set 5 to-do items you would like to achieve next day.

Thursday, May 24, 2018

Stop using the built-in rm command

Using *nix command line interface can be dangerous, especially if you aren't careful. For example the command rm -rf * can wipe everything. Today I was careless and accidentally deleted some of my files in the Desktop directory. "With great power comes great responsibility" - Lesson learned.

My first train of thought was how do I prevent this mistake in the future? Override the default rm command to move the files in the trashcan instead of permanently removing the files.

Here is the code I came up with:

How to use:

  1. Put the code in your ~/.bash_profile or ~/.bash_rc` (if those files do not exist create one)
  2. Type source ~/.bash_profile or source ~/.bash_rc to reload the file
Now whenever you run rm it will move to the trash application

Backstory: I needed to erase all the files in the ~/Library/Developer/Xcode/DerivedData directory because Xcode was caching old provisioning profiles. As soon as I changed the directory, the virtual memory was running out so space so the terminal application restarted. On restart, the application launched into the ~/Desktop directory. Without much thought I typed rm -rf * then BAM!