SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
My presentation from RedDotRubyConf 2013 in Singapore. Turned out to be a reflection on whether I'd still be a Rubyist in another 5 years, and what are the external trends that might change that. Short story: Yes! Of course. I'll always think like a Rubyist even though things will probably get more polyglot. The arena of web development is perhaps the most unpredictable though.
My presentation from RedDotRubyConf 2013 in Singapore. Turned out to be a reflection on whether I'd still be a Rubyist in another 5 years, and what are the external trends that might change that. Short story: Yes! Of course. I'll always think like a Rubyist even though things will probably get more polyglot. The arena of web development is perhaps the most unpredictable though.
4.
Let it never be said, the romance
is dead
'Cos there’s so little else
occupying my head
5.
Pascal
@uni
BASIC,
Assembler, C,
Fortran..
@uni
BASIC,
Assembler, C,
Fortran..
Build more
complex
things faster
Build more
complex
things faster
OO DesignOO Design
6.
dbase,
Notes
PascalPascal
Build more
complex
things even
faster
Build more
complex
things even
faster
Client ServerClient Server
C++,
OS/2
Purely for
preservation of
self-esteem
Purely for
preservation of
self-esteem
7.
MCSDVB, VC, ASP, COM,
.NET, C#
dbase,
Notes
dbase,
Notes
Building with
cross-
functional
teams
Building with
cross-
functional
teams
The Internet
happened
The Internet
happened
8.
J2EE
MCSD
VB, VC, ASP, COM, .NET,
C#
MCSD
VB, VC, ASP, COM, .NET,
C#
Lingua francaLingua franca
Open
Platforms and
Standards
Open
Platforms and
Standards
Perl
Universal glueUniversal glue
9.
Ruby
J2EEJ2EE
write less,
write clean
write less,
write clean
Agile Web
Development,
Open source
Agile Web
Development,
Open source
Javascript
Universal web
glue
Universal web
glue
10.
A Very Comfortable Place
Lazy Dog Inn, Huarez Peru http://goo.gl/zvkTI
11.
A Very Comfortable Place
Lazy Dog Inn, Huarez Peru http://goo.gl/zvkTI
a test-infected community
vibrant open source
great packaging (gems)
unrivaled reuse (git/hub)
Oh, and the language is pretty nice too
12.
Due to lack of interest tomorrow
is canceled
Let the clocks be reset and the
pendulums held
14.
Intrinsic
drivers
Intrinsic
drivers
Extrinsic
drivers
Extrinsic
drivers
All about
productivity
All about
productivity
Technology
mega trends
Technology
mega trends
Hit the road, Jack
15.
programming problems
I can solve with Ruby
time
?
2013
16.
Fear of the Dark
Frontier lands
Edge of common practice
Borders
No man’s land
17.
What Technologists Think
http://www.infoq.com/research/software-trends-2013
1. HTML5 and
JavaScript as a
Platform
2. Mobile Applications
and Mobile-first UIs
3. Cloud Computing
4. NoSQL displacing
RDBs
5. Big Data and
Analytics
18.
What CIOs Think
Gartner Top 10 CIO Business and Technology Priorities in 2013 http://goo.gl/Bca4T
25.
Undisclosed desires..
Classic
web app
Classic
web app
APIAPI
NativeNative
Rich clientRich client
API,
partials,
logic
API,
partials,
logic
server
device
Java
Android
Objective C
iOS
JS Frameworks
Ember, Angular,
Backbone etc
JS Frameworks
Ember, Angular,
Backbone etc
Light dusting
PJAX, Turbolinks,
Backbone lite,
jQuery
Light dusting
PJAX, Turbolinks,
Backbone lite,
jQuery
A cohesive full stack programming model?A cohesive full stack programming model?
26.
Undisclosed desires..
Classic
web app
Classic
web app
APIAPI
NativeNative
Rich clientRich client
API,
partials,
logic
API,
partials,
logic
server
device
Java
Android
Objective C
iOS
JS Frameworks
Ember, Angular,
Backbone etc
JS Frameworks
Ember, Angular,
Backbone etc
Light dusting
PJAX, Turbolinks,
Backbone lite,
jQuery
Light dusting
PJAX, Turbolinks,
Backbone lite,
jQuery
Changing my mind should be this painful?Changing my mind should be this painful?
27.
Innovators’ Dilemma: What are the
chances?
The New™
Framework
The New™
Framework
server
device
Java
Android
Objective C
iOS
Getting closer?
Meteor / Derby +
node.js
Getting closer?
Meteor / Derby +
node.js
30.
We do extreme App-ification
SaaSSaaS
PaaSPaaS
IaaSIaaS
31.
We do extreme App-ification
SaaSSaaS
PaaSPaaS
IaaSIaaS
MaaSMaaS
32.
API-ification
APIs Everywhere!
Favorite and time-tested strategy:
– Wait for the REST of the world to catch up
– Exceptions BTO
But as technology matures:
– More complex integration scenarios
– Security and data semantics
– Could we see a swing back to SOAP and WS-*
style integration?
35.
Big Data Diversification
Data AccessData Access
ORMORM
Server proc
and map-reduce
Server proc
and map-reduce
Key-valueKey-valueDocumentDocument
MongoDBMongoDB
GraphGraph
Neo4JNeo4J CassandraCassandra
Hadoop
(family)
Hadoop
(family)RedisRedis
RIAKRIAK
CouchDBCouchDB
ColumnColumn
✔✔
✔✔
JSJS
taxonomytaxonomy
examplesexamples
✔✔ ✔✔ ✔✔ ✔✔ ✔✔ ✔✔
½½
JSJS
✔✔
JS
erlang
JS
erlang CipherCipher
✔✔
CQLCQL
½½
Java, Pig
Hive
Java, Pig
Hive
½½
36.
Aside: Need Government Data?
http://rgovdata.com
37.
Analytics
– Can go quite a way with pure Ruby
– Use other tools like R (direct or via
RinRuby/RSRuby/Rserve)
– E.g. scanning utility bills with Ruby and R:
https://github.com/tardate/sps_bill_scanner
Python Envy?Python Envy?
IPython – interactive
notebooks and
visualisation
IPython – interactive
notebooks and
visualisation
Pandas, Statsmodels,
Numpy, SciPy – data
analysis comparable to R
Pandas, Statsmodels,
Numpy, SciPy – data
analysis comparable to R
38.
SciRuby and NMatrix!
SciRuby: Tools for Scientific Computing in Ruby
Nmatrix: fast numerical linear algebra library for Ruby
“We believe that the time for a Ruby science
and visualization package has come”
41.
Case Study – Making Megar
a Ruby wrapper and CLI for the Mega API
https://github.com/tardate/megar
– mega.co.nz: DropBox on crypto steroids
– Browser RIA: cryptography in javascript
– API not yet formally/fully documented
43.
Mega Crypto Challenges
Funky Base64
– url-safe and no delimiters; JFDI
MPI and integer arrays
– lack of primitives; JFDI
RSA with key components
– incompatible OpenSSL
– DIY RSA private key decrypt
AES CTR mode
– Requires OpenSSL 1.0.1+
– DIY CTR mode on AES-CBC OpenSSL
0.9.8+
44.
Mega Crypto Challenges
Funky Base64
– url-safe and no delimiters; JFDI
MPI and integer arrays
– lack of primitives; JFDI
RSA with key components
– incompatible OpenSSL
– DIY RSA private key decrypt
AES CTR mode
– Requires OpenSSL 1.0.1+
– DIY CTR mode on AES-CBC OpenSSL
0.9.8+
The Python
Experience?
The Python
Experience?
PyCrypto – native AES-CTR
implementation
PyCrypto – native AES-CTR
implementation
PyCrypto – able to drive RSA
with key components (bit of
a hack though)
PyCrypto – able to drive RSA
with key components (bit of
a hack though)
Base64, MPI and integer
array handling – same, same
Base64, MPI and integer
array handling – same, same
45.
The Resistance
Ruby core and stdlib
– FBOW thin wrappers on
external libraries
Surely there’s a gem for
that?
– Yes, many, but..
– fast-aes, gibberish, rbncl,
crypto, ruby-aes etc..
Hate This & I’ll Love
You
Hate This & I’ll Love
You
Too much convention
*without* configuration
Too much convention
*without* configuration
Poor composabilityPoor composability
Distinctly C-dy OpenSSL
wrappers
Distinctly C-dy OpenSSL
wrappers
Maintained?Maintained?
46.
Uprising – Krypt
https://github.com/krypt/krypt
Lead by Martin Boßlet OpenSSL maintainer
See confreaks e.g. http://goo.gl/V4wKW and
update at GORUCO 8th
June
Krypt aims:
– OpenSSL replacement
– External dependencies are optional
– Composability
– Convention *with* configuration
Still early days..
51.
YES! But..
– Most unpredictable arena is the future of web
development
– The future is polyglot, but once you start thinking
like a Rubyist it is hard to stop – even if we’re not
always typing it
– The irresistible urge to inject Ruby goodness
where-ever we tread
52.
Thanks!
Paul Gallagher
paul@evendis.com
evendis.com
personal:
tardate.com
twitter.com/tardate
Ruby, Ruby, Ruby, Ruby
And do ya, do ya, do ya, do ya
Know what ya doing, doing to me?
Editor's Notes
Four horsemen Richness of client server at internet scale