Tag Archives: Productivity

The ‘I HAVE To’ List

I’ve experimented with a tonne of productivity tools and processes. I’ve taken deep dives with each of the following programs:

And what I’ve found is that there are some common concepts that are shared between them. Each of them implements their own unique strategy towards concepts like prioritization, organization, and execution. They each have their own twist or approach to tackling your to do lists, your dreams, your goals, and life all around.

But for some reason, none of these systems really made things better for me. I noticed that I was busier but I wasn’t really better. I started to notice each system had it’s own little flaw that always seemed to suck all the life out of the process and before long I’d had abandoned it. The Burnout was real…

I do think that they are each worth learning about and attempting. I see each of these systems as a small stepping stone in my pursuit of accomplishment and I don’t discredit them. However, they haven’t (or I haven’t) improved my life with any of these strategies.

So I invented my own… and I call it the “I HAVE To…” list.


You see the problem I kept running into with each of these systems was that I would always end up getting them over-loaded. Some systems ask you to capture all your thoughts and organize them into quadrants or process each item and prioritize it. Backlog items that aren’t important and break down tasks that are bigger.

For me though, not only did I have all of the normal stuff to do like my goals, and tasks, but I had an enormous amount of day-to-day shit that I needed to get done. Dishes, dinner, cold lunches, homework, sports, diapers, practices, tests, doctor visits, home repairs, and the list goes on…

I would be forced to either try to keep up on all of these items in my head or write them all down into the system. Then I would have to organize them, prioritize them, backlog them, break the bigger ones down… and damn was it time consuming.

I decided that maybe these strategies just weren’t meant for me and I set out on researching how other, already successful people manage their lives. I’m not talking successful people that are just working a great job and appear successful on social media. No, I’m talking full blown, massively successful people like Arnold Schwarzenegger (5x Mr Universe, 7x Mr. Olympia, numerous Hollywood Blockbusters, and Governor of California), Dwayne Johnson (won the NCAA Championship, 20 year WWE career and became known as, “The Rock”, wrote a #1 Best Seller as voted by the New York Times, Hollywood movies, and the recent purchase of the XFL), and Elon Musk (founded PayPal, founded SpaceX, became CEO of Tesla, revolutionized electric vehicles, and launched rockets into space).

And I started researching how these guys go about their lives. How they operate on a daily bases to reach these audacious achievements. What I found was that they all had one major difference in the way they approached their lives on a regular basis. While the rest of us are sitting around saying, “I should workout, I should eat better, I should quit smoking, I should spend more time with my kids, I should, I should, I should…

But these guys, they don’t say anything like that. These guys are so driven, so motivated and focused, that when they talk about their days, they don’t say anything close to what we say. They say things like, “I HAVE to get my workout in, I HAVE to stick to this diet, I HAVE to design this product, I HAVE to build this vehicle, I HAVE to spend time with my family, I HAVE to, I HAVE to, I HAVE to.”


And the reason they feel that way, the reason they say that they, “HAVE” to do something is because they have powerful “WHY’s” and they repeat them to themselves every single day, over-and-over. So I took this concept and I laid it out for my goals. I figured out what I really wanted and what my “Why” was. Then I took each of my Goals and Why’s and I wrote my “I HAVE To” list.

This “I HAVE To” list works just like a normal to do list except it represents what you absolutely HAVE to do on this day to achieve your goal. If you can’t get these items checked off then you need to rethink your goal or rethink your WHY. This list contains only items from your Goals and you HAVE to do each item. If anything gets completed today, it HAS GOT TO BE THESE ITEMS ON THIS LIST.

I sit down each night, just before bed, look at my Goals, read over my Why’s, and write my “I HAVE To…” list. If you’ve been struggling with productivity or found that some of the more popular programs haven’t worked for you. I challenge you to give the, “I HAVE To…” list a try and let me know how it works for you!


The Singleton

This is the first part in a mini-series of posts around design patterns in software engineering.

The Singleton Design Pattern is one of the most commonly used design patterns in game development. I’ve personally used it in every game project I’ve worked on and it has been extremely valuable. However, in my professional development I’ve yet to find a truly valuable place to use this design pattern. Now that doesn’t mean it has no value in the professional world, it’s just not as commonly used.

So what is the Singleton pattern? What does it do and when/where should it be used? The Singleton pattern is named as such because it is used when you want to enforce your application to only ever have a single instance of an object. The most common place I’ve implemented this design pattern is when I need to implement an object “manager.” This happens frequently in game development.

Imagine your developing a game and in that game enemies are created. There are numerous amounts of these enemies and you need a way to manage these enemies. Having a long list of enemies to keep track of and then pass around to various other functions and objects in the game can quickly turn into a maintenance nightmare. To get around this, we can lump all of these enemies under a single umbrella, a single manager.

Now that we’ve got ourselves a single EnemyManager we need a way to make sure that the next developer that comes along doesn’t go and create a second EnemyManager in another area of the game. Think how hard it would be to get your job done if you had two bosses. The same concept applies here. We don’t want two different managers giving orders to our group of enemies. This is where the Singleton pattern comes into play.

The Singleton pattern ensures that no matter what, no matter when, where, or how… our application will only ever have one single manager. I find that this pattern is most valuable when you have an application that can spring into action in the middle of it’s workflow. For example, think of a game developer working on level 20. Without this pattern, he needs to start the game from the very beginning where the managers are initially setup, walk through all of the start menu’s, just to get to his level so he can test his changes. This can be extremely time consuming.

BUT… if he implements the Singleton pattern, he can create his EnemyManager on every level of his game and the pattern will ensure the manager is created correctly on level 20 and all other levels of the game without any conflicts or duplication. So what does this pattern look like in code? I’ll share an example in .NET:

using System;  
public class EnemyManager
   private static EnemyManager instance;
   public static EnemyManager Instance  
         if (instance == null)  
            instance = new EnemyManager();  
         return instance;  

So what are we looking at here? Let’s break it down.

private static EnemyManager instance;

This is our single instance of the EnemyManager. You’ll notice that our class itself is not static but does hold a static instance of itself. There are a couple advantages here:

  1. A purely static class can achieve similar results as the Singleton pattern but it cannot implement interfaces that we might use like in the Observer Pattern (we’ll cover in another post).
  2. The Singleton pattern can allow itself to be passed around as an object for Dependency Injection (we’ll cover in another post).

The next piece is how we enforce only a single instance of our EnemyManager to exist and how we protect the one true instance from duplication.

public static EnemyManager Instance  
         if (instance == null)  
            instance = new EnemyManager();  
         return instance;  

This function is what all other objects will call when they need to grab the EnemyManager instance. When another object calls:

var enemyManager = EnemyManager.Instance;

Our getter will first check if the local ‘instance‘ variable is null. This is where the first check is made to see if an instance of the EnemyManager has already been created at some other time. In our example, we’ll assume this is the first call to EnemyManager and therefore the ‘instance‘ is null. What happens next is we assign a new EnemyManager to the ‘instance‘ variable and then we return it.

Now if we were to make the above call again… when our getter function reaches:

if (instance == null)

We’ll see that we’ve already created our instance of the EnemyManager and instead of creating a new EnemyManager, we’ll return the one that was previously created.

So why does this help our game developer while he’s working on level 20? Well instead of having to create our EnemyManager only at the beginning of the game (to avoid duplication) we can actually call to create our EnemyManager anytime we need it and always guarantee we’ll get the one single instance. This is because even if we start our game on level 20, the Main Menu, or anywhere, our code will make sure that only one EnemyManager ever exists and that we’ll never end up with two managers (having two bosses is such a terrible thought…).

The Singleton pattern is fairly easy to implement but it’s important to know when to use it. Here are the times I’ve found it most useful:

  1. If you know you only ever need a single instance of the object that’s a good sign you’ll want to use the Singleton pattern.
  2. If your application can be started in various states, like level 20 in our example above, and you want to ensure the right objects are created only once.
  3. If you need to have a single instance of an object but you also need to implement Interfaces and/or use Dependency Injection.

If you do find that you need a single instance of an object BUT you do not need to use Interfaces, Dependency Injection, or other Object Oriented Principles then you do have the option to make your entire class static.

Find Your Why. Repeat your Why.

Why is it that accomplishing our goals and the things we know that we should do, so damn hard?

I’ve wrestled with motivation at various stages in my life. I’ve been on both extremes of the spectrum from highly motivated and engaged to “I don’t feel like doing shit today…

You see, Motivation works very much like a roller coaster and when you’re up, it’s great, but when you’re down… well it’s not so great. The problem with motivation is this roller coaster ride. It’s also the reason it’s so hard to stick to our diets, quit smoking, learn that new habit, or accomplish anything that requires great or consistent effort.

We’re constantly subjective to this wave of motivation and until we can make a change in this area, we’ll always be influenced by it. Motivation helps us get that new diet started but when things get harder, when temptation kicks in, when the workout gets tougher, that same motivation doesn’t ever seem to be enough to push us through.

And that’s exactly where our problem lies. You see our Motivation, when it first inspires us, is so strong that it’s enough to get us to initiate a change in our lives. It’s the upward ride of the roller coaster.

Maybe we had a moment where we felt unattractive with our weight or we felt guilty for not spending time with someone we love. Whatever it was, it was powerful and that motivation drove us to start that process of change…

And then after a while… a couple of days… a couple of hours… we lose that motivation. It fades away and with it goes our ability to make a change. And then the next hurdle comes in journey of change and now we don’t have nearly enough motivation to overcome this adversity.

So how do other people do it? How do great athletes do it? How do successful actors and musicians accomplish so much? How does that blogger on Instagram get up everyday and hit the gym?

Their secret, the reason they are able to overcome that next hurdle, is that they keep their motivation so high that they never ride the downward side of the roller coaster. When they step onto the road to change, for them, the ride is always up.

At first it seems hard to understand how they do this. How do they keep their motivation up? How do they keep it from coming down and avoid that roller coaster?

They have an enormous WHY. What do I mean by this? They have a situation, in their lives, a moment, a history, that is so impactful, so motivating for them, that they are able to stay at the top of their game day-after-day.

Arnold Schwarzenegger, Jim Carrey, Inquoris Johnson, Marshall Mathers, Mike Tyson… the list goes on and on and on. Each of these people are highly motivated, Extremely Motivated in their lives and the reason why is because they had difficult, rough lives first.

These challenges gave them a reason to push back and to push harder and for them, it wasn’t a roller coaster. It never was a roller coaster because everyday when they woke up, life was hard. Their motivation was right there in their faces and they had no choice but to live it. So when they grew up, they were raised in an environment that demanded they stay highly motivated to ever have a chance to survive.

How do the rest of us tap into this? How do we capture this level of motivation when not all of us are going to come from a rough background. How do we find that same motivation? The best way to do this is to answer this one simple question… Why?

Why do you want to accomplish what you are setting out to do? Why does it matter at all? Why do you care? Why, Why, Why, WHY?

And answer this question multiple times, every day. Don’t just think of one reason why. Write down your reasons why. Write down four, five, ten reasons why you want to what you want to do and then as life changes, as you grow, add to your list of why. Remove things that no longer motivate you from your list of why and replace them with new motivators.

And once you have your why’s the next step is to put them on repeat in your life. Make it so that every day, every morning, every evening, every night, you look at this list of why’s. Just like Arnold Schwarzenegger, Jim Carrey, Inquoris Johnson, Marshall Mathers, and Mike Tyson had to wake up everyday and live their reasons why, you should be doing the same.

Find your WHY. Repeat your WHY.

Progressive Pomodoro’s

If you’re not familiar with Pomodoro’s it’s a simple concept of working for small chunks of time and then taking short breaks. The idea is to maximize your focus and optimize productivity by allowing your mind to ‘get in the zone’ for a brief period of time and then taking a short break to recharge.

There’s a ton of information out there on Pomodoro’s and how to use them: What is a Pomodoro?

In practice, I’ve found pomodoro’s work best when I’m already highly motivated. When I’m feeling great and ready to go, a 25 minute pomodoro is a good chunk of time for me to knock out some solid work.

But what happens when I’m not feeling great? What happens when I’m not on top of things? What happens when the task I’m looking at is dull and boring or when the task requires a higher level of effort to complete than my normal day-to-day? When a 25 minute pomodoro seems impossible…

I could try forcing myself to work through a half-assed pomodoro doing subpar work or I could complete a Progressive Pomodoro. A Progressive Pomodoro works like a regular pomodoro except instead of starting at 25 minutes, I start at 1 minute.

1 minute of work.

1 tiny insignificant minute of work.

This one minute is usually opening my tool of choice, reading a single email, reviewing my next action, starting the research into the task I need to accomplish. It’s just a small insignificant piece of work that I can’t say no to completing.

And then when that minute is up, I take a 1 minute break. I read an article, check my social media, or just go get a drink. It’s my 1 minute break so I do whatever I feel like doing. After that break, I take on 2 minutes of work.

2 tiny insignificant minutes of work…

Then I take a 1 minute break and after that I take on 3 minutes of work.

3 tiny insignificant minutes of work…

And I repeat this process over-and-over until I’ve either completed my task or reached a point when I start to feel like the next chunk of work is too much to accomplish. At this point, I hit the reset button. I go back to square one, back to…

1 tiny insignificant minute of work…

Welcome to The Hardest Work

I’ve recently become motivated to share my journey through life, my experiences, my failures, and my successes in hopes to inspire others as I’ve been inspired.

Since this is my first post I’m still working out the details of setting up this blog. I’m hoping to cover a wide variety of content and topics including:

  • Productivity
  • Motivation
  • Parenting
  • Programming
  • Fitness
  • and More!

I don’t have a set plan yet but I hope to share as much as I’ve learned about various topics and that readers of this blog can share their experiences back with me.

If you have suggestions for content or topics you’d like to hear about please let me know!