Breaking The Monotony

      @sai_venkat &
      @harikrishnan83
Or
Theme



The Agility we seek is from the code we write
and systems we build and not just from
processes and practices we f...
Why this talk?
 ●   As Craftsmen we are on look out for right
     tool for the job and sharing our
     experiences with ...
Introspection
Modeling time
●   Aim – To build the world's largest resume builder.
●   We choose you as the architect (or funky name – M...
Person_PK LastName                                       Resume Person Title                         Summary
             ...
Same Data Modeled as Documents
 {                                                   {
     Name: “Closseau”,              ...
A Case for Non Relational
                Databases
●   Schema less Data helps us to evolve the model over the
    course ...
Polyglot & PolyParadigm
                Programming
●   Today's Applications Need to
    ●   Must scale
    ●   Must be re...
Hope you don't have someone like this
in your team -

I work only with Java.....
Polyglot & PolyParadigm
                  Programming
●   Are there any advantages to writing an entire application in one...
In Erlang
                                    In Java
-module (fact).
-export ([fact/1]).                 public int fact(...
Polyglotism in Testing

We would use Java or C# to write functional tests as our application code is in that language

   ...
Polyglotism in Testing
Using Cucumber + Jruby or Groovy for acceptance testing of services and API
interfaces in Java.


 ...
Polyglotism in Testing
Using Cucumber + Jruby or Groovy for acceptance testing of services and API
interfaces in Java.


 ...
Build and Deployment
●   Build script or Build code?
●   9000 lines of XML Code and still no test?
●   We really need a fi...
The path less traveled
Thank you for listening to us.

                Sai Venkatakrishnan

                Twitter - http://twitter.com/sai_venk...
Breaking The Monotony
Upcoming SlideShare
Loading in...5
×

Breaking The Monotony

4,005

Published on

To retrospect at the monotony that has crept into the way we develop application and how it affects us being Agile

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,005
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Breaking The Monotony

  1. 1. Breaking The Monotony @sai_venkat & @harikrishnan83
  2. 2. Or
  3. 3. Theme The Agility we seek is from the code we write and systems we build and not just from processes and practices we follow.
  4. 4. Why this talk? ● As Craftsmen we are on look out for right tool for the job and sharing our experiences with you. ● This talk is based on the experiences we have on our day to day projects – The choice we make when we build the application can bring us agility. ● We have chosen to concentrate on these areas because in any decent sized (Enterprise :P) project these problems are common.
  5. 5. Introspection
  6. 6. Modeling time ● Aim – To build the world's largest resume builder. ● We choose you as the architect (or funky name – Master Craftsman) to create a model of a profile builder. ● Tell us what you need (tools, frameworks) and your model. ● Catch – We don't want to restrict the resumes coming in from public in any way. We want the users to give as much information about them as possible
  7. 7. Person_PK LastName Resume Person Title Summary _PK _FK 1 clouseau 2 1 Inspector Developer with turned instincts of an Developer inspector Resume_FK Skill_FK 2 1 Skill_PK Name Description 2 2 1 Java Statically 2 3 typed language 2 Clojure Lisp like language 3 S E L E C T * F R O M P e r s o n p , R e s u m e r, S k ill s , R e s u m e _ S k ill r s Haskel Functional W HERE language p .P e r s o n _ P K = r.P e r s o n _ F K A N D r.R e s u m e _ P K = r s . R e s u m e _ F K A N D s . S k ill_ P K = r s . S k ill_ F K A N D s .N a m e in ( “ J a v a ” , “ C lo j u r e ” )
  8. 8. Same Data Modeled as Documents { { Name: “Closseau”, Name: “Mr Magoo”, title: “Inspector turned developer”, title: “Funny developer”, Skills: [“Ruby”, “Haskell”, “C#”], Skills: [“Ruby”, “Self”, “Clojure”], Telephone_Numbers: [9611805466], Email-id: “magoo@looneytoons.com”, Experience: 5 Experience: 4 } } Querying the Data: Map function: function(doc) { if (contains(doc.skills, [“java”, “clojure”])) { emit(null, doc); } }
  9. 9. A Case for Non Relational Databases ● Schema less Data helps us to evolve the model over the course of application development and maintenance (Ex. FriendFeed, github, Sourceforge) ● Scaling out is easy in nosql databases. Throw in more commodity machine. ● You may not always need atomic consistency (Dirty interface of mnesia) ● Most nosql Databases are simpler than conventional RDBMS, hence more robust and lightweight ● SQL Engines are only a convenience If they are not helping don't have to use them (Waffle on Mysql Datastore)
  10. 10. Polyglot & PolyParadigm Programming ● Today's Applications Need to ● Must scale ● Must be resilient and secure ● Must evolve for future ● Work with large volumes of data and users.
  11. 11. Hope you don't have someone like this in your team - I work only with Java.....
  12. 12. Polyglot & PolyParadigm Programming ● Are there any advantages to writing an entire application in one language or one stack (Microsoft shop or Java shop anyone)? ● Is one language best for all domains? ● Are we harnessing the power we have in our hardware? ● Languages have their boundaries – Imperative vs Functional, Static vs Dynamic, Procedural vs Object Oriented ● Advantages are mostly relative and context sensitive. ● Examples: Flightcaster, Facebook Chat, github - BERT, Runa – Swarmiji, Twitter ● No Language Wars please :)
  13. 13. In Erlang In Java -module (fact). -export ([fact/1]). public int fact(int value) { fact(0) -> 1; if (value == 0) fact(N) -> N * fact(N -1). { return 0; } else Tail Recursion Optimized { return value * fact(value - 1); -module (fact). } -export ([fact/1]). } fact(N) -> fact(N, 1). fact(0, A) -> A; fact(N, A) -> fact(N -1, N * A).
  14. 14. Polyglotism in Testing We would use Java or C# to write functional tests as our application code is in that language require “watir” package org.openqa.selenium.example; browser = Watir::Browser.new(:firefox) import org.openqa.selenium.By; browser.goto “http://www.google.com” import org.openqa.selenium.WebDriver; browser.text_field(:name, “q”).set “Cheese” import org.openqa.selenium.WebElement; browser.button(:name, “btnG”).click import org.openqa.selenium.htmlunit.HtmlUnitDriver; puts “Page title is #{browser.title}” public class Example  {     public static void main(String[] args) {         WebDriver driver = new HtmlUnitDriver();         driver.get("http://www.google.com");         WebElement element = driver.findElement(By.name("q"));         element.sendKeys("Cheese!");         element.submit();         System.out.println("Page title is: " + driver.getTitle());     } }
  15. 15. Polyglotism in Testing Using Cucumber + Jruby or Groovy for acceptance testing of services and API interfaces in Java. Feature: Proposal notification In order to reduce time spent on emailing Administrators should be able to mail all proposals owners depending on status Scenario: Email accepted proposal Given hari@gmail.com proposed 'Breaking the Monotony' And the 'Breaking the Monotony' proposal is approved When I send mass proposal email Then hari@gmail.com should get email """ Hi hari@gmail.com Congratulations, 'Breaking the Monotony' was accepted. See you at 'Agile India 2010'! """
  16. 16. Polyglotism in Testing Using Cucumber + Jruby or Groovy for acceptance testing of services and API interfaces in Java. Feature: Proposal notification In order to reduce time spent on emailing Administrators should be able to mail all proposals owners depending on status Scenario: Email accepted proposal Given hari@gmail.com proposed 'Breaking the Monotony' And the 'Breaking the Monotony' proposal is approved When I send mass proposal email Then hari@gmail.com should get email """ Hi hari@gmail.com Congratulations, 'Breaking the Monotony' was accepted. See you at 'Agile India 2010'! """
  17. 17. Build and Deployment ● Build script or Build code? ● 9000 lines of XML Code and still no test? ● We really need a first class language for flexibility ● Programming in XML doesn't make sense ● Pure declarative model solves some problems but reduces flexibility ● Testing is much simpler with a real language ● Use Ruby or Groovy for build (Example: FubuMVC in Rake) and Capistrano for deployment. ● Continuous Deployment. ● Cloud for deployment.
  18. 18. The path less traveled
  19. 19. Thank you for listening to us. Sai Venkatakrishnan Twitter - http://twitter.com/sai_venkat Github - http://github.com/saivenkat Blog - http://developer-in-test.blogspot.com Harikrishnan Twitter - http://twitter.com/harikrishnan83 Github - http://github.com/harikrishnan83 Blog - http://harikrishnan83.wordpress.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×