SlideShare a Scribd company logo
1 of 87
Download to read offline
-THE ORIGINAL-

HYPERTEXT
PREPROCESSOR
          Drew McLellan
          edgeofmyseat.com
          grabaperch.com

          PHP Community Conference
          22nd April 2011
EVERY LINE OF CODE
    -CAN HAVE A-

DIRECT IMPACT
   ON USERS
DESIGNING
SOFTWARE
   - FOR -

HUMANS
FUNCTIONALITY
    -IS NOT -


ENOUGH
REWIND
DUDE!
LIKE WHAT ABOUT
DRUPAL?
“With Wordpress (don’t
even get me started on
Drupal), the learning curve
was very high, requiring my
clients to learn about posts
versus pages versus
custom post types.”
D O Z E N S   O F

OPTIONS
MILLIONS OF

USERS
THERE'S ROOM
  - IF YOU CAN BE -
DIFFERENT
L I G H T W E I G H T


PHP CMS
FOR SMALL WEBSITES
LISTEN UP!


CLASS
IN SESSION
- THE MOST -

DIFFICULT
PROBLEMS
  - ARE THE -

WET ONES
Support will
kick your ass.
Jason Fried, 37signals
http://www.extractable.com/blog/?p=58
Helpspot really saved
our ass when it came
to support.
Todd Dominey, SlideShowPro
http://5by5.tv/bigwebshow/24
SUPPORT
INVOLVES
 - A LOT OF -

ASSES
MANY
CUSTOMERS
    ARE
INEXPERIENCED
THEY NEED
A LOT OF
SUPPORT
EACH LICENSE SOLD

30 MINUTES
OF SUPPORT TIME
- FIND WAYS TO -

REDUCE
SUPPORT
REQUESTS
EVERY REQUEST SHOULD BE


UNIQUE
SUPPORT
YOUR
OWN
S OFT W A R E
- WHEN -
WILL THIS
FAIL?
ALL CODE BREAKS.

GREAT CODE
BREAKS WELL
NOT ALL
ATTEMPTS
ARE SUCCESSFUL
SPEED
 OF RESPONSE
 IS THE MOST
IMPORTANT
 T H I N G
TECHNICAL
PROBLEMS
   - ARE -

DIFFICULT
  TOO
PHP5
AS STANDARD
WE WOULD

LOVE
- TO M OVE T O -

PHP5.3
THE FAILED
PROMISE OF
SQLITE
SCHEMALESS
STRUCTURED DATA
!<perch:content
!!!type=”text”
!!!id=”heading”
!!!label=”Main heading”
!!!required=”true” />
<h2><perch:content id="heading"
type="text" label="Heading"
required="true" title="true" /></h2>

<p class="date"><perch:content id="date"
type="date" label="Date" format="%d %B
%Y" /></p>

<perch:content id="body" type="textarea"
label="Body" textile="true"
editor="markitup" required="true" />
TABLE OF
KEY-VALUE PAIRS
       - OR -
   BIG BLOB OF

   JSON
TABLE OF
KEY-VALUE PAIRS
SCALES UP

WELL
    CAN BE
FILTERED WITH


SQL
- REQUIRES -
HOUSEKEEPING
 INEFFICIENT
 FOR SMALL VALUES
BIG BLOB OF

JSON
STORE
ANY SHAPE DATA
   IN ONE ROW

  EXTREMELY
  SIMPLE
CONTENT HAS TO BE
FILTERED IN PHP
 NATIVE JSON LIBRARIES
 ARE NOT YET
 UNIVERSAL
CREATE TABLE `perch_contentItems` (
  `contentID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `contentKey` varchar(255) NOT NULL DEFAULT '',
  `contentPage` varchar(255) NOT NULL DEFAULT '*',
  `contentHTML` longtext NOT NULL,
  `contentNew` tinyint(1) unsigned NOT NULL DEFAULT '1',
  `contentTemplate` varchar(255) NOT NULL DEFAULT '',
  `contentMultiple` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `contentAddToTop` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `contentJSON` mediumtext NOT NULL,
  `contentHistory` mediumtext NOT NULL,
  `contentOptions` text NOT NULL,
  PRIMARY KEY (`contentID`),
  KEY `idx_key` (`contentKey`),
  KEY `idx_page` (`contentPage`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
SO, UM, HOW'S

THAT
WORKING OUT
FOR YOU?
NON-NATIVE JSON

IS SLOW
QUERYING ACROSS
TABLE COLUMNS
      - AND -

JSON -VALUES
      IS A -
TWO STEP PROCESS
SO WHAT IS

GOOD
ABOUT IT?
{
! “heading”: “Foo”,
! “date”: “2011-04-22 10:00:00”
}
[
!   {
!   ! “heading”: “Foo”,
!   ! “date”: “2011-04-22 10:00:00”
!   },
!   {
!   ! “heading”: “Foo”,
!   ! “date”: “2011-04-22 10:00:00”
!   }
]
[
!   {
!   ! “_rev”: 1300447544,
!   ! “_content”: {
!   ! ! “heading”: “Bar”,
!   ! ! “date”: “2011-04-22 10:00:00”
!   ! }
!   },
!   {
!   ! “_rev”: 1293968747,
!   ! “_content”: {
!   ! ! “heading”: “Foo”,
!   ! ! “date”: “2011-04-22 10:00:00”
!   ! }
!   }
]
SIMPLE, EFFECTIVE
HISTORY STACK
THEORISING IS EASY
NOTHING BEATS
EXPERIENCE
RUNNING PHP

EVERYWHERE
  IS HARD
WE'RE USED TO
CONTROLLED
PLATFORMS
ALL BETS
ARE OFF
- CHEAP -
HOSTING
IS CHEAP
WINDOWS
IS WEIRD
MIGRATING
BETWEEN
FILESYSTEMS
- NEVER -

MIX CASE
IN MYSQL TABLE NAMES
- BE -

OPINIONATED
   - BUT NOT -

DICTATORIAL
WYSIWYG
  - IS -


EVIL
But my clients
must have an
editor like Word!
IT'S NOT OUR PLACE
TO TELL PEOPLE
HOW TO WORK
EDIT IN PLACE
    - IS A -

 FALSE
PROMISE
HELP CUSTOMERS

SERVE
THEIR
CLIENTS
IDENTIFY YOUR
CUSTOMERS'
PROBLEMS
CONFIDENCE
   - IS -
EVERYTHING
EVERY FIELD
   - CAN BE -

ANNOTATED
help=”Use the
teacher’s
initials from
the timetable.”
<perch:help>
!<p>Confused? Watch
!!!this video:</p>
!<video>...</video>
</perch:help>
DRAFTS
PREVIEW
UNDO
- BE A -

MAGICIAN
  NOT JUST
A DEVELOPER
FUNCTIONALITY
    -IS NOT -


ENOUGH
LEARN TO

ACCEPT
WHEN USERS ARE

HAVING
TROUBLE
REALLY GREAT
DEVELOPERS
SOLVE PROBLEMS
YOU CAN'T

WIN
EVERY USER
I love the little cms but the one thing I was
expecting to get is a license for multiple domain,...
if you guys can help with that you will earn a big
customer,.. and as of right now I already found 2
more cms just like yours at a lower price but what
they take a away is in the interface design,..
(which I could careless about it) but you guys still
my number 1 option but if you guys can give me a
break on that little part for licensing multiple
domains that will be very much appreciated,..
- NOT -

EVERYONE
WILL GET IT
THANK YOU!
   Perch is at grabaperch.com
   Slides: http://lanyrd.com/2011/phpcomcon
   On most things, I’ am @drewm
QUESTIONS?

More Related Content

Viewers also liked

One Click Deployment with Jenkins
One Click Deployment with JenkinsOne Click Deployment with Jenkins
One Click Deployment with Jenkins
Mayflower GmbH
 
Pragmatic Guide to Git
Pragmatic Guide to GitPragmatic Guide to Git
Pragmatic Guide to Git
ConFoo
 

Viewers also liked (9)

SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
 
One Click Deployment with Jenkins
One Click Deployment with JenkinsOne Click Deployment with Jenkins
One Click Deployment with Jenkins
 
PHP Benelux 2012: Magic behind the numbers. Software metrics in practice
PHP Benelux 2012: Magic behind the numbers. Software metrics in practice PHP Benelux 2012: Magic behind the numbers. Software metrics in practice
PHP Benelux 2012: Magic behind the numbers. Software metrics in practice
 
Scrum, Kanban oder vielleicht beides?
Scrum, Kanban oder vielleicht beides?Scrum, Kanban oder vielleicht beides?
Scrum, Kanban oder vielleicht beides?
 
The Contextual Experience of the Mobile Web
The Contextual Experience of the Mobile WebThe Contextual Experience of the Mobile Web
The Contextual Experience of the Mobile Web
 
Localisation typo3
Localisation typo3Localisation typo3
Localisation typo3
 
Verlernte Agilität - Schleichende Fehler in agilen Prozessen
Verlernte Agilität - Schleichende Fehler in agilen ProzessenVerlernte Agilität - Schleichende Fehler in agilen Prozessen
Verlernte Agilität - Schleichende Fehler in agilen Prozessen
 
Open a window, see the clouds - php|tek 2011
Open a window, see the clouds - php|tek 2011Open a window, see the clouds - php|tek 2011
Open a window, see the clouds - php|tek 2011
 
Pragmatic Guide to Git
Pragmatic Guide to GitPragmatic Guide to Git
Pragmatic Guide to Git
 

Similar to The Original Hypertext Preprocessor

UTEP AITP Presentation - 10/17/2012
UTEP AITP Presentation - 10/17/2012UTEP AITP Presentation - 10/17/2012
UTEP AITP Presentation - 10/17/2012
impulsedev
 

Similar to The Original Hypertext Preprocessor (20)

Using HTML5 sensibly
Using HTML5 sensiblyUsing HTML5 sensibly
Using HTML5 sensibly
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it done
 
UTEP AITP Presentation - 10/17/2012
UTEP AITP Presentation - 10/17/2012UTEP AITP Presentation - 10/17/2012
UTEP AITP Presentation - 10/17/2012
 
Simplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsSimplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and tools
 
Programming for Non-programmers PFNP @ Razorfish
Programming for Non-programmers PFNP @ Razorfish Programming for Non-programmers PFNP @ Razorfish
Programming for Non-programmers PFNP @ Razorfish
 
Programming for Non-Programmers - SXSW Vegas 2014
Programming for Non-Programmers - SXSW Vegas 2014Programming for Non-Programmers - SXSW Vegas 2014
Programming for Non-Programmers - SXSW Vegas 2014
 
HAX - Chaotic Good
HAX - Chaotic GoodHAX - Chaotic Good
HAX - Chaotic Good
 
⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?⛳️ Votre API passe-t-elle le contrôle technique ?
⛳️ Votre API passe-t-elle le contrôle technique ?
 
Wordpress development 101
Wordpress development 101Wordpress development 101
Wordpress development 101
 
Leveling Up at JavaScript
Leveling Up at JavaScriptLeveling Up at JavaScript
Leveling Up at JavaScript
 
Api Design
Api DesignApi Design
Api Design
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable Products
 
HTML 5 - Overview
HTML 5 - OverviewHTML 5 - Overview
HTML 5 - Overview
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use Today
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature Creature
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
 
Questioning the status quo
Questioning the status quoQuestioning the status quo
Questioning the status quo
 
Future of Web Development
Future of Web DevelopmentFuture of Web Development
Future of Web Development
 
Building Better Responsive Websites
Building Better Responsive WebsitesBuilding Better Responsive Websites
Building Better Responsive Websites
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

The Original Hypertext Preprocessor