SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von Romans Malinovskis

Mehr von 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
 

Kürzlich hochgeladen

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

Kürzlich hochgeladen (20)

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 Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
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...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

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