Category Archives: Learning

What I Learned About Game Design From a Brazilian Steakhouse

What an Experience

I attended the Open Source Conference in Austin TX. It is a pretty good conference and there are a lot of people out there doing amazing things. But as interesting as the conference was, I learned the most from going to a restaurant.

While I was there, my coworkers and I tried out a few of the local eateries. Several were good, but 1 of them stands out far above the others. One of my coworkers who was not at this conference and is from Brazil had recommended we try a Brazilian steakhouse called Fogo de Chao. It was a restaurant experience unlike any I have had before.

There was no written menu, other than a drink menu. There was no visible price listed anywhere. They had a salad bar with a few various vegetables and other side items, but the main course was why we were there.

Several waiters walk around with 3 foot long kebabs with different cuts of meat on them. They had steak in all sorts of varieties, chicken, pork, and lamb.

It was amazing.

It was by far the best restaurant experience I have ever had. It was so good I wanted to tell people about it. It was a little expensive for my current salary range (thankfully I got to expense it) but it was so good I would go again having to pay for it myself and I would recommend others that they have to try it at least once.

Designers Create an Experience

One of the major themes in the Art of Game Design is that the game creates an experience for the user and the game designer is responsible for designing that experience. The goal of the designer should be to create an experience like the Brazilian Steakhouse.

You want to design an experience that people want to have again. You want to design an experience that people want to tell other people about and that they want other people to experience.

So take a look at your current game and ask yourself these questions.

  1. Does my game create an experience that the person who plays it will want to have again?
  2. Does my game create an experience that people will want to tell others about and want their friends to have?

If the answer to either of these questions is NO, my questions is, why not?

April 2016 End Of Month Goal Review

Time to review how we did on our goals in April. Spoiler alert, it’s not pretty.

Goals

  1. Write 3 Blog Posts Per Week and Publish 2 – Completely fell on my face on this one for the month of April. Part of this is just not making it a priority and part of it is I spent 4 weekends each doing a 14+ hour drive. A couple of those hours are the ones I usually spend doing my writing. This is not something I will be doing the rest of the year and is something I was hoping to cover by having a buffer of posts built up. So the real let down is the lack of buffer to cover for times like this.
  2. 1 Game Designed, Created, and Released Per Quarter – Much more fun to talk about this particular area. I did get the first game of 2016 deployed to a server on Digital Ocean, but did not keep it out there as the game itself is not really fun and needs more work. I also began work on game #2 and have been having fun working on movement basics and thinking of ideas. More on this later.
  3. 1 Book Read Every 2 Months on Game Design – Not much reading has been going on recently. I did get a few more chapters through the Art of Game Design and am will finish it this month. Only 70 pages left at the time of this writing.
  4. 1 Article Read Or 1 Video Watched About Game Design/Creation Per Week – I spent some time on Lost Garden reading some blog posts but have not taken any notes. I may discuss some of my thoughts on one of the post regarding multiplayer since I hope to make successful multiplayer games in the not too distant future.
  5. Get 100 People Reading Evolving Developer Per Month – Well I did not tell anyone about Evolving Developer in April, but I plan on telling at least 20 people at OSCON in a couple weeks (maybe more than 20, who knows). Not the best audience but last year I attended a couple sessions on games and game design so I know there are at least a few like minded people attending.

What Went Right

I made a successful deployment to Digital Ocean of game #1. This went much smoother than I expected thanks largely to an awesome tool for doing MeteorJS deploys. Game #2 has started with development already going at a much faster pace than game #1. This is partly due to a higher level of excitement about the overall game design and partly the decision to switch back to Monkey-X which is designed to be used to create games and surprisingly easy to be productive in.

What Is Not Perfect Yet

Too much travel which could not be avoided. So really, no buffer of writing built up for times when I can’t write because of other important life things happen. This was mostly avoidable and could be prevented by a little more effort. Additionally, still no progress after 4 months of getting a readership for this blog. Frankly it is scary to even write these things in a public space where people might stumble across it, let alone point them to it.

Corrective Measures

Better planning. I realized when I had a long list of blog topics I wrote more consistently. The list has shrunk since it only covered W1 (from January to the end of March). I need to make a new list for Q2. Also I need to follow the advice I read and start showing of my writing and games as publicly as possible and have a little tough skin to take any criticism constructively.

More Fail, But I Won’t Stop

Releasing a Meteor-Angular App To Digital Ocean

I am not going to go super in depth on this but I do want to talk about what I learned by going through the steps of setting up a Digital Ocean server and building the text adventure game to release to it.

What You Need

  1. A computer with an internet connection and an ssh client
  2. A MeteorJS app you want to put online
  3. An account at Digital Ocean
  4. $5 or you can use my referral link to get $10 in free credit at Digital Ocean

First Step – Set up a Server

There are quite a few guides out there about setting up a server on Digital Ocean. They even have there own documentation section that is actually really good. Basically all you need to do is click “Create Droplet” from the Digital Ocean home page and select the options you want. You can get by with the $5 minimum size droplet, especially for testing purposes. I used a basic Ubuntu 14.04 install for this test.

I tried doing the meteor install manually initially and ran into a snafu. The base $5 droplet only has 500MB of RAM. This is not really enough for Mongo and NodeJS to run and do install things for Meteor. You may need to manually create a SWAP partition. I used this guide from Digital Ocean’s docs and created a 2GB SWAP space. This is basically just telling the server to use some of the hard drive space like RAM. This is not recommended for production scenarios but works just fine for testing.

Step Two – Use Meteor Up

While you can install Meteor and Mongo and NodeJS or Nginx all manually, I would recommend using Meteor Up. It has clear instructions and handles all of the yak shaving for you. All you need is to install it using npm.


npm install -g mupx

then do:


cd to_your_meteor_app_directory
mupx init

Then you fill out a nice configuration file and run:


mupx setup
mupx deploy

and you are done!

Additional Steps

If own a domain and want to point it at your server, get the name servers from the site you bought your domain from and go into Digital Ocean’s Networking page, select Domains from the menu on the side and add a domain to your server.

Disclaimer

This is not necessarily the right way nor the best way to deploy a MeteorAngularJS app. It is however a very simple and quick way of getting it deployed to testing environment.

Another way of getting an easy deploy on inexpensive hosting setup is to use Galaxy which is designed for Meteor apps specifically. This is now recommend in the Meteor tutorial as Meteor.com no longer supports free hosting for Meteor apps. I have not used this yet personally but it is another easy option.

Put some code out in the wild and don’t forget your Free $10 credit on Digital Ocean.

A Few Steps Further

One of the ways that I learn new technologies or programming languages is by getting an idea for a simple app that I want to write and then finding a tutorial on that makes a simple app and sort of following along with it but modifying it to be the app that I want to make. In the process, if there is something extra I want to add that is not in the tutorial I am following I will look up how to do that specific thing.

A few days ago, I wrote about the dangers of using experimental technology for things you plan on releasing to the wild. After I figured out a less than ideal workaround for my problem, I went a little further along in the Meteor/Angular2 tutorial and discovered that the solution to my problem was there.

The Solution (I Think)

On step 11 of the tutorial, they have you build the app to mobile. Android or iPhone, it doesn’t really matter. And this is where I was running into a blank white screen. Several of the next few steps did not apply to the app design, so I skipped ahead. On step 21, the tutorial has you split the logins for the browser version of the app and the mobile version of the app into separate packages.

A little bit of persistence paid off and now I have a way to get what I want working in my app. Remember when you run into an issue you can’t figure out, don’t just give up. Look around for the answer, try to figure it out. Don’t stop just a few steps from your goal.

Sprint at the Finish Line

My goal was to have this game built and released to the Google Play store by the last day of March which is tomorrow. Looks like this is going to join the ranks of most programming projects and go over time. After I release it I will do a post mortem and go over what I learned from the release process.

Don’t stop too soon.

The Bleeding Edge Hurts a Bit

So today’s post was going to be about how I built a MeteorJS/Angular 2 app to Android and released it on the play store. Instead I write a reminder/warning to all who like to develop in experimental technologies.

What Happened to My App?

The day started brightly. I was working away, being more productive than I had in a while. Getting things done. Cleaned up some code, got some things working that had not been and decided to try building my app for an Android device.

I plugged in an old android phone to my computer and ran:

meteor add-platform android
meteor run android-device

No errors showed up in the compile but the only thing showing on the phone was a blank white screen.

Investigating

Googling the issue brought me to this post. I am not the first to run into this issue. After reading through the thread, it seemed as if the issue might be fixed in a newer version of some of the packages that I was using.

So I ran meteor update and saw that indeed there were new versions of some of the core Angular 2 packages that I was using. Some of them I could only update by removing them first and then reinstalling them by the specific version.

Alas, this did not fix my problem.

In the course of research, I found another issue posting that is only 19 days old and is still open (as of this writing).

There are a few more experimental things to try but if they don’t work, looks like a few more days of work rewriting this to something more stable and tested.

Moral of the Story

If you are planning on releasing something to the wild, you should probably not use a technology that is in beta unless you are the one developing it and can fix your own issues.

Since the main purpose of this particular game was to learn a bit about releasing an app to the Android/Google Play Store, I will probably rewrite it into either basic javascript using Meteor or figure out how to write it into Angular 1 with Meteor.

Make games, have fun, and try not to cut yourself on the bleeding edge.

Update

I finally got the game to build to Android properly (around 1:00 A.M. after undoing all the other experiments I had tried then removing the login packages that were being used. Technically it can be played without logging in currently, but there is some additional functionality that tracks some statistics and scoring based on the user meaning I still need to figure out how to handle users. But it builds. Huzzah!

What I Learned From Making Breakfast

My wife likes eggs over easy. When we first got married, all I knew how to do was make scrambled eggs. But I like breakfast and like doing things for my wife so I determined to learn how to make eggs over easy the way she liked.

In case you don’t know what I mean by eggs over easy, it is an egg where the yolk is not cooked but pretty much all the white of the egg is and the yolk is sort of enclosed in a pocket. If you only cook it on one side it is called sunny side up.

The hardest part about cooking eggs over easy is making sure you don’t break the yolk when you flip it over.

Cooking Eggs Is Harder Than It Looks

Many of my first attempts at making eggs over easy were complete failures. I broke yokes left and right. Sometimes the yokes broke as I cracked the egg into the skillet. Other times they broke as I was putting the eggs onto the plate to serve. Not only did I break yokes, but often I undercooked one of the sides because you can’t see it. Eventually I started getting better though.

When I first started, maybe 1 in 3 or 4 eggs would turn out right. But soon I noticed that I was only breaking 1 out of every 2 yokes, then 2 out of 3 and at least 1 of them was cooked thoroughly, now I can get about 9 out of 10 cooked all the way without breaking the yokes. This took a lot of broken eggs though.

Failure Is the Way to Success

Cooking eggs is just an example. Most things in life worth learning how to do will require you to fail multiple times before you become good at them.

Making games is no exception. The common wisdom that I have heard in several places is you will probably make at least 10 bad games before you make a good one. That does not mean you intentionally make bad games. What it means is you make those games as best you can but don’t worry about them being good or popular. They probably won’t be.

Fear of Failure

This is what stops most people. They are afraid to fail so they don’t even try. If you won’t try then you can’t ever succeed.

I struggle with this myself. Many times I write these posts to myself because I need the reminder to just do the thing and not worry about success. Success for you when you are learning is to get something done, not to have it be perfect.

So get out there, break some eggs, and fail just as hard as you can so you can succeed.

Story Design Mistake

My first design for the story of my current game was a colossal failure. I made a huge mistake that I did not quite see at first.

For every decision the player made, the story went in a different direction. Each choice starting towards a different ending. Part of this giant tree of story was cut off by choices that ended in the player dying, but it quickly got out of control.

I realized that I needed to pick a few endings and have the story converge to them. This proved to be better but the story tree was still large.

Then I read the next chapter of The Art of Game Design. It had a name for what I was doing and did the math for me. If the story is only 10 choices long and each choice leads further towards a unique ending, I would need to write over 80,000 endings! The book refers to this as the “Combinatorial Explosion” problem.

Game Story Patterns

There are a couple patterns described that are used in most games to avoid a lot of the issues that arise from trying to be too free with interactive storytelling.

The String of Pearls

In this scenario, the story is fairly linear but has a series of points in which the player must achieve a goal. There is basically one ending but on the journey the player has some freedom along the way for how to achieve the goal. Once they accomplish the goal for the area they are in, they are advanced to the next area.

The Story Machine

This type of design is based around giving the player an experience that they want to tell someone else about. Free build type games like Minecraft and Rollercoaster Tycoon, competitive games like football and CS:GO allow the player to create an interesting series of events that they want to tell someone else about. The goal is a system that creates interesting stories when your player interacts with it.

Following Examples

A couple years ago I had come across an interesting little text adventure game on Android called Wizard’s Choice which was largely the inspiration for the design of my current game. So I went and found it and played it again and guess what I found. It followed the “String of Pearls” design pattern.

The story has 1 ending. It has basically 3 areas from beginning to end where you have some freedom to make choices that affect how you get through the area alive.

I am going to borrow this design pattern and redesign my current pile of spaghetti of a story.

Learning Angular 2 and Typescript – Part 1

Out of a desire to learn Angular and building on what I have learned about MeteorJS, my current game is using Angular 2 and Meteor together. It does not get fancy and utilize all of the special features that these frameworks have to offer, but it is a good learning project.

So Popular

If you are new to programming or to web programming, a few years ago Google released an experimental framework called AngularJS that has become quite popular. It has become widespread enough that it is hard to ignore.

Currently, there is a new version of AngularJS that is in the works, simply called Angular 2. This caused a bit of stir since it is fairly different from Angular 1 and those who invested heavily in 1 will have to do a good bit of rewriting to migrate to 2.

Meteor, the Javascript framework I have been learning that builds to mobile devices easily, has been integrated with Angular 1 through the Angular-Meteor Project and integration with Angular 2 is in beta.

Some Angular 2 Basic Concepts

Components

As far as I can tell, Angular is about creating “Components” which I have come to think of as Lego-like pieces that you use to build your website or app.

For example, in the game I am building each section has a list of choices available. So I built a ChoiceList component and simply stick it into the page using an html tag that I assign to it like this:

<div>
This is a story with choices
</div>
<choice-list></choice-list>

And the <choice-list> tag will render the template of the ChoiceList component which gets a list of choices from the database and builds a list of stylized divs that look like buttons.

Data Binding

There is a lot of phrases that get thrown around when dealing with angular and one of them is “2 way data binding”.

This is a short way of saying you can tie an input directly to a component property or variable and when the input changes it immediately updates the property of the component. That is the first direction, from the View to the Controller. But then you can have a separate View element that uses the property that is getting changed, and it is updated automatically whenever the component property is changed.

If you were writing regular javascript you would need to add listeners and events to create this kind of behavior, but in Angular 2 it is simply using a banana in a box “[()]” (yes that is what it’s called).

A practical example of this would be a mortgage calculator that had input fields for a price, a down payment, and a interest rate and calculated a monthly payment. 2 way data binding would let you update the payment automatically anytime one of the 3 input fields changed. It would send the value back to the controller and then update the view accordingly.

With Meteor, we actually get “3 way data binding” because it has reactivity built in and can update the Model layer and have that reactively percolate up to the View and from the View down to the database (Mongo in this case).

Typescript

Angular 2 is trying to use a bunch of features that are coming for Javascript, but have not quite arrived yet. Typescript is one of the current recommended solutions to this.

Developed as an open source project by Microsoft, Typescript is a language that compiles to ES5, the current accepted Javascript standard that most browsers work with. It has really similar syntax to Javascript and is easy to pick up and learn.

Some of the features that I have found useful so far are the ability to check type parameters and to define your own Interfaces which describe what you are looking for in an object. So if you have an interface that looks like:

interface Choice {
page_name: string;
result_page: string;
}

You can use it to set variables to a Choice type so that they will need to be objects with a page_name property that is a string and a result_page property that is a string.

Nothing New

Although most of what I said here has been said better or clearer in other places about Angular 2 and Typescript, writing about it allows me get a better understand what exactly is going on when I write the Typescript to make a new Angular 2 component. I plan on getting into some more specific parts of Angular later on. For now, just a little overview and what I have found interesting.

If you haven’t looked into it yet, try out Angular.

Why Are You Hesitating To Invest In Yourself?

This past weekend I went to my local bookstore that lets you buy, sell, and trade. I really like to read and had a few fictional books that weren’t that great so I traded them in and went looking for some new reading material.

There were several books on the shelf that many of the successful people I follow have recommended. These books were not all that expensive, many of them less than $10. But for some reason, I found myself hesitating to buy them.

My hesitation was not because I have 4 or 5 books on my desk that are only half read (because there are). The hesitation came because of the price.

Should I spend $30 or $40 on these books?

The problem begins with the wording of that sentence. It should read – Why am I hesitating to invest $30 or $40 dollars in myself?

I was reminded of this video by John Sonmez of SimpleProgrammer.com

As soon as I realized how completely stupid I was being worrying about a few dollars when the information in the books is probably worth hundreds and thousands over the course of my life, I bought the 2 books I thought would be most useful right now and will be back for the others later.

Why do we not blink when we spend $3-$5 on a coffee, $10-$20 on a meal, but stop short when preparing to shell out a measly $6-$12 for a book that could change your life? Skip a meal, buy a book.

What would you pay for information that could make you a fortune, improve you relationships, give you more health and energy? The information is out there.

In fact it is really, really cheap. There is this amazing thing called a library that exists in most towns and cities. Its a super inexpensive way to get access to almost any book ever written. So if you want to be cheap with your money, don’t be cheap with your time. Invest the time to find your local library, get a library card, checkout a book and read it.

What book? Glad you asked. Here are a couple that I can recommend as starters.

Think and Grow Rich – Napoleon Hill
This book is all about the mindset and practices it takes to become successful. You will find that many successful people, and those who teach success, recommend this book. It has a few odd things in it, especially in the later chapters, but it is still a great book to start with.

How to Win Friends and Influence People – Dale Carnegie
I read this book for the first time a few weeks ago. I then read through it 3 more times in the next 2 weeks. The wisdom contained in this book on how to deal with people and get along with them is phenomenal. Since almost all of life is dealing with people, highly recommend this book.

After these 2, find one in a field you are interested in (and if you are reading this blog I am guessing that is game design or programming) and read it. Take some notes. If it was really good, read it again.

Whatever you do, don’t be hesitant about investing your time and your money into self improvement. Whether it is courses or conferences, books or seminars, invest in yourself.

You are your most valuable asset, don’t be cheap with yourself.

Your Best Year Ever – Part 2

This is a continuation of the last post of my notes on this talk by Jim Rohn.

Personal Development – Continued

The 5 Abilities

#1 Absorb – be like a sponge, don’t miss anything

Learn to get from the day, not through the day.
Wherever you are, be there. Let your heart, mind and soul take “pictures”.

Pay attention.

#2 Respond – let life touch you

Don’t let it kill you, but let it touch you.
Give in to emotion.

Your emotion needs to be as educated as your intellect.
Need to know how to respond to life, to people.

#3 Reflect – go back over, study it again, remember

Go back over books, notes, your day.

Good times to reflect:

  1. At the end of the day for 1 hour
  2. At the end of the week for a few hours
  3. At the end of the month for half a day
  4. At the end of the year take a weekend

Solitude when you reflect is important. You can reflect with your spouse, your family, or your colleagues, but it is important to spend some time to reflect with yourself.

Reflection makes the past more valuable for the future. Gather up the past and invest it in the next day, the next week, the next year.

Self development earns respect, makes you better for others.

#4 Act – take action, don’t be hasty, but don’t waste much time

Act when the idea is hot and the emotion is strong. Otherwise you fall prey to the Law of Diminishing intent.

All disciplines affect each other.

Everything affects everything else

Every let down in discipline affects the rest of your performance.
Every new discipline affects the rest of your performance. That is why action is so important.

Greatest value of discipline: Self Worth or Self Esteem. Lack of discipline erodes the psyche, affects your philosophy. One neglect leads to another. Just start the smallest of disciplines and watch how it grows into another and another.

Walk away from the 97% who won’t do what they can. Don’t talk like they talk, don’t read what they read, don’t watch what they watch, don’t use their excuses and their blame list.

Affirmation without discipline is the beginning of delusion.

Labor well, learn well, discipline yourself well. Take charge of your own retirement, life, day, family, possibilities. Join the 3% of people who are doers.

Do what you can. Do the Best you can. And Rest very little.

Make rest a necessity not an objective. The objective of life is to act

#5 Share – pass along to someone else

If you share with 10 people, they get to hear the idea once and you get to hear it 10 times. You will get more out of it.

Everybody wins when somebody shares.

Sharing helps you, helps the person you share with. Sharing makes you bigger than you are. Increases your capacity. So you can hold more of the next experience.

Some people can’t be happy and can’t be wealthy because they aren’t big enough.

Setting Goals

Goals are your vision of the future.

You can either face the future with apprehension or with anticipation. Most face it with apprehension.

If you don’t make plans of your own, you will fall into someone else’s plan.

Need to make a “Not Much” list. If economy improves, if taxes get a little smaller, if you get a small raise at your job, if your negative relatives become positive, if the “right” political party got in power, etc, it would not do much for you. And too many people are counting on this list.

Count on your ability to design the future. If the promise of the future is clear and powerful, the price is easy to pay. The price is a few small disciplines practiced every day.

Get a handle on the future, set your own goals.

It is this simple: Decide what you want and write it down. Thats it.
It is your own private list so write whatever you want on it, no matter how small or silly.
Keep your list year after year so you can go back and look at it.
Get together with your spouse, your kids, your colleagues and come up with some goals.

Put “Become a Millionaire” on your list, for what it will make of you to achieve it.

The greatest value in life is not what you get, it is what you become.

Major question to ask on the job is not “What am I getting here?”. The major question to ask is “What am I becoming here?”.

When you have become a millionaire, what is important is not the money, you can give that away. What is important is the kind of person you have become.

Set the kind of goals that will make something of you to achieve them.

Don’t set goals to low. Don’t join the easy crowd. Go where demand to grow is high, where expectations of excellence are strong.
Don’t compromise. Don’t sell out. Count the cost.
Judas got the money, success? NO.

Greatest source of unhappiness is self unhappiness. Starts with being a little less than you can be. Beware of this.

Financial Independence

What should a child (or an adult) do with a dollar?

Don’t spend more than $0.70 of every dollar.

If your outgo exceeds your income, your upkeep will be your downfall.

What to do with the other $0.30?

  • $0.10 – Charity: Helping people who can’t help themselves. Nothing teaches character better than generosity. Best to start with small amounts. Easier to give $0.10 out of a $1 than to give $100,000 out of a million.
  • $0.10 – Active Capital: Try to make a profit yourself. Profits are better than wages.

    Wages will make you a living. Profits will make you a fortune.

    There are many ways to show a profit. Leave things better than you found them. Become a person who leaves a profit. Profit has potential to make a fortune.

  • #0.10 – Passive Capital: Interest bearing investment. Loan it out (stocks, bonds, etc.). “The borrower is servant to the lender.” Be the lender.

This is an ideal. Set it up and work towards it. It’s not the amount that counts, it is the plan. You can start with 97/1/1/1. The numbers will change. It is just a good sample philosophy.

Keep strict accounts. Now where your money is going. Don’t let it “just get away from you.”

Get a new attitude.
“Hate to pay my taxes,” get past this. Taxes help pay for democracy, liberty, and freedom that is the goose that lays the golden eggs.
“Hate to pay my bills,” get beyond this. Bills reduce your liability and increase your assets.
Everybody must pay, even if its only pennies.

Spend, invest, show a profit, help others.

Communication

Effective communication is how to affect people with words.

Words can work miracles. They are powerful and can have dramatic effects.

Have Something Good to Say, Be Prepared

Interest

Show interest in the subject.
Then go beyond that and show fascination. Turn frustration into fascination if you can.

Sensitivity

Understand other people. You have to be touched and moved by the drama in other peoples lives so you connect with them where they are. This involves emotion.

Knowledge

Take notes. Gather knowledge. Don’t be lazy in learning.

Say It Well

  • Sincerity
  • Repetition – Mother of Skill
  • Brevity – sometimes you don’t need many words
  • Vocabulary – There is a relationship between vocabulary and behavior. Words are a way of seeing and expressing. Stretch your vocabulary

Read Your Audience

  • What your see – body language
  • What you hear – kids will tell you
  • What you feel – emotional signals (women naturally better at this than men)

Intensity

Your words need to be mixed with emotion. It has an incredible effect. Put more of you into what you say.

Don’t be casual in communication.
Emotions must be measured. “Don’t shoot a cannon at a rabbit.”

You need well chosen words mixed with measured emotion. The more you care, the stronger you can be.

The Negative and the Positive

Negative

There is a time to laugh and a time to cry. Life is not all positive.

Negative is normal, it is a normal part of life. It should not be ignored because it needs to be mastered.

Need the ant philosophy. Never quit and think winter all summer.

Positive

The day that turns your life around.

Things that turn your life around:

  1. Disgust – normally associated as negative, but can be positive. It is when you say, “I’ve had it. No more. Enough is enough.” If you can add an act to it, that helps.
  2. Decision – you can make a decision that turns your life around.
  3. Desire – wanting to bad enough. Sometimes desire waits for a trigger (like meeting someone, or not being able to do something that you want). Welcome all experiences because you never know which one will turn everything on.
  4. Resolve – saying “I will.” Do or Die. Promising yourself you will never give up. “Until,” do it until you succeed.

Final Thoughts

Learn to help people with their lives. Touch people with a book, with words. Help them with their goals and dreams.

If you work on your gifts, they will make room for you.

Conclusion

Great advice. Take charge of your own future. Make plans, set goals, and act on them.

If you will change, everything will change for you