Wordcamp SF 2010

Session 1: Scott Berkun Notes


On history of writing:

  • What put in the box is important (compare – the wordpress box) – compare to Thomas Payne’s Common Sense
  • WordPress…ability to express ideas and freedom to express whatever want.
  • Great software – all I have to worry about this – great software makes it the future of writing.
  • Thomas Payne quality of writing in WordPress.

Future of WordPress:

1. WordPress is platform for revolution.

  • What platform would you use today if you were Payne?
  • WordPress is natural place to go and express ideas

2. What happens before you die? - WordPress 2020: WordPress will be simple, powerful and safe forever. – Scott’s hope.

  • Certain problems you only get after being successful after having lived a certain time…
  • Same with software – you only discover certain things after a million users and multiple versions
  • Can go back and make it better.
  • Lessons:
    • All people and software get crusty with age
    • Hard to make simpler after have so much robustness
  • Lessons from MS Word evolution
    • Trasition cost: price of relearning a better design
    • Growth (& revenue) reqquires new users
    • Power users needs diverge from New users
    • 10% rule (everyone uses 10% but different 10%)
    • Meta-UI (clippy, wizards, smart-menus) is meta-hard
  • User design – how many clickable things are on the screen – keep it simple!
  • Now wordpress – as it has grown, user interface has grown in clickable items…

Future of wordpress -

  • Lessons
    • the more users, the more diverse the usage
    • and the harder it is to satisfy all of them
    • rough #s: ~10% UI WP growth per release
  • Copouts include:
    • we won’t touch this again (Lies!)
    • Betting on people will customize (Maybe 10%)
    • Plugins are the answer (see next slides)
      • The killer feature is dead! Mindset of software developers. What makes deployment cheap is you can add stuff to your software later. Apps! The downside problem….
  • Plugins in WordPress:
    • Limbo state of plugins – upgrades can be dangerous.
    • Can’t BET future on plugins. Even tech-savvy can be bit by plugin risk failure.
    • Plugins can be double-edged sword – can’t bet business on a plugin that may not be maintained or fixed.
    • Need some pool in the plugin community to keep plugins alive and not in limbo state between plugin worlds.
    • Safety and security model for consumers needs to be better regulated.

What happens before you die?

  • WordPress will be simple, powerful and safe forever. – Scott’s hope.

There are three kinds of WP users

  • Consumer – I write a blog – yay!
  • Developers – I make blogs for people
  • Enterprise – I run high end large scale blogs
    • (People who work for Automattic)

Whenever anyone says “WordPress should do X”

  • translate to: It would be best for me!

So feedback from users:

  • Keep it simple
  • Be a better writing tool:
    • Shouldn’t be possible for an admin to destroy their own tool
    • Make “if you delete this the sky will fall on your head” message before it happens
    • Piles on the web: 80% consume/10% communicate / 8% collaborate / 2% create
    • WP focused on 2% – which it does well
    • creating in 2010 overlaps with the other three – can WP be taken advantage?
  • I and another WP designer who shall remain nameless, both believe WordPress will take over the Internet. – Tammy Heart (Mitch Canter – nameless guy

3.Best of the rest

- Take aways from Scott’s presentation:

  • Platform for revolution – technology enables something – what needs to be said and how can it be said better – hinges on what PUT IN THE BOX in WordPress – what you write.
  • Simple, powerful and safe – PLUGIN SPACE IS PRESSING
  • Complete world domination

Session 2: WordPress, Audience Engagement, and SEO – Vanessa Fox @vanessafox

(Wrote xml sitemap for Google, worked on SEO for Google)

1: Search Landscape – SEO Culture

  • Get focused on optimizing our blog, our site but sometimes get so fixated on that we forget why expend energy on it – AUDIENCE ENGAGEMENT – will increase your readership.
  • We all search
    • 1 billion internet users worldwide – 86% use a major search engine when shopping online
    • Search as the primary navigation point of the web
    • Changing consumer behavior to searches
    • Google – beyond 10 blue links – lists of what category to search on the left
    • real time search results in Google
    • searcher browse behavior -
      • TIP: using descriptive headlines – having a title that actually says something makes a huge difference
      • Traditional navigation – home page and tree structure down from home….hmm…how now?
      • Ideal situation for search – search for something, and find page – doesn’t happen that way in world – no one searches for that term….
      • TIP: SEO begins with language your audience uses – by keyword
      • TIP: In searches we skim top left of screen – looking for patterns that match the query and then we’ll start to read…
      • TIP: So if put title of blog and then heading of post on right hand side – then you may be losing large % of audience because audience is looking for right hand side
      • TIP: Use http://google.com/insights/search
    1. Security
    2. Playing Nice – work well with others!
  • Capitalize on Search behavior:

    • Understand your audience
    • Write compelling content
    • Make sure people link to you
    • Use one domain (your own)
    • Include post dates
    • Request Google News inclusion (maybe)

    MORE TIPS FOR SEO FOR AUDIENCE!

    • Use ALT attributes on images
    • Use RSS effectively
    • Link, relevance, content and now – video searches – uses YouTube
    • Use image optimization!
    • Settings> Permalinks – If setting up new, /post-name/ or /category/post-name/ Indirect anchor text benefit
    • Title and heading don’t have to match
    • Format as “Important Stuff | Brand”
    • Write unique meta descriptions
    • Google ignores tags….!
    • Crawl efficiency is more important than site rankings.
    • Google Webmaster Central – optimize for speed!
    • SEO Quake plugin in WP – What’s downside? Gives so much information but wonder what giving up?
    • Google violation of terms if scraping data – trolling for 1000s of users…
    • How to make a blog too commercial – don’t make every post link to “buy this”. Make obvious what site it is, good entry page, then call to action in article/posts – use Blender people’s website (Will it blend?) – they use this strategy well to make obvious but not obnoxious.
    • TAGS clarification – Google ignores the keywords metatag on your posts. The tags themselves but it helps on usability on the blogs for audience.
    • Only search engine that uses keyword tags is Yahoo! which is about to be replaced by BING! So…..

    Session 3: Joseph Scott & Mitcho Erlewine – Themes & Plugins in a responsible way


    JOSEPH SCOTT – THEMES AND PLUGINS RESPONSIBILITY

    Responsibility:

    Dozen plugins can be running at a time; as opposed to one theme running at a time.

    PHP SECURITY (all plugins/themes written on)

  • DON’T TRUST EXTERNAL DATA (outside of what you wrote – don’t trust it – be aggressive and cynical in this area)
    • $_GET
    • $_POST
    • $_REQUEST
    • $_COOKIE
    • $_SERVER
  • Data from web services
    • What is the data they’re returning
    • Filter against a white list
      • >if ($var ==’123′)
      • > $a_var = (int) $a_var
      • >preg_match (use a regular expression)
  • WP SECURITY
    • Make sure data is PROPERLY ESCAPED properly in the write context

    $data = $wpdb>get_results(
    $wpdb>prepare(”
    SELECT *
    FROM my_table
    WHERE name = %$
    “,$my_var ),
    ARRAY_A);

  • WP OUTPUT Security
    • don’t allow injections in HTML
    • WP rules are generally golden
    • Don’t forget about the search form! – direct input from a user to your site!
    • <script>alert(‘hi’);</script> – put in search box on your site, allows anyone to inject Javascript
    • http://ha.ckers.org/xss.html – long list of these injections!
  • Core WP Escape functions:esc_html( $some)var );
    esc_attr( $some_var );
    esc_js( $some_var );
    esc_url( $some_var );

    2. Playing nice and DON’T PEE IN POOL:

Should DO:

  • Use core WP functions whenever possible over rewriting yourself
  • Use nonces in authenticated forms
  • Adding caching for expensive processes (calling 3rd party API for example – WP has a nice layer of caching to backend into)
  • Make use of WP actions/filters (there’s an extensive array of these in WP)
    • WordPress provides extensibility through actions and filters
    • Send in a patch if you don’t find it – usually easy to commit to core
  • Add your own actions/filters – use WordPress theme/plugin can create your own if it’s a base for other people to build on top of
  • Minimize DB row for options/unique name (minimize user ability to go in and tweek). If you pass it in an array – WP will take care of serializing and deserializing – avoid unique names
  • Use the WP AJAX hooks

LIST OF DONT’S

  • Include wp-config.php / wp-load.php/ wp-blog-header.php
  • Create new tables
  • Re-create existing core WP features (especially caching) – WP already has amazing caching layer
  • Ignore core WP options
  • Example: Database Powered CSS (custom for the user) 3 ways to do this:
    1. if you’re a theme – you’ve already got a header.php file – can be unweildly
    2. Use the wp_head action – to inject in your CSS
    3. Use the parse_request

MITCHO ERLEWINE – ABSTRACT YOUR CODE

Mitcho: Yet Another Posts Plugin; HookPress – now incorporated in WP.com

You customize WP for a project….they move servers and your custom code breaks…they want to reuse some (not all) of the functionality on another site…they want to modify your code and new coder can’t understand yours… – DISASTER

AVOID BY USING ABSTRACTION

C.A.R. Hoare quote (look up)

Abstraction = thinking about the more general problem = code that you and others can use and reuse. How in WP?

1. Think abstractly

  • Produce “functionalities,” not a monolithic project
  • Write each functionality as its own plugin
    • Name functions and variables by functionality, not the project
  • Even interrelated code can be modularized

- WP gives you abstratctions USE THEM -

    • Database query? $wpdb, not mysql_*
    • Caching? Object Cache and Transients API
    • Options ? set_option() etc not db
    • Getting posts? get_posts() etc not SQL

2. BE MOBILE

  • Don’t expect to be in a particular place
  • Use __FILE__, WP_PLUGIN_URL, and friends

3. BE CLASSY

  • use object oriented programming methods – is perfect for abstracting functionality
  • Write your functionality as a class with some defaults – easy for others to extend.
  • Makes clean, legible, code
  • Check out PUSH PRESS

4. GIVE YOURSELF OPTIONS

  • don’t hard code the project name, copyright strings, email bodies, etc

5. GO TO THE CODEX – LEARN FROM THE MASTERS

  • http://codex.wordpress.org
  • Read other’s code

6. GOOD CODING PRACTICE MATTERS

  • RESULTS:
    • less likely to break when you move machines or upgrade WP
    • Easier to maintain
    • But wait there is more!
      • Free software is not a one way street
      • WP is not a one way street
      • You just customized WP for a client
      • Others can use it! and you’ve already benefited from it – so open source it in the Plugins Repository
  • YES people do this. Use Creative Commons Licensing.
  • PROS to Client: Makes sure that it is ongoing support benefits – no client has ever said no – many clients dig contribution to community; Clients have brought in more plugins
  • John James Jacoby: Educate Clients about community role and open-source
  • TIPS: Bring up open-sourcing it early; if they say no, respect their choice; don’t pass the cost back to the client; acknowledge the funding in the reading; don’t forget that you can contribute to existing projects as well.

ABSTRATION for the WIN! MORE FTW = LESS WTF!

BOTTOM LINE:

Abstract your code for the WIN! – Popularity, recognition, community!

Movement for Cannonical Plugins for the community – team plugin building/maintenance work!!!

Session 4: Jane Wells – User Experience the WordPress Way


Jane Wells – Master of Suggestion/Cat Holder – WordPress | Automattic

MENUS in WP 3.0

  • Woo Themes – Custom Navigation: can create custom and change labels…- Core to WP!
  • how to match the WordPress UI as a developer
    • iconography -keep in line with WP theme – So users don’t feel lost or jarred by different look and feel – what doesn’t quite “match”
    • Switch to base WP theme – labels for where on site (Page, Custom, Category, Page) and Main|Pages
    • Difference between searching and browsing is diff between recall and recognition
    • When designing plugin – think about the most number of users to reach – take advantage of the screen options tab to reduce clutter on the screen
  • WP eCommerce
    • Dan Milward and his team – Props!
    • Ticketing Module built for WordCamp NYC last fall
    • Conventions in the UI to think about
      • Where to put your menus;
      • top level menus; no colored icons default – greyed out when active; color when active; Think of ACTIVE state
      • try to keep plugins in where they belong – if it’s a media item, put it under top level MEDIA menu
        • If it’s a store, that is a separate function – equals a top level menu
        • but like NextGenGallery – should be under Media Menu (top levels are on left side of admin panel)
      • Where settings go for plugin?
        • Think about where…shouldn’t even realize using plugin – it shouldn’t be a separate screen – should be in the active WP menu navigations for top level!
      • WP working on a style guide – YEAH!!!!
      • Any “menu hiding” features in the core? – “I own your admin feature” for core – not really, it’s a workflow/use space – not in core – handle with Plugins…..
        • Adminimize plugins

Anti-Spam Comments Welcome Below

Leave a Reply

Your email address will not be published. Required fields are marked *

*

* Copy This Password *

* Type Or Paste Password Here *

647 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word