SlideShare a Scribd company logo
1 of 18
Project Timbit
Diving into a new web development paradigm

August 17, 2011 - Presented By Edward De Groot, Director Of The Postmedia Digital Innovation Team
Introduction

✤   Postmedia’s Digital Innovation Team is finally up and running

✤   We are not about building new frameworks for CMSs but...

    ✤   Need a platform to quickly build new prototypes and functionality

    ✤   Want to assist the Professional Services team in expediting development, testing and
        deployment of widgets and templates

    ✤   Need something to keep us busy and out of trouble

    ✤   Want to contribute to the web development community

✤   You are encouraged to comment and/or ask questions
Widget #1

The I/O Problem
                                                   Widget #2




                                                                      Widget #5
                                                   Widget #3

✤   Widgets are typically rendered
    synchronously, one at a time

✤   A few slow widgets can cause                   Widget #4
    significant delay for the page

✤   (Too) many widgets, fast or slow, will
    delay the page                           Widget #6    Widget #7   Widget #8
The Digital
Media Problem
✤   Most digital media sites are
    (overly) content heavy

✤   Most incorporate (too much)
    content from many different
    sources on a single page

✤   e.g. canada.com home page

    ✤   Built utilizing over 100 widgets.

    ✤   80+ feeds from our CMS alone

    ✤   It’s not alone.
Possible Solutions

✤   Utilize caching wherever and whenever possible

    ✤   Already do that via Akamai, MemCached, etc.
        (That’s why canada.com, as big as it is, still renders on the server in < 1s on average)


✤   Reduce number of widgets / page size

    ✤   Ideal, but we will always be somewhat content heavy

✤   Render widgets in parallel!

    ✤   Both obvious and promising...
ESI to the Rescue

Widget #1   Widget #2   Widget #3   Widget #4   Widget #5   Widget #6   Widget #7   Widget #8




✤   Edge Side Includes (ESI), available via our CDN (Akamai) can help

✤   ESI will allow us to render most widgets in parallel

✤   Postmedia DM released support for ESI / Remote Widgets this week!

✤   (We don’t have any remote widgets.... yet)
Better, but not Great.
✤   The majority of widgets render data from remote data sources
    (Databases, REST APIs, etc.)

✤   I/O calls introduce significant latency

✤   Therefore, most widgets, under load, spend most of their time waiting for data

✤   In concurrency-based, multi-threaded applications with significant I/IO, high loads
    will result in most threads being blocked. The result?

    ✤   High CPU/memory utilization (significant context switching)

    ✤   Low throughput (lot’s of blocking)

    ✤   High request queuing
The Main Event

✤   Event-Driven architecture solves the I/O latency issues.

✤   Much better at handling high number of concurrent users

✤   Much better memory efficiency under high loads

✤   No dead-locking, as there are no locks, no blocking calls.

✤   As such, a widget can continue to service new requests while waiting
    on I/O for other requests.
Node.js

✤   An event-driven server-side JavaScript environment based on V8. It is
    intended for writing scalable network programs such as web servers.

✤   Event-Driven libraries are available for other languages (Ruby,
    Python etc.) so why Node.js?

    ✤   In Node.js, event-driven is not an after thought. Less likely to accidentally create
        blocking calls, particularly 3rd party packages/libraries

    ✤   The merging of websites and native applications is inevitable. HTML5, CSS3 and
        JavaScript will (finally) enable and empower that platform. (my opinion)

    ✤   The lines between Client, Cloud, and Server will continue to erode. JavaScript
        enables our code to become portable. (more on that later)
CoffeeScript

✤   A programming language that transcompiles to JavaScript.

✤   Adds syntactic sugar inspired by Ruby, Python and Haskell

✤   Adds more sophisticated features like array comprehension and
    pattern matching.

✤   Compiles predictably to JavaScript, programs can be written with less
    code with no effect on runtime performance

✤   (ED loves Ruby, hates JavaScript, and drinks a lot of Coffee.)
The Results...?
Magic!

✤   Pantry - A JSON/XML resource caching library

✤   Timbits - Widget framework on Express and CoffeeScript

✤   kitkat - Kontinuous integrated testing koffee application template

✤   connect-esi - Edge Side Includes tag processor for the connect framework

✤   Samples - Including an HTML5 based Story widget with multi-device rendering support
    (Browser, Tablet, Phone)


✤   All of these projects are open source!
Pantry
A JSON/XML resource caching library


✤   Multiple ‘simultaneous’ requests for the same resource will only
    generate a single request which will fulfil all others

✤   Optimistic caching - Assumes recently expired items are still ‘Good’

✤   Whenever feasible, all cache refreshes happen in the background

✤   Automatically parses/converts JSON and XML feeds into JavaScript
    objects

✤   Fully configurable (shelfLife, maxLife, capacity etc.)
Timbits
Widget framework on Express and CoffeeScript

✤   Built on top of some maturing Node.js packages

    ✤   Connect.js - Middleware framework for node.js

    ✤   Express.js - Sinatra inspired web development framework

    ✤   CoffeeKup - HTML templating engine based on CoffeeScript

✤   Makes it easy to build an API consuming, data rendering widget.

✤   By default, it utilizes Pantry for all data consumption

✤   [DEMO]
kitkat
Kontinuous integrated testing koffee application template


✤   An automated testing framework for node.js and CoffeeScript

✤   Will automatically run tests when the project changes

✤   Integrates with Growl

✤   Convention over configuration

✤   Includes spec generation (single, all, and automatic)

✤   [DEMO]
connect-esi
Edge Side Includes tag processor for the connect



✤   Main purpose (today) is to assist in testing widgets

✤   Only basic ESI support so far

    ✤   esi:include (including nested)

    ✤   variables such as $(HTTP _COOKIE), $(QUERY_STRING) etc.

✤   [DEMO]
Examples

✤   Objective #1 - Practical proof of concept widget for Timbits

✤   Objective #2 - Display the beauty of CoffeeKup templating language

✤   Objective #3 - Attempting to prove that a single widget template can
    be utilized for multiple designs and across multiple browsers/devices

    ✤   Generic HTML5 utilizing unobtrusive CSS and JavaScript (no
        inline styles or code

    ✤   This still needs a little more work

✤   [DEMO]
Going Forward

✤   You can begin building widgets using Timbits today

✤   Moving towards stable, production ready v 0.2 of all libraries

✤   Planning new features, such as

    ✤   Better error handling and documentation (all)

    ✤   Scaffolding (timbits)

    ✤   Optional client side rendering (timbits)

    ✤   Support for Redis (Pantry)

    ✤   Windows Development Support (all)

More Related Content

What's hot

What's hot (19)

The MEAN Stack
The MEAN StackThe MEAN Stack
The MEAN Stack
 
Developing JavaScript Widgets
Developing JavaScript WidgetsDeveloping JavaScript Widgets
Developing JavaScript Widgets
 
JS digest. Decemebr 2017
JS digest. Decemebr 2017JS digest. Decemebr 2017
JS digest. Decemebr 2017
 
wp cli- don’t fear the command line
wp cli- don’t fear the command linewp cli- don’t fear the command line
wp cli- don’t fear the command line
 
Bruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
Bruce Lawson, Web Development 2.0, SparkUp! Poznan PolandBruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
Bruce Lawson, Web Development 2.0, SparkUp! Poznan Poland
 
Node js projects
Node js projectsNode js projects
Node js projects
 
Modern web application devlopment workflow
Modern web application devlopment workflowModern web application devlopment workflow
Modern web application devlopment workflow
 
Bruce lawson-over-the-air
Bruce lawson-over-the-airBruce lawson-over-the-air
Bruce lawson-over-the-air
 
MEAN stack
MEAN stackMEAN stack
MEAN stack
 
Why Open Web Standards are cool and will save the world. Or the Web, at least.
Why Open Web Standards are cool and will save the world. Or the Web, at least.Why Open Web Standards are cool and will save the world. Or the Web, at least.
Why Open Web Standards are cool and will save the world. Or the Web, at least.
 
Developing JavaScript Widgets
Developing JavaScript WidgetsDeveloping JavaScript Widgets
Developing JavaScript Widgets
 
Mean Stack - An Overview
Mean Stack - An OverviewMean Stack - An Overview
Mean Stack - An Overview
 
Ryan Markel - WordCamp US 2017
Ryan Markel - WordCamp US 2017Ryan Markel - WordCamp US 2017
Ryan Markel - WordCamp US 2017
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
WordPress development checklist
WordPress development checklistWordPress development checklist
WordPress development checklist
 
Coding with jetpack
Coding with jetpackCoding with jetpack
Coding with jetpack
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Ryan Markel - WordCamp StL 2016 - Code Review
Ryan Markel - WordCamp StL 2016 - Code ReviewRyan Markel - WordCamp StL 2016 - Code Review
Ryan Markel - WordCamp StL 2016 - Code Review
 
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
 

Viewers also liked (14)

Fire & safety
Fire & safetyFire & safety
Fire & safety
 
Enterprise architecture
Enterprise architectureEnterprise architecture
Enterprise architecture
 
Fruits
FruitsFruits
Fruits
 
Using qualitative software in policy research
Using qualitative software in policy researchUsing qualitative software in policy research
Using qualitative software in policy research
 
Evolution of it management
Evolution of it managementEvolution of it management
Evolution of it management
 
ERP Consultant's Guidelines
ERP Consultant's GuidelinesERP Consultant's Guidelines
ERP Consultant's Guidelines
 
讓女性年輕10歲 的15種食物
讓女性年輕10歲 的15種食物讓女性年輕10歲 的15種食物
讓女性年輕10歲 的15種食物
 
LIANIS
LIANISLIANIS
LIANIS
 
Software
SoftwareSoftware
Software
 
Software
SoftwareSoftware
Software
 
Ecologia y marketing
Ecologia y marketingEcologia y marketing
Ecologia y marketing
 
◯◯#14
◯◯#14◯◯#14
◯◯#14
 
◯◯#14
◯◯#14◯◯#14
◯◯#14
 
Make your-resource-collab&prod-share point2010
Make your-resource-collab&prod-share point2010Make your-resource-collab&prod-share point2010
Make your-resource-collab&prod-share point2010
 

Similar to Project Timbit

State of jQuery - AspDotNetStorefront Conference
State of jQuery - AspDotNetStorefront ConferenceState of jQuery - AspDotNetStorefront Conference
State of jQuery - AspDotNetStorefront Conference
dmethvin
 
Developing Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDeveloping Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax Push
Doris Chen
 
Rapidly Building and Deploying Scalable Web Architectures
Rapidly Building and Deploying Scalable Web ArchitecturesRapidly Building and Deploying Scalable Web Architectures
Rapidly Building and Deploying Scalable Web Architectures
Keith Fitzgerald
 
Programming Server side with Sevlet
 Programming Server side with Sevlet  Programming Server side with Sevlet
Programming Server side with Sevlet
backdoor
 

Similar to Project Timbit (20)

AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
 
Developing For The Web
Developing For The WebDeveloping For The Web
Developing For The Web
 
Frontend architecture design for large(r) team final
Frontend architecture design for large(r) team   finalFrontend architecture design for large(r) team   final
Frontend architecture design for large(r) team final
 
Transforming the web into a real application platform
Transforming the web into a real application platformTransforming the web into a real application platform
Transforming the web into a real application platform
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building Products
 
State of jQuery - AspDotNetStorefront Conference
State of jQuery - AspDotNetStorefront ConferenceState of jQuery - AspDotNetStorefront Conference
State of jQuery - AspDotNetStorefront Conference
 
Web Tools for GemStone/S
Web Tools for GemStone/SWeb Tools for GemStone/S
Web Tools for GemStone/S
 
Andrea Di Persio
Andrea Di PersioAndrea Di Persio
Andrea Di Persio
 
Real time web
Real time webReal time web
Real time web
 
The Web, After HTML5
The Web, After HTML5The Web, After HTML5
The Web, After HTML5
 
Developing Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDeveloping Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax Push
 
Rapidly Building and Deploying Scalable Web Architectures
Rapidly Building and Deploying Scalable Web ArchitecturesRapidly Building and Deploying Scalable Web Architectures
Rapidly Building and Deploying Scalable Web Architectures
 
Introduction to asp
Introduction to aspIntroduction to asp
Introduction to asp
 
Programming Server side with Sevlet
 Programming Server side with Sevlet  Programming Server side with Sevlet
Programming Server side with Sevlet
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentWeb II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side development
 
Mobile native-hacks
Mobile native-hacksMobile native-hacks
Mobile native-hacks
 
orcreatehappyusers
orcreatehappyusersorcreatehappyusers
orcreatehappyusers
 
orcreatehappyusers
orcreatehappyusersorcreatehappyusers
orcreatehappyusers
 
Ajax Performance
Ajax PerformanceAjax Performance
Ajax Performance
 

Recently uploaded

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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
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
 

Recently uploaded (20)

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...
 
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...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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
 
[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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
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
 
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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
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
 
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
 

Project Timbit

  • 1. Project Timbit Diving into a new web development paradigm August 17, 2011 - Presented By Edward De Groot, Director Of The Postmedia Digital Innovation Team
  • 2. Introduction ✤ Postmedia’s Digital Innovation Team is finally up and running ✤ We are not about building new frameworks for CMSs but... ✤ Need a platform to quickly build new prototypes and functionality ✤ Want to assist the Professional Services team in expediting development, testing and deployment of widgets and templates ✤ Need something to keep us busy and out of trouble ✤ Want to contribute to the web development community ✤ You are encouraged to comment and/or ask questions
  • 3. Widget #1 The I/O Problem Widget #2 Widget #5 Widget #3 ✤ Widgets are typically rendered synchronously, one at a time ✤ A few slow widgets can cause Widget #4 significant delay for the page ✤ (Too) many widgets, fast or slow, will delay the page Widget #6 Widget #7 Widget #8
  • 4. The Digital Media Problem ✤ Most digital media sites are (overly) content heavy ✤ Most incorporate (too much) content from many different sources on a single page ✤ e.g. canada.com home page ✤ Built utilizing over 100 widgets. ✤ 80+ feeds from our CMS alone ✤ It’s not alone.
  • 5. Possible Solutions ✤ Utilize caching wherever and whenever possible ✤ Already do that via Akamai, MemCached, etc. (That’s why canada.com, as big as it is, still renders on the server in < 1s on average) ✤ Reduce number of widgets / page size ✤ Ideal, but we will always be somewhat content heavy ✤ Render widgets in parallel! ✤ Both obvious and promising...
  • 6. ESI to the Rescue Widget #1 Widget #2 Widget #3 Widget #4 Widget #5 Widget #6 Widget #7 Widget #8 ✤ Edge Side Includes (ESI), available via our CDN (Akamai) can help ✤ ESI will allow us to render most widgets in parallel ✤ Postmedia DM released support for ESI / Remote Widgets this week! ✤ (We don’t have any remote widgets.... yet)
  • 7. Better, but not Great. ✤ The majority of widgets render data from remote data sources (Databases, REST APIs, etc.) ✤ I/O calls introduce significant latency ✤ Therefore, most widgets, under load, spend most of their time waiting for data ✤ In concurrency-based, multi-threaded applications with significant I/IO, high loads will result in most threads being blocked. The result? ✤ High CPU/memory utilization (significant context switching) ✤ Low throughput (lot’s of blocking) ✤ High request queuing
  • 8. The Main Event ✤ Event-Driven architecture solves the I/O latency issues. ✤ Much better at handling high number of concurrent users ✤ Much better memory efficiency under high loads ✤ No dead-locking, as there are no locks, no blocking calls. ✤ As such, a widget can continue to service new requests while waiting on I/O for other requests.
  • 9. Node.js ✤ An event-driven server-side JavaScript environment based on V8. It is intended for writing scalable network programs such as web servers. ✤ Event-Driven libraries are available for other languages (Ruby, Python etc.) so why Node.js? ✤ In Node.js, event-driven is not an after thought. Less likely to accidentally create blocking calls, particularly 3rd party packages/libraries ✤ The merging of websites and native applications is inevitable. HTML5, CSS3 and JavaScript will (finally) enable and empower that platform. (my opinion) ✤ The lines between Client, Cloud, and Server will continue to erode. JavaScript enables our code to become portable. (more on that later)
  • 10. CoffeeScript ✤ A programming language that transcompiles to JavaScript. ✤ Adds syntactic sugar inspired by Ruby, Python and Haskell ✤ Adds more sophisticated features like array comprehension and pattern matching. ✤ Compiles predictably to JavaScript, programs can be written with less code with no effect on runtime performance ✤ (ED loves Ruby, hates JavaScript, and drinks a lot of Coffee.)
  • 12. Magic! ✤ Pantry - A JSON/XML resource caching library ✤ Timbits - Widget framework on Express and CoffeeScript ✤ kitkat - Kontinuous integrated testing koffee application template ✤ connect-esi - Edge Side Includes tag processor for the connect framework ✤ Samples - Including an HTML5 based Story widget with multi-device rendering support (Browser, Tablet, Phone) ✤ All of these projects are open source!
  • 13. Pantry A JSON/XML resource caching library ✤ Multiple ‘simultaneous’ requests for the same resource will only generate a single request which will fulfil all others ✤ Optimistic caching - Assumes recently expired items are still ‘Good’ ✤ Whenever feasible, all cache refreshes happen in the background ✤ Automatically parses/converts JSON and XML feeds into JavaScript objects ✤ Fully configurable (shelfLife, maxLife, capacity etc.)
  • 14. Timbits Widget framework on Express and CoffeeScript ✤ Built on top of some maturing Node.js packages ✤ Connect.js - Middleware framework for node.js ✤ Express.js - Sinatra inspired web development framework ✤ CoffeeKup - HTML templating engine based on CoffeeScript ✤ Makes it easy to build an API consuming, data rendering widget. ✤ By default, it utilizes Pantry for all data consumption ✤ [DEMO]
  • 15. kitkat Kontinuous integrated testing koffee application template ✤ An automated testing framework for node.js and CoffeeScript ✤ Will automatically run tests when the project changes ✤ Integrates with Growl ✤ Convention over configuration ✤ Includes spec generation (single, all, and automatic) ✤ [DEMO]
  • 16. connect-esi Edge Side Includes tag processor for the connect ✤ Main purpose (today) is to assist in testing widgets ✤ Only basic ESI support so far ✤ esi:include (including nested) ✤ variables such as $(HTTP _COOKIE), $(QUERY_STRING) etc. ✤ [DEMO]
  • 17. Examples ✤ Objective #1 - Practical proof of concept widget for Timbits ✤ Objective #2 - Display the beauty of CoffeeKup templating language ✤ Objective #3 - Attempting to prove that a single widget template can be utilized for multiple designs and across multiple browsers/devices ✤ Generic HTML5 utilizing unobtrusive CSS and JavaScript (no inline styles or code ✤ This still needs a little more work ✤ [DEMO]
  • 18. Going Forward ✤ You can begin building widgets using Timbits today ✤ Moving towards stable, production ready v 0.2 of all libraries ✤ Planning new features, such as ✤ Better error handling and documentation (all) ✤ Scaffolding (timbits) ✤ Optional client side rendering (timbits) ✤ Support for Redis (Pantry) ✤ Windows Development Support (all)

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n