Ruby Insurgency

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1

    Hello and welcome I’m Andy Hunt Today’s talk is on how we can change the world a little bit

    3 Favorites & 1 Group

    Ruby Insurgency - Presentation Transcript

    1. The Pragmatic Programmers, LLC Andrew Hunt RUBY INSURGENCY
    2. RUBY
    3. RUBY
    4. What is “insurgency”?
      • Main Entry: in·sur·gen·cy Function: noun Date: 1803 1 : the quality or state of being insurgent; specifically : a condition of revolt against a government that is less than an organized revolution and that is not recognized as belligerency
    5. The Battlegound
      • Fortress of corporate IT
      • Guarded by trolls
      • Fiefdoms devoted to
      • tools, languages,
      • methodologies, etc.
      Corporate I.T. X
    6. How did Perl get in?
      • Non-threatening, non-mission-critical
        • “ Playing with the web”
      • Better than /bin/sh, awk, cut, sed, ...
      • Became mission critical!
      • Ubiquitous, but still messy
    7. How can Ruby get in?
      • Ruby is better than Perl
      • Better extensibility
        • Evolution of Ruby programs over time
        • Easier addition of C code modules
      • Better maintainability
        • Easier to read
        • Easier to understand
        • Principle of Least Surprise
    8. Ruby offers ease and clarity of expression
    9. How to leverage Ruby’s strength
      • RubyLearn
      • RubyGlue
      • RubyFace
      • RubyHack
      • RubyRules
      Least threatening Most threatening
    10. RubyLearn Ruby as CASE tool
    11. RubyLearn
      • No Ruby in development
      • No Ruby in deployment
      • Ruby as a “mental amplifier”
    12. RubyLearn
      • Central activity to programming is learning
        • The problem domain
        • Domain language and business processes
    13. RubyLearn
      • Central activity to programming is learning
        • What customer/client needs and wants
        • Bits of technology (Java API’s, et al)
    14. RubyLearn
      • Central activity to programming is learning
        • System behavior, especially:
          • under load
          • given bad data
    15. RubyLearn
      • Algorithm Design
        • Small, specific problem
        • An ADT, new algorithm, or combination
        • Stateful considerations
        • Range and boundary semantics
    16. RubyLearn
      • Architectural Spike
        • Executable “big block diagram”
        • Design by Contract across major interfaces
        • Quickly run and validate assumptions
        • (Like XUML, but more realistic and flexible)
    17. RubyLearn
      • Module Prototyping
        • Low-friction refactoring
        • Tests
        • Mock Objects
        • Interfaces
        • Refactor rapidly as you learn key relationships and characteristics
    18. RubyLearn – Key Points
      • Low-friction
        • Clarity of expression, easy to map to deployment language
        • Quick and easy to modify/adapt as you learn
        • Text based format amenable to tools
    19. RubyLearn – Key Points
      • Low-friction
      • Verifiable
        • Unlike diagrams, can actually run it
    20. RubyLearn – Key Points
      • Low-friction
      • Verifiable
      • Not much competition in this space
        • Old hands use Smalltalk for this purpose (some Python)
        • Newbies not used to thinking first
    21. RubyGlue Ruby runs development
    22. RubyGlue
      • Ruby in development only–
      • No Ruby in deployment
    23. RubyGlue
      • Strong area for Perl:
      • “The Swiss-army Chainsaw”
      • Powerful, but very messy
      • Constrained to the blades available
      • Gluing disparate bits of tech is hard
        • Even harder trying to decode ${${$x[2]}[3]}[5] or $$a[2][2]
    24. RubyGlue
      • Ruby is not a Swiss-army chainsaw
      • More like a Star Trek™ replicator
        • Say what you want, you get it
        • “ Tea, Earl Grey, Hot”
      • Makes supporting development easy
    25. RubyGlue
      • It needs to be right
      • It needs to be right now
      • It needs to be maintainable
    26. RubyGlue
      • Project Support
        • Post nightly build output to web
        • Annotate, hyperlink or highlight logs
        • Customized Wikis
        • Manage football pools, baby pools, etc.
    27. RubyGlue – build automation Source files Other inputs Build processor - make - ant - Aegis Executable code Passed tests Documentation Database construction make make schema make doc make test
    28. RubyGlue
      • The Nightly Build
      • * Current build status:
      • There were 2 errors or unexpected exceptions
      • 4 Java unit tests failed:
        • com.loser.library.time.test.TestBasicZone
        • com.loser.library.xmlapplication.test.TestXmlApplication
        • com.loser.server.search.test.TestGetCalcConsReads
        • com.loser.server.security.test.TestSecurity
      • Build FAILS as of Friday, October 12 at 10:34AM.
      • * Most Recent Log
      • * DeveloperHandbook -- How to set up and develop code for this project
      • * Project-wide Java doc
    29. RubyGlue – annotated log
    30. RubyGlue
      • Build and Release procedure
        • Oversee different compilation environments
        • Assembling release
        • Burn the CD-ROM or upload to ftp server
    31. RubyGlue – nightly build Developer 1 Source Source repository Automated build system C heck out source Issue build products Publish results Developer 2 Source Run automatically
    32. RubyGlue
      • Regression Test Automation
        • Setting up database for unit tests
        • Run and analyze output
        • Notify team of build failures (e-mail, pager)
    33. RubyGlue
      • Documentation and Code generation
        • As a straight code generator
          • Telephone routing application:
          • 6k Ruby generating 150k of C++ code
    34. RubyGlue
      • Documentation and Code generation
        • Tweak results from other code generators (yacc, lex, java2idl)
        • Create SQL load scripts for database from doc
        • Documentation beyond capabilities of JavaDoc
    35. RubyGlue
      • All the things we would have used Perl for
        • Much easier
        • More maintainable
        • Preserves intellectual property
      • IT JUST WORKS.
    36. RubyFace Ruby combines existing components
    37. RubyFace
      • Ruby in limited, special-purpose deployment
      • Satisfy custom need based on existing components
    38. RubyFace
      • Good products are scriptable
        • Many turn to Python for this role
      • Create more complex tests faster using Ruby scripts to call internals
      • Easier to add composite functionality for custom jobs
      • Leads to “Ruby on Top” architecture
    39. RubyFace Ruby C code C++ code Other (via C)
    40. “Ruby On Top”
      • Ruby code defines available product
      • Functional core written in
        • Java
        • C
        • C++
        • Fortran
        • Eiffel
        • Anything you can bridge via C
    41. RubyFace – Example
      • Telephone switch testing harness
      • Uses Ruby to test commercial phone switch
      • Drives 100,000 lines of C code
    42. RubyFace
      • Best of both worlds
        • Preserves existing functionality
        • Leverages Ruby’s flexibility
        • Get used to the idea of deploying Ruby
        • Like Eiffel’s Component Combinator (ca 1997)
    43. RubyHack Ruby for one-time custom apps
    44. RubyHack
      • Pure Ruby, but small and focused
      • Not mainline development
      • Doesn’t depend on existing functionality
        • Just hits the database
        • Calls CORBA services
        • Munges flat files related to the app
        • Hacks the Registry
    45. RubyHack
      • Provide new capability without altering main product
      • Correct errors in deployed product environment
      • Provide diagnostic or debug information
    46. RubyHack
      • But how do you convince folks to deploy Ruby just for this?
    47. RubyRules Ruby as the deployment language
    48. RubyRules
      • We’ve used Ruby as design tool
      • We’ve got Ruby running the development process
      • Deployed Ruby as scripting engine to existing product
      • Deployed Ruby standalone as an add-on to existing product
    49. RubyRules
      • You write the project in Ruby
      • Test it with Ruby
      • Deploy it with a Ruby installer
    50. Ruby Rules
      • You’re in.
      • Everybody wins.
    51. The Pragmatic Programmers, LLC / dy [email_address] www.pragmaticprogrammer.com

    + vishnuvishnu, 4 years ago

    custom

    5474 views, 3 favs, 0 embeds more stats

    David Hunt Pragmatic Programmers: Andy Hunt's prese more

    More info about this presentation

    © All Rights Reserved

    • Total Views 5474
      • 5474 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events