for now, sorry) – You know how to build a client-side JavaScript application – Node.js or RingoJS (even better) knowledge –> a plus, but not required – Basic Linux stuff is required (restarting an application, …) – We use Apache, so you should not be an Apache hater ;-) – You will be responsible for sites that millions of people use http://jobs.orf.at/job577.html
building blocks „The Stack“ – Hardware, Databases, CMS, RingoJS • Theory vs. Practice Topics covered by the „Web Engineering“ lecture and my daily practices • Covering Elections How ORF.at covers elections and what is the technical infrastructure • Q&A
servers – same type of machines, easier maintenance – SSDs for newer generations, still some HDDs – typical server between 12 GB to 64 GB memory • 10 different clusters – a primary server mirrors files to other members – relatively simple setup: heartbeat + inotify • 20 GBit connection to the Internet
– developers should use whatever they prefer – I use Windows 10 only at work – most users still have a Windows PC – tooling support still better on Linux and Macs • Customized Debian Linux on servers – optimized kernel settings – integrated update mechanism – well-tested with our JVM-based stack
on top of Helma • ~ 70 concurrent text & photo editors, proofreaders • > 70.000 stories per year • Wiki text editor with live preview • Client-side implementation based on jQuery plugins
3 levels of caching at the front-end: – fully rendered HTML (caching servlet) – rendered Wiki text for each story (content cache) – Helma’s JS object cache (orm / db cache) • There exists a 1:1 statified auto-updating snapshot of the dynamic Helma-based site for maintenance • Static CSS / JS resources are compressed by YUI
the validator, but some of them are required e.g. for easier SVG fallbacks • No strict rule / style guide to use a trailing slash or not on self-closing elements • Used HTML5 very early • HTML5 video still is complicated for live streams • HTML5 video and audio will be default soon, we have our own oon.media library
19 different font styles • Special style for tabular data • Created by Ole Schäfer from primetype • Used in almost all ORF online sites via web fonts & in apps (and in this slides) • Test them: ORF.at/fonts/
public broadcaster • WCAG 2.0 Level AA as goal since years • 4 important principles: • Information must be Perceivable • User interfaces must be Operable • Information must be Understandable • Content must be Robust
the <button> element instead of roles – use landmarks for the basic site areas – hide inaccessible ads from screen readers • If you work on a CMS: Look at the Authoring Tool Accessibility Guidelines 2.0 (ATAG) • Dyschromatopsia (Rot-Grün-Sehschwäche) is a problem for election data (SPÖ vs. Grüne) • NVDA (NonVisual Desktop Access) is a great open source and free screen reader! http://www.nvaccess.org
• Still there is a separate mobile version • The future is responsive-only! • Don’t do mobile first, look at your content and principle site elements and then design a site • Desktop is still strong in many areas • Ads / ad format standards are still a big problem
for simple interactions • We use Marionette JS / Backbone, Angular 1 & 2, and experiment with React for future projects • gulp & webpack for client-side applications • ES6 via Babel lets us use modern JS today • Service Workers are a very strong technology for the near future for Progressive Web Applications (PWA)
for nearly 20 years(!) • Don’t be the first, try to implement it like the best • A big challenge: distribute knowledge across the team • Automate things as much as you can • The number of (internal) APIs exploded in the last years • Apps: WebViews vs. native: go native for important parts
campaigns, live updates on the election day and result overview • news.ORF.at/beingpresident – social channel, Instagram Q/A with candidates, 360° videos • ORF.at Wahl – apps for iOS and Android, data source was the „wahl“ channel
Per election a new Kanban board • Slack for communication during the election day • Email is still a very prominent tool • We start working on the sites around 2 to 3 weeks before the election
„wahl16“ wahlcomputer client-side web application renders election results embedded wahlcomputer separate built of full app wahlaggregator fetches stories, videos and audios and renders HTML tvthek api videos grouped in a „topic“ ö1 podcast xml for radio broadcasts special gulp task static html
bmi raw data txt like in the 1970ies orf ta2 transformator converts .txt into .csv results as json ftp pull ftp push local copy wahlcomputer client-side web application renders election results sora projection calculated by experts wahlcrash special mini CMS json json
3.200 lines of SCSS – gulp (https://github.com/orfon/gulp-boilerplate) – SASS as CSS preprocessor – Marionette JS / Backbone – ES6 transformed with Babel to browser ES5 – npm also for client JS modules • Renders SVG maps or embedded slippy maps • Also responsible for the SORA projection rendering
8.100 req/s – Stand-off: 14.100 req/s – Monday: 8.600 req/s • The fill-in broadcast „Weißblaue Geschichten“ was visible in the monitoring • To mitigate the effect we served a static „fallback“ version of ORF.at
for now, sorry) – You know how to build a client-side JavaScript application – Node.js or RingoJS (even better) knowledge –> a plus, but not required – Basic Linux stuff is required (restarting an application, …) – We use Apache, so you should not be an Apache hater ;-) – You will be responsible for sites that millions of people use http://jobs.orf.at/job577.html