Be Awesome

Whatever you do, be awesome.  If you play a game, make sure that you and the people you are playing with have the best time ever – remember, it’s just a game.  If you’re creating something new, give it personality, make the user smile.  If you’re helping someone out, take the time to understand their problem and steer them down the path to success.

Your actions have ripples.  Negative actions will affect people in a negative way – increasing the chances they will pass along that negativity.  Positive actions will make others happy, and increase the chances they will do the same.  Being awesome can sometimes shake people of their normal movements and inspire them to be awesome as well.

Remember, be awesome:


Start Here

When attempting anything considered difficult, long, or simply very different from your norm, the question of where to begin is an important one.

When faced with this situation, the solution is to start here and start now.  Now that you’re at the start line, the question comes – what is your first step?  The first step for any long journey should be a book.  Get a book on the subject.  Learn from an expert.  Read about their trials and tribulations, how they failed and what they’ve learned.  Not sure what book to read?  Go to your local library and ask the librarian, they will point you in the right direction.

Even if you end up taking a few steps in the wrong direction, you will have learned something, and by knowing you’re going in the wrong direction, that means you know which direction is correct.


Hard to Find

Most problems have a simple solution, but that simple solution can be hard to find.  Unless something is critical, if you cannot find a simple solution for it, you should do more research and possibly revisit it in the future.

Solving a problem with a complex solution makes it more costly to maintain in the future, as well as increasing the upfront time cost in creating the actual solution.

To give a technical example, if you’re trying to make your website mobile-friendly but the layout and code is designed for a desktop, there are many possible ways to do this.  You could start over using a grid-based layout using something like Bootstrap, or you could clean up the structure of your site and use media queries to display things for each device size.  All of those options require you rebuild from scratch – which, if you have the time and resources are a good idea, but you may not always.  By going down either of those routes, especially without good knowledge of media queries or bootstrap, you could be going down a rabbit hole (although one in which you will come out smarter).

If you’re looking for a quick and simple solution – you could use one line of javascript (or a media query) to simply redirect users to a mobile version of your page.  For a short-term simple solution, this can be king.  It can solve the immediate problem and let you do the learning and long-term priorities appropriately.

Remember, if none of your options seem viable given your time frame it may be best to table it, think on it a bit, and revisit later.



When you are in your own head, you can never get a complete picture of the world.  Your field of vision is limited, and if you try to spin around to get a 360 picture, everything is a blur.  Even then, you can only see what is right in front of you – only a small picture of the entire world.

To see things clearly you need to step out of yourself and look at things completely objectively.  Get rid of the subjective why, and stick to what, when, and who.

With technical problems, we can often get caught up in the details.  A bug can leave us hyper-focused on solving that issue without stepping back and looking at the big picture with clarity – what is the interaction we really want the user to be having.  Not only will new solutions open up, but the result will be a better experience for the user.


The Right Answer

You do not need to know have all the right answers, you just need to know where to find them.

Very few questions or problems require an immediate answer, which leaves open the possibility of saying “I’ll get back to you.”

Knowing how to find the right answer isn’t as simple as Google.

While some facts are pretty commonplace, and a wikipedia or Google search will return the answer, complex questions require knowing what to search for, how to weed through advertisements, and how to evaluate options.  For important questions, keep asking yourself, “is there more information I can get?”



While your tooth brushing habits may be relevant information for your doctor to have, I doubt your neighbor has any use for that information.  In applications, as well as in life, it is important to think about both when and where data will be useful.  If a piece of data is temporary – useful at this moment, but no value later on – it should be set in a way that it is forgotten later.

This will help increase performance, reduce confusion, and create better communication – in both life and programming.


Take Something Apart

My great uncle had a saying, “Did God make this?  No.  A person did, so a person can fix it.”

This may have been easier to say back when things like toasters or cars were much more friendly to repair, but the concept still remains true.  While much of hardware is ultimately created by robots (I don’t suggest attempting to take apart your computer’s processor in attempts to fix anything), software is still written by humans, therefore it can be useful.

All HTML, Javascript is visible to a user if they right click and select “view source.”  Additionally, a great deal of source code is available free for open source projects.  When learning a new language, sometimes it is easier to take something that already works, and start changing things.  Change one value – see what happens.  If things completely break – go back to the original.  Beyond learning about the things you change, you are also learning about how others structure programs.  Different methodologies and different training leads programmers to handle variable storage, properties, and even implementations of the Model, View, Controller (MVC) differently.  Reverse engineering others work can teach you many lessons you would have never gotten from a textbook.


The Same, But Completely Different

Whenever we are faced with something completely new, we try to treat it in terms of something we already know.  This is an important fact for two reasons.  One, it helps you to recognize how you attempt to learn new things and can help give you perspective when things don’t work as you expect.  The second is that when designing or creating for a new device or platform, your users will treat it (at first) like it is a different version of what they already know.

Take smartphones as an example.  In the beginning people treated them as small computers.  We took the desktop version of software and websites, and did our best to strip features and make things smaller so that they would fit.  Even now, many mobile sites are really just dumbed-down versions of the desktop website.  This is an issue for a few reasons.  The first is that the user doesn’t want a lesser experience simply because they are on a smaller device, and the second is that smartphones and desktop are very different devices.

Smartphones are touch devices, desktops (for the most part) are not.

Smartphones have an accelerator, GPS, and a camera.  Most desktops have neither (although many have a camera).

In fact, smartphones and desktops are completely different things.  They are as different as a motorcycle and a car.  A motorcycle and a car both drive on roads, and consume gasoline, but to think of a motorcycle as a limited car would be doing a disservice to the motorcycle.



Boil It Down

Many of the problems we face are very specific, which can make it difficult to find someone else with exactly the same problem and a solution to it.  Even worse – if you fail to find an existing solution and have to create your own, if it is too specific, it will not be very useful in the future.

Here are a few keys to boiling things down:

  • Make your problem as generic as possible (but still accurately describes your problem).  
  • Focus on acceptable outcomes
  • Focus on the generic false positives (negative consequences of your existing solution)



Share your goals

One of the most important factors in being both successful and happy is having and sharing goals.

By simply writing your goals down, you are more likely to be successful.  One study even suggests that you are 33% more likely to achieve your goals if you write them down, share them with others, and remind yourself of your goals on a weekly basis.

If you don’t have any goals for 2014 – now is a great time to make them.  If you do have goals, find a friend to share them with (or share them with me by replying to this e-mail).

In attempts to improve my success rate, here are some of my 2014 goals:

  1. Always make family time
  2. Create less content – create higher quality content
  3. Finish Zen of Technology Book
  4. Publish Zen of Technology Book
  5. Finish Shared Epic #1