Friday, February 25, 2011

My tips for speaking

I've been presenting on the job since 1999. I've been presenting at conferences since autumn of 2008. I've got some tricks I've picked up over the years. I'll be using these tricks (and more) at PyCon, so you'll be able to see and judge them in action.

Black text on white background

Remember the old days of Geocities when people had purple backgrounds with yellow text? Or dark green backgrounds with white text? Or crazy fonts? We make fun of that sort of thing now. Unfortunately, I've seen presentations done that way in the recent past and so have you.

Yup, background colors that look great on a laptop or monitor screen often lose something in the transition to a projector. You can't predict what the venue will give you in regards to quality/brand of projector, so why take unnecessary risks?

So I stick with the classic of what people have been doing forever. I choose the lightest possible background, the darkest colored text, and I use the default font of the slide software. Maybe its not fancy or artistic, but my message isn't obfuscated by forcing people to squint to see slides reinforcing what I'm saying.

Fear the command line!

The sucky thing about giving a tutorial is that you have to touch the command-line. And something invariably goes wrong. If you do have to use the command-line remember the following tips:
  • White background and black text and increase the size of the text. I don't care if you prefer to code with a black background with tiny green letters - your audience simply won't be able to follow you as easily. Since I heard a Walt Disney Animation Studios technical lead have the same opinion, I now feel empowered enough  to complain after any talk featuring an unreadable shell.
  • Try to fake the command-line. I've heard player piano is a great tool for doing that and will save you from that minute of silence when you try to figure out what you did wrong.
Don't read the slides to the audience

Listening to someone read the content off a slide is dull. I try to say anything BUT what is on the slide. When I do it speak the content of a slide exactly its because I'm purposefully breaking my pattern to make a point. Or to be silly because I'm getting tense.

What you should be doing is using the slides to remind yourself of your next point. Think of them as notes for your speech, not the speech itself

Bullets are dangerous

Bullets are live ammunition. Even in small quantities they can kill a talk. They can put an audience to sleep, cause them to start checking twitter, or even leave. So I use bullets very sparingly in presentations (classes can be different) because of their potency. Because of their inherent silliness I tend to use bullets in self-deprecating humor.

A better tactic than bullets is to create a subject header on a number of slides and put a single bullet under that subject header. So instead of one (1) slide about 'Python' with bullets of 'Monty', 'Guido', and 'Spam', I like to have three (3) slides each with a header of 'Python' and the content simply being 'Monty', 'Guido', and 'Spam'.

Sixty seconds per slide

If you wait too long your slide will become boring to the audience and their brains will drift. This ties right into the problem with bullets. Keep things moving along.

Be rested, fed, and sober for your talk

Skip the late night party and get a good night's rest. The day of the talk eat food that makes you feel physically better.

In January I went to a talk where the speaker was presenting on a technical matter with beer in hand. Maybe he thought it was hip, but his talk sucked. He got out of sync with his slides and stumbled around his own thoughts.  Not only was the talk of poor quality but it was disrespectful of the speaker.

Needless to say, the audience was very grumbly about the 45 minutes they wasted.

That was a terrible shame because his slides were pretty good. I bet if he had been sober that talk would have rocked.

If people ask questions during the talk, ask them to wait until the end

They'll break your pace, rhythm, and timing. If they can't wait until the end then they now fall under my definition of heckler and are not worth answering anyway.

Be nice to people who come up to you after a talk

You never know who is that new person who comes up to you. Maybe they are planning to blog about you or write about you in the press. Maybe they are a possible business or job lead. Maybe they are someone who wants to throw a gajillion dollars at you. Be nice to them and you'll find out. Try to find time to talk to everyone, even if for just a minute each.

Thursday, February 17, 2011

My Django tutorial at PyCon

Working on my tutorial slides for my PyCon class/tutorial/workshop last night I suddenly came to a stark realization.

Out of dozens of slides, only 5 of them are Pinax specific.


I think this is because the slides are a condensed version of what the best and brightest in the Django and Python community think are good practices and tools. What do I mean?
So what does this mean?

Well, I've been rethinking the mantra "Pinax is Django".  It is hard to say that when users of django-cms and satchmoproject and other frameworks can't use core Pinax components. That said, users of those tools tend to rely on same foundation: Python, Django, virtualenv, and pip and growing ecosphere of Django Packages.

Which leads me to realize that with just 5 slides pertaining to Pinax material in the tutorial, the Pinax Solutions class could be renamed "Django Solutions class with a bit of Pinax".

And this makes a lot of sense. Some of the bits that made Pinax special such as static media handling are now part of Django as of the forthcoming 1.3 release. Lessons learned from Django Uni-Form which grew out of supporting div-based forms in Pinax are helping determine the path of forms work in Django 1.4. Which means that if you are using django-cms or other CMS, django-shop or other e-commerce tools, then you are benefitting from what Pinax has done for the community.

All of this leads to my closing statements about the class/workshop: The class is about Django with a little bit of Pinax tossed in. Having in the past worked with multiple non-Pinax projects, I can assure you that the solutions presented and the workshop itself will be of use to you regardless of if your project is using that framework.

Monday, February 14, 2011

My Pinax Solutions class at Pycon 2011

Heavily inspired by Zed Shaw's Learn Python the Hard Way class I'm changing the lecture style format of the Pinax Solutions class at PyCon 2011 to a more workshop-oriented format.

Which means that the first half of the class we (myself and the peerless Brian Rosner) will spend on material critical for people new to Pinax or old hands who want to see what 0.9 offers. That means setting things up via virtualenv and pip, Pinax specific settings, media handling, template layout, extending core Pinax apps, use of idios to change profiles, openid/openauth, Django Packages to find Pinax approved stuff and more. That will be the foundation and our slides/handouts will be useful as cheat sheets for these critical parts in any Django application.

The second half of the class will be a workshop. We'll spend the next half helping people with their personal projects, and will even have a few stock projects we can toss at people that either already are open source or could be released as open source. We won't write your project for you, but we will provide advice, guidance, and some elbow grease in getting things to work. If someone asks for something that we think the rest of the class could benefit from, we'll show them how to do it on the projector and then everyone benefits.

After the class, I'm free the rest of the day so I'll continue helping people even after the tutorial is officially over. Thursday (March 10th, 2011) after lunch I'll be also available to provide aid and support.  Anyone else can join but those who attended the Pinax Solutions tutorial will get precedence.

During the main body of the conference I'll be attending talks and giving a couple myself so my time to provide aid will likely be completely curtailed.

I will be there at the sprints working on various Pinax and Django projects.

If time permits we'll go over deployment, but I recommend Jacob Kaplan-Moss' Python/Django Deployment Workshop if you want a full treatment of the subject.

Note I: If you've already signed up for the Pinax Solutions tutorial, you should be getting an email from the PyCon tutorial staff shortly.

Note II: If you are new to Python, I recommend that you take any of the basic Python tutorials at PyCon instead of this class.

Saturday, February 12, 2011

How to sell Python panel at Pycon

Do you want to use Python but are you fighting Fear, Uncertainty, and Doubt (FUD) in your organization? Does any of this sound familiar to you?
  • Python is just a scripting language.
  • Python is too new to use in real production environments.
  • Language X has better benchmarks doing obscure math so it is better for web development.
  • Python sounds great but we've already spent so much on this expensive tool that does things badly!
A lot of people want to use Python, but their customer, management, school, government, or organization won't let them. Python is a great tool, but can be challenging to get in the door. This panel will explore how companies and individuals have successfully introduced Python, what tools are available to sell Python, how to fight the good fight, and what pitfalls there are to avoid.

Panel Questions
For this event at Pycon I've got some stock questions ready but I want the community at large to suggest some more.

For this panel I choose five speakers from the broad categories of academia, government, commercial organizations, and non-profit who have had a known impact in their organizations:

C. Titus Brown is an Open source hacker, Artificial Life/Digital Evolution, B.A. Math (Reed), Earthshine research, Ph.D. Developmental Biology and Regulatory genomics (Caltech), Python testing tools, Python Software Foundation member, Assistant Professor (Michigan State U.) - dev bio, genomics, metagenomics, software engineering. 

Note: A lot of my personal understanding on how to do web tests outside of Selenium is thanks to a Pycon tutorial given by Dr. Brown and Grig Gheorghiu back in 2008. 

Chris Shenton is a partner at Koansys LLC, a consulting company whose clients include US Federal Government agencies, Internet startups, and non-profit organizations. He is a free software and UNIX bigot, advocating for the use of both in organizations large and small. He's been involved with the Washington DC area's Python/Zope/Plone user group ZPUGDC for years, and recently was appointed to its board. 

Note: Chris has the dubious honor of introducing me to Python in 2005 and was pivotal in promoting the adoption of Python for use in NASA's Science Mission Directorate. 

Large BusinessThe Vice President of Engineering at Evite/IAC, Dan Mesh is the person credited by other Evite staff with bringing Python to life in that business. 

We used Evite for our just passed LA area hackathon and plan to use it for future events. 

Non-Profit Organizations
Rich Leland is an Application Architect at National Geographic where he uses Python on a daily basis to work on and its ecosystem of web sites. He is also the founder of django-district, a group for Django users in the Washington, DC area. In the past life he worked for Discovery Channel as Designer and Lead Web Developer. 

Small Business
Frank Wiles is President of Revolution Systems, Lawrence, KS. Expert in Internet infrastructure scaling and performance. Primarily focused on Django and PostgreSQL. 

Note: I credit Frank with providing me with a great opportunity to work with an awesome code base but also the encouragement and support to get me through my first year as a freelance consultant.