SlideShare uma empresa Scribd logo
1 de 79
74% Less fugly
    The Making of Epicenter
by Romans Malinovskis, Agile Technologies
About me
‣ Started   computers at age of 10, in 1991
‣ Developing    commercial software since 1995
‣ In Web    applications since 1998
‣ Started Web    Developer team in 2003
‣ Incorporated    in Ireland in 2007
 My role in Agile:
‣ Architect   SaaS application and Web interfaces.
About Agile
‣ We   develop web software for businesses
 ✓ Online financial, accounting system, SaaS
 ✓ Client Self-service portals
 ✓ Integration with backend software
‣ We   do not sell Web Design
 ✓ but we know a lot about it
 ✓ stunning design is a must for web software
Fugly vs not fugly




How big is the difference?
loads fast
graphics's nice
content is good
colours
navigation
google friendly
works in all browsers
..not only on PC
50
25           75



 0           100

     Fugly
50
   25           75



    0           100

        Fugly




TODO: fix next year
Name
‣ Use   a name with a meaning:
‣ epicenter

  ✓ ground shaking
  ✓ volcano
  ✓ so many people that ground shakes.
  ✓ accumulate stuff and then erupts in the instant,
    reshapes the ground
he just sent me this.. he likes volcano.
Designer’s response
‣ “epicenter”   definition
 ✓ The point of the earth's surface directly above the
    focus of an earthquake.
Customer is always
            wrong...
‣ Do   you tell your dentist how to do his work?
‣ Why   would you tell designer how to do his work?
 ✓ stops creativity and innovation
 ✓ subjective opinion of few individuals
 ✓ no research or study
 ✓ often based on competition
 ✓ the missing link
Sorting out fonts
‣ Lowercase font is better in our case, because it simply
 looks better.
And the winner is
‣ Custom   font “Thonburi”
Customising our font
‣ we   need equal letter spaces and to fix shape
Creating symbolism:
‣ Scale
      font down so that second “e” would be in centre
 and with highest contrast
Explanation
Variations
More associations
Add black
Creating a Style
‣ Expand   the idea behind a logo
 ✓ Different contexts and backgrounds
 ✓ Different situations
 ✓ Smaller logo
 ✓ Event pass design
 ✓ Business cards
Picking background
Environment testing
Business Cards
Icon
Event pass
Finally - on the web
Newsletters
‣ Our   task is to collect people e-mails for newsletter
‣ However    also try to get feedback from them
‣ Save   email


‣ and   through jQuery transition



                               ‣ askfor
                                extra
                                details
Browser Compatibility
‣ Standard   compliant
 ✓ Firefox
 ✓ Webkit (Safari, Chrome)
‣ Compliant   but looking uglier
 ✓ Opera
‣ Compliant   to it’s own standards
 ✓ IE6, IE7
Testing
‣ Button   clicks during transition
‣ SQL   injection
‣ Stress-testing
Back-end
Now to the main site
‣ Nailing   down requirements
  ✓ dependencies, entities, constraints
  ✓ use scenarios
‣ Merging   with our concepts
  ✓ Colours
  ✓ Circular shape
  ✓ Feel
First Concept
Attention to detail
Client interaction
‣ Do   not show previews to client
 ✓ gets client involved too early
 ✓ pointing out known flaws
 ✓ change of direction
Problem
‣ Where   should we put context?
Solution
‣ two   styles - combined
And the bottom part
Dynamics
       ‣ Multi-page   navigation




       ‣ Dynamic   / AJAX
Where to put speakers?




‣ Not   enough space...
Finalised design
Full-text pages
Backend (meanwhile)
Backend (meanwhile)
Backend
‣ Structures   for sessions, speakers, days, time schedule
‣ Dynamic     generation of all pages
‣ Photo   management
‣ Plaintext   editing for some texts
‣ Rich-text   editing for other content
Backend
Coding
‣ Writing   in PHP5
‣ Using Agile Toolkit   3
‣ Integrating   with templates
‣ Implementing    non-javascript verison
‣ Working   on closed domain
Coding
Resulting PHP code
‣ Admin

 ✓ Approx. 250 lines of code (excluding libraries)
‣ Front-end

 ✓ Approx 400 lines of code
 ✓ Ticket form: 50 lines
 ✓ Widgets for map and panorama view
 ✓ 600 lines of JavaScript
Google friendliness
‣ Basic   SEO principles
  ✓ If you don’t promote your website, it won’t be ranked
  ✓ Make way for Search engines
  ✓ Direct links to AJAXified articles
AJAX + Google
‣ <a   id=”link” href=”/otherpage.html”>..</a>
‣ $(‘#link’).click(function(ev){   ev.preventDefault(); .. });
  ✓ Links works properly on browsers without JS
  ✓ Links work fancy with JS browsers
  ✓ Google ignores JS
  ✓ Direct links
AJAX vs Regular

       regular link




          ajax
Speakers tweet
‣ Show    their 3 last tweet
‣ Refresh   every few minutes
‣ Update    dynamically
‣ Test   for non-JS browsers
  ✓ (tweets disabled)
‣ Direct   links and AJAX
‣ Highlight   links and tags
Hand-drawn icons
Something Nifty
‣ We   have to add something unique and cool
 ✓ Try1: Make icons go on circular trajectory and fade in
 ✓ Try2: Make logo bounce when clicked
 ✓ Try3: Shake logo when move mouse over
 ✓ Accidentally made all screen shake. Liked it.
 ✓ Bonus - 4th shake is more violent and makes icons fall
 ✓ Dropped icons can be found in “about” box. Later
   removed
Text flow
‣ Revisetext entered by client. Fix spaces between
 paragraphs. Make everything consistent
‣ Position   images
‣ Add   panorama image
‣ Add   Google maps
‣ Add   Booking form
Booking form
‣ Javascript   form - but message for no-JS browser
‣ Calculate    prices, totals and discounts dynamically
‣ Offer   gifts for 3-day pass
‣ Allow     to add multiple visitors for same compnay
‣ Ability   to remove visitors. Later disabled.
‣ Integrate    with Pay-Pal
‣ Save   data into database
Optimisation
‣ All   browsers with at least 3% market share
‣ Check    in older browsers, IE5, Firefox 1, Opera 6
  ✓ Looked good in those until we did IE6 optimisation
‣ Disabled   stylesheets
‣ Disabled   images
‣ Disabled   JavaScripts
No images - still
   readable
Eircom.ie with no
     images
no js, no img, no css
Stress-testing
‣ Main   page: 90 requests / sec, no caches or optimisation
‣ Over   100 req/sec on other pages
‣ Eircom   main page: 1000 requests / sec (cached)
‣ Eircom   article page: 10 req / sec
‣ Wordpress: 20     req / sec
‣ Twitter: 3   req / sec
Hosting
‣ Amazon AWS, E2, Europe

‣ Located   in Dublin
‣ 25ms   latency from Eircom DSL
‣ www.eircom.net    latency from Eircom DSL - 30ms
‣ hosting365: 25ms      latency
Hosting
‣ Gentoo     Linux, 32-bit, (Xen)
‣ Dual    2.33 Mhz CPU
‣ Apache     2.2, PHP 5.2
‣ nginx

‣ MySQL      5.0
‣ Security   enhancements
Total work


‣ 25-30   man-days (Total)
‣3   people in team
Our opportunity
‣ Try   new and experimental things
‣ Collect   data through google analytics
‣ Portfolio

‣ Test   framework features
The Result
      50
25           75



 0           100

 Fugly-o-meter
73% less fugly
‣ Time   for questions...


‣ Romans    Malinovskis

Mais conteúdo relacionado

Mais procurados

ASP.NET MVC From The Ground Up
ASP.NET MVC From The Ground UpASP.NET MVC From The Ground Up
ASP.NET MVC From The Ground Up
Kevin Griffin
 

Mais procurados (7)

Webinar: On-Page SEO Tips and Tricks
Webinar: On-Page SEO Tips and TricksWebinar: On-Page SEO Tips and Tricks
Webinar: On-Page SEO Tips and Tricks
 
[DevDay2018] Ignite your app development with native script and firebase - By...
[DevDay2018] Ignite your app development with native script and firebase - By...[DevDay2018] Ignite your app development with native script and firebase - By...
[DevDay2018] Ignite your app development with native script and firebase - By...
 
Working local
Working localWorking local
Working local
 
ASP.NET MVC From The Ground Up
ASP.NET MVC From The Ground UpASP.NET MVC From The Ground Up
ASP.NET MVC From The Ground Up
 
Amazon.com's Web Services Opportunity
Amazon.com's Web Services OpportunityAmazon.com's Web Services Opportunity
Amazon.com's Web Services Opportunity
 
Introduction to Xamarin.Forms
Introduction to Xamarin.FormsIntroduction to Xamarin.Forms
Introduction to Xamarin.Forms
 
Teaching Cloud to the Programmers of Tomorrow
Teaching Cloud to the Programmers of TomorrowTeaching Cloud to the Programmers of Tomorrow
Teaching Cloud to the Programmers of Tomorrow
 

Destaque (20)

Proyecto de uso privado
Proyecto de uso privadoProyecto de uso privado
Proyecto de uso privado
 
USALOS:
USALOS:USALOS:
USALOS:
 
Tallervideo5
Tallervideo5Tallervideo5
Tallervideo5
 
Elementos de un paisaje
Elementos de un paisajeElementos de un paisaje
Elementos de un paisaje
 
Seminario 3
Seminario 3Seminario 3
Seminario 3
 
Pendientes
PendientesPendientes
Pendientes
 
las tic taller 1
las tic taller 1 las tic taller 1
las tic taller 1
 
Taller hábitat sustentable
Taller hábitat sustentableTaller hábitat sustentable
Taller hábitat sustentable
 
Iphonographie diapo
Iphonographie diapoIphonographie diapo
Iphonographie diapo
 
Biotecnología
BiotecnologíaBiotecnología
Biotecnología
 
Folleto cataliza
Folleto catalizaFolleto cataliza
Folleto cataliza
 
Biotecnología
BiotecnologíaBiotecnología
Biotecnología
 
Tarea interactiva 2
Tarea interactiva 2Tarea interactiva 2
Tarea interactiva 2
 
Ficha 1
Ficha 1Ficha 1
Ficha 1
 
Trabajo semana 2 inteligencias
Trabajo semana 2   inteligenciasTrabajo semana 2   inteligencias
Trabajo semana 2 inteligencias
 
Dinesh 1
Dinesh 1Dinesh 1
Dinesh 1
 
Pasos para disenar_proyectos
Pasos para disenar_proyectosPasos para disenar_proyectos
Pasos para disenar_proyectos
 
estudio de mercadeo sobre un producto.
estudio de mercadeo sobre un producto.estudio de mercadeo sobre un producto.
estudio de mercadeo sobre un producto.
 
Guia de inicio del curso
Guia de inicio del cursoGuia de inicio del curso
Guia de inicio del curso
 
Mspa cronograma reuniones 2014
Mspa cronograma reuniones 2014Mspa cronograma reuniones 2014
Mspa cronograma reuniones 2014
 

Semelhante a 73 Less Fugly Epicenter

Henning Muszynski - The ABC of Coded Style Guides
Henning Muszynski - The ABC of Coded Style GuidesHenning Muszynski - The ABC of Coded Style Guides
Henning Muszynski - The ABC of Coded Style Guides
OdessaJS Conf
 
How to Speed Up Your Joomla! Site
How to Speed Up Your Joomla! SiteHow to Speed Up Your Joomla! Site
How to Speed Up Your Joomla! Site
Daniel Kanchev
 

Semelhante a 73 Less Fugly Epicenter (20)

Angels versus demons: balancing shiny and inclusive
Angels versus demons: balancing shiny and inclusiveAngels versus demons: balancing shiny and inclusive
Angels versus demons: balancing shiny and inclusive
 
More efficient, usable web
More efficient, usable webMore efficient, usable web
More efficient, usable web
 
Assessing Your Own Site Configuration
Assessing Your Own Site ConfigurationAssessing Your Own Site Configuration
Assessing Your Own Site Configuration
 
(For non-developers) HTML5: A richer web for everyone
(For non-developers) HTML5: A richer web for everyone(For non-developers) HTML5: A richer web for everyone
(For non-developers) HTML5: A richer web for everyone
 
Lunch & Learn BigQuery & Firebase from other Google Cloud customers
Lunch & Learn BigQuery & Firebase from other Google Cloud customersLunch & Learn BigQuery & Firebase from other Google Cloud customers
Lunch & Learn BigQuery & Firebase from other Google Cloud customers
 
The ABC of Coded Style Guides
The ABC of Coded Style GuidesThe ABC of Coded Style Guides
The ABC of Coded Style Guides
 
RWD
RWDRWD
RWD
 
Real solutions, no tricks
Real solutions, no tricksReal solutions, no tricks
Real solutions, no tricks
 
Scaling woo commerce-v2-pagely
Scaling woo commerce-v2-pagelyScaling woo commerce-v2-pagely
Scaling woo commerce-v2-pagely
 
Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018
 
Henning Muszynski - The ABC of Coded Style Guides
Henning Muszynski - The ABC of Coded Style GuidesHenning Muszynski - The ABC of Coded Style Guides
Henning Muszynski - The ABC of Coded Style Guides
 
SEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech SideSEO for Large/Enterprise Websites - Data & Tech Side
SEO for Large/Enterprise Websites - Data & Tech Side
 
Symfony for non-techies
Symfony for non-techiesSymfony for non-techies
Symfony for non-techies
 
CSS3: the new style council
CSS3: the new style councilCSS3: the new style council
CSS3: the new style council
 
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript librariesJazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
 
iOS Indie Developer Toolkit - CocoaHeads 3city
iOS Indie Developer Toolkit - CocoaHeads 3cityiOS Indie Developer Toolkit - CocoaHeads 3city
iOS Indie Developer Toolkit - CocoaHeads 3city
 
A Period of Transition
A Period of TransitionA Period of Transition
A Period of Transition
 
SEARCH Y - Bastian Grimm - Migrations Best Practices
SEARCH Y - Bastian Grimm -  Migrations Best PracticesSEARCH Y - Bastian Grimm -  Migrations Best Practices
SEARCH Y - Bastian Grimm - Migrations Best Practices
 
Mastering Migration - How to Manage a Move From Another CMS to WordPress with...
Mastering Migration - How to Manage a Move From Another CMS to WordPress with...Mastering Migration - How to Manage a Move From Another CMS to WordPress with...
Mastering Migration - How to Manage a Move From Another CMS to WordPress with...
 
How to Speed Up Your Joomla! Site
How to Speed Up Your Joomla! SiteHow to Speed Up Your Joomla! Site
How to Speed Up Your Joomla! Site
 

Mais de Romans Malinovskis

Mais de Romans Malinovskis (8)

Lightning talk teaching php to kids with atk
Lightning talk teaching php to kids with atkLightning talk teaching php to kids with atk
Lightning talk teaching php to kids with atk
 
Agile data presentation 3 - cambridge
Agile data   presentation 3 - cambridgeAgile data   presentation 3 - cambridge
Agile data presentation 3 - cambridge
 
Agile Data concept introduction
Agile Data   concept introductionAgile Data   concept introduction
Agile Data concept introduction
 
Agile toolkit present 2012
Agile toolkit present 2012Agile toolkit present 2012
Agile toolkit present 2012
 
Agile toolkit present 2012
Agile toolkit present 2012Agile toolkit present 2012
Agile toolkit present 2012
 
Agile Toolkit Technical Presentation
Agile Toolkit Technical PresentationAgile Toolkit Technical Presentation
Agile Toolkit Technical Presentation
 
Agile Tour presentation
Agile Tour presentationAgile Tour presentation
Agile Tour presentation
 
Saa s lifecycle
Saa s lifecycleSaa s lifecycle
Saa s lifecycle
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
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
 

73 Less Fugly Epicenter

  • 1. 74% Less fugly The Making of Epicenter by Romans Malinovskis, Agile Technologies
  • 2. About me ‣ Started computers at age of 10, in 1991 ‣ Developing commercial software since 1995 ‣ In Web applications since 1998 ‣ Started Web Developer team in 2003 ‣ Incorporated in Ireland in 2007 My role in Agile: ‣ Architect SaaS application and Web interfaces.
  • 3. About Agile ‣ We develop web software for businesses ✓ Online financial, accounting system, SaaS ✓ Client Self-service portals ✓ Integration with backend software ‣ We do not sell Web Design ✓ but we know a lot about it ✓ stunning design is a must for web software
  • 4. Fugly vs not fugly How big is the difference?
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. loads fast graphics's nice content is good colours navigation google friendly works in all browsers ..not only on PC
  • 14. 50 25 75 0 100 Fugly
  • 15.
  • 16. 50 25 75 0 100 Fugly TODO: fix next year
  • 17. Name ‣ Use a name with a meaning: ‣ epicenter ✓ ground shaking ✓ volcano ✓ so many people that ground shakes. ✓ accumulate stuff and then erupts in the instant, reshapes the ground
  • 18. he just sent me this.. he likes volcano.
  • 19. Designer’s response ‣ “epicenter” definition ✓ The point of the earth's surface directly above the focus of an earthquake.
  • 20. Customer is always wrong... ‣ Do you tell your dentist how to do his work? ‣ Why would you tell designer how to do his work? ✓ stops creativity and innovation ✓ subjective opinion of few individuals ✓ no research or study ✓ often based on competition ✓ the missing link
  • 21. Sorting out fonts ‣ Lowercase font is better in our case, because it simply looks better.
  • 22. And the winner is ‣ Custom font “Thonburi”
  • 23. Customising our font ‣ we need equal letter spaces and to fix shape
  • 24. Creating symbolism: ‣ Scale font down so that second “e” would be in centre and with highest contrast
  • 28.
  • 30.
  • 31. Creating a Style ‣ Expand the idea behind a logo ✓ Different contexts and backgrounds ✓ Different situations ✓ Smaller logo ✓ Event pass design ✓ Business cards
  • 35. Icon
  • 37. Finally - on the web
  • 38. Newsletters ‣ Our task is to collect people e-mails for newsletter ‣ However also try to get feedback from them
  • 39. ‣ Save email ‣ and through jQuery transition ‣ askfor extra details
  • 40. Browser Compatibility ‣ Standard compliant ✓ Firefox ✓ Webkit (Safari, Chrome) ‣ Compliant but looking uglier ✓ Opera ‣ Compliant to it’s own standards ✓ IE6, IE7
  • 41. Testing ‣ Button clicks during transition ‣ SQL injection ‣ Stress-testing
  • 43. Now to the main site ‣ Nailing down requirements ✓ dependencies, entities, constraints ✓ use scenarios ‣ Merging with our concepts ✓ Colours ✓ Circular shape ✓ Feel
  • 46. Client interaction ‣ Do not show previews to client ✓ gets client involved too early ✓ pointing out known flaws ✓ change of direction
  • 47. Problem ‣ Where should we put context?
  • 48. Solution ‣ two styles - combined
  • 50. Dynamics ‣ Multi-page navigation ‣ Dynamic / AJAX
  • 51. Where to put speakers? ‣ Not enough space...
  • 56. Backend ‣ Structures for sessions, speakers, days, time schedule ‣ Dynamic generation of all pages ‣ Photo management ‣ Plaintext editing for some texts ‣ Rich-text editing for other content
  • 58. Coding ‣ Writing in PHP5 ‣ Using Agile Toolkit 3 ‣ Integrating with templates ‣ Implementing non-javascript verison ‣ Working on closed domain
  • 60. Resulting PHP code ‣ Admin ✓ Approx. 250 lines of code (excluding libraries) ‣ Front-end ✓ Approx 400 lines of code ✓ Ticket form: 50 lines ✓ Widgets for map and panorama view ✓ 600 lines of JavaScript
  • 61. Google friendliness ‣ Basic SEO principles ✓ If you don’t promote your website, it won’t be ranked ✓ Make way for Search engines ✓ Direct links to AJAXified articles
  • 62. AJAX + Google ‣ <a id=”link” href=”/otherpage.html”>..</a> ‣ $(‘#link’).click(function(ev){ ev.preventDefault(); .. }); ✓ Links works properly on browsers without JS ✓ Links work fancy with JS browsers ✓ Google ignores JS ✓ Direct links
  • 63. AJAX vs Regular regular link ajax
  • 64. Speakers tweet ‣ Show their 3 last tweet ‣ Refresh every few minutes ‣ Update dynamically ‣ Test for non-JS browsers ✓ (tweets disabled) ‣ Direct links and AJAX ‣ Highlight links and tags
  • 66. Something Nifty ‣ We have to add something unique and cool ✓ Try1: Make icons go on circular trajectory and fade in ✓ Try2: Make logo bounce when clicked ✓ Try3: Shake logo when move mouse over ✓ Accidentally made all screen shake. Liked it. ✓ Bonus - 4th shake is more violent and makes icons fall ✓ Dropped icons can be found in “about” box. Later removed
  • 67. Text flow ‣ Revisetext entered by client. Fix spaces between paragraphs. Make everything consistent ‣ Position images ‣ Add panorama image ‣ Add Google maps ‣ Add Booking form
  • 68. Booking form ‣ Javascript form - but message for no-JS browser ‣ Calculate prices, totals and discounts dynamically ‣ Offer gifts for 3-day pass ‣ Allow to add multiple visitors for same compnay ‣ Ability to remove visitors. Later disabled. ‣ Integrate with Pay-Pal ‣ Save data into database
  • 69. Optimisation ‣ All browsers with at least 3% market share ‣ Check in older browsers, IE5, Firefox 1, Opera 6 ✓ Looked good in those until we did IE6 optimisation ‣ Disabled stylesheets ‣ Disabled images ‣ Disabled JavaScripts
  • 70. No images - still readable
  • 72. no js, no img, no css
  • 73. Stress-testing ‣ Main page: 90 requests / sec, no caches or optimisation ‣ Over 100 req/sec on other pages ‣ Eircom main page: 1000 requests / sec (cached) ‣ Eircom article page: 10 req / sec ‣ Wordpress: 20 req / sec ‣ Twitter: 3 req / sec
  • 74. Hosting ‣ Amazon AWS, E2, Europe ‣ Located in Dublin ‣ 25ms latency from Eircom DSL ‣ www.eircom.net latency from Eircom DSL - 30ms ‣ hosting365: 25ms latency
  • 75. Hosting ‣ Gentoo Linux, 32-bit, (Xen) ‣ Dual 2.33 Mhz CPU ‣ Apache 2.2, PHP 5.2 ‣ nginx ‣ MySQL 5.0 ‣ Security enhancements
  • 76. Total work ‣ 25-30 man-days (Total) ‣3 people in team
  • 77. Our opportunity ‣ Try new and experimental things ‣ Collect data through google analytics ‣ Portfolio ‣ Test framework features
  • 78. The Result 50 25 75 0 100 Fugly-o-meter
  • 79. 73% less fugly ‣ Time for questions... ‣ Romans Malinovskis