Blog

  • SEO Is Not A Product

    One of my biggest business frustrations in 2009 has centered around Search Engine Optimization (SEO): peoples fundamental misunderstandings of what SEO is, what it theoretically accomplishes, and the large number of shysters scaring businesses into pursuing activities not nearly as important as they are made out to be. Inquires usually go like this..

    Preston,

    My business–ACME Tires–has a basic website for customers with our logo, contact information and such, and am interested in generating more business out of it. I have asked a few people for recommendations and am now talking to several SEO providers that can provide service ranging from $100-$1,000/month. What do your SEO services cost and what guarantees do you make? (I need to be #1 on Google.) Thanks,

    Alice

    My initial natural inclination is to leer at my computer monitor and internalize a snide response, however, it’s not the customers fault for having a convoluted understanding of SEO, so I often send a polite, brief response, from a science and engineering standpoint. At this point, the recipient usually dismisses the information and goes about spending 1000% more than they should on services. Here’s the lowdown in plain English..

    Legitimate Motivations For SEO

    ACME stands to see legitimate value in several key ways from having their web presence tweaked by an “SEO expert”. Notably:

    • Higher rankings in Search Engine Results Pages (SERP). When I search for “tires phoenix, az”, ACME wants to come up as the #1 organic search result. This increases visibility over competitors and thus increases the liklihood that the searcher will click on the ACME page synopsis (and be directed to the ACME website).
    • Low Advertising Costs. When ACME uses Google AdWords to pay for ad placement in search engine results pages, Google must determine an appropriate cost for a click-through event on the ad. (In other words, ACME will pay Google whenever a user click on an advertisement and is directed to the ACME website.) The algorithms for making the cost decision are not public information, but are based partly on relevance of content. If Google thinks ACME Tires is the best thing since sliced bread, costs will be lower than if Google thinks ACME is a bakery or jeweler.

    Illigitimate Terminology

    The very legitimacy of the term and notion of “Search Engine Optimization” is debatable. The core function of a search engine is to guide people to content in such a way that the “right” resources can be found using brief, relevant terms. The job of the ACME Tires website is to provide information and services to ACME customers regarding tires. It is not ACME’s job to be an expert in the search engine marketplace. It could be argued, then, that the notion of SEO is a moot point, as it should be the job of the search engine vendor to figure out how to best index and present content in an optimized way. This being said, the Developer of the ACME website does have a list of technical tasks that need to be done to assure that content is well indexed and legitimate best practices are used–which I will not go into here–to put the most important site concepts at the forefront of search engine visibility. But we should NOT think:

    1. the ACME website is part of the search engine itself,
    2. the site cannot be “picked up” by search engines without extensive blackhat techniques, or most importantly,
    3. it is ACME’s job to make sure search engines (Google, Bing, Yahoo! etc.) function properly.

    The term “optimization” as used by most SEO companies can be better described as “gaming”. Search Engine Gaming (SEG) is a more accurate term than SEO because it reflects that the intent of site tweaking is to gain marketing favor, and improving content from the standpoint of the consumer is of secondary concern, if at all. From this point forward I will refer to activities that both improve marketing value and improve content consumability as “SEO”, and activities that improve marketing value but are indifferent to or negatively impact content as “SEG”.

    Blackhat SEG Shysters

    An unfortunate number of sleezeballs sell ethically questionable “SEO” services. This is not to say that there isn’t technical work being done nor that they cannot show marketing results, but they choose to do so in ways that make reasonable engineers cringe in disgust. No definitive list of “black hat” activities is completely agreed upon, and as with issues like U.S. health care, it’s a highly subjective topic wherein opinions greatly vary. Unfortunately, those that have the most to gain (vendors) are often leading the debates and giving the seminars, which is skewing public perception of SEO and what is/isn’t necessary. Common activities that I consider black areas (or grey, at best) include:

    • Keyword Stuffing. One of the easier ways to increase SERP placement is to cram as many important keyword and search phrases into your website as possible. I personally define keyword stuffing to be, “Page copy intentionally packed with a set of repetitive phrases to the point of becoming frustratingly redundant, difficult to comprehend, or otherwise awkward to read.”
    • Referrer Parsing. Whenever you click the ACME ad, the server running the ACME website knows the website from whence you came. When you come from a search engines, the site may be able to determine the search terms you used to find the link. This detection can all happen before the ACME website is rendered, which means when you search for “tracktuff tires, az” and click through to the ACME website, the ACME webserver can dynamically generate a headline reading “TrackTuff Tires Now 50% Off In Arizona!”, regardless of how relevant the “tracktuff” name or brand actually is to the ACME website. Now, for some reason, all the SEO consultants I’ve met that are doing this seem to think they invented it. (Seriously, I even know one guy that’s trying to get a patent for it.)
    • Automated Article Submission. Databases of articles are a great place for users to do general research and discovery. If you’re automating “article” submission to hundreds of databases simultaneously, however, you’re submissions will almost certainly be little more than biased PR and marketing content oriented towards getting links to ACME. Actually, there are many “article databases” that fully acknowledge and support this as a way to increase visibility of their own ads.
    • Automated Link Generation. Business adopting social media as a form of customer service and marketing often complain of the time required to pursue the natural creation of inbound links. This makes the business very receptive to vendors claiming to have solved the “social media time commitment problem” by automating responses to social networking and social media comments. To an engineer, doing so obviously misses the whole point of social media/social networking technology and is another form of spam. Additionally, the value of doing this on blogs and forums is next to nothing (due to the rel=”nofollow” attribute). Plus, the best links will generally come from partner websites and large-scale references in protected, reviewed publications such as journals and newspapers, which cannot be automatically generated for obvious reasons. In short: it’s pretty safe to consider automatic link generation a form of spam.
    • Email Spam. This is obviously a Bad Thing to do, but that doesn’t stop tons of vendors from doing it legally. The U.S. CAN-SPAM act does not require people to explicitly opt-in to be put on a mailing list, given they have some form of “relationship” with the company. Also, certain types of organizations–notably religious and political–may be exempt from some of these laws entirely.

    Stupid Guarantees

    A SEG company making a “#1 on Google in 24 hours!”-type claim is almost certainly using blackhat techniques and/or getting you prime placement for a term so long and specific to the point of being useless. For example, it shouldn’t be surprising that “acme tires phoenix arizona” would turn up the correct page first on a search engine, because:

    1. the intent of the searcher is almost certainly to find this one specific business website, and
    2. there are probably only a handful of resources on the web that match these terms well.

    A search engine like Google might even return a map to the store in the first results page. Getting #1 placement for “tires arizona”, however, will be much more difficult since the search phrase will match many more web resources than the first, and, from the perspective of a small business owner, some of the competitors will have the time and money to put magnitudes more content online, and supplementing that content with marketing campaigns and PR.

    Closing Thoughts

    SEO/SEG is a technologically and ethically grey area, and vendors not defining clear boundaries of what they do for your money should generally be avoided. Do spend some effort making sure copy and syntax of website pages are thoroughly written, well-designed for usability and structured for search engine comprehension. But instead of paying a monthly service contract to an “SEO guy”, put that money into continued development of content that will please existing customers and help attract new ones. Pay attention to your placement in search engine results, sure, but at all times, stay focused on building value and meaningful business relationships over click-through rates and SERP rankings.

  • Drawing Basics – Week 2

    I recently started a novice-level drawing class with the goal of sucking less. Note the subtle distinction here; I’m not trying to get good at drawing, just less horrible. This allows me to preserve my self-esteem despite everything looking like the Fail Whale… that ironically I can’t draw, either.

    I’m taking this class with Erica, who decided to cheat by taking four years to preemptively get a BACHELORS in freaking ART. Good thing, too, because it would have been much harder for her to be an art TEACHER without that background. Whatever. It basically goes like this**:

    Erica: Good job, Preston!
    Preston: (Proudly) Thanks! What’s…that.
    Erica: Oh this? It’s supposed to be a 19th-century steel teapot on a French patio in January. But it looks more like February.
    Preston: …
    Erica: …
    Preston: I hate you.

    (**May not have actually happened.)

    Anyway, here are my second attempts at drawing bottles.. and stuff. I’m happy to report that these suck less than week one! Mission accomplished.

    drawing_basics_week_2-1

    drawing_basics_week_2-2

  • Will You Be My BFF?

    For those of you riding the social media train, let’s connect!
    Personal Links
    Twitter http://twitter.com/prestonism
    Blog http://prestonlee.com
    LinkedIn http://www.linkedin.com/in/prestonvictorlee
    Facebook http://www.facebook.com/prestonism
    Professional Links
    OpenRain Blog http://blog.openrain.com
    OpenRain Twitter http://twitter.com/openrain

    For those of you riding the social media train, let’s connect!

    Personal

    Professional

  • Google AdWords Account Access: A Cacophony Of Stupid

    If I haven’t blabbed your ear off already, OpenRain has a small business web presence product called the Online Business Platform. It’s a big deal as it’s fairly unique in many different ways.
    Anyway, the the upper service level options include consulting and advisement on advertising with Google AdWords, which means we generally need access to the clients AdWords account to monitor progress and such.
    The problem is that AdWords accounts have the idiotic restriction of allowing a given email address to be tied to only one AdWords account. In other words, preston.lee@example.com can be granted access to OpenRain’s Adwords account, but not client accounts nor other side-project accounts. Google Analytics, on the other hand, allows for a single email address to manage multiple Analytics accounts in a much saner manner. Considering the amount of revenue Google generates from paid Internet marketing, accessing multiple AdWords accounts is a 7-layer stupidburger with extra retard sauce. I’m sure there’s a wonderful technical rationale that generates rainbows of technical applause, but as a user I couldn’t care less.
    To answer the “How do I manage multiple AdWords accounts?” question, Google created My Client Center (MCC): essentially an AdWords account management aggregator. The kicker? To create an MCC account–and yes, it’s a separate account–you can’t use the email address for the account(s) you’re trying to aggregate. We ended creating a silly AdWordsIsStupid@example.com email group and use that email address to create the MCC, which is turn gets granted access to your different AdWords accounts that are, again, all tied to different email addresses.
    So when I say AdWords account access is a cacophony of stupid, I mean it. N+1 email addresses required-level stupid.

    If I haven’t blabbed your ear off about it already, OpenRain has a small business web presence product called the Online Business Platform. It’s a big deal as it’s fairly unique in many different ways.

    Anyway, the upper service-level options include consulting and guidance on advertising with Google AdWords, which means we generally need access to the clients AdWords account to monitor progress and such.

    The problem is that AdWords accounts have the idiotic restriction of allowing a given email address to be tied to only one AdWords account. In other words, preston.lee@example.com can be granted access to OpenRain’s Adwords account, but not client accounts nor other personal side-project accounts. (Google Analytics, on the other hand, allows for a single email address to manage multiple Analytics accounts in a much saner manner.) Considering the amount of revenue Google generates from paid Internet marketing, maintaining access to multiple AdWords accounts is a 7-layer stupidburger. I’m sure there’s a wonderful technical rationale that generates rainbows of technical applause, but as a user I couldn’t care less.

    To answer the “How do I manage multiple AdWords accounts?” question, Google created My Client Center (MCC): essentially an AdWords account management aggregator part of an optional “Google Advertising Professionals” program. The kicker? To create an MCC account–and yes, it’s a separate account–you can’t use the email address for the account(s) you’re trying to aggregate. We ended creating a silly AdWordsIsStupid@example.com email group, and used that email address to access the MCC dashboard, which is turn gets granted access to your different AdWords accounts that are, again, all tied to different email addresses.

    So when I say AdWords account access is a cacophony of stupid, I mean it. N+1 email addresses required-level stupid. Bad Google!

  • Radio Spot: Are you Social? The Social Media/Job Search Connection

    career_launchThis morning I had the pleasure of doing a guest spot on Career Launch with Jane & Al: a VoiceAmerica Variety show airing live every Monday from 8-9am. Today’s discussion was on the role of social networking tools in the employment process.

    Lots of capable people are finding themselves particularly hard pressed to find jobs right now, being in the midst of a recession and all, so if you’re interested in learning how social networking tools (LinkedIn specifically) can be incredibly beneficial for your career, check it out!

    [Stream on the web.] [iTunes podcast.] [Direct MP3 download.]

    Full disclosure: Jane & Al–the hosts of the show–are clients and friends. OpenRain developed the Compass Consulting Team website.

  • Guest Spot On "Career Launch"

    On Monday, July 13th at 8am I’ll be doing a guest spot on the “Career Launch with Jane and Al” internet radio show. I’ll be present to discuss the role of social networking and social media tools in the career advancement process: specifically LinkedIn and Twitter. Compass Consulting Team (run by Jane and Al) is an OpenRain client, and they are insanely positive and fun people with which to converse. I’m highly looking forward to it!

    [episode permalink]

    Show some love and try to catch the show live!

  • Recovering A Corrupt OpenLDAP Database On OSX Server

    Recovering A Corrupt OpenLDAP Database On OSX Server
    Last night we noticed some services provided by an OSX Leopard Server instance were not working correctly. The iChat, AFP and Web services were not authenticating. In Server Admin.app, the “Overview” tab of the Open Directory service reported…
    LDAP Server is: Not Running
    Password Server is: Running
    Kerberos is: Not Running
    Looking at the server error logs through Console.app, the following was occuring every 10 seconds..
    com.apple.launchd[1] (org.openldap.slapd[27382]) Exited with exit code: 1
    com.apple.launchd[1] (org.openldap.slapd) Throttling respawn: Will start in 10 seconds
    The slapd daemon appeared not to be starting. Jumping to the command line, I tested the configuration using the `slapd -Tt` command.
    core:openldap admin$ sudo /usr/libexec/slapd -Tt
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    bdb(dc=openrain,dc=com): PANIC: fatal region error detected; run recovery
    bdb_db_open: Database cannot be opened, err -30978. Restore from backup!
    bdb(dc=openrain,dc=com): DB_ENV->lock_id_free interface requires an environment configured for the locking subsystem
    backend_startup_one: bi_db_open failed! (-30978)
    slap_startup failed (test would succeed using the -u switch)
    http://discussions.apple.com/message.jspa?messageID=9548971
    With a little research, I concluded that..
    The OpenLDAP database had been corrupted, and..
    The `slapd_db_recover` tool (as present on some Linux installations) is instead named `db_recover`. Ah!
    After carefully backing up the /var/db/openldap folder, I ran the recovery tool and re-tested the configuration..
    core:openldap admin$ sudo db_recover -h /var/db/openldap/openldap-data/
    core:openldap admin$ sudo /usr/libexec/slapd -Tt
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    config file testing succeeded
    The errors in Console.app stopped, and the Server Admin.app panel started reporting..
    LDAP Server is: Not Running
    Password Server is: Running
    Kerberos is: Not Running
    I had to restart the AFP, iChat and Web services on the machine to get everything working again, but all seems well now.
    Last night we noticed some services provided by an OSX Leopard Server instance were not working correctly. The iChat, AFP and Web services were not authenticating. In Server Admin.app, the “Overview” tab of the Open Directory service reported…
    LDAP Server is: Not Running
    Password Server is: Running
    Kerberos is: Not Running
    Looking at the server error logs through Console.app, the following was occuring every 10 seconds..
    com.apple.launchd[1] (org.openldap.slapd[27382]) Exited with exit code: 1
    com.apple.launchd[1] (org.openldap.slapd) Throttling respawn: Will start in 10 seconds
    The slapd daemon appeared not to be starting. Jumping to the command line, I tested the configuration using the `slapd -Tt` command.
    core:openldap admin$ sudo /usr/libexec/slapd -Tt
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    bdb(dc=openrain,dc=com): PANIC: fatal region error detected; run recovery
    bdb_db_open: Database cannot be opened, err -30978. Restore from backup!
    bdb(dc=openrain,dc=com): DB_ENV->lock_id_free interface requires an environment configured for the locking subsystem
    backend_startup_one: bi_db_open failed! (-30978)
    slap_startup failed (test would succeed using the -u switch)
    With a little research, I concluded that..
    1. The OpenLDAP database had been corrupted, and..
    2. The `slapd_db_recover` tool (as present on some Linux installations) is instead named `db_recover`. Ah!
    After carefully backing up the /var/db/openldap folder, I ran the recovery tool and re-tested the configuration..
    core:openldap admin$ sudo db_recover -h /var/db/openldap/openldap-data/
    core:openldap admin$ sudo /usr/libexec/slapd -Tt
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    overlay_config(): warning, overlay “dynid” already in list
    config file testing succeeded
    The errors in Console.app stopped, and the Server Admin.app panel started reporting..
    LDAP Server is: Running
    Password Server is: Running
    Kerberos is: Running
    I had to restart the AFP, iChat and Web services on the machine to get everything working again, but all seems well now.
  • iCal Domain Account Errors For New Events

    Over the past couple weeks I’ve had issues getting my OSX 10.5 iCal client to continue working properly with our centralized CalDav server. I stopped being able to invite other domain users to my events as well as reserve “locations”, despite all my personal (non-domain) calendars continuing to work properly. I noted these iCal errors in Console.app…
    *** -[NSConcreteTextStorage attributesAtIndex:longestEffectiveRange:inRange:]: Range or index out of bounds
    CalDAVOperationQueue tried to dequeue operation <CalDAVScanDropBoxQueueableOperation: 0x174eb6a0> but it was not at the front of the queue.
    When I tried to delete my domain account within iCal’s preferences, the application hung. When restarted I could no longer bring up the preference dialog and saw this error repeated in Console…
    *** -[NSURL initWithString:relativeToURL:]: nil string parameter
    Apparently deleting everything in ~/Library/Calendars and starting fresh is one solution. I have years worth of notes and interesting tidbits that I need to keep, however, so simply deleting all my data was not an option. With some educated guesswork, trial and error, I discovered that the following steps seems to make everything work without apparent data loss or corruption..
    Quit iCal.
    Go to ~/Library/Calendars and backup the entire directory, just in case.
    Delete all “Calendar Cache” files as well as any directory ending in “.caldav”
    Start iCal. It may give you a progress dialog about “Upgrading Calendars”. I think this means it’s rebuilding the cache file.
    Go to “iCal -> Preferences…” and delete/readd your domain account.
    Wait for the domain account to resync and you should be go to go.
    Hope this helps!

    appleOver the past couple weeks I’ve had issues getting my OSX 10.5 iCal client to continue working properly with our centralized CalDav server. I stopped being able to invite other domain users to my events as well as reserve “locations”, despite all my personal (non-domain) calendars continuing to work properly. I noted these iCal errors in Console.app…

    *** -[NSConcreteTextStorage attributesAtIndex:longestEffectiveRange:inRange:]: Range or index out of bounds

    CalDAVOperationQueue tried to dequeue operation <CalDAVScanDropBoxQueueableOperation: 0x174eb6a0> but it was not at the front of the queue.

    When I tried to delete my domain account within iCal’s preferences, the application hung. When restarted, I could no longer bring up the preference dialog and saw this error repeated in Console…

    *** -[NSURL initWithString:relativeToURL:]: nil string parameter

    Apparently deleting everything in ~/Library/Calendars and starting fresh is the easiest solution. I have years worth of notes and interesting tidbits that I need to keep, however, so simply deleting all my data was not an option. With some educated guesswork, trial and error, I discovered that the following steps seems to make everything work again without apparent data loss or corruption..

    1. Quit iCal.
    2. Go to ~/Library/Calendars and backup the entire directory, just in case.
    3. Delete all “Calendar Cache” files as well as any directory ending in “.caldav”.
    4. Start iCal.
    5. It may give you a progress dialog about “Upgrading Calendars”. I think this means it’s rebuilding the cache file.
    6. Go to “iCal -> Preferences…” and delete/readd your domain account.
    7. Wait for the domain account to resync and you should be go to go.

    Hope this helps!

  • How To Prepare For Ignite

    ignite_phoenixI recently had the pleasure of speaking at Ignite Phoenix 4, and thought I’d share my perspective to those presenting in the future.

    See, all my life I’ve been in performing musical groups–rock bands, solos with larger concert bands, marching bands etc.–so despite being introverted to a fault, I’m not easily intimidated by anything in the “performing arts” category, and am usually up for giving things the old college try. Within the past couple years I’ve become accustomed to speaking regularly at various city events, local tech groups, conferences etc., so I initially shrugged off the preparation as something I could bust out in an hour or two over a Heineken… or two.

    I was wrong.

    Now, I’m not dumping this information on you because you need to know my life history, but to strongly emphasize that even if you took Public Speaking in college, have performed literally hundreds of times in public, and have plenty of real-world speaking experience…

    Preparing for Ignite is different.

    It’s a wonderfully unique and fun experience, but I put more effort into my five minutes of Sun Tzu: The Art of…Business? than I usually do for 30-45 minutes of less creative informational content. Let’s look at why…

    (1) Delivery timing is your biggest risk of failure.

    Ignite fully automates the progression of slides; you cannot control advancement to give yourself even +/- 1 second. Also, for Phoenix at least, there’s neither a warning for how much time remains on the current slide, nor a preview of the next slide. If you’re accustomed to board-room style speaking with a forgiving remote, secondary screen full of notes/widgets, and 5-10 minutes of “padding” at the end, the Ignite format is a cold glass of water to the nether regions.

    With a remote, keeping your verbal momentum lined up with slide advancement is relatively easy. You know exactly when your verbal punchline is going to come, and just hit the remote a split second before you say it. But in Ignite, the only way to get your voice and slides anywhere even remotely in the same synchronization ballpark is to practice the bloody hell out of it way ahead of time.

    And when you’re done practicing, take a break and practice some more. Practice going slower and having to catch up. Practice going too fast and having to ad lib a few extra sentences here and there to fill “dead air”. Practice without any “next slide” or timing aids. Lather. Rinse. Repeat.

    This is not to say that you should script the entire thing. Scripting sounds unnatural and dull. You should, however, know the subject matter inside and out, and know the outline and “story arc” of the presentation so that when you stumble on words or get out of sync, you’ll be able to recover.

    For the audiences standpoint, your level of preparation will be abundantly clear. It’s obvious who didn’t have a verbal outline prepared; who didn’t practice for pacing; who did prepare but can’t handle being over/under time; how generally hard it is to time yourself versus a computer.

    And much of this practicing should occur before your slides are due.

    (2) Your slides need to be completed waaaay in advance.

    Ignite isn’t the only event that requires final decks to be submitted in advance, but I know that many of you are in the habit of staying up ’til 4am day-of putting the (hopefully) finishing touches on slides. You can’t do that. The Ignite superheros need your slides early to prepare their technical voodoo, and asking them to update a few slides at the last minute would be very, very lame of you. Getting your slides prepared and finalized early is critical since you can’t practice delivery without them, and once they’re submitted you should assume that you can’t change them.

    Get peer feedback before you submit your slides. My thanks goes out to Erica, Ben and Marc at OpenRain for providing the “you’re trying to say way too freakin’ much” feedback … it made the end result much better than it would have otherwise been. Peer review is always difficult to do, but discovering why you’re epically fail-sucking is the only gateway to improvement.

    (3) You don’t get to rehearse in the venue.

    The Ignite (Phoenix) folks want to keep your delivery fresh, natural, and full of adrenaline to showcase your passion. This is a good thing. Just be aware that you probably can’t walk out on stage beforehand for a quick run-through by yourself.

    (4) Your bar is high.

    In general public speaking, the audiences wants you to succeed. And when you’re speaking to an audience that is present for your message–such as Ignite–they’ve already built expectations of how awesome your message and delivery will be. If the message(s) couldn’t sell, there wouldn’t be an audience. You are expected to be awesome.

    I’ve yet to meet anyone that says “Ignite sucks”, but have heard plenty of “Oh, it was awesome, but remember that one guy/gal? He/She was horrible.” Don’t be that guy/gal whose idea of originality is to do zero preparation and just “wing it” or divert from the slides in a otherwise distracting, unprofessional mess. People come to see great ideas from passionate, knowledgeable people, and it’s going to take some work to get that across in Ignite’s concise format.

    Ignite preparation checklist. (Sorted by due date.)

    1. Well thought out proposal submitted.
    2. Talk accepted.
    3. Slide draft and verbal outline complete.
    4. Peer rehearsal and feedback.
    5. Adjust.
    6. Final sanity check.
    7. Submit final slides.
    8. Practice.
    9. Sit in parking lot for 15 minutes before event practicing by yourself. (Strange looks from passers by expected!)
    10. Be excellent.

    You have the idea and the passion. Now go show us! (Just keep it brief.)