SlideShare a Scribd company logo
Polyglot
Programming in
or ‘building hybrid web
buzdin@gmail.com


          @buzdin

Dmitry Buzdin
The Problem
Web App of 2006
Web App of 201
Local
 WebGL Storage
     Perfor
               CSS3
     mance
Interopera
            Mobile
Respon
   bility
          RESTCanvas
  sive
      Offline apps
 design
Modulari
          JSONComet
Complexity inside
your browser app
The most
 popular

        * and
       Node.js
Good Stuff about
   JavaScript
 Simple to start with
 Dynamic
 Runs in all browsers
 Hundreds of libraries
So why not
JavaScript?!
console.log("2"   / "2");
// 1
console.log("2"   * "2");
// 4
console.log("1"   + "2");
// 12
console.log(1 +   "2");
// 12
console.log([1, 2, 3] + 1);
// 1,2,31
console.log(1 + true + false);
// 2
console.log(true + "a");
// truea
JavaScript Flaws
 Weak dynamic typing
  No modularity/proper class
syntax/scopes
 Portability problems
 Lack of Refactoring support
 Slow Evolution?
JavaScri
  pt...
JavaScript is hard
    to scale!
There is an
  Languages,
which compile to
   JavaScript
Good Stuff About
  Type safety

  Proper classes/modules

  Evolution is not tied to all
 browser vendors
What will you lose
without JavaScript?
   JSON
   Eval()
    Hundreds of
  Libraries
   jQuery?
How to get
the best from
The Solution
Hybrid Approach

Two or more languages
     on the client
 JavaScript as target
      platform
Let’s split our
  system to
Views


 UI Components              View Libraries


                 JSON Model


   Controllers             Support Libraries


AJAX/Comet           REST           Storage
Frequency of
  changes
                    Views


               UI Components


               Application Logic


           Infrastructure Code

                              Code complexity
UI plumbing
   could be done
   with dynamic
     language
Infrastructure code
       is more
  manageable in
Some Problems
     How do these
languages interoperate?


 How to reuse existing
How to
integrate
GWT in 2
•Write in Java compile
to JavaScript
•
Development mode
with code refresh
•
Transparent remoting
Some Features
•HTML5 API support
•Cross-browser
 compatibility
•Closure Tools compiler
•Production-ready since
Used In
•Google products
•Web projects (Evernote
 for example)
•Plenty of Enterprise
 Apps!
GWT <> JavaScript
private static void java(String param) {
}

private native void javaScript() /*-{

  $wnd.alert(‘Hello, JavaScript!’);

  $wnd.callback = @com.a.b.Type.java
(Ljava.lang.String;);

}-*/;
Dart in 2 Minutes
•New language made by
 Google
•Compiles to JavaScript
 or runs in VM
•Both server and client
Dart Highlights
•
Created by people with
GWT, V8, JVM and Java
background
•
Sweet spot between Java
and JavaScript
Used In

•
Milestone 1 released in
October 2012
•
Not used yet...
Dart <> JavaScript
#import('package:js/js.dart', prefix: 'js');

void main() {

    dart() {
    }

    js.scoped() {
      js.context.alert(‘Hello, JavaScript!’);
      js.context.x = new js.Callback.once(dart);
    }
}
Code
  like
that?...
JavaScript   Dart/GWT
   Part         Part
Too complex and
              unmanageable




JavaScript                     Dart/GWT
   Part                           Part
JavaScript         ?          Dart/GWT
   Part                          Part

             What if we do
              it like this?
Event Bus
  in the
        OMG!
Introducing
     Event Bridge
        EventBridge                     Callback

subscribe(Topic, Callback)
unsubscribe(Callback)            onEvent(Data, Callback)
publish(Topic, Data, Callback)
Java
bridge.subscribe("broadcast", this);



public void onEvent(ModelAttributes attributes,
  		 	 	 	 	 	       ModelEventCallback callback) {
   ModelAttributes result = Responses.attributes();
   result.set("result", "Response for JS");
   callback.resolve(result);
}


ModelAttributes data = Responses.attributes();
data.set("value", "Hello from GWT");
bridge.publish("broadcast", data);
onEvent(data, callback) {
  // Dart code                             Dart
}

eventBridge.subscribe(‘broadcast’, onEvent);



onResult(data) {
  // Dart code
}

eventBridge.publish('broadcast',
           {'value': 'Hello from Dart'},
           onResult);
$bridge.subscribe('broadcast',         JavaScript
        function (attrs, fn) {
            // JavaScript code
            fn();
        });




$bridge.publish('broadcast',
            { value: ‘Hello from JavaScript‘ },
            onResult
);
Profit!
 Not using JavaScript
interoperability API
 Transparent JSON based
exchange
 Single point of
communication
Event Bridge is
   coded in
  JavaScript,
Dart
                      Coffee
   Clojure
                      Script



                           Type
GWT            JS          Script



   Fantom             Kotlin
             Ceylon


One B!d" to rule #em all
Real-World Stuff
Introducing
 Visual Graph-
      based
spreadsheets in
    the cloud
         www.livesheets.com
Main
 Challenges
 Complex Domain
Model
 Expression language
 Offline calculations
 Sharing and
in JavaScript
                Client TechStack          in Java


       Twitter Bootstrap        GWT SDK


          Underscore.js           Guava


            Require.js     B      Guice


                jQuery           ANTLR


                jsPlumb        Domain Model
Event Flow

Draw

                    Domain Model
       Click




       jQuery   B    Controller



   jsPlumb
                        REST
Views


             UI Components             View Libraries
JavaScript
                            JSON Model
  Java
              Controllers             Support Libraries


         AJAX/Comet             REST           Storage
Clean View and Logic
separation
  Reusing cool
JavaScript libraries
 ANTLR in the browser!
 Expressions on client
Conclusions
JavaScript is not enough for
big/complex apps!
JavaScript is a platform, not
a language
For ambitious projects use
GWT, Dart or other
Client side has architecture
JavaScript
Interoperability in
 Essential for anything
the browser
  If missing -> choose
next technology
   Check for JavaScript
library wrappers
Pick the right
    tools!
buzdin@gmail.com


          @buzdin

Dmitry Buzdin
Additional Info
https://developers.google.com/web-toolkit/
http://www.dartlang.org
https://github.com/buzdin/hybrid-web-apps

        FlickrAttributions
               Sander van der Wel
                Alex E. Proimos
                    esther**
               Maccio Capatonda

More Related Content

What's hot

Vaadin 7.2
Vaadin 7.2Vaadin 7.2
Vaadin 7.2
Joonas Lehtinen
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platform
Didier Girard
 
Multi modularized project setup with gulp, typescript and angular.js
Multi modularized project setup with gulp, typescript and angular.jsMulti modularized project setup with gulp, typescript and angular.js
Multi modularized project setup with gulp, typescript and angular.jsDavid Amend
 
Griffon - Making Swing Fun Again
Griffon - Making Swing Fun AgainGriffon - Making Swing Fun Again
Griffon - Making Swing Fun Again
Danno Ferrin
 
From User Action to Framework Reaction
From User Action to Framework ReactionFrom User Action to Framework Reaction
From User Action to Framework Reaction
jbandi
 
React Vs AnagularJS
React Vs AnagularJSReact Vs AnagularJS
React Vs AnagularJS
deepakpatil84
 
Jak tvořit hry na webu?
Jak tvořit hry na webu?Jak tvořit hry na webu?
Jak tvořit hry na webu?
Pavol Hejný
 
Turducken - Divide and Conquer large GWT apps with multiple teams
Turducken - Divide and Conquer large GWT apps with multiple teamsTurducken - Divide and Conquer large GWT apps with multiple teams
Turducken - Divide and Conquer large GWT apps with multiple teams
Robert Keane
 
Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015
Sami Ekblad
 
Windows 8 für .net Entwickler
Windows 8 für .net EntwicklerWindows 8 für .net Entwickler
Windows 8 für .net Entwickler
Patric Boscolo
 

What's hot (10)

Vaadin 7.2
Vaadin 7.2Vaadin 7.2
Vaadin 7.2
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platform
 
Multi modularized project setup with gulp, typescript and angular.js
Multi modularized project setup with gulp, typescript and angular.jsMulti modularized project setup with gulp, typescript and angular.js
Multi modularized project setup with gulp, typescript and angular.js
 
Griffon - Making Swing Fun Again
Griffon - Making Swing Fun AgainGriffon - Making Swing Fun Again
Griffon - Making Swing Fun Again
 
From User Action to Framework Reaction
From User Action to Framework ReactionFrom User Action to Framework Reaction
From User Action to Framework Reaction
 
React Vs AnagularJS
React Vs AnagularJSReact Vs AnagularJS
React Vs AnagularJS
 
Jak tvořit hry na webu?
Jak tvořit hry na webu?Jak tvořit hry na webu?
Jak tvořit hry na webu?
 
Turducken - Divide and Conquer large GWT apps with multiple teams
Turducken - Divide and Conquer large GWT apps with multiple teamsTurducken - Divide and Conquer large GWT apps with multiple teams
Turducken - Divide and Conquer large GWT apps with multiple teams
 
Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015Vaadin and Spring at Devoxx UK 2015
Vaadin and Spring at Devoxx UK 2015
 
Windows 8 für .net Entwickler
Windows 8 für .net EntwicklerWindows 8 für .net Entwickler
Windows 8 für .net Entwickler
 

Viewers also liked

WHITE NOISE: ANALYSIS
WHITE NOISE: ANALYSISWHITE NOISE: ANALYSIS
WHITE NOISE: ANALYSIS
MrFujji
 
Storyboards Draft
Storyboards DraftStoryboards Draft
Storyboards Draftsazmobile
 
Theory Communication
Theory CommunicationTheory Communication
Theory CommunicationHikari Riten
 
Signals and classification
Signals and classificationSignals and classification
Signals and classificationSuraj Mishra
 
Types of noise
Types of noiseTypes of noise
Types of noise
Babul Reddy
 
Noise
NoiseNoise
Noise
bhavyaw
 
Analog to digital converter
Analog to digital converterAnalog to digital converter
Analog to digital converter
Ashutosh Jaiswal
 
Communication Engineering - Chapter 6 - Noise
Communication Engineering - Chapter 6 - NoiseCommunication Engineering - Chapter 6 - Noise
Communication Engineering - Chapter 6 - Noisemkazree
 
DAC , Digital to analog Converter
DAC , Digital to analog ConverterDAC , Digital to analog Converter
DAC , Digital to analog Converter
Hossam Zein
 
Noise in communication system
Noise in communication systemNoise in communication system
Noise in communication systemfirdous006
 
Noise in Communication System
Noise in Communication SystemNoise in Communication System
Noise in Communication SystemIzah Asmadi
 
Signals and Systems Notes
Signals and Systems Notes Signals and Systems Notes
Signals and Systems Notes
Akshansh Chaudhary
 
Digital communication system
Digital communication systemDigital communication system
Digital communication system
babak danyal
 
Digital communication systems
Digital communication systemsDigital communication systems
Digital communication systemsNisreen Bashar
 
DAC-digital to analog converter
DAC-digital to analog converterDAC-digital to analog converter
DAC-digital to analog converter
Shazid Reaj
 
Analog to digital conversion
Analog to digital conversionAnalog to digital conversion
Analog to digital conversionEngr Ahmad Khan
 
Types of Noise (Ch 1)
Types of Noise (Ch 1)Types of Noise (Ch 1)
Types of Noise (Ch 1)drpaullippert
 

Viewers also liked (17)

WHITE NOISE: ANALYSIS
WHITE NOISE: ANALYSISWHITE NOISE: ANALYSIS
WHITE NOISE: ANALYSIS
 
Storyboards Draft
Storyboards DraftStoryboards Draft
Storyboards Draft
 
Theory Communication
Theory CommunicationTheory Communication
Theory Communication
 
Signals and classification
Signals and classificationSignals and classification
Signals and classification
 
Types of noise
Types of noiseTypes of noise
Types of noise
 
Noise
NoiseNoise
Noise
 
Analog to digital converter
Analog to digital converterAnalog to digital converter
Analog to digital converter
 
Communication Engineering - Chapter 6 - Noise
Communication Engineering - Chapter 6 - NoiseCommunication Engineering - Chapter 6 - Noise
Communication Engineering - Chapter 6 - Noise
 
DAC , Digital to analog Converter
DAC , Digital to analog ConverterDAC , Digital to analog Converter
DAC , Digital to analog Converter
 
Noise in communication system
Noise in communication systemNoise in communication system
Noise in communication system
 
Noise in Communication System
Noise in Communication SystemNoise in Communication System
Noise in Communication System
 
Signals and Systems Notes
Signals and Systems Notes Signals and Systems Notes
Signals and Systems Notes
 
Digital communication system
Digital communication systemDigital communication system
Digital communication system
 
Digital communication systems
Digital communication systemsDigital communication systems
Digital communication systems
 
DAC-digital to analog converter
DAC-digital to analog converterDAC-digital to analog converter
DAC-digital to analog converter
 
Analog to digital conversion
Analog to digital conversionAnalog to digital conversion
Analog to digital conversion
 
Types of Noise (Ch 1)
Types of Noise (Ch 1)Types of Noise (Ch 1)
Types of Noise (Ch 1)
 

Similar to Web polyglot programming

Google Web Toolkit Introduction - eXo Platform SEA
Google Web Toolkit Introduction - eXo Platform SEAGoogle Web Toolkit Introduction - eXo Platform SEA
Google Web Toolkit Introduction - eXo Platform SEA
nerazz08
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
JooinK
 
GWT: Our Experiences
GWT: Our ExperiencesGWT: Our Experiences
GWT: Our Experiences
Yenwen Feng
 
Gwt session
Gwt sessionGwt session
Gwt session
Mans Jug
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13Fred Sauer
 
Google Web Toolkit (JUG Latvia)
Google Web Toolkit (JUG Latvia)Google Web Toolkit (JUG Latvia)
Google Web Toolkit (JUG Latvia)Dmitry Buzdin
 
JSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph PicklJSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph Pickl
Christoph Pickl
 
The Java alternative to Javascript
The Java alternative to JavascriptThe Java alternative to Javascript
The Java alternative to Javascript
Manuel Carrasco Moñino
 
Introduction to Google Web Toolkit
Introduction to Google Web ToolkitIntroduction to Google Web Toolkit
Introduction to Google Web Toolkit
Jeppe Rishede
 
GWT Extreme!
GWT Extreme!GWT Extreme!
GWT Extreme!
cromwellian
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
Software Park Thailand
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007lucclaes
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
DNG Consulting
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?jbandi
 
Huge web apps web expo 2013
Huge web apps web expo 2013Huge web apps web expo 2013
Huge web apps web expo 2013
Daniel Steigerwald
 
The Case for React.js and ClojureScript
The Case for React.js and ClojureScriptThe Case for React.js and ClojureScript
The Case for React.js and ClojureScript
Murilo Pereira
 
GWT
GWTGWT

Similar to Web polyglot programming (20)

Gwt Presentation1
Gwt Presentation1Gwt Presentation1
Gwt Presentation1
 
Google Web Toolkit Introduction - eXo Platform SEA
Google Web Toolkit Introduction - eXo Platform SEAGoogle Web Toolkit Introduction - eXo Platform SEA
Google Web Toolkit Introduction - eXo Platform SEA
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
GWT: Our Experiences
GWT: Our ExperiencesGWT: Our Experiences
GWT: Our Experiences
 
Gwt session
Gwt sessionGwt session
Gwt session
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
Google Web Toolkit (JUG Latvia)
Google Web Toolkit (JUG Latvia)Google Web Toolkit (JUG Latvia)
Google Web Toolkit (JUG Latvia)
 
JSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph PicklJSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph Pickl
 
Gwt
GwtGwt
Gwt
 
The Java alternative to Javascript
The Java alternative to JavascriptThe Java alternative to Javascript
The Java alternative to Javascript
 
Introduction to Google Web Toolkit
Introduction to Google Web ToolkitIntroduction to Google Web Toolkit
Introduction to Google Web Toolkit
 
GWT Extreme!
GWT Extreme!GWT Extreme!
GWT Extreme!
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
Huge web apps web expo 2013
Huge web apps web expo 2013Huge web apps web expo 2013
Huge web apps web expo 2013
 
The Case for React.js and ClojureScript
The Case for React.js and ClojureScriptThe Case for React.js and ClojureScript
The Case for React.js and ClojureScript
 
GWT
GWTGWT
GWT
 

More from Dmitry Buzdin

How Payment Cards Really Work?
How Payment Cards Really Work?How Payment Cards Really Work?
How Payment Cards Really Work?
Dmitry Buzdin
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
Dmitry Buzdin
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
Dmitry Buzdin
 
How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?
Dmitry Buzdin
 
Delivery Pipeline for Windows Machines
Delivery Pipeline for Windows MachinesDelivery Pipeline for Windows Machines
Delivery Pipeline for Windows Machines
Dmitry Buzdin
 
Big Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop InfrastructureBig Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop Infrastructure
Dmitry Buzdin
 
Developing Useful APIs
Developing Useful APIsDeveloping Useful APIs
Developing Useful APIsDmitry Buzdin
 
Архитектура Ленты на Одноклассниках
Архитектура Ленты на ОдноклассникахАрхитектура Ленты на Одноклассниках
Архитектура Ленты на ОдноклассникахDmitry Buzdin
 
Riding Redis @ask.fm
Riding Redis @ask.fmRiding Redis @ask.fm
Riding Redis @ask.fmDmitry Buzdin
 
Rubylight JUG Contest Results Part II
Rubylight JUG Contest Results Part IIRubylight JUG Contest Results Part II
Rubylight JUG Contest Results Part IIDmitry Buzdin
 
Rubylight Pattern-Matching Solutions
Rubylight Pattern-Matching SolutionsRubylight Pattern-Matching Solutions
Rubylight Pattern-Matching SolutionsDmitry Buzdin
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with ClojureDmitry Buzdin
 
Poor Man's Functional Programming
Poor Man's Functional ProgrammingPoor Man's Functional Programming
Poor Man's Functional ProgrammingDmitry Buzdin
 
Rubylight programming contest
Rubylight programming contestRubylight programming contest
Rubylight programming contestDmitry Buzdin
 
Continuous Delivery
Continuous Delivery Continuous Delivery
Continuous Delivery Dmitry Buzdin
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsDmitry Buzdin
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump AnalysisDmitry Buzdin
 

More from Dmitry Buzdin (20)

How Payment Cards Really Work?
How Payment Cards Really Work?How Payment Cards Really Work?
How Payment Cards Really Work?
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
 
How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?
 
Delivery Pipeline for Windows Machines
Delivery Pipeline for Windows MachinesDelivery Pipeline for Windows Machines
Delivery Pipeline for Windows Machines
 
Big Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop InfrastructureBig Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop Infrastructure
 
JOOQ and Flyway
JOOQ and FlywayJOOQ and Flyway
JOOQ and Flyway
 
Developing Useful APIs
Developing Useful APIsDeveloping Useful APIs
Developing Useful APIs
 
Whats New in Java 8
Whats New in Java 8Whats New in Java 8
Whats New in Java 8
 
Архитектура Ленты на Одноклассниках
Архитектура Ленты на ОдноклассникахАрхитектура Ленты на Одноклассниках
Архитектура Ленты на Одноклассниках
 
Dart Workshop
Dart WorkshopDart Workshop
Dart Workshop
 
Riding Redis @ask.fm
Riding Redis @ask.fmRiding Redis @ask.fm
Riding Redis @ask.fm
 
Rubylight JUG Contest Results Part II
Rubylight JUG Contest Results Part IIRubylight JUG Contest Results Part II
Rubylight JUG Contest Results Part II
 
Rubylight Pattern-Matching Solutions
Rubylight Pattern-Matching SolutionsRubylight Pattern-Matching Solutions
Rubylight Pattern-Matching Solutions
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with Clojure
 
Poor Man's Functional Programming
Poor Man's Functional ProgrammingPoor Man's Functional Programming
Poor Man's Functional Programming
 
Rubylight programming contest
Rubylight programming contestRubylight programming contest
Rubylight programming contest
 
Continuous Delivery
Continuous Delivery Continuous Delivery
Continuous Delivery
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump Analysis
 

Web polyglot programming