All posts for the month October, 2013


Every year the people at Extra Life have a massive drive for donations that benefit hospitals in the Children’s Miracle Network Hospitals.  With most donation drives there is always something that sets their’s apart and Extra Life is in a class of its own.  Extra Life is a marathon of sorts where participants request sponsorship for the distance that they go.  The difference here is that there is no running involved, instead participants will play video games for 25 straight hours.

I’ll be the first to admit that this idea seems like an excuse for a bunch of people to waste a day playing video games.  While that is a side benefit, the real reason it’s being done is for the children of these hospitals.  Thanks to the Children’s Miracle Network Hospitals every cent of your donation goes directly to the hospital that the participant is playing for.  It is my pleasure to say that I will be participating this year and playing for Primary Children’s Medical Center in Salt Lake City.

Last year I raised $160 thanks to friends and family and all of it went directly to Primary Children’s.  This year I am teaming up with two others and our team goal is to reach a combined $500.  We will be streaming every second of our 25 hour journey together on November 2, 2013.  What I ask now is that you please sponsor me or a member of my team.  From now until the end of the event I will have the chart tracking the progress to my personal goal to the right of every page on my blog.  You can donate as much or as little as you would like.  All donations are tax deductible and 100% of your donation goes directly to the hospital.

I hope that all of you see this as a perfect opportunity to give to a great hospital and benefit some children’s lives.  Thank you so much for taking the time to read this and even more for your donations.  If you have any questions please feel free to get in touch with me.

Thank you.

– Eric Saupe

Django works wonderfully as a web framework but sufferes from sub-par data migration.  Luckily for all of us one of their developers has created an application called South that fixes this very problem.  South is meant to bring data migrations to Django and make it easy to make schema changes that are quickly applied to your database without much effort on your part.  Django does have a few built in features for dropping tables, creating tables, and will give you the code to enter to create the tables but it doesn’t help much when you are working on a production server that you don’t want to simply drop and readd tables all the time.

To get started just go through the installation tutorial.  Once you’ve done that you’re ready to migrate your data!  This is best done from the very creation of the project so South can help you from the beginning.  If you are starting a new project go here and follow along.  I’m going to focus a bit more on converting an already created project and making updates and changes to your projects.

Now that South is installed on your already created project you’ve been using for a while you’ll need to convert your app so South can interact with it.  In your console just enter the commands:

Done!  Now your app is ready to go with South.  South keeps track of the migrations using a few tables in your database which is why you need to syncdb before converting any of your apps.  After you have converted your apps you’ll notice you have some new .py files that will need to be uploaded to your repositories.  When South tries to do a migration it makes sure that you have all of the .py files that it has listed in its database for that app.  After the initial conversion, and you’ve uploaded the files, all other machines with the installation will need to run the command ./ migrate myapp 0001 –fake to ensure everyone starts on the same page.  The –fake command at the end tells South to take note of what is happening but don’t actually do it because it’s already been done.

When you make changes to your models, from now on, you’ll need to use South to do the syncdb instead of Django.  Let’s say you add a few columns to a table, remove some others, rename even more, and add a bunch of new tables.  To have South take care of all of that just use the commands:

After running the first command South will try to document all of the changes, display them to the screen, and if all goes well it will tell you to run the second. When running the second command it will actually apply the changes to the database. That’s all there is to it. Occasionally, something will go wrong. If a problem occurs at the first command it’s most likely because you have a problem in your code that is making it fail to compile. If it fails in the second command there are more issues. You could have a partial migration which they will give you code to try and clean up but I’ve found it’s best to do it yourself as their solution is usually to drop a lot of tables. It’s kind of a headache when that happens and has turned off a few of us from South but for the most part we have had a lot of success with it. If you do make all of the changes by hand just be sure and tack on the –fake at the end of the second command to let South know that the changes were already made and that they shouldn’t try and do them again. Be sure and always commit your .py South files because even if I am in a different app trying to use South I will need all of the South .py files from all of the apps before the sync can happen.

Hope this helps a few people and explains a few things about the nuances of South. It really is a great tool and they are even trying to work it into the default installation of Django in the near future so that will be exciting. If you have any tips or tricks when using South post them in the comments below.


Google has worked really hard at making their Google Apps for Business to be something great that all businesses can use. They say that over five million companies are using Google Apps for their business and the company I work at is one of them. In order for Google to compete with the powerhouse that is Microsoft Office Suite they need to have some pretty great things, and they do. I’ve already done a post about Hangouts which works well as a chat client and awesome for video conferencing. Today I’m going to show off Google Calendar and how to use it to its fullest in a business setting as well as a few tips for making Google Calendar your personal online calendar of choice.

A lot of basic features you can find with any calendar program are already present including multiple calendar support, calendar sharing, and permissions.  Let’s quickly run through how to create a new calendar and share it with your company.

Create a New Calendar

new calendar

  • From the main calendar view, on the left side of the screen it says My calendars, click the arrow to the right of that.
  • Click Create new calendar
  • Fill in the calendar name
  • Fill in a description
  • Set time zone and location (This isn’t necessary but we have offices all over the world and it helps to distinguish where these meetings pertain to)
  • Set sharing to your organization
  • Add specific people to be able to make changes and add to the calendar
  • Click Create Calendar

You’ve just made a new calendar!  You can change the color of the events by clicking the drop down arrow to the right of the calendar’s name and clicking one of the colors.  Now that we have a calendar we should create a meeting and invite people.  Click Create at the top left to get started.

Create an Event


  • Click Create at the top left of the calendar view.
  • Title your event.
  • Set the start date and time and end date and time.
    • Setting the time zone will ensure that the time is converted to whatever timezone the guests are using.  For example, when our China office sets up a meeting they can set the timezone to China and invite me.  On my calendar I see it in my local timezone.  This helps with not having to do the timezone conversion on your own.  Use this!
  • Select if this event is all day and if it repeats, if it doesn’t just move on.
  • Fill in where the event is happening, if you use an address Google Maps can give the guests directions, if you are just doing something that everyone invited knows you can use a common name like Conference Room A.
  • If this is going to be a video call click add video call.  This creates a link to a Google Hangout that everyone invited can quickly jump into when the meeting begins.  The link is both on the calendar event and in any event emails.  This takes all of the confusion about joining a conference call out of the equation and just requires guests to click the link and join.
  • Select the calendar you want this to be displayed on.  A note on this, if you set it to a shared calendar and invite people to the event it will show up on their calendar twice.  Once for the group calendar and once for their personal calendar because they were invited to the event.  For most meetings I leave this to my personal calendar and invite guests.  That way it shows up once on my calendar and on their calendar.  This obviously makes the meeting a bit more private.  If it is necessary that others should see that the meeting is happening change this to a shared calendar that others can see even if they aren’t invited.
  • Add an attachment if one is needed.
  • Set a color, if you’d like.
  • Set reminders, these are for you.
  • Set your status, again for you and others to see if you are free or busy.

At this point your event is nearly completed you just need to invite guests and schedule any equipment or facilities you’ll need.  Inviting guests is very important because it will allow them to accept or deny your meeting request.  You can also check if that times works for them and if you need to change the meeting.  If there are changes to the meeting Google Calendar will automatically email them with the changes.  This is a very critical part because if you don’t invite people how will they know there is a meeting?

  • At the right side of the event creation you can see an Add Guests | Rooms, etc.  Make sure Guests is highlighted
  • Type in the email address of the guest you’d like to add.
  • Either click their name or hit Add
  • The guest list will grow longer below.
  • If a guest is just optional you can click on the black portrait next to their name.  This will change it to white which indicates they are optional.
  • Click Rooms, etc.
  • Choose what rooms or equipment you need.  By default it only displays what is available at the time you have selected already.  If you need the full list then uncheck Show only available and select what you need.  This will help you find an available time if you really need the equipment or room.

Now that you have guests and possibly room and equipment let’s make sure everyone can attend.  Find where it says Find a time above the event details you filled in like description, etc.  This tool will show you when people are available and busy.  If there are any conflicts then just change the time that fits everyone’s schedule.

If everything looks correct then just click the red Save button at the top of the page and you’re all set.  Your guests will get an invitation and you will receive notifications of their responses.

Other Tips

When you receive emails with dates and times you can click these to quickly create a calendar event.  The benefit of this is that on the event there will be a link back to that email.  When you open up that event later and forget why that was created you can click the Source link to the email and remember.

In your settings you can select the times that you normally work and it will warn users if you are normally not in the office at that time.


This post was a little verbose and spelled out specifically how to use Google Calendar.  Don’t be afraid to play around with it and figure out how to best use it for you.  Organization and collaboration is key and finding times to get together can be difficult.  Google Calendar is a great solution for businesses and individuals to keep all of that together.  Let me know in the comments if you have any great tips for using Google Calendar in your life or business.