Code Generation. The Safety Scissors Of Metaprogramming

Size: px
Start display at page:

Download "Code Generation. The Safety Scissors Of Metaprogramming"

Transcription

1 Code Generation The Safety Scissors Of Metaprogramming

2 Ruby2Ruby

3 (lambda do puts hello world end).to_ruby

4 class Widget < ActiveRecord::Base end

5 Ruby2Ruby.translate(Widget)

6 class Widget < ActiveRecord::Base has_one :foo end

7 Ruby2Ruby.translate(Widget)

8

9

10

11

12 overkill

13 monkeypatching

14 tangled object graph

15 stop monkey-patching!

16 nothing can ever protect you from bad programming

17 nothing can ever protect you from bad programming

18

19

20 tests specs

21 tests y u need specs

22

23 tests rawk

24 debuggers suck

25 debuggers suck

26 monkey-patch monkey-patching itself

27 meta-monkey-patching

28 rubinius

29 nodebox

30 code == data

31 at this point, I just demoed code from my blog. below is a link to the post: (code samples are included)

32

33 simple object graph

34 nodebox

35 tangled object graph

36 node box

37 same tool

38 different output

39 proof of concept

40

41 foo

42 foo bar

43 foo bar baz

44 foo bar foo bar foo foo bar bar baz foo bar baz foo foo foo baz bar baz bar bar baz baz

45 debuggers suck

46 some people want debuggers

47

48 Ruby has no tool support!

49 1 day

50 shock the monkey

51 Powerful Tools

52 Rubinius Nodebox code == data Powerful Tools

53 Rubinius Nodebox code == data Powerful Tools

54 Rubinius Nodebox code == data Powerful Tools

55 Rubinius Nodebox code == data

56 code == data

57 1998

58 generated HTML

59 automated cvs and rcs

60

61 EJB (2003)

62 legacy app: 150 tables

63 ejb: 7 files per entity

64 7 * 150 = 1050 Java files

65 by hand: 3+ man-years

66 generators: 2 man-months

67

68 four generator types code munger generator inline code expansion generator mixed-code generator partial-class generator tier generator

69 generating UIs

70 generating unit tests

71 embedding SQL with generators

72 creating database access generators

73 generating web services layers

74 generating models from a business logic DSL

75 sound familiar?

76

77 script/generate scaffold

78 script/generate resource

79 script/generate plugin

80 script/generate migration

81 script/generate

82 rails Command

83 acts_as_authenticated

84 restful_authentication

85 ActiveRecord SQL

86 ActionPack Helpers ActiveRecordHelper AssetTagHelper AtomFeedHelper BenchmarkHelper CacheHelper CaptureHelper DateHelper DebugHelper FormHelper FormOptionsHelper Text FormTagHelper JavascriptHelper NumberHelper PrototypeHelper RecordTagHelper SanitizeHelper ScriptaculousHelper TagHelper TextHelper UrlHelper RecordIdentificationHelper

87 code generation FTW

88 code == data

89 (eq (code (data)))

90

91 functions which return functions which return functions which return functions which return functions which return functions which return functions which return functions which return functions which return functions which return functions

92 code which generates data which runs as code which generates data which runs as code which generates data which runs as code which generates data which runs as code which generates data which runs as code

93

94 lisp macros pwn metaprogramming

95 and you can do them in Perl!

96

97 shocked? perl!

98 λ the ultimate

99 combinator

100 $

101 small teams$

102 $ small teams lisp macros

103 great programmers can write better programmers than they can hire

104 great programmers can write better programmers than they can hire metaprogramming

105 great?

106 incredible power

107 simple clarity

108 simplicity magic

109 skilled programmers can write better programmers than they can hire metaprogramming

110

111 code which generates data which runs as code which generates data which runs as code which generates data which runs as code which generates data which runs as code which generates data which runs as code

112 Unix.is_a? Lisp

113 # => true

114

115 Caveats! read the book, the technique is easy leveraging it is the clever part you can use Ruby as well as Rubinius if Unix is a Lisp, the filesystem is a compiler

116 Caveats! read the book, the technique is easy leveraging it is the clever part you can use Ruby as well as Rubinius if Unix is a Lisp, the filesystem is a compiler

117 Caveats! read the book, the technique is easy leveraging it is the clever part you can use Ruby as well as Rubinius if Unix is a Lisp, the filesystem is a compiler

118 Caveats! read the book, the technique is easy leveraging it is the clever part you can use Ruby as well as Rubinius if Unix is a Lisp, the filesystem is a compiler

119 Caveats! read the book, the technique is easy leveraging it is the clever part you can use Ruby as well as Rubinius if Unix is a Lisp, the filesystem is a compiler

120

121 Essential Technique read the book, the technique is easy leveraging it is the clever part you can use Ruby as well as Rubinius if Unix is a Lisp, the filesystem is a compiler

122 Essential Technique puts leveraging it is the clever part you can use Ruby as well as Rubinius if Unix is a Lisp, the filesystem is a compiler

123 Essential Technique puts eval you can use Ruby as well as Rubinius if Unix is a Lisp, the filesystem is a compiler

124 Essential Technique puts eval ERB if Unix is a Lisp, the filesystem is a compiler

125 Essential Technique puts eval ERB (unix if Unix pipes) is a Lisp, the filesystem is a compiler

126 Essential Technique open mouth make noise profit if Unix is a Lisp, the filesystem is a compiler

127

Rails: MVC in action

Rails: MVC in action Ruby on Rails Basic Facts 1. Rails is a web application framework built upon, and written in, the Ruby programming language. 2. Open source 3. Easy to learn; difficult to master. 4. Fun (and a time-saver)!

More information

Using Scala for building DSL s

Using Scala for building DSL s Using Scala for building DSL s Abhijit Sharma Innovation Lab, BMC Software 1 What is a DSL? Domain Specific Language Appropriate abstraction level for domain - uses precise concepts and semantics of domain

More information

Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails

Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails Software Engineering 2 (SWT2) Chapter 2: Introduction into Ruby on Rails Agenda 2 Ruby & Ruby on Rails What is Ruby on Rails? A few words about Ruby Core components RESTful architecture Active Record Your

More information

My First Three Weeks on Rails. Aaron Mulder Chariot Solutions

My First Three Weeks on Rails. Aaron Mulder Chariot Solutions My First Three Weeks on Rails Aaron Mulder Chariot Solutions Background J2EE developer Mac/Linux platform Have used dynamic languages before (mostly Perl, some P/Jython) Never used Ruby Suddenly found

More information

Web Technologies VU ( ) Vedran Sabol. Nov 13, ISDS, TU Graz. Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, / 60

Web Technologies VU ( ) Vedran Sabol. Nov 13, ISDS, TU Graz. Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, / 60 Web Technologies VU (706.704) Vedran Sabol ISDS, TU Graz Nov 13, 2017 Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, 2017 1 / 60 Outline 1 Separation of Concerns Design Principle 2 Model-View-Controller

More information

Ruby on Rails. SITC Workshop Series American University of Nigeria FALL 2017

Ruby on Rails. SITC Workshop Series American University of Nigeria FALL 2017 Ruby on Rails SITC Workshop Series American University of Nigeria FALL 2017 1 Evolution of Web Web 1.x Web 1.0: user interaction == server roundtrip Other than filling out form fields Every user interaction

More information

Scaling Rails on App Engine with JRuby and Duby

Scaling Rails on App Engine with JRuby and Duby Scaling Rails on App Engine with JRuby and Duby Run your apps on Google Servers, with access to first-class Java APIs John Woodell David Masover Ryan Brown June 9, 2010 2 Google App Engine 3 Key Features

More information

Contents in Detail. Foreword by Xavier Noria

Contents in Detail. Foreword by Xavier Noria Contents in Detail Foreword by Xavier Noria Acknowledgments xv xvii Introduction xix Who This Book Is For................................................ xx Overview...xx Installation.... xxi Ruby, Rails,

More information

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp So the main thing I want you to take away from this talk is... Please don t do it! Questions? Just kidding. The point

More information

Developer Internship Opportunity at I-CC

Developer Internship Opportunity at I-CC Developer Internship Opportunity at I-CC Who We Are: Technology company building next generation publishing and e-commerce solutions Aiming to become a leading European Internet technology company by 2015

More information

Read & Download (PDF Kindle) Windows Game Programming For Dummies (For Dummies (Computer/Tech))

Read & Download (PDF Kindle) Windows Game Programming For Dummies (For Dummies (Computer/Tech)) Read & Download (PDF Kindle) Windows Game Programming For Dummies (For Dummies (Computer/Tech)) Get the scoop on DirectDraw, DirectInput physics modeling, and more! The one book you need to begin building

More information

Strategies for Rapid Web Prototyping. Ruby on Rails. Clemens H. Cap

Strategies for Rapid Web Prototyping. Ruby on Rails. Clemens H. Cap Strategies for Rapid Web Prototyping Ruby on Rails Strategies for Rapid Web Prototyping DRY: Don't repeat yourself Convention over Configuration Separation of Concern Templating MVC: Model View Controler

More information

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) CSE 413 Languages & Implementation Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) 1 Goals Representing programs as data Racket structs as a better way to represent

More information

LEVERAGING CONVENTION OVER CONFIGURATION FOR STATIC ANALYSIS IN DYNAMIC LANGUAGES

LEVERAGING CONVENTION OVER CONFIGURATION FOR STATIC ANALYSIS IN DYNAMIC LANGUAGES LEVERAGING CONVENTION OVER CONFIGURATION FOR STATIC ANALYSIS IN DYNAMIC LANGUAGES David Worth dave@highgroove.com (email) - @highgroovedave (twitter) Or why it s ok to write simple frameworks for complicated

More information

At the Forge RJS Templates Reuven M. Lerner Abstract The power of Ajax to fetch and run JavaScript generated by your server-side language. The past few months, I've written a number of articles in this

More information

Ur/Web, a Domain-Specific Functional Programming Language for Modern Web Applications. Adam Chlipala

Ur/Web, a Domain-Specific Functional Programming Language for Modern Web Applications. Adam Chlipala Ur/Web, a Domain-Specific Functional Programming Language for Modern Web Applications Adam Chlipala Web Applications: A Steaming Pile of Text HTML, CSS, JavaScript, SQL, URLs, JSON,... Strings, strings,

More information

MRI Internals. Koichi Sasada.

MRI Internals. Koichi Sasada. MRI Internals Koichi Sasada ko1@heroku.com MRI Internals towards Ruby 3 Koichi Sasada ko1@heroku.com Today s talk Koichi is working on improving Ruby internals Introduce my ideas toward Ruby 3 Koichi Sasada

More information

EECS 394. Software Development. Communicating. Chris Riesbeck

EECS 394. Software Development. Communicating. Chris Riesbeck EECS 394 Software Development Chris Riesbeck Communicating 1 The Problem I never have a clue what the developers are talking about. When I ask what they're doing, they say they're XMLing the CSS SQL RSS

More information

Contents in Detail. Who This Book Is For... xx Using Ruby to Test Itself... xx Which Implementation of Ruby?... xxi Overview...

Contents in Detail. Who This Book Is For... xx Using Ruby to Test Itself... xx Which Implementation of Ruby?... xxi Overview... Contents in Detail Foreword by Aaron Patterson xv Acknowledgments xvii Introduction Who This Book Is For................................................ xx Using Ruby to Test Itself.... xx Which Implementation

More information

Aquarium: AOP for Ruby

Aquarium: AOP for Ruby Aquarium: AOP for Ruby Dean Wampler Object Mentor, Inc. dean@objectmentor.com AOSD 2008 April 3, 2008 1 Goals and Features Provide an intuitive syntax. Support runtime addition and removal of advice. Advise

More information

Unit Testing J2EE from JRuby. Evan Light

Unit Testing J2EE from JRuby. Evan Light Unit Testing J2EE from JRuby Evan Light http://evan.tiggerpalace.com Who I am Professional developer since 1996 Java since 1999 J2EE since 2000 Ruby since 2006 Some yutz with Keynote and a remote control

More information

CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures

CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures CSE413: Programming Languages and Implementation Racket structs Implementing languages with interpreters Implementing closures Dan Grossman Fall 2014 Hi! I m not Hal J I love this stuff and have taught

More information

Instructions for the Day of Ruby Ruby on Rails Tutorial

Instructions for the Day of Ruby Ruby on Rails Tutorial Instructions for the Day of Ruby Ruby on Rails Tutorial 1. Make sure you have the vendor files from http://www.cornetdesign.com/files/dor.zip. 2. Open a terminal window and change to a project directory.

More information

CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures. Dan Grossman Autumn 2018

CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures. Dan Grossman Autumn 2018 CSE341: Programming Languages Lecture 17 Implementing Languages Including Closures Dan Grossman Autumn 2018 Typical workflow concrete syntax (string) "(fn x => x + x) 4" Parsing Possible errors / warnings

More information

Boldface numbers indicate illustrations, code listings, and tables.

Boldface numbers indicate illustrations, code listings, and tables. Index Boldface numbers indicate illustrations, code listings, and tables. A ActiveRecord, class in Ruby, 80-82, 84, 86, 88, 90 ActiveXMLService, class in Ruby, 80-82, 84, 90 Agile development, 109-110

More information

Markus Völter

Markus Völter of Markus Völter voelter@acm.org www.voelter.de @markusvoelter Examples 1 Healthcare Context & Motivation Mobile Apps that help patients w/ treatments Monitor side-effects and recommend actions Manage

More information

CS3205 HCI IN SOFTWARE DEVELOPMENT PROTOTYPING STRATEGIES. Tom Horton. * Material from: Floryan (UVa) Klemmer (UCSD, was at Stanford)

CS3205 HCI IN SOFTWARE DEVELOPMENT PROTOTYPING STRATEGIES. Tom Horton. * Material from: Floryan (UVa) Klemmer (UCSD, was at Stanford) CS3205 HCI IN SOFTWARE DEVELOPMENT PROTOTYPING STRATEGIES Tom Horton * Material from: Floryan (UVa) Klemmer (UCSD, was at Stanford) WHAT WILL WE BE TALKING ABOUT? Specific Prototyping Strategies! Low-Fidelity

More information

Teaching Ruby on Rails Dr Bruce Scharlau Computing Science Department University of Aberdeen Aberdeen, AB24 3UE

Teaching Ruby on Rails Dr Bruce Scharlau Computing Science Department University of Aberdeen Aberdeen, AB24 3UE Teaching Ruby on Rails Dr Bruce Scharlau Computing Science Department University of Aberdeen Aberdeen, AB24 3UE scharlau@csd.abdn.ac.uk Abstract This paper considers the teaching of the object oriented

More information

IntelliJ IDEA, the most intelligent Java IDE

IntelliJ IDEA, the most intelligent Java IDE IntelliJ IDEA, the most intelligent Java IDE IntelliJ IDEA, JetBrains flagship Java IDE, provides high-class support and productivity boosts for enterprise, mobile and web development in Java, Scala and

More information

CS252 Advanced Programming Language Principles. Prof. Tom Austin San José State University Fall 2013

CS252 Advanced Programming Language Principles. Prof. Tom Austin San José State University Fall 2013 CS252 Advanced Programming Language Principles Prof. Tom Austin San José State University Fall 2013 What are some programming languages? Why are there so many? Different domains Mobile devices (Objective

More information

The Sky s the Limit. JAOO Conference, Aarhus Ernest Micklei, QNH PhilemonWorks Tim Matthews, Cincom Systems. Cincom EMEA Central

The Sky s the Limit. JAOO Conference, Aarhus Ernest Micklei, QNH PhilemonWorks Tim Matthews, Cincom Systems. Cincom EMEA Central The Sky s the Limit Ernest Micklei, QNH PhilemonWorks Tim Matthews, Cincom Systems Cincom EMEA Central JAOO Conference, Aarhus 2009 1 Spanning five decades of global software leadership Founded in 1968

More information

Dynamic Languages Strike Back. Steve Yegge Stanford EE Dept Computer Systems Colloquium May 7, 2008

Dynamic Languages Strike Back. Steve Yegge Stanford EE Dept Computer Systems Colloquium May 7, 2008 Dynamic Languages Strike Back Steve Yegge Stanford EE Dept Computer Systems Colloquium May 7, 2008 What is this talk about? Popular opinion of dynamic languages: Unfixably slow Not possible to create IDE-quality

More information

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory SCRIPTING Overview Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Reflection Bindings Serialization Performance, memory Rationale C++ isn't the best choice

More information

PGT T3CHNOLOGY SCOUTING. Google Webtoolkit. JSF done right?

PGT T3CHNOLOGY SCOUTING. Google Webtoolkit. JSF done right? Google Webtoolkit JSF done right? Session topics Web 2.0, Ajax GWT What is it? Java EE and the Web GWT and Java EE JSF done right? Time for a demo? 2 2008 Dipl.-Wing. P. G. Taboada Web 2.0 Hard to define

More information

Clojure. The Revenge of Data. by Vjeran Marcinko Kapsch CarrierCom

Clojure. The Revenge of Data. by Vjeran Marcinko Kapsch CarrierCom Clojure The Revenge of Data by Vjeran Marcinko Kapsch CarrierCom Data Processing is what we do Most programs receive, transform, search, and send data Data is raw, immutable information In its essence,

More information

Ruby Programming Professional Made Easy 2nd Edition: Expert Ruby Programming Language Success In A Day For Any Computer User (Ruby, HTML, C

Ruby Programming Professional Made Easy 2nd Edition: Expert Ruby Programming Language Success In A Day For Any Computer User (Ruby, HTML, C Ruby Programming Professional Made Easy 2nd Edition: Expert Ruby Programming Language Success In A Day For Any Computer User (Ruby, HTML, C Programming,... C++. C, C++ Programming, Computer Program) By

More information

The Visual Studio 2015 Checklist

The Visual Studio 2015 Checklist The Visual Studio 2015 Checklist ANTI-INFLAMMATORY 5 ways to take the pain out of coding Do you want to? 1 Slash the amount of boilerplate code you have to write? 2 Test faster? Hi Developers, My name

More information

Functional Programming and the Web

Functional Programming and the Web June 13, 2011 About Me Undergraduate: University of Illinois at Champaign-Urbana PhD: Penn State University Retrofitting Programs for Complete Security Mediation Static analysis, type-based compiler Racker:

More information

Front End Programming

Front End Programming Front End Programming Mendel Rosenblum Brief history of Web Applications Initially: static HTML files only. Common Gateway Interface (CGI) Certain URLs map to executable programs that generate web page

More information

Migrating to the new IBM WebSphere Commerce Suite Platform. The Intelligent Approach for the E-Commerce Transition ELLUMINIS CONSULTING GROUP

Migrating to the new IBM WebSphere Commerce Suite Platform. The Intelligent Approach for the E-Commerce Transition ELLUMINIS CONSULTING GROUP WHITEPAPER ELLUMINIS CONSULTING GROUP The Intelligent Approach for the E-Commerce Transition Migrating to the new IBM WebSphere Commerce Suite Platform AN ELLUMINIS CONSULTING GROUP WHITEPAPER Migrating

More information

WebStore9 Services. Web Development Services

WebStore9 Services. Web Development Services WebStore9 Services Web Development Services ASP.Net MVC Development Services ASP.Net Development Services ColdFusion Development Services SharePoint Development Services Classic ASP Development Services

More information

Ajax On Rails: Build Dynamic Web Applications With Ruby By Scott Raymond READ ONLINE

Ajax On Rails: Build Dynamic Web Applications With Ruby By Scott Raymond READ ONLINE Ajax On Rails: Build Dynamic Web Applications With Ruby By Scott Raymond READ ONLINE Let's take a look at how we can accomplish this with AJAX in Rails. Overall, I was quite surprised at how easy it is

More information

Common Lisp. In Practical Usage

Common Lisp. In Practical Usage Common Lisp In Practical Usage Contents A walk through Lisp history What the man in the street seems to think Some highlights of Common Lisp Lisp in production History The Beginnings Lisp grew from a

More information

Add Manual Test Script Template Xls

Add Manual Test Script Template Xls Add Manual Test Script Template Xls How to: Add Test Steps to a Manual Test Case from a Microsoft Excel or For example, if each test case has to log on to the application under test, you can. Create manual

More information

This tutorial has been designed for beginners who would like to use the Ruby framework for developing database-backed web applications.

This tutorial has been designed for beginners who would like to use the Ruby framework for developing database-backed web applications. About the Tutorial Ruby on Rails is an extremely productive web application framework written in Ruby by David Heinemeier Hansson. This tutorial gives you a complete understanding on Ruby on Rails. Audience

More information

Ruby Gem Internals by Examples

Ruby Gem Internals by Examples SF Software Design in Ruby Meetup Group Ruby Gem Internals by Examples Ben Zhang, 1/14/2014 benzhangpro@gmail.com http://www.meetup.com/software-design-in-ruby-study-group/ Types of Ruby Gem Features Global

More information

Client Side MVC with Backbone & Rails. Tom

Client Side MVC with Backbone & Rails. Tom Client Side MVC with Backbone & Rails Tom Zeng @tomzeng tom@intridea.com Client Side MV* with Backbone & Rails Benefits of Client Side MVC Backbone.js Introduction Client Side MV* Alternatives Backbone

More information

Eclipse Command Language

Eclipse Command Language Cracow, Poland Eclipse Day 2012, September 13 Bartosz Czerwiński bczerwinski@luxoft.com 2 Agenda DSL Scripting in Eclipse ECL Core Concepts Architecture Applicability Future Live Demo 3 DSL 4 Domain Specific

More information

SUN Sun Certified Enterprise Architect for J2EE 5. Download Full Version :

SUN Sun Certified Enterprise Architect for J2EE 5. Download Full Version : SUN 310-052 Sun Certified Enterprise Architect for J2EE 5 Download Full Version : http://killexams.com/pass4sure/exam-detail/310-052 combination of ANSI SQL-99 syntax coupled with some company-specific

More information

Sass. The Future of Stylesheets.

Sass. The Future of Stylesheets. Sass. The Future of Stylesheets. Chris Eppstein Follow me @chriseppstein Architect - Caring.com Creator - Compass Stylesheet Framework Core Contributor - Sass A website for caregivers of the sick and elderly.

More information

Extending Rails: Understanding and Building Plugins. Clinton R. Nixon

Extending Rails: Understanding and Building Plugins. Clinton R. Nixon Extending Rails: Understanding and Building Plugins Clinton R. Nixon Welcome! Welcoming robin by Ian-S (http://flickr.com/photos/ian-s/2301022466/) What are we going to talk about? The short How plugins

More information

Advance Dotnet ( 2 Month )

Advance Dotnet ( 2 Month ) Advance Dotnet ( 2 Month ) Course Content Introduction WCF Using.Net 4.0 Service Oriented Architecture Three Basic Layers First Principle Communication and Integration Integration Styles Legacy Applications

More information

Review of Mobile Web Application Frameworks

Review of Mobile Web Application Frameworks Review of Mobile Web Application Frameworks Article Number: 909 Rating: Unrated Last Updated: Mon, May 9, 2011 at 10:57 AM If you are serious about getting your website or web application mobile-friendly,

More information

Oracle Mix. A Case Study. Ola Bini JRuby Core Developer ThoughtWorks Studios.

Oracle Mix. A Case Study. Ola Bini JRuby Core Developer ThoughtWorks Studios. Oracle Mix A Case Study Ola Bini JRuby Core Developer ThoughtWorks Studios ola.bini@gmail.com http://olabini.com/blog Vanity slide Vanity slide Ola Bini Vanity slide Ola Bini From Stockholm, Sweden Vanity

More information

Concepts in Programming Languages

Concepts in Programming Languages Concepts in Programming Languages Marcelo Fiore Computer Laboratory University of Cambridge 2012 2013 (Easter Term) 1 Practicalities Course web page: with lecture

More information

Impossible Programs. Tom Stuart

Impossible Programs. Tom Stuart Impossible Programs Tom Stuart IMPOSSIBLE PROGRAMS @tomstuart / GOTO Chicago / 2015-05-11 PROGRAMS CAN T DO EVERYTHING IMPOSSIBLE PROGRAMS @tomstuart / GOTO Chicago / 2015-05-11 how can a PROGRAM be IMPOSSIBLE?

More information

LEGACY SYSTEMS MODERNIZATION SERVICES.

LEGACY SYSTEMS MODERNIZATION SERVICES. LEGACY SYSTEMS MODERNIZATION SERVICES www.eratech.com.eg Slide # 1 Feb. 2013 Agenda 1. Modernization of Legacy Systems Why and How? 2. Success Story Central Auditing Organization 3. Introducing Informix

More information

DOWNLOAD : THE RUBY PROGRAMMING LANGUAGE

DOWNLOAD : THE RUBY PROGRAMMING LANGUAGE DOWNLOAD : THE RUBY PROGRAMMING LANGUAGE RUBY - OFFICIAL SITE ruby is... a dynamic, open source programming language with a focus on simplicity and productivity. it has an elegant syntax that is natural

More information

First-class Implementations

First-class Implementations First-class Implementations Turtling down Runtime Meta-levels and PCLSRing up François-René Rideau, TUNES Project BostonHaskell, 2016-05-18 http://fare.tunes.org/files/cs/fci-bh2016.pdf 1 This Talk Salvaged

More information

Introduction to Genero Enterprise

Introduction to Genero Enterprise Introduction to Genero Enterprise Laurent Galais Services & Support Manager Four Js US & Canada Tuesday, November 17, 201 Tysons Corner, VA Technical Advisory Council 201 Costa d Este Beach Resort, Vero

More information

Rails Engines. Use Case. The Implementation

Rails Engines. Use Case. The Implementation Rails Engines Rails engines range from simple plugins to powerful micro-applications. The discussions we ve had so far about Railties are closely related to the function of a Rails engine. One interesting

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Keven Richly keven.richly@hpi.de Software Engineering II WS 2017/18 Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby on

More information

JRuby: Who What Now. Thomas Enebo JRuby Guy Sun Microsystems

JRuby: Who What Now. Thomas Enebo JRuby Guy Sun Microsystems JRuby: Who What Now Thomas Enebo JRuby Guy Sun Microsystems 1 Who am I? エネボ. トーマス Co-lead of JRuby project Longtime Java developer (12+ years) Ruby developer (6 years) Engineer at Sun Microsystems for

More information

Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13

Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13 1 Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13 The following is intended to outline our general product direction.

More information

CSE 135. Main Problem: Multiple languages and multiple computation servers

CSE 135. Main Problem: Multiple languages and multiple computation servers CSE 15 Rapid Application Development: Object-Relational Mapping & a lesson on the whys and why nots Main Problem: Multiple languages and multiple computation servers Two different computation servers with

More information

Extensible Java Pre-processor

Extensible Java Pre-processor Extensible Java Pre-processor National Institute of Advanced Industrial Science and Technology(AIST) Yuuji Ichisugi http://staff.aist.go.jp/y-ichisugi/ 2002/12/17 1 What is EPP? Language extension framework

More information

Customising Niagara. Andrew Jackson. Technical Director

Customising Niagara. Andrew Jackson. Technical Director Customising Niagara Andrew Jackson Technical Director Agenda Experience Cycle of an OEM Rebranding Framework Enhancements Connectivity Enhancements User Interface Enhancements Experience Cycle of an OEM

More information

Tutorial Php Coding Projects Pdf Beginners With Examples

Tutorial Php Coding Projects Pdf Beginners With Examples Tutorial Php Coding Projects Pdf Beginners With Examples Learning PHP Basic With project 2015 part 1,Beginner PHP Tutorial This is an php. Programming Tutorials. SubscribeSubscribed php tutorial for beginners

More information

The paper shows how to realize write-once-run-anywhere for such apps, and what are important lessons learned from our experience.

The paper shows how to realize write-once-run-anywhere for such apps, and what are important lessons learned from our experience. Paper title: Developing WebRTC-based team apps with a cross-platform mobile framework. Speaker: John Buford. Track: Mobile and Wearable Devices, Services, and Applications. Hello everyone. My name is John

More information

Building JavaServer Faces Applications

Building JavaServer Faces Applications IBM Software Group St. Louis Java User Group Tim Saunders ITS Rational Software tim.saunders@us.ibm.com 2005 IBM Corporation Agenda JSF Vision JSF Overview IBM Rational Application Developer v6.0 Build

More information

Presentation and content are not always well separated. Most developers are not good at establishing levels of abstraction in JSPs

Presentation and content are not always well separated. Most developers are not good at establishing levels of abstraction in JSPs Maintenance and Java Server Pages Jeff Offutt http://www.cs.gmu.edu/~offutt/ SWE 642 Software Engineering for the World Wide Web sources: Professional Java Server Programming, Patzer, Wrox, 14 JSP Maintenance

More information

Tools to Develop New Linux Applications

Tools to Develop New Linux Applications Tools to Develop New Linux Applications IBM Software Development Platform Tools for every member of the Development Team Supports best practices in Software Development Analyst Architect Developer Tester

More information

JRuby and Ioke. On Google AppEngine. Ola Bini

JRuby and Ioke. On Google AppEngine. Ola Bini JRuby and Ioke On Google AppEngine Ola Bini ola.bini@gmail.com http://olabini.com/blog Vanity slide ThoughtWorks consultant/developer/programming language geek JRuby Core Developer From Stockholm, Sweden

More information

OpenEdge Legacy Application Modernization by Example. Mike Fechner, Consultingwerk Ltd.

OpenEdge Legacy Application Modernization by Example. Mike Fechner, Consultingwerk Ltd. OpenEdge Legacy Application Modernization by Example Mike Fechner, Consultingwerk Ltd. mike.fechner@consultingwerk.de Consultingwerk Ltd. Independent IT consulting organization Focusing on OpenEdge and

More information

1Z Oracle. Java Enterprise Edition 5 Enterprise Architect Certified Master

1Z Oracle. Java Enterprise Edition 5 Enterprise Architect Certified Master Oracle 1Z0-864 Java Enterprise Edition 5 Enterprise Architect Certified Master Download Full Version : http://killexams.com/pass4sure/exam-detail/1z0-864 Answer: A, C QUESTION: 226 Your company is bidding

More information

Groovy & Grails in Depth

Groovy & Grails in Depth Groovy & Grails in Depth Simplifying Java EE with Grails Copyright 2008 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Speaker s qualifications Graeme

More information

Immutability and Design Patterns in Ruby

Immutability and Design Patterns in Ruby Immutability and Design Patterns in Ruby Seamus Brady, seamus@corvideon.ie 28/03/2013 Abstract Functional Programming has seen a resurgence in interest in the last few years and is often mentioned in opposition

More information

Contents. Contents... XI

Contents. Contents... XI Contents Preface... V Motivation for this Book... V Who Should Read this Book?...VI Outline to the Book Structure... VII Prerequisite Skills... VIII Acknowledgements... VIII About the Author... VIII Contents...

More information

Database Application Architectures

Database Application Architectures Chapter 15 Database Application Architectures Database Systems(Part 2) p. 221/287 Database Applications Most users do not interact directly with a database system The DBMS is hidden behind application

More information

Agenda Birds Do It: Migrating Forms to Java EE Web A Case Study

Agenda Birds Do It: Migrating Forms to Java EE Web A Case Study Agenda Birds Do It: Migrating Forms to Java EE Web A Case Study The migration requirement Technology decision process Challenges, successes, lessons learned Government Technology Conference (GTC) East

More information

CSE : Python Programming

CSE : Python Programming CSE 399-004: Python Programming Lecture 08: Graphical User Interfaces with wxpython March 12, 2005 http://www.seas.upenn.edu/~cse39904/ Plan for today and next time Today: wxpython (part 1) Aside: Arguments

More information

COMPUTE CLOUD SERVICE. Moving to SPARC in the Oracle Cloud

COMPUTE CLOUD SERVICE. Moving to SPARC in the Oracle Cloud COMPUTE CLOUD SERVICE Moving to A new way forward: SPARC in the. Does your IT organization support mission-critical applications that would benefit from the unsurpassed security performance of SPARC servers

More information

If you wish to make an improved product, you must already be engaged in making an inferior one.

If you wish to make an improved product, you must already be engaged in making an inferior one. Oracle JDeveloper 10g with ADF Faces and JHeadstart: Is it Oracle Forms Yet? Peter Koletzke Technical Director & Principal Instructor Survey Forms development 1-2 years? 3-9 years? More than 9 years? Designer

More information

Introduction to Dependable Systems: Meta-modeling and modeldriven

Introduction to Dependable Systems: Meta-modeling and modeldriven Introduction to Dependable Systems: Meta-modeling and modeldriven development http://d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics 3 Software development Automated software

More information

Ruby on Rails 3. Robert Crida Stuart Corbishley. Clue Technologies

Ruby on Rails 3. Robert Crida Stuart Corbishley. Clue Technologies Ruby on Rails 3 Robert Crida Stuart Corbishley Clue Technologies Topic Overview What is Rails New in Rails 3 New Project Generators MVC Active Record UJS RVM Bundler Migrations Factory Girl RSpec haml

More information

Salary Guide. Technology Guide For further information please contact Ida Renaud, Manager ,

Salary Guide. Technology Guide For further information please contact Ida Renaud, Manager , Salary Guide Technology Guide 2017 For further information please contact Ida Renaud, Manager + 353 1 6146048, ida.renaud@cpl.ie Technology Software Development & Mobile For 2017 there will be a big push

More information

CHORDS: Cloud-Hosted Real-time Data

CHORDS: Cloud-Hosted Real-time Data CHORDS: Cloud-Hosted Real-time Data Services for the Geosciences Mike Daniels (NCAR), Branko Kerkez (UMich), V. Chandrasekar (CSU), Sara Graves (UAH), D. Sarah Stamps (VT), Aaron Botnick (NCAR), Charlie

More information

Free Downloads C++ Programming For Beginners

Free Downloads C++ Programming For Beginners Free Downloads C++ Programming For Beginners C++ Programming for Beginners is a step by step guide to the basics of programming in C and C++ using the free Dev-C++ compiler. This book teaches the concepts

More information

<Insert Picture Here> JavaFX 2.0

<Insert Picture Here> JavaFX 2.0 1 JavaFX 2.0 Dr. Stefan Schneider Chief Technologist ISV Engineering The following is intended to outline our general product direction. It is intended for information purposes only,

More information

Let s build. like they build. Markus Völter Bernd Kolb

Let s build. like they build. Markus Völter Bernd Kolb Let s build like they build Markus Völter voelter@acm.org www.voelter.de @markusvoelter Bernd Kolb kolb@itemis.de www.itemis.de @berndkolb B 0 Motivation Examples 1 M Healthcare Context & Motivation Mobile

More information

SJSU Course Evaluation. Team 131

SJSU Course Evaluation. Team 131 SJSU Course Evaluation Team 131 What is our objective Objective is to provide useful information about courses in SJSU for students who will be enrolled in them for the next semester. -Veteran students

More information

Lisp to Ruby to Rubinius

Lisp to Ruby to Rubinius Lisp to Ruby to Rubinius ネットワーク応用通信研究所楽天技術研究所 Ruby アソシエーション @yukihiro_matz Yukihiro "Matz" Matsumoto Lisp 1/59 Lisp one of the oldest O-Parts out of place artifact 2/59 O-Parts of the language oldest but

More information

Software Evolution from the Field: An Experience Report from the Squeak Maintainers

Software Evolution from the Field: An Experience Report from the Squeak Maintainers Software Evolution from the Field: An Experience Report from the Squeak Maintainers Marcus Denker SCG University of Berne Switzerland Stéphane Ducasse LISTIC Université de Savoie France Roadmap > A little

More information

Case Study Schedule. NoSQL/NewSQL Database Distributed File System Peer-to-peer (P2P) computing Cloud computing Big Data Internet of Thing

Case Study Schedule. NoSQL/NewSQL Database Distributed File System Peer-to-peer (P2P) computing Cloud computing Big Data Internet of Thing Notes Grades statistics Midterm 2: average 16.32 with standard deviation 2.63 Total points so far: average 48.59 (out of 58) with standard deviation 5.00 The grading so far: [52.2, 58]: A; [43.6, 52.2):

More information

Pegarus & Poison. Rubinius VM as a Multilanguage Platform

Pegarus & Poison. Rubinius VM as a Multilanguage Platform Pegarus & Poison Rubinius VM as a Multilanguage Platform Thursday, July 29, 2010 Brian Ford brixen on {twitter IRC gmail} Thursday, July 29, 2010 discussion rant tutorial Q&A interaction Thursday, July

More information

Programming: Computer Programming For Beginners: Learn The Basics Of Java, SQL & C Edition (Coding, C Programming, Java Programming, SQL

Programming: Computer Programming For Beginners: Learn The Basics Of Java, SQL & C Edition (Coding, C Programming, Java Programming, SQL Programming: Computer Programming For Beginners: Learn The Basics Of Java, SQL & C++ - 3. Edition (Coding, C Programming, Java Programming, SQL Programming, JavaScript, Python, PHP) PDF PLEASE NOTE: You

More information

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003.

Topic I. Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Topic I Introduction and motivation References: Chapter 1 of Concepts in programming languages by J. C. Mitchell. CUP, 2003. Chapter 1 of Programming languages: Design and implementation (3RD EDITION)

More information

Curriculum Guide. ThingWorx

Curriculum Guide. ThingWorx Curriculum Guide ThingWorx Live Classroom Curriculum Guide Introduction to ThingWorx 8 ThingWorx 8 User Interface Development ThingWorx 8 Platform Administration ThingWorx 7.3 Fundamentals Applying Machine

More information

Are functional languages a good way to represent productive meta models?

Are functional languages a good way to represent productive meta models? Are functional languages a good way to represent productive meta models? Rainbow Team, I3S Lab, CNRS University of Nice, France http://rainbow.i3s.unice.fr 4 th European Lisp Workshop ECOOP 07, 07/30/2007,

More information

Scala Days 2018 You Are a Scala Contributor

Scala Days 2018 You Are a Scala Contributor Scala Days 2018 You Are a Scala Contributor Seth Tisue @SethTisue Scala team, Lightbend or you can be, if you want to. here s how. you are a Scala contributor If you open an issue If you comment on an

More information