Diving into HarshImprovNotes.com

HarshImprovNotes.com has taken off in improv communities around the world. Looking back at some of the reasons it exists, and what we can glean from it as we progress the art form into the future.

As of July 8th 2015 (only 5 days since it went online), HarshImprovNotes.com has over 400 submissions. That is 400 harsh improvisational theatre notes given. Granted some of those are mine, and granted some people submit more than 1, or 2, or 5, but the site has brought together a community of improvisers from around the globe to share something super-personal. To share a note that they have received somewhere along their training that they deemed harsh. 


What makes a note harsh?

Perhaps it is a note given the wrong way, perhaps it was given by the wrong person, or at the wrong time. The harshness of a note can vary from person to person and moment to moment, so who am I to decide if a note is truly harsh or not.

Often times it would seem that the harshest notes, least taken to heart, are those that are completely out of context. Many of the notes on the site are racist, sexist or otherwise offensive.


Think for a moment that there are people in your company that have been given a note strictly based on things that they can not change about themselves. I find that so hurtful. Maybe you are someone who gave a note like that somewhere along the way, if that is true, in the words of Paul Blinov, “you need to check yourself”.

Why ask if it was taken to heart? 

Asking if the note was taken to heart sort of allows for the submitter to reflect on the note, and see how much it truly impacted them. There is a precious dichotomy between the serious, well-natured note and the submitted who doesn’t take it to heart. Similarly, there is something very curious about the harsh, offensive notes that are completely taken to heart.


It is interesting to look at the statistics of submissions on a large scale to see on average how much a harsh note was taken to heart. The scale is 1 – 10 (from ‘not at all’ – ‘I think about it everyday’).  The trend shows a wide variation around a mean of about 7.5 save for a huge spike at 1. What is this to mean? I call it the blue whale distribution.


Why does this exist?

HarshImprovNotes.com stemmed from my compulsive note taking, collecting, collating and aggregating. I have been doing improvisational theatre for 10 years, starting with Rapid Fire Theatre in Edmonton, Alberta, Canada. Soon after my first soirée in improv, I started travelling the world performing, learning, and teaching improvisation. I love the opportunities to co-create, to share creativity, and improvisation provides that in such a raw manner that I have wholly embraced it as a life passion.

I have had many great, influential improv teachers, mentors, and peers in my life: Jacob Banigan, Patti Stiles, Chris Craddock, Kevin Gillese, Amy Shostak, Keith Johnstone, Dana Anderson, Donovan Workun, Alistair Cook, Becky Johnson, Graham Wagner, Kurt Smeaton, Joe Bill, Billy Tierny, Steve Sim, Lee White, and Craig Cackowski, Ken Campbell, Adam Meggido, Torsten Voller, Susan Messing, Matt Baram, Naomi Snieckus, Ron Pedersen, and the list goes on.

That being said, over my progression in this wonderful art form I have encountered many harsh instructors (not going to name names). These companions and instructors have given me notes which I have both discounted, and taken to heart. They have reached deep into the pit of my soul and vacuumed up all the confidence marbles. Each time this happened, I would write that note down. I would collect it. Save it. Write it down and think about it.

2015-07-07 09.15.38

If the show sucks, it is because someone did something but usually because someone did not.

This collection soon turned into notebooks and notebooks of introspective improvisational ramblings, positive and negative. I needed a way to synthesize the good and the bad. I needed a cathartic release of the strain and pressure of saving these notes. In the same way you can’t keep love letters (or hate letters for that matter) forever, I wanted a means by which I could save the notes, de-personalize them after all these years, and open the discussion to the wider improvisation community. HarshImprovNotes.com does just that. It allows us to share what we have been harbouring, to hopefully move past that, into a realm of growth and development, together.

Would this work for other domains?

I think part of the reason that the notes read so well are because I, and many others, appreciate the improvisers sense of humour. I presume that either or both the giver and receiver of the note have at least somewhat attuned comedic-sense, so the notes are often funny.

The idea of a similar collection of Harsh Teamwork Notes or Harsh Breakup Lines is somewhat more tragic in my mind. In improv, we are our own worst (and best) critics, but there is something to be said about the external director’s eyes which see the performer as a part of the show as a whole.

Final Thoughts

I hope that this project makes me a better teacher and improv instructor. I hope that it makes us all more effective communicators. Improvisation is a young, transient art form. It is still developing modern masters. The vocabulary surrounding it is still forming (improv or impro? improvisor or improviser?), and I think that this allows for opportunities such as this: to look back on how we provide and receive feedback, and refine it such that it is more meaningful, more constructive, more supportive and generally less harsh.

Appendix: Demographics of Users on the Site

Using Google Analytics gives you all sorts of amazing insights in to visitors on the site. Here are several charts that show the demographics of the visitors to HarshImprovNotes.com.

Screenshot 2015-07-08 10.03.41


15 Easy Steps to Build Your New WordPress Theme from a Photoshop PSD

Building a WordPress theme is easy. In fact, you are only 15 simple steps away from building your very own custom theme.

There are a few tools that will help in this process, they are linked in this post… Of course, in the wonderful world of web development, it seems like every week there is a new tool, a new stack, a new software package that can unify your development process and speed up your timelines.

I think that the best tool for the job is the one that fits in the little vesica piscis between the two circles of 1) what you are best at using most effectively, and 2) what is most suited for the job.

Please note that my development is all happening on a 13″ MacBook Air, with an external monitor for that sweet sweet screen real-estate.

  1. Set up three development servers: Local, Staging and Live. (Bluehost for staging and live servers).
  2. Initialize local development server with MAMP (or WAMP for Windows).
  3. Add a blank Roots installation (WordPress Theme) to the themes directory. (More details on Roots 101)
  4. Initialize Git in this folder with Tower ($65, if you love git GUIs), push to BitBucket.
  5. Initialize Grunt (More details on Roots.io). If Grunt is too weird, you can use Codekit ($29).
  6. Use Beanstalk (repository and deployment) or dploy (deployment only) for automated deployment.
  7. Configure fonts needed from PSD on Typekit and on local machine.
  8. Add theme screen shot and meta information to the theme.
  9. Add all needed pages, posts, and custom post types (Types), and add all custom fields (Advanced Custom Fields).
  10. Create the Appearance -> Menus.
  11. Use Adobe Photoshop CC and Slicy to extract images from PSD.
  12. CODE and DEPLOY to STAGING (LESS, PHP, JS, Bootstrap) …  Ben’s guide will help.
  13. TEST. (Theme Unit Test, WP Test)
  14. Keep things backed up. (BackupBuddy, WP Migrate DB Pro)
  15. If done, launch to live and imbibe, else see step 12.

Note: When working with an awesome design team (like Paper Leaf), I would recommend asking for a development document that outlines a few things:

  1. Site map and content.
  2. Fonts used in the design.
  3. Colors used in the design.
  4. Page template list and which pages use the templates.
  5. Custom fields that must be editable on the backend.
  6. Responsiveness expectations (what happens at XXX screen size).
  7. Any expected animations / transitions / movement / hover, focus, active states… with proposed solution (CSS, JS) if possible.
  8. Site title, subtitle, users, backup requirements (and other WP specific set up information).

What am I forgetting?

Ladies Learning Code Workshop

This weekend I was lucky enough to be asked to help instruct at Ladies Learning Code at Startup Edmonton. From their website:

[Ladies Learning Code is] a women-run not-for-profit group working to empower everyone to feel comfortable learning beginner-friendly technical skills in a social, collaborative way.

Lead by head instructor Kasia Gawluk from Code Word Media Design, the workshop was a full day crash course on WordPress development. Slides, from Wes Bos, are available online. Ladies Learning Code (#LLCYEG) is unique in its approach to learner/instructor ratio mandates. There is a 4:1 (or better) ratio of learners to instructors, which allows for plenty of opportunities to ask specific question and get directed support. We started with MAMP installation, downloading WordPress 3.7.1, and setting up a local WP development environment. The WordPress Codex has a great tutorial for this stage of the game, and we followed it almost to the letter. I am a strong believer that questions are where the real learning happens, and the morning started off with many great questions:

  • I’ve been using WordPress for a while, as a blog that someone set up for me, and I have never had to install anything? Great question, we are setting up a local (only our your own computer) development environment for testing/design/development before moving to production (or a live Website). Many web hosts have automated installs these days, for live production sites, so somewhere along the way every WordPress installation was, well, installed.
  • Does PHP stand for anything? Yes, in fact it stands for PHP: Hypertext Preprocessor, a recursive acronym. It originally stood for Personal Home Page.
  • Can you define the backend vs. the frontend? This is the WordPress admin panel, where you can edit posts and content. Frontend is what your users can see.

As many people are using different computers, different softwares, and different configurations… getting 40 different WP installations set up took a little more, than the famous 5-minutes. Once we have databases configured on everyone’s computer, and WordPress configured on everyones local hosts… we are away at the races. Presumably, the next step will be installing a custom theme, and moving from there.

No photo releases required.
No photo releases required.

I was wrong, content before customization. We are building some posts before we start themeing (is that a word?).

A few questions have been raised about the difference between Categories and Tags…  There is a nice breakdown on WordPress.com.  On this site, I use Categories to categorize my posts and I use special functions to pull posts tagged with ‘featured’ into the featured post area at the top of the home page.

Setting up a static page as your home page keeps your posts on a Blog page… You can change these settings at Settings -> Reading. Just remember, you must have pages published to change your Reading Settings. Also, remember, that sometimes your rewrite modules are not configured by default on WAMP… thank you to room339 on the WordPress Support forums.

In WAMP you need to turn on the rewrite_module. To do this click on the WAMP icon in your task bar and navigate to: Apache>Apache modules> Scroll down to rewrite_module and click it. Once you do this your pages should work immediately.

Another great question: Do permalinks affect how you are listed in the Search Engines? Yes. Check out this article on Yoast for more details… I prefer month and name on the WordPress backend, Yoast says:

The default permalink is ?p=<postid>, but I prefer to use either /post-name/ or /category/post-name/.

Different strokes for different folks I guess. Also, when writing the posts in your post editor, you can use the Visual Editor, or the Plain Text Editor, which can process HTML. From the WordPress.com Support pages:

Note: The HTML code you add must be well-formed and it must be listed in the allowed HTML tags list. You should also be aware that WordPress.com has some code restrictions such as no JavaScript, embeds, or custom forms.

  • How do I embed content form YouTube or Vimeo? You no longer need to worry about the HTML behind the embed, just make sure of the WordPress oEmbeds.

Now that we have content, alive and ready, we install a theme, I like to follow the WordPress Codex for this, and then we ensure that we are editing the live theme in our favourite text editor.

Our theme follows a hierarchy, a template hierarchy… which is a pattern that determines which template file, or php file is used when the user visits a certain page. Learn more about the Template Hierarchy on this sweet data visualization by . This infographic will help us determine which file to edit when we want to change the look of something on the front end.

Custom Login Screen

Some people are enjoying the free time as others catch up… check out some of the sweet customizations on this GIST code by Paul, see some more customizations and code snippets as he adds them on his GitHub profile.

The anatomy of a WordPress theme may seem daunting at first, but it is logical, patterned and similar across almost every theme. So once you understand it, you can see the familiar pieces on each and every theme.

First edits we are making are to footer.php, classic edits to the copyright attribution… Confidence in HTML/PHP is key here… don’t be afraid to try something, and fail… and then fix it. Iterative development is key.

Adding images in the backend of a theme teaches us so many useful skills. From WordPress core functions, to mixing PHP and HTML, to bug tracking and fixing… it is a great introduction into theme edits.

Taking a moment to field questions to get everyone caught up just after lunch.

  • What is MAMP, XAMPP, WAMP? MAMP, XAMPP, WAMP mimc the functionality of a web host. They are software that you can install on your own computer that creates a VIRTUAL server.  This is a great way to create your own web site and develop on your own time/computer etc.
  • Can the sites that we are building locally be moved to a live host in the future? Yes, there is an article on the Codex my favorite tool to MIGRATE is BackupBuddy, it is literally the best for scheduled back ups and migration.
  • Can we review what we have done and get everyone on the same page? Sure, we have created a local server, installed WordPress, and started editing a theme. The theme has several files, that follow the hierarchy. The theme is styled with the style.css file.

Now, we move on to CSS… which is the Cascading Style Sheet that adds the presentational semantics (look and format) to the elements from our PHP and HTML.

We start with changing colors, learning about properties and values, and how selectors work for IDs and Classes. There are some good crash courses on CSS at html.net and codeacademy… I would recommend checking out codeacademy first, because they make learning into a fun fun game.

  • Do I have to type out the loop every time? No way. Coding is lots of cutting and pasting.

Quote I just heard from my amazing group at the back of the room:

I feel so victorious … I was working for a while,  I was stuck on that point and now I figured it out.

Every time I start coding again, I remember how much I love it.

That is exactly what I am talking about. That is what coding is all about.

I am finding that while it is easy to follow instructions the first time, it is difficult to repeatably follow the instructions, or the critical path, even when the application changes slightly.

A good example is that it is very easy to add an image as the header image, as a link back to the front page. But, once it is a matter of adding an image that links back to the homepage into the sidebar, it feels like a different problem, when in actuality it is the same code, in a different context…

The “best” table at #LLCYEG WordPress Edition.

I like to relate the loop to a giant magical lasso. All you need to do is whisper what you wish for, and then cast it into the abyss… then reel in all your wishes.

Adding featured images is the best way to give each post some visual content. The theme that is used on this blog actually depends on featured images extremely, as it is a hyper-visual magazine layout. Also, the featured image allows for consistent styling of the images on posts and pages without considering styling. This avoids the issue of clients that try to align things crazy, or authors that add in images that are WAY TOO BIG.

  • How would I make a theme from scratch to add to my WordPress installation? There is a great lifehacker article that goes through this process… All a theme needs is an index.php and a style.css with the proper theme definitions, and then you can extend from there. But, I would recommend starting with a base framework, like underscores and editing from there.
  • How can I see what styles are applied to each element in the browser? Great Question… check out Firebug and your browsers development tools.

Custom page templates are critical in the custom display of content. It is absolutely integral to ensure that you have set the custom page template header text correctly, as it detailed on this article on the codex.

Widget and Plugins were very briefly covered at the end of the day, these are incredible ways to extend the functionality of WordPress.

  • My site wants to update, but in the past I have had issues with updates conflicting, issues with analytics, and broken code… how can I avoid that? Use an analytics plugin, like Analyticator, make changes to theme template files, or admin panel options.

Final thoughts:

  1. Take a peek under the hood.
  2. Practice, practice, practice.
  3. Ask questions, ask google.
  4. Don’t be overwhelmed, start with a minimum working product.
  5. Try things, make mistakes, fix those things.

Eventbrite API and WordPress Integration

Eventbrite, are you? If so, you are cool. If not, what’s cooler than being cool? (Honestly, is there something better?) Just know that if you are running ticket sales through Eventbrite, then with a little bit of leg work you can get your events listed on your website.

Use Eventbrite to Organize Events

Gone are the days when event organizers fret trying to organize event ticket sales. Eventbrite is the new in-thing among the event organizers who want seamless, hassle free event ticket sales/registrations. From parties, festivals, retreats, political rallies and religious events to fundraisers, conferences, sports functions, performances and concert; Eventbrite will give you the ultimate platform to organize and sell tickets for your event. The platform has sold over 147 million tickets to date.

Creating an Event Webpage on Eventbrite

To use Eventbrite, you need to first of all signup with the platform. After the signup, you will be able to access event creation tools, complete with images, URLs, and logos. The Eventbrite platform offers easy customization and professional tools that can create an attractive event page. People will be able to register and buy tickets from the event webpage portal. Eventbrite offers various methods of payment most popularly PayPal, MasterCard, and Visa among others.

Promoting the Event Webpage

You can make the event public or private, depending on what you want. If the event is public, you will be able to list it in the search engines, social media and the Eventbrite directory (don’t overlook this).

Integration with WordPress

Eventbrite offers a massive API with all the necessary tools to promote your events in any way you want. As the Rapid Fire Theatre site is running in WordPress, it has a PHP backend, and luckily there is even a PHP Eventbrite API Client Library on GitHub to help connect the two (thanks: , and contributors). This library allowed Rapid Fire to run an Events Calendar page, as well as have upcoming events listed on the front page of their site. The integration was simple, but there are a few important points to note, that I wish I know when I was building the connection.

Pull Events from Eventbrite API

Clone Repeating Event Details

This step is integral, as the majority of Rapid Fire Theatre’s events were set up with a repeating schedule.

Remove Events Prior to Today

Build Loop for Events

Create HTML object for each Event

Buy Tickets

* it is interesting to note the markup for the event HTML object, I created a custom class based on the event title, and the date using some simple PHP functions. This gives me the ability to “hide” some of the events. This is necessary, because of a limitation to the Eventbrite repeating event schedule, in that you can not manually remove dates from the repeating schedule. So you have to manually “sell-out” that phantom event, and then “hide” it from your listings. See the full code on Gist.

Managing Entry into the Event

Eventbrite offers its members two mobile apps that are very useful in managing entry into an event. These include the Free Entry Manager App that is used to scan barcoded tickets, or manually check in attendees. The other app is At the Door Mobile Box Office App that is used to sell and collect tickets at the entrance of the event venue. (This is still not available in Canada, get on that Eventbrite, okay?) If you are still selling tickets the old-fashioned way, sign up with Eventbrite now

WordPress 3.5 and the Race to 1 Million Downloads

WordPress is the future of web publishing.

Eventually, a syndication of personal content sources will motivate users to aggregate their outputs, and maintain their inputs personally.

I, and all these people, seem to have faith in the WP system. WordPress is the engine that could power a transformation of the social web from feeder (my Twitter and facebook) and aggregation to localized containment, personal responsibility, and unified personal content.