RUBY – The Hard BitsorHow to Rock Hard, Ride FreeorWill I still be a Rubyist in 5 years?RedDotRubyConf 2013 – Singapore Ju...
I am a Rubyist ..Paul Gallagherpaul@evendis.comevendis.compersonal:tardate.comtwitter.com/tardate
.. but that wasn’t always the case
Let it never be said, the romanceis deadCos there’s so little elseoccupying my head
Pascal@uniBASIC,Assembler, C,Fortran..@uniBASIC,Assembler, C,Fortran..Build morecomplexthings fasterBuild morecomplexthing...
dbase,NotesPascalPascalBuild morecomplexthings evenfasterBuild morecomplexthings evenfasterClient ServerClient ServerC++,O...
MCSDVB, VC, ASP, COM,.NET, C#dbase,Notesdbase,NotesBuilding withcross-functionalteamsBuilding withcross-functionalteamsThe...
J2EEMCSDVB, VC, ASP, COM, .NET,C#MCSDVB, VC, ASP, COM, .NET,C#Lingua francaLingua francaOpenPlatforms andStandardsOpenPlat...
RubyJ2EEJ2EEwrite less,write cleanwrite less,write cleanAgile WebDevelopment,Open sourceAgile WebDevelopment,Open sourceJa...
A Very Comfortable PlaceLazy Dog Inn, Huarez Peru http://goo.gl/zvkTI
A Very Comfortable PlaceLazy Dog Inn, Huarez Peru http://goo.gl/zvkTIa test-infected communityvibrant open sourcegreat pac...
Due to lack of interest tomorrowis canceledLet the clocks be reset and thependulums held
Will I still be a Rubyistin 5 years?
IntrinsicdriversIntrinsicdriversExtrinsicdriversExtrinsicdriversAll aboutproductivityAll aboutproductivityTechnologymega t...
programming problemsI can solve with Rubytime?2013
Fear of the DarkFrontier landsEdge of common practiceBordersNo man’s land
What Technologists Thinkhttp://www.infoq.com/research/software-trends-20131. HTML5 andJavaScript as aPlatform2. Mobile App...
What CIOs ThinkGartner Top 10 CIO Business and Technology Priorities in 2013 http://goo.gl/Bca4T
Four Trends
Four Trends
Rich Interaction – Diverse DevicesClassicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAP...
Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,lo...
Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,lo...
Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,lo...
Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,lo...
Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,lo...
Innovators’ Dilemma: What are thechances?The New™FrameworkThe New™FrameworkserverdeviceJavaAndroidObjective CiOSGetting cl...
Conclusions?
Four Trends
We do extreme App-ificationSaaSSaaSPaaSPaaSIaaSIaaS
We do extreme App-ificationSaaSSaaSPaaSPaaSIaaSIaaSMaaSMaaS
API-ificationAPIs Everywhere!Favorite and time-tested strategy:– Wait for the REST of the world to catch up– Exceptions BT...
Conclusions?
Four Trends
Big Data DiversificationData AccessData AccessORMORMServer procand map-reduceServer procand map-reduceKey-valueKey-valueDo...
Aside: Need Government Data?http://rgovdata.com
Analytics– Can go quite a way with pure Ruby– Use other tools like R (direct or viaRinRuby/RSRuby/Rserve)– E.g. scanning u...
SciRuby and NMatrix!SciRuby: Tools for Scientific Computing in RubyNmatrix: fast numerical linear algebra library for Ruby...
Conclusions?
Four Trends
Case Study – Making Megara Ruby wrapper and CLI for the Mega APIhttps://github.com/tardate/megar– mega.co.nz: DropBox on c...
Mega Crypto in a Nutshellusernameusername passwordpasswordkeygenA32 > AES-CBC > Base64keygenA32 > AES-CBC > Base64Login se...
Mega Crypto ChallengesFunky Base64– url-safe and no delimiters; JFDIMPI and integer arrays– lack of primitives; JFDIRSA wi...
Mega Crypto ChallengesFunky Base64– url-safe and no delimiters; JFDIMPI and integer arrays– lack of primitives; JFDIRSA wi...
The ResistanceRuby core and stdlib– FBOW thin wrappers onexternal librariesSurely there’s a gem forthat?– Yes, many, but.....
Uprising – Krypthttps://github.com/krypt/kryptLead by Martin Boßlet OpenSSL maintainerSee confreaks e.g. http://goo.gl/V4w...
Conclusions?
TAKEAWAYSKeep your eyes on the road,and your hands upon the wheel
Four Trends – Liquid StateB-B-A-A-A+A+C+C+
So! Will I still be a Rubyistin 5 years?
YES! But..– Most unpredictable arena is the future of webdevelopment– The future is polyglot, but once you start thinkingl...
Thanks!Paul Gallagherpaul@evendis.comevendis.compersonal:tardate.comtwitter.com/tardateRuby, Ruby, Ruby, RubyAnd do ya, do...
Upcoming SlideShare
Loading in …5
×

Ruby - The Hard Bits

7,868 views

Published on

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.

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

No Downloads
Views
Total views
7,868
On SlideShare
0
From Embeds
0
Number of Embeds
3,999
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Four horsemen Richness of client server at internet scale
  • Ruby - The Hard Bits

    1. 1. RUBY – The Hard BitsorHow to Rock Hard, Ride FreeorWill I still be a Rubyist in 5 years?RedDotRubyConf 2013 – Singapore Jun-2013
    2. 2. I am a Rubyist ..Paul Gallagherpaul@evendis.comevendis.compersonal:tardate.comtwitter.com/tardate
    3. 3. .. but that wasn’t always the case
    4. 4. Let it never be said, the romanceis deadCos there’s so little elseoccupying my head
    5. 5. Pascal@uniBASIC,Assembler, C,Fortran..@uniBASIC,Assembler, C,Fortran..Build morecomplexthings fasterBuild morecomplexthings fasterOO DesignOO Design
    6. 6. dbase,NotesPascalPascalBuild morecomplexthings evenfasterBuild morecomplexthings evenfasterClient ServerClient ServerC++,OS/2Purely forpreservation ofself-esteemPurely forpreservation ofself-esteem
    7. 7. MCSDVB, VC, ASP, COM,.NET, C#dbase,Notesdbase,NotesBuilding withcross-functionalteamsBuilding withcross-functionalteamsThe InternethappenedThe Internethappened
    8. 8. J2EEMCSDVB, VC, ASP, COM, .NET,C#MCSDVB, VC, ASP, COM, .NET,C#Lingua francaLingua francaOpenPlatforms andStandardsOpenPlatforms andStandardsPerlUniversal glueUniversal glue
    9. 9. RubyJ2EEJ2EEwrite less,write cleanwrite less,write cleanAgile WebDevelopment,Open sourceAgile WebDevelopment,Open sourceJavascriptUniversal webglueUniversal webglue
    10. 10. A Very Comfortable PlaceLazy Dog Inn, Huarez Peru http://goo.gl/zvkTI
    11. 11. A Very Comfortable PlaceLazy Dog Inn, Huarez Peru http://goo.gl/zvkTIa test-infected communityvibrant open sourcegreat packaging (gems)unrivaled reuse (git/hub)Oh, and the language is pretty nice too
    12. 12. Due to lack of interest tomorrowis canceledLet the clocks be reset and thependulums held
    13. 13. Will I still be a Rubyistin 5 years?
    14. 14. IntrinsicdriversIntrinsicdriversExtrinsicdriversExtrinsicdriversAll aboutproductivityAll aboutproductivityTechnologymega trendsTechnologymega trendsHit the road, Jack
    15. 15. programming problemsI can solve with Rubytime?2013
    16. 16. Fear of the DarkFrontier landsEdge of common practiceBordersNo man’s land
    17. 17. What Technologists Thinkhttp://www.infoq.com/research/software-trends-20131. HTML5 andJavaScript as aPlatform2. Mobile Applicationsand Mobile-first UIs3. Cloud Computing4. NoSQL displacingRDBs5. Big Data andAnalytics
    18. 18. What CIOs ThinkGartner Top 10 CIO Business and Technology Priorities in 2013 http://goo.gl/Bca4T
    19. 19. Four Trends
    20. 20. Four Trends
    21. 21. Rich Interaction – Diverse DevicesClassicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,logicserverdeviceJavaAndroidObjective CiOSJS FrameworksEmber, Angular,Backbone etcJS FrameworksEmber, Angular,Backbone etchttp://todomvc.com/Light dustingPJAX, Turbolinks,Backbone lite,jQueryLight dustingPJAX, Turbolinks,Backbone lite,jQuery
    22. 22. Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,logicserverdeviceJavaAndroidObjective CiOSJS FrameworksEmber, Angular,Backbone etcJS FrameworksEmber, Angular,Backbone etcLight dustingPJAX, Turbolinks,Backbone lite,jQueryLight dustingPJAX, Turbolinks,Backbone lite,jQueryWe want to be DRY?We want to be DRY?
    23. 23. Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,logicserverdeviceJavaAndroidObjective CiOSJS FrameworksEmber, Angular,Backbone etcJS FrameworksEmber, Angular,Backbone etcLight dustingPJAX, Turbolinks,Backbone lite,jQueryLight dustingPJAX, Turbolinks,Backbone lite,jQueryExploit device capabilities?Exploit device capabilities?
    24. 24. Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,logicserverdeviceJavaAndroidObjective CiOSJS FrameworksEmber, Angular,Backbone etcJS FrameworksEmber, Angular,Backbone etcLight dustingPJAX, Turbolinks,Backbone lite,jQueryLight dustingPJAX, Turbolinks,Backbone lite,jQueryServer-push and distributed event propagation?Server-push and distributed event propagation?
    25. 25. Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,logicserverdeviceJavaAndroidObjective CiOSJS FrameworksEmber, Angular,Backbone etcJS FrameworksEmber, Angular,Backbone etcLight dustingPJAX, Turbolinks,Backbone lite,jQueryLight dustingPJAX, Turbolinks,Backbone lite,jQueryA cohesive full stack programming model?A cohesive full stack programming model?
    26. 26. Undisclosed desires..Classicweb appClassicweb appAPIAPINativeNativeRich clientRich clientAPI,partials,logicAPI,partials,logicserverdeviceJavaAndroidObjective CiOSJS FrameworksEmber, Angular,Backbone etcJS FrameworksEmber, Angular,Backbone etcLight dustingPJAX, Turbolinks,Backbone lite,jQueryLight dustingPJAX, Turbolinks,Backbone lite,jQueryChanging my mind should be this painful?Changing my mind should be this painful?
    27. 27. Innovators’ Dilemma: What are thechances?The New™FrameworkThe New™FrameworkserverdeviceJavaAndroidObjective CiOSGetting closer?Meteor / Derby +node.jsGetting closer?Meteor / Derby +node.js
    28. 28. Conclusions?
    29. 29. Four Trends
    30. 30. We do extreme App-ificationSaaSSaaSPaaSPaaSIaaSIaaS
    31. 31. We do extreme App-ificationSaaSSaaSPaaSPaaSIaaSIaaSMaaSMaaS
    32. 32. API-ificationAPIs Everywhere!Favorite and time-tested strategy:– Wait for the REST of the world to catch up– Exceptions BTOBut as technology matures:– More complex integration scenarios– Security and data semantics– Could we see a swing back to SOAP and WS-*style integration?
    33. 33. Conclusions?
    34. 34. Four Trends
    35. 35. Big Data DiversificationData AccessData AccessORMORMServer procand map-reduceServer procand map-reduceKey-valueKey-valueDocumentDocumentMongoDBMongoDBGraphGraphNeo4JNeo4J CassandraCassandraHadoop(family)Hadoop(family)RedisRedisRIAKRIAKCouchDBCouchDBColumnColumn✔✔✔✔JSJStaxonomytaxonomyexamplesexamples✔✔ ✔✔ ✔✔ ✔✔ ✔✔ ✔✔½½JSJS✔✔JSerlangJSerlang CipherCipher✔✔CQLCQL½½Java, PigHiveJava, PigHive½½
    36. 36. Aside: Need Government Data?http://rgovdata.com
    37. 37. Analytics– Can go quite a way with pure Ruby– Use other tools like R (direct or viaRinRuby/RSRuby/Rserve)– E.g. scanning utility bills with Ruby and R:https://github.com/tardate/sps_bill_scannerPython Envy?Python Envy?IPython – interactivenotebooks andvisualisationIPython – interactivenotebooks andvisualisationPandas, Statsmodels,Numpy, SciPy – dataanalysis comparable to RPandas, Statsmodels,Numpy, SciPy – dataanalysis comparable to R
    38. 38. SciRuby and NMatrix!SciRuby: Tools for Scientific Computing in RubyNmatrix: fast numerical linear algebra library for Ruby“We believe that the time for a Ruby scienceand visualization package has come”
    39. 39. Conclusions?
    40. 40. Four Trends
    41. 41. Case Study – Making Megara Ruby wrapper and CLI for the Mega APIhttps://github.com/tardate/megar– mega.co.nz: DropBox on crypto steroids– Browser RIA: cryptography in javascript– API not yet formally/fully documented
    42. 42. Mega Crypto in a Nutshellusernameusername passwordpasswordkeygenA32 > AES-CBC > Base64keygenA32 > AES-CBC > Base64Login session challenge/responseLogin session challenge/responseEncryptedSession IDEncryptedSession IDEncryptedRSA keyEncryptedRSA keyEncryptedmaster keyEncryptedmaster keyRSA privatekey partsRSA privatekey partsDecrypt and decomposeBase64 > AES-CBC > A32Decrypt and decomposeBase64 > AES-CBC > A32Decrypt session_idB64 > MPI > RSA Decrypt > B64Decrypt session_idB64 > MPI > RSA Decrypt > B64Session IDSession IDNB: this is simplified ;-)Decrypt keyBase64 > AES-CBC > A32Decrypt keyBase64 > AES-CBC > A32master keymaster keyfilefileRequest downloadurlRequest downloadurlDownloadDownloadEncrypted fileEncrypted fileDecrypt fileAES-CTR + MAC verifyDecrypt fileAES-CTR + MAC verifyDecrypt file keyBase64 > > AES-CBC > A32Decrypt file keyBase64 > > AES-CBC > A32Request FilesRequest FilesEncrypted fileattributesEncrypted fileattributesFile keyFile key
    43. 43. Mega Crypto ChallengesFunky Base64– url-safe and no delimiters; JFDIMPI and integer arrays– lack of primitives; JFDIRSA with key components– incompatible OpenSSL– DIY RSA private key decryptAES CTR mode– Requires OpenSSL 1.0.1+– DIY CTR mode on AES-CBC OpenSSL0.9.8+
    44. 44. Mega Crypto ChallengesFunky Base64– url-safe and no delimiters; JFDIMPI and integer arrays– lack of primitives; JFDIRSA with key components– incompatible OpenSSL– DIY RSA private key decryptAES CTR mode– Requires OpenSSL 1.0.1+– DIY CTR mode on AES-CBC OpenSSL0.9.8+The PythonExperience?The PythonExperience?PyCrypto – native AES-CTRimplementationPyCrypto – native AES-CTRimplementationPyCrypto – able to drive RSAwith key components (bit ofa hack though)PyCrypto – able to drive RSAwith key components (bit ofa hack though)Base64, MPI and integerarray handling – same, sameBase64, MPI and integerarray handling – same, same
    45. 45. The ResistanceRuby core and stdlib– FBOW thin wrappers onexternal librariesSurely there’s a gem forthat?– Yes, many, but..– fast-aes, gibberish, rbncl,crypto, ruby-aes etc..Hate This & I’ll LoveYouHate This & I’ll LoveYouToo much convention*without* configurationToo much convention*without* configurationPoor composabilityPoor composabilityDistinctly C-dy OpenSSLwrappersDistinctly C-dy OpenSSLwrappersMaintained?Maintained?
    46. 46. Uprising – Krypthttps://github.com/krypt/kryptLead by Martin Boßlet OpenSSL maintainerSee confreaks e.g. http://goo.gl/V4wKW andupdate at GORUCO 8thJuneKrypt aims:– OpenSSL replacement– External dependencies are optional– Composability– Convention *with* configurationStill early days..
    47. 47. Conclusions?
    48. 48. TAKEAWAYSKeep your eyes on the road,and your hands upon the wheel
    49. 49. Four Trends – Liquid StateB-B-A-A-A+A+C+C+
    50. 50. So! Will I still be a Rubyistin 5 years?
    51. 51. YES! But..– Most unpredictable arena is the future of webdevelopment– The future is polyglot, but once you start thinkinglike a Rubyist it is hard to stop – even if we’re notalways typing it– The irresistible urge to inject Ruby goodnesswhere-ever we tread
    52. 52. Thanks!Paul Gallagherpaul@evendis.comevendis.compersonal:tardate.comtwitter.com/tardateRuby, Ruby, Ruby, RubyAnd do ya, do ya, do ya, do yaKnow what ya doing, doing to me?

    ×