Anthony Stauffer Anthony Stauffer

What I Decided - 2/8/14

Tagging

Free lessons will have multiple tag groups.

  • Artist
  • Topic
  • Difficulty
  • Series

I was going to have a "duration" tag, but realized that Low Search can generate "range" filters based on numeric fields, and I already have the durations recorded in a custom field.

 

Read More
What I Found Anthony Stauffer What I Found Anthony Stauffer

What I Found - 2/8/14

PhotoFrame from ObjectiveHTML

A tool for uploading and manipulating images in ExpressionEngine. Not an organization tool, but a simple, elegant way to organize images inside a custom field, or Low Variable. 

Works with Matrix, Low Variables, Assets and many other common plugins.

 

CE Image from CausingEffect

A developers image manipulation plugin for ExpressionEngine. This is not an user-interface tool, this is for template-level manipulation of images.

 

Channel Images from CausingEffect

This is another tool for working with images in custom fields or Low Variables. There appears to be some overlap with PhotoFrame. I'd need to research farther to figure out which would be best for what I need.

 

Reefine Addon for ExpressionEngine

An addon that allows you to add progressive filtering of a large catalog of items, as seen on many large eCommerce sites. A couple notes.

  • Works best with single entry fields, i.e. size, color.
  • Developer warns that it might be slower for fields where there are multiple entries, i.e. tags, etc..

 

Template Variables Accessory from CausingEffect

A handy way to remember custom field names from the ExpressionEngine admin interface, without having to go into the custom field editor.

Read More
What I Learned Anthony Stauffer What I Learned Anthony Stauffer

What I Learned - 2/8/14

Low Search & Solspace Tags

Low Search for ExpressionEngine can work with Solspace Tag to act as a filtering tool. It can auto-generate search urls from a Tag custom field.

Low Search can also generate a "range" filter based on a custom field that is numeric.

ExpressionEngine Conditionals & Parsing Order

ExpressionEngine parses advanced conditionals later in the parsing order than simple conditionals. I blamed this for a template error, but it turned out to be a missing </div> tag.

 

Read More
What I Learned Anthony Stauffer What I Learned Anthony Stauffer

What I Learned - 1/2/14

Devdemon Updater will fail if the user that owns the EE installation is not the apache user. On centos that user is 'apache' in group 'apache'. I had to chown -R apache:apache ./ in we root to fix.

Read More
Anthony Stauffer Anthony Stauffer

How To Prevent Startup Processes from Slowing OSX Login

Dropbox is a wonderful utility. But.....it's a big fat resource hog for about a minute after you login to OSX for the first time after a restart. The larger your dropbox folder, the worse it gets.

A solution I discovered last night is to launch startup processes through AppleScript, instead of having the system launch them automatically. 

Dropbox is a wonderful utility. But.....it's a big fat resource hog for about a minute after you login to OSX for the first time after a restart. The larger your dropbox folder, the worse it gets.

A solution I discovered last night is to launch startup processes through AppleScript, instead of having the system launch them automatically. 

Step 1  - Create A Startup Apps Script

Use the AppleScript editor to create a new script. The contents of mine are below. Obviously you'll replace the application names with the applications that you currently want launched at startup. Notice that Dropbox is dead last on this list. The script launches the applications - in the background - with a delay in between. 

do shell script"open -ga 'Alfred 2'"
delay 10
do shell script "open -ga 'Fantastical'"
delay 10
do shell script "open -ga 'TextExpander'"
delay 10
do shell script "open -ga 'Path Finder'"
delay 10
do shell script "open -ga 'TextExpander'"
delay 10
do shell script "open -ga 'Dropbox'"
delay 10

The application name in the script must match the name of the corresponding .app file in the Applications folder. For an app like 1Password, where a helper app is launched that actually lives inside the main app, this won't work.

Dropbox is a great candidate because it launches in a very straightforward way - just the main Dropbox application. 

Step 2 - The App

Save the AppleScript script as an Application into the Applications folder, I called mine StartupApps. 

 

Screen Shot 2013-09-10 at 5.37.27 PM.png

Step 3 - Set App Preferences

Next, check all your apps that launch at startup for a "Launch at Startup" preference, and uncheck it.

If the application has a "helper" application, this preference may be worded as "Keep ____ helper running after application quits". 

Basically, you don't want any of these apps telling the system to do anything when a restart happens.

 

Screen Shot 2013-09-10 at 5.41.16 PM.png

Step 4 - Remove Launch Daemons

Here's where it gets a bit nerdy, but without this step the whole process is pointless. In the Finder, click Go -> Go To Folder and type

~/Library/LaunchAgents/

You'll se a list of plist files in there, some of them will match applications that you've put into your startup script. Drag those files to your desktop - we don't want to delete them just yet in case something goes wrong.

Repeat this process for  

/Library/LaunchAgents/
/Library/LaunchDaemons/ 
/Library/StartupItems/ 

Again - only do this for plist files corresponding to Apps in your startup script, and only do this for applications that are being launched directly from the Applications folder, not some helper application inside the main application. 

Step 5 - Set Login Items

Go to the System Preferences -> Users and find your name in the account list. Go to the "Login Items" tab. Remove any items that match the items in your script. Add a new item that links to your new StartupApps app. 

 

Step 6 - Restart

Now, restart your computer, login and wait for the applications to load one at a time. If there's an error, you'll probably see an error message about "Connection is invalid". I first saw this error because I was trying to launch an application from the script, but there was a LaunchAgent that had already started it. 

 

The Results

My results were extremely good. Since Alfred launches first, I'm able to launch Chrome, my Mail program and begin working while the other apps launch one at a time. If you find that the apps are still overlapping in startup, you can increase the delays in the script. Just open the StartupApps app in the AppleScript editor, edit and re-save.

Here's to more product restarts. 

Read More
Anthony Stauffer Anthony Stauffer

How To Import Chapter Markers With A Video Into FCPX

Quicktime chapters are nothing new. But Apple has a poor record of making it easy for content authors to work with chapters - especially across Apple programs. Don't even get me started on DVD Studio Pro. FCPX, sadly, is no different. 

If you have a video clip that already contains a chapter track, you might expect FCPX to detect those chapters, and make them available to you upon import. Sounds logical, but ......wrong. 

Why is such an obvious feature not present in FCPX? Good luck answering that.  Fortunately, there is a workaround. 

Quicktime chapters are nothing new. But Apple has a poor record of making it easy for content authors to work with chapters - especially across Apple programs. Don't even get me started on DVD Studio Pro. FCPX, sadly, is no different. 

If you have a video clip that already contains a chapter track, you might expect FCPX to detect those chapters, and make them available to you upon import. Sounds logical, but ......wrong. 

Why is such an obvious feature not present in FCPX? Good luck answering that.  Fortunately, there is a workaround. 

What You'll Need

  1. Quicktime 7 Pro
  2. A good text editor (I recommend BBEdit)
  3. iWork Numbers

10,000 Foot View

At a high level, we'll be using Numbers to convert timecodes from a Quicktime chapter text file into a format that we can paste into an FCPX XML file. Then we'll import that file to get our chapters to show up in FCPX.

Let's get started. 

Step 1: Open Video In Quicktime 7 Pro

Open the file with chapters in QT 7 Pro. Yes, you need Pro, and yes, you can actually still buy a Pro registration if you don't own one already. 

Step 2: Export Text File

Chose File > Export > Text to Text. Click the Options button and set the time export to 1/1000.

Step 3: Import To FCPX

Import the video clip to an event in FCPX.

*Update 9/10* - The image below shows the "Open in Timeline" function being used. This is incorrect. If you do this, the markers will only be added to the video part of the clip, not the entire thing. See the next step for more details. 

Step 5: Add several temporary chapters to the clip

These markers are just to help us locate the correct section in the XML file we're going to export in the next step.

*Update 9/10/13* - These markers should be added right in the Event, not in the clip open in the timeline. If the markers are added to the clip as shown below, they are only associated with the video portion, not the clip as a self-contained object. 

5-AddTemporaryMarkers.png

Step 6: Export XML from FCPX

Select the clip in the event and choose File > Export XML.

Step 7: Open the XML and txt file in a text editor.

The files should look like the following pictures. Times will obviously be different for you, but formatting should be similar.

Step 8: Clean up the text file

Make your text file from Quicktime look like this. All that should be seen is timecodes (without brackets) before chapter titles.

Step 9: Select the timecodes and copy

Use the block select mode of your text editor to select only the part of the timecode that is actually used. In my example, the hours column is not used, so I leave that column out. 

Step 10: Format a column in Numbers as text

Create a new document and select a column. From the cell formatting dropdown select "Text". This will ensure that the timecodes will be pasted exactly as they appeared in the text file, without getting mangled by the automatic data formatting algorithms in Numbers.

Step 11: Paste In Time Codes

Step 12: Convert Timecodes To Seconds

Here's the tricky part. We're going to use the MID( ) function in Numbers to convert the timecodes into seconds. You'll need to read the documentation for that function if you've never used it before.

The MID function allows us to extract the individual numbers from the timecode and multiply them as necessary. Since my example uses only minutes and seconds, my formula multiplies the first number by 60 and simply adds the rest of the timecode to that number.

My formula: = ( MID(B2, 1, 2) * 60) + (MID(B2, 4, 6)) 

Enter your version of this formula at the top of the next column, then copy to the cells below it. The numbers that are generated are representations of the timecode in seconds, with decimal places.

Step 13: Convert seconds to integers

The markers in an FCP XML file are expressed as fractions, not as decimals. For some reason FCPX uses 2000 as the denominator, so that's what we'll multiply our seconds by. In the next column, multiply each of the numbers by 2000. 

Step 14: Copy multiplication formula to remaining rows

Now copy and paste that cell to the remaining rows. You should see something like this. The numbers will, at first, be formatted as decimals, but we'll convert them to integers.

Step 14: Convert to integers

Highlight the entire column and from the formatting dropdown, select "Numeral System". 

The numbers should be converted to integers if the decimal "Places" field is set to 0.

Step 15: Replace timecodes in the text file with integers

Copy the cells with the integers in Numbers and paste them in place of the time codes, before the marker names, in the text file. 

Step 16: Place XML marker syntax around the integers and marker names

  • At the beginning of each line paste the following:  <marker start=" 
  • After each integer paste the following: /2000s" duration="1001/60000s" value="
  • And after each marker name, to complete the line, paste the following: "/>

If your first marker is at 0s, eliminate the /2000 part for that line. 

When you're done it should look like this. 

Step 17: Find and select marker section of XML file

Find the section of the XML file that you exported from FCPX that contains the <marker> declarations. Highlight that section. 

Step 18: Paste in markers from text file

Now we're going to replace the temporary markers in the XML file with the marker declarations we've created in the text file.  Save the file.

Step 19: Import the XML file into FCPX

You'll see a new event created, with another version of your clip in it. The XML file pointed to the original clip on disk, from the original event, but when you imported the modified XML file, FCPX created a new event, and copied the original file into the new event. 

*Update 9/10/13* The markers should show up right on the clip in the event browser. A previous version of this guide instructed you to open the clip in the timeline, but in the updated version the markers will appear right in the event browser, making it much easier to select portions of the clip using the markers as reference. 

In Closing

There you have it. Twenty-one steps to do something that Apple should have implemented from the beginning. But if you absolutely need to have your markers imported (as I do), at least there's a way to do it.

Rock on. 

Read More
Anthony Stauffer Anthony Stauffer

Fix For Solspace Rating Module Form Not Displaying

Long story short: I bought the ExpressionEngine Ratings module from Solspace.com today. I quickly located an example of how to put a rating form into an entry. I eagerly reloaded the page.....and there was no rating form to be found.

I turned on template debugging, I read forum posts, I changed admin settings that no one should ever change. Nothing worked. Even the sample pages from the module itself would not show the ratings form.  

Template debugging revealed that the {exp:rating:form} tag pair was indeed finding an entry using the supplied {entry_id}, but nothing between the tag pair was being processed. There were no errors, just....nothing.

Turns out...there's a few things you have to do to get this ratings form to show up. If you're smarter than me, you probably wouldn't make these mistakes, but if you're reading this, perhaps you're no smarter than I am.

Here are the specific steps that would have saved me over 2 hours this morning.

  1. Install the module.
  2. Go to Add-ons -> Modules -> Rating -> Preferences
  3. Locate the "Can Post Ratings" preference.
  4. Select ALL the member groups that you intend to allow to post ratings. Here's a hint - Super Admins are not Members . If you select only Members, Super Admins like yourself, will see no ratings form. User groups are not hierarchical in this way... apparently.
  5. Select ALL channels that you'll be using the ratings form on. Be really, really sure that you've ACTUALLY selected the right channel(s). Because discovering that you've accidentally omitted the one channel that you're testing on is a frustrating realization after 2 hours of hair-pulling troubleshooting. 
  6. Use the example code to construct your rating form.  

 

So, to wrap up, Super Admins are not included in Members, and if you don't choose the correct channels, you'll only see whitespace where you want to see a ratings form. 

May your experience be less painful than mine.

 

Read More
Anthony Stauffer Anthony Stauffer

What I Learned Last Night - 6/26

  • In Expression Engine, using the Matrix plugin, it is not possible to "embed" a Matrix celltype inside a Maxtrix channel field.
  • The Nolan fieldtype allows you to have a matrix-style cell in a Matrix field that contains text fields only.
  • Sublime Video does not support streaming protocols
  • When you put more than one Sublime player on a page, even if you stop one player and start another, the browser continues to download the video for the first one in the background. 
  • If you're planning to construct a new Sublime Video element in place of an existing one, technically you're supposed to use the sublime.unprepare() function first. 
  • Calling sublime.unprepare(<playerid>)  does not stop the browser from continuing to download the video that was playing.
  • Even destroying the <video> element that Sublime was attached to in the DOM does not stop the browser from continuing to download the video. 
  • The only way to completely "kill" a video and stop it from downloading without reloading the page is to use the video.src attribute as described here. 
  • Even if you use an Expression Engine embedded template to load different videos into the same div (using the JQuery .load() function), you must first use the technique above to "kill" the video before loading new content into the div to prevent further downloading. 

 

 

Read More
Anthony Stauffer Anthony Stauffer

What I Learned - 6/15

Sublime Video has a timeUpdated event that fires as the video plays. To capture this event use the following code.

sublime.ready(function() {
  sublime.player('< your_video_player_id >').on({
    timeUpdate: < your_function_name >
  });
});

Using some basic Javascript it is possible to create simple looping functionality with Sublime Video using the timeUpdate event combined with user-selected start and stop times.  

The Shortlist plugin for ExpressionEngine  has "attribute" functionality for adding external content to lists, but it does not work for internal content. The attributes give context to the external link that is being added to a list (like a favorites list).

Read More
Anthony Stauffer Anthony Stauffer

What I Learned - 6/13

Chapter markers do not show up in Quicktime videos on iOS since iOS 6 was released (outside of videos purchased from Apple).

You can update channel entries in ExpressionEngine using DataGrab Pro, but you must have a unique identifier field outside of the actual ID. Using the title field as the reference for detecting an existing entry works, but if your titles include quotes it's easy for a mismatch to occur. 

There are several HTML5 video players available, but not all support playing YouTube videos. Sublime Video does

Sublime Video "takes over" the <video> element, but implements it's own Javascript API. Performing operations on the <video> element won't work, to manipulate the player, you need to work with the Sublime Player Javascript API

To play a video at a specific time, use the Sublime Video player.seekTo() api call. 

HTML5 <video> spec has a playbackRate variable. Sublime Video has not implimented playbackRate in their Javascript API yet, plut plan to.

Read More
Anthony Stauffer Anthony Stauffer

Why I Always Record Backup Audio

​Today I was reminded of why I always record backup audio for my solo demonstrations. 

That's an entire take of a solo demonstration I just shot for my next set of lessons. You'll notice that the audio overlay is very.......well it's almost invisible. That's because it's not there.

Today I was reminded of why I always record backup audio for my solo demonstrations. 

Screen Shot 2013-05-28 at 2.28.16 PM.png

​That's an entire take of a solo demonstration I just shot for my next set of lessons. You'll notice that the audio overlay is very.......well it's almost invisible. That's because it's not there.

Why?​

Because my audio goes through a Beachtek DXA-SLR Pro before it enters my camcorder. The DXA-SLR Pro has no AC Adapter, it runs off of a 9V battery, and when that battery dies, so does my audio. 

​Usually I'll notice that the power light has gone dark, but this time I didn't. So I happily continued shooting.

​Fortunately this is not the first time I've continued shooting after the battery died. The first time it happened I was quite frustrated, but I put in place a practice that has saved me from this same predicament several times since.

Whenever I record solo demonstration takes, I'm playing along with the backing track that I've assembled in Logic Pro. The guitar audio was previously recorded directly through the DXA-SLR Pro into the camera (for easier syncing in FCPX). That audio would later be taken from FCPX, imported to Logic and I'd mix the demonstration audio as if I had recorded the guitar directly into Logic.​

When I missed the dead battery the first time, I changed my signal routing to go through my Mackie Onyx mixer first, then out of the auxiliary sends to the DXA-SLR Pro. The Onyx mixer is also a Firewire audio interface so I create a new track for the guitar in Logic and set it to record from the channel the guitar is connected to. Then, as I shoot my takes, I'm not just playing the backing track in Logic, I'm also recording take after take of guitar onto that track, while I'm shooting take after take on camera.

So today, when I discovered that my battery had died during shooting, and the very best take has no audio whatsoever, I just found the matching file in my Logic project folder, imported it into FCPX, and aligned it with the video.

The backup audio recorded into Logic saved me from having to shoot these takes over again.​

Read More
Anthony Stauffer Anthony Stauffer

What Would I Do If My Sales Doubled?

​So I got to thinking the other day...... "What would I do if my sales doubled?"

​If this happened, I'd be screwed. Why? Because my customer support infrastructure (people, tools, etc...) is only designed to handle the amount of customer support requests we get right now. We serve anywhere from three to ten customers a day, and average one or two support issues a day. That's not a very high level, but I sell expensive lessons, so I'm able to make a living providing a high level of service to a relatively small customer base.

So I got to thinking the other day...... "What would I do if my sales doubled?"

​If this happened, I'd be screwed. Why? Because my customer support infrastructure (people, tools, etc...) is only designed to handle the amount of customer support requests we get right now. We serve anywhere from three to ten customers a day, and average one or two support issues a day. That's not a very high level, but I sell expensive lessons, so I'm able to make a living providing a high level of service to a relatively small customer base.

The support "team" is two people: Kevin and me. Kevin handles all requests first, delegating them to me if necessary. But Kevin is not my employee, he is a contractor. Support is not his fulltime job. Therefore it is impossible for me to provide customers with 24/7 support.​

​At our current support load, this is a non-issue. 99% of the time we are able to help people within 24 hours and most people are extremely happy.

But what if the number of customers we serve doubled or tripled in a period of weeks? ​

I certainly don't need that to happen, we're doing just fine the way things are, but honestly, what would happen if a huge amount of exposure led to a dramatic increase in sales?​

I'd be a fool not to prepare for that. possibility. If I'm not prepared to deal with 20 or 30 support issues a day, I will lose the opportunity to win 20 or 30 repeat customers a day. The time to prepare for that is before it happens, not after.

So today I sat down with Kevin and we talked about our approach to customer support. As we talked, I realized that what I really want is for my support system to be as important as any of my lesson products. I want the experience of finding and getting help with my site, store, or lessons to be as smooth an experience as possible.

We started listing all the things that we could document, every issue that has come up more than once. From first time visitors to repeat customers, we listed everything we could think of that would make their experience "nicer".​

​As I looked at this huge list of potential topics it hit me: this is not rocket science, this is just writing down what we already know. This is not complex work. This is information that we'll have to tell people anyway, but right now we have no way for people to know this stuff without contacting us. This means they have to wait longer to find out something that we could have written down for them to use before they even needed our help.

​Creating all this support material will take time and thousands of dollars.  As the number of customers increases, these materials increase in value in two ways.

  1. Reduced Support Requests - ​more people solving their own problems before or after they contact us.
  2. Reduced Support Complexity - these support materials will make it easier for anyone who's serving as a support agent to help more customers in less time. Sometimes it will be as simple as pointing them to the correct guide. Other times it will be using information from a guide to customize a response. In all cases, having the support material available will make support more consistent and more efficient.

Customer support is one of those things that doesn't just "happen". I'm passionate about new lessons. That's the directions my thoughts lean when I'm not working on anything else. But how many times have I had to stop working on lessons to answer a support request with information that I've provided to 100 other people before?

​More times than I'd like to admit :-(

Creating a truly remarkable library of customer support resources is not sexy, and not fun. At least not for the same reasons that creating lessons is fun. But it is an investment in my future time. It is an investment in the customer experience. And it is an investment in my ability to serve a much larger base of customers in the future.​

Read More
Anthony Stauffer Anthony Stauffer

Working Friction VS Backup Friction

​Last week I spent most of my time backing my entire data archive to offsite drives. Why did it take so long? Thanks for asking, let me tell you.

Last week I spent most of my time backing my entire data archive to offsite drives. Why did it take so long? Thanks for asking, let me tell you.

I have three places that my data lives:

  • Working Drive - any active projects currently being worked on.
  • Primary Backup - a backup of all active data and finished projects.
  • Offsite Backup - a duplicate of my primary backup that lives at home in a fireproof safe.

I experience friction in my workflow in two ways:

  • Working Friction - anything that slows me down while I'm doing actual work.
  • Backup Friction - anything that makes it difficult or slow to backup my data.

When you work by yourself, you will make a decision about which kind of friction is worse. Personally, Working Friction was far more bothersome to me than Backup Friction. So I organized projects that I was actively working on in a way that minimized the amount of friction I felt working with that data every day. There was very little hierarchy, a lot of top-level folders and not much attention to file and folder naming.

When it came time to backup that data, I was comfortable with a higher level of friction. It was not easy to backup this data because my backup drives are meticulously organized to avoid accidentally storing duplicates of large files. Meticulous organization also makes it much easier to avoid confusing which is the "final" version of some project or file.

So every time I decided to backup my working data, I had to do a lot of things that could not be automated. Fairly unorganized data had to be integrated into a highly organized backup hierarchy and I was the only person who knew how the whole system worked.

This week I decided to change my approach. I intend to start producing more video, not less, which will require backups to happen more frequently, especially when working on projects for clients. Backup friction will become a LOT more noticeable, especially when multiple people are responsible for backing up projects.

In this new approach, I implemented some naming and hierarchy conventions for my working data. This will create more working friction. It's noticeable, but not awful. Things have to go in the right place and be named the right way.

But the payoff is huge when it comes to backing up the data. Backup is now simple. There's no complicated scheme for moving data from the working drive to the backup drive. Just run the appropriate Chronosync script and it will happen automatically. 

Doing an offsite backup is just as easy. My data lives in 3 "collections" and each collection has it's own corresponding offsite drive. Once a month I can bring those drives in and sync them with right collection on the primary backup drive. Done.

I'll do a screencast about this at some point in the future showing some specific examples, but the main thing I've learned through this process is this. If you work by yourself, do whatever you want. But if you start working with other people, if you start delegating critical tasks like data backup, you HAVE to make backup a simple process for other people to do. 

Work is always preferable to backup. Backup will never feel like a good idea until it's too late. For that reason, backup needs to be as easy as possible. If you're going to eliminate friction anywhere, eliminate backup friction. 

Create a set of naming and organizing conventions for your working data and backups. Follow these conventions religiously when working on new projects and backup will be much easier. 

Read More
Anthony Stauffer Anthony Stauffer

The Day Dan Benjamin Made Me Cry

One day in March of 2012, Dan Benjamin made me cry. 

We were chatting about business. He had ideas for StevieSnacks, good ideas, but ideas that fueled my anxiety. I explained the 18 month backlog of lessons in my brain. Lessons that I've not yet taught. Today's ideas will go on a big pile that I have to carry until I've caught up with the lessons I wanted to teach last year. And that depresses me. My body has to produce what my mind dreams up, but my body is much slower than my mind.

One day in March of 2012, Dan Benjamin made me cry. 

We were chatting about business. He had ideas for StevieSnacks, good ideas, but ideas that fueled my anxiety. I explained the 18 month backlog of lessons in my brain. Lessons that I've not yet taught. Today's ideas will go on a big pile that I have to carry until I've caught up with the lessons I wanted to teach last year. And that depresses me. My body has to produce what my mind dreams up, but my body is much slower than my mind.

After I was done whining, Dan began to lecture me. I want you to see exactly what he wrote.

whatimgoodat.png

"They cost you time and money".

I knew I was in trouble when I read that.

Then Dan launched into a lengthy description of what my business could be like. This is a summary of what he wrote:

Imagine a world where you come into the studio and everything is already set up for you. You just get right to the teaching, other people are handling the video work. When you're done shooting for the day, you can work on planning another series, or run errands. Your team knows your standards, and your creative style. They make most of the choices you'd make. The next day your producer calls you because you need to stop by the studio to choose between a few endings. By the end of the week the course is finished and available in your store. Your team helps you to produce the lessons you love faster than you ever could.

After he finished painting this picture for me, he wrote something that burned itself into my memory. 

ThisIsHowYouMakeMoreVideos.png

“This is how you are able to make more videos”.

I sat and stared at the screen. Then I cried.

It wasn’t until that moment that I realized how heavy StevieSnacks had become. For 4 years I had been doing nearly everything myself. Nobody could help me, it all was all on my shoulders. If I stopped, the business stopped. I had been carrying around the weight of a warehouse of ideas with no relief in sight.

I was searching for a way to produce more videos in less time, by myself. Dan's words cut deep. There was only one way to achieve this. I had to build a business where other people could help me produce my lessons and handle the business tasks that were taking up so much of my time.

That month I began searching for someone to help out.  As it turned out, the same person that had been helping with customer support also had a history in video production. All I had to do was ask. I had plenty of money, too much work, and very little time. His situation was the exact inverse of mine. 

Several days into the training process, I left my office to go to lunch while he stayed behind editing the next set of premium lessons. For the first time in 4 years I was not working, but work was still being done. My business was progressing while I took a break. I'll never forget that feeling. Less than two months later, I no longer had to edit any of my premium lessons.

I don’t know why I stopped.

Losing Focus

At some point I stopped delegating. I stopped viewing certain parts of my job as optional. I got comfortable with a 90/10 split of the responsibilities. That’s when I began to get distracted.

Instead of delegating more of my tasks, instead of freeing up more of my time, I began to take on outside projects. It made perfect theoretical sense. I could make additional income while offloading most of the work to my newly trained editor. Simple, right?

The problem was this. I didn't NEED more income. What causes me anxiety is not lack of money, but lack of time. Lack of time to create lessons that have been in my head for over a year.​

Pretty soon I was creating proposals, estimating costs, sending invoices, paying invoices, coordinate trips, and delivering files. One day I found myself signing incorporation papers at a law firm. I barely had time to pay attention to what was happening.

In addition to all these new tasks, I was still doing 90% of the work for StevieSnacks. My focus was slipping and I couldn't even feel it.

I sprinted into December and slid into the biggest holiday season in StevieSnacks history. I limped across the finish line into January, exhausted and ready for a break. As the holiday smoke cleared, I began to think about what kind of awesome creative projects we would tackle in 2013.

Questions appeared. What kind of projects? Who would find them? Who would manage them? When would I work on new lessons? I brushed those questions to the side and went back to playing Battlefield 3.

Then I went to Winter NAMM where I woke up.

The entire first day was full of conversations with customers, industry contacts, customers who were industry contacts, even colleagues that some would consider my competition. Suddenly my "other" creative projects seemed distant, unimportant. The only thing that mattered here was StevieSnacks. 

As I sat in the hotel room that night it hit me.

Doors are starting to open. Opportunities are coming. Now is not the time to get distracted. Now is not the time to lose focus. Now is not the time to further divide my attention. Now is the time to double down on StevieSnacks.

StevieSnacks IS the business. Not just a product of my business.

For five years I've poured my heart into making a large collection of guitar lessons. Those lessons have drawn an audience of players around the world.  That work is starting to open doors. If I lose my focus I will miss what's coming next.

Suddenly I realized how much stuff I was doing that I didn't have to do. The numbness of the past few months wore off and I began to feel the pain of inefficiency again. The dream of building a team came alive again. The dream of building a real company came back. It was time to turn StevieSnacks into a well-oiled machine that would allow me to teach my heart out.

I was finally back to where I was a year ago when Dan Benjamin made me cry.

Read More
Anthony Stauffer Anthony Stauffer

Why I Don't Game At Work Anymore

​I've been an avid gamer for over a decade, mostly playing the Battlefield franchise of shooters. When I worked as a programmer, there were a bunch of us that would end each day with a couple of intense matches. ​

I've been an avid gamer for over a decade, mostly playing the Battlefield franchise of shooters. When I worked as a programmer, there were a bunch of us that would end each day with a couple of intense matches. ​

When Battlefield 3 was released last year, the only computer I owned that could run the game was my work iMac. So I installed Windows 7 on a Bootcamp partition, and spent many evenings gleefully sniping pilots out of planes as they tried to take off. ​Yes, I'm that guy, sorry.

But a funny thing happened as time went on. It became easier and easier to stop working, and start playing. Having the game so readily available made it really difficult to focus on any task I didn't enjoy. I found myself "needing a break" more frequently.​

Recently I upgraded my work iMac, and took the Battlefield equipped computer home to be our primary family computer. A funny thing happened. It became extremely easy to focus on work at the office.

I believe that mental associations are a powerful element of productivity. If you begin to associate your working space with things other than work, it affects your view of work itself. When I come into my office now, it's for work and my mind accepts that because it has no choice :-)

Read More
Anthony Stauffer Anthony Stauffer

My Data Backup Strategy

One side effect of producing regular video content is accumulating years of digital artifacts that need to be backed up securely. Online backup is fine for home use, but for me it's not very practical. I have over 4TB of data to backup, not exactly what the online backup companies are built for.

One side effect of producing regular video content is accumulating years of digital artifacts that need to be backed up securely. Online backup is fine for home use, but for me it's not very practical. I have over 4TB of data to backup, not exactly what the online backup companies are built for.

It's easy to put off the backup process, especially when you've never lost a hard drive. Backing up will never seem like something you want to do until right after it's too late.​ So I've learned to accept that backing up will always seem like an interruption to my productivity, but to do it anyway.

My strategy has several components.​

Dropbox

Everything that's not related to audio or video production gets stored in Dropbox. I have the Pro plan with 100GB of space, and I pay extra for the unlimited file versioning option. This has saved me several times.​

Every project I do has a dedicated folder in Dropbox, and anything that I produce for that project goes in the folder, unless it's a Logic project, or video related. ​Dropbox is made for syncing, but with the unlimited file versioning option it becomes a backup service for small and medium sized files.

Lacie Thunderbolt Raid

Any work that's too big for Dropbox is done on a LaCie 2big Thunderbolt RAID drive. However I have this drive configured for speed, not redundancy. It is, for all intents and purposes, no more reliable than a single hard drive. But it is blazingly fast. All my video and audio work is done on this drive.​

Every project has its own folder, and everything related to the project that isn't stored in Dropbox is stored in this folder until the project is done.  I use Final Cut Pro X for my video work, so all events and projects are managed automatically through the software.

But......the LaCie is not a backup. It is not redundant. It is as vulnerable as a single drive. A file that lives only on this drive is as good as lost in my opinion.

Drobo 5D

I back up the LaCie to a Drobo 5D, currently configured with 8TB of storage. The Drobo is setup for single drive redundancy. When I upgrade the drives, I'll reconfigure it for double redundancy. I have an earlier Firewire 800 Drobo, but once you get used to Thunderbolt speeds, enduring a large file transfer over FW 800 is torturous. Having a fast connection between them lowers my mental resistance to the task of backing up.

But this is not where the backup strategy ends. If my office was hit by lightning, both the Drobo and LaCie drives could be destroyed. This is where offsite backup comes into play.​

Offsite Backup

Over the past 5 years I've used and replaced many 1TB and 2TB drives. When a drive is replaced, I convert it to an offsite backup drive. I use a Seagate GoFlex Thunderbolt Drive Dock to connect them to my system, then I backup my Drobo 5D to several of these drives.​

This process happens monthly or bi-monthly at a minumum.​ These drives live at my house in a fireproof safe. If my office burns down, I will always have the majority of my data saved on those drives and will lose only the audio and video I've done since my last offsite backup.

So that's my backup strategy at this moment.​

  1. Dropbox for everything small enough.
  2. Backup my working drive to a Drobo 5D weekly.
  3. Backup my Drobo 5D to offsite drives monthly.

Read More
Anthony Stauffer Anthony Stauffer

When DIY Becomes A Liability

​I recently moved from a small downtown office into a small house that I’m using as a studio for StevieSnacks. My wife repeatedly told me “You shouldn’t move your own stuff”. And while it made sense when she said it, I ignored her advice and moved everything except the furniture myself.

I recently moved from a small downtown office into a small house that I’m using as a studio for StevieSnacks. My wife repeatedly told me “You shouldn’t move your own stuff”. And while it made sense when she said it, I ignored her advice and moved everything except the furniture myself.

Today some movers are coming to get the rest of the stuff, but to prepare, I filled up my jeep with a lot of the smaller stuff to bring over. As I walked an entire block to and from my car, no less than 6 times. I asked myself two questions:

  1. Why is nobody helping me?
  2. Why am I moving this stuff at all?

The answer to both of these questions is that I am a chronic, but recovering do-it-yourselfer. 

When I started StevieSnacks I had to do everything myself. It wasn’t generating any income at the time, and I had all the skills I needed to make it go. At that point, DIY was an asset. I developed a strong appreciation for efficiency and quality by doing everything myself.

During the past two years I have offloaded several of my responsibilities:

  1. First-line customer support
  2. Premium lesson video editing and DVD creation
  3. DVD order fulfillment
  4. Free-lesson editing and publishing

I cannot imagine doing those things myself again. I have accepted that paying someone to do those things is part of my business. I am free from the feeling that I have to do them myself.

Why is it then, that when faced with something as large as a complete office move, my first reaction was to move most of the stuff over a period of weeks, one agonizing trip to the car at a time, in freezing temperatures, by myself?

Because I am a do-it-yourselfer, and that mentality has become a liability.

The movers that are coming today were available three weeks ago when this process started. Had I called at that time, they could have moved everything in a period of hours on the same day without my help.

I could have saved two or three work days by making one phone call and writing one check. I am recovering, but not there yet.

Read More
Anthony Stauffer Anthony Stauffer

The Second Episode Dropoff

​Most of my free lessons are one-offs. I come into the studio, think of something, shoot it, edit it, publish it, and that's that. ​Several times I've attempted to do a series of related free lessons, and each time there's a pretty noticeable drop-off in viewership between the first and second lessons.

Most of my free lessons are one-offs. I come into the studio, think of something, shoot it, edit it, publish it, and that's that. ​Several times I've attempted to do a series of related free lessons, and each time there's a pretty noticeable drop-off in viewership between the first and second lessons.

In 2011 I did a series called "Improve Your Phrasing" and the first lesson was huge. At this point in time, it has accumulated almost 100k views on YouTube.​ After that, it drops off pretty dramatically.

ImproveYourPhrasingViews.jpg

​Last week I launched a new series called "Hendrix Machine Gun Vamping". The first lesson took off like a rocket accumulating more views and positive ratings in the first day than any of my videos that I can remember. Of course I thought that this entire series would be well received.

Today I launched the second video and ​the response is positive, but the numbers are nowhere near what they were last week. This follows the general trend I've seen with previous lesson series.

​So I started wondering, why? Why does the interaction on the second video drop off so quickly? A couple thoughts:

1) Bad Timing - Today is Good Friday. Could that be a factor? Are people going to Good Friday events instead of watching guitar lessons? Plausible.

2) Time Of Day - Launching a video at a bad time of day will affect short term views, but I can't imagine that it has a lot to do with long-term performance.

3) Viewers Respond To Variety - As much as people enjoy the first video, and even if they enjoy the idea​ of an entire series of similar videos, perhaps they are more drawn to distinct titles. So the first week they see something new like "Hendrix Machine Gun Vamping - 1" and they love it. The following week they see "Hendrix Machine Gun Vamping - 2" and some of the excitement of the previous week's lesson has worn off. Perhaps they're less inclined to view something that feels even a tiny bit like something they already saw.

4) The Second Video Sucks - This is something I think about often. Maybe the first video always comes across more 'inspired', or interesting. It's easy to assume that people will love the second video because they loved the first, but people are complicated. If the first video is killer, it sets the bar for that entire series. The second video is not guaranteed equal love. Maybe I've not aimed high enough, giving my best effort in the first video.​

5) Poor Marketing - Maybe just telling people that this is a series isn't enough to make them want to watch. Perhaps I need to do a better job of selling the second video in the first. Really give people a reason to watch it instead of assuming they will.​

I believe that there is value in presenting content in series, but the consistent drop in enthusiam to the second part of any series is a mystery I'd like to figure out.​

Read More
Anthony Stauffer Anthony Stauffer

Unlinking Your YouTube And Google Accounts

Part of growing a business is delegating responsibility. I'm in the process of teaching Kevin how to publish free lessons for StevieSnacks. The critical step in that process is accessing my YouTube Channel.​

Here's where it gets tricky. That YouTube channel has been linked to my personal Google/Gmail account for the past 5 years. No one, and I mean no one, has had access to it except for me. It is the source of most of my non-direct traffic, the place where StevieSnacks got it's start, and where my only marketing happens today.​

Part of growing a business is delegating responsibility. I'm in the process of teaching Kevin how to publish free lessons for StevieSnacks. The critical step in that process is accessing my YouTube Channel.​

Here's where it gets tricky. That YouTube channel has been linked to my personal Google/Gmail account for the past 5 years. No one, and I mean no one, has had access to it except for me. It is the source of most of my non-direct traffic, the place where StevieSnacks got it's start, and where my only marketing happens today.​

So it is not a small thing to hand over access to such a critical part of the business. Not to mention that doing so would give him access to my personal email through my Google account. There had to be a better way.​

Luckily my YouTube channel was created before May 2009. Because of that, I had the option to unlink my personal Google account and my YouTube Account. The process is described here: http://support.google.com/youtube/bin/answer.py?hl=en&answer=183819.

YouTube was not always owned by Google. Therefore, not all YouTube accounts started as Google accounts. After Google bought YouTube, they added the ability to link existing YouTube accounts to Google accounts. So now your Gmail login was your YouTube login was your Google Docs login. Big improvement at the time. Eventually, signing up for a YouTube account became synonymous with signing up for a Google Account.

My account was old enough that I was permitted to decouple it from my personal Google Account.​ Unlinking the accounts was simple enough, but you can't leave a YouTube account in limbo, it must be relinked to another Google account as soon as it's unlinked from the first.​

I remembered an old gmail account I used to use for email backup purposes. I logged into that account, cleared out all the old email, reset the password, and then began the account unlinking/relinking process.​

​Now I have a dedicated Google account for my YouTube channel, separate from my personal Google account. This allows me to completely hand off the free lesson publishing process to Kevin without providing access to my personal email, etc..

Read More