SlideShare a Scribd company logo
1 of 18
Into the, => @Bat.mobile
Jonathan Martin
twitter.com/nybblr
github.com/nybblr
Batman.js
Batman.js
Use ← and → to navigate
0
10
20
30
06/09 06/30 07/21 08/11 09/01 09/22 10/13 11/03 11/24 12/15 01/05 01/26 02/16 03/09 03/30 04/20 05/11 06/01
0
2
4
6
8
10
12
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
0
3 3
12
5
0 0
Shopify / batmanPUBLIC
CodeCode NetworkNetwork Pull RequestsPull Requests IssuesIssues WikiWiki GraphsGraphs1818 9595
WatchWatch UnstarUnstar 1,386 ForkFork 149
Search or type a commandThis repositoryThis repository
Use ← and → to navigate
0
10
20
30
06/09 06/30 07/21 08/11 09/01 09/22 10/13 11/03 11/24 12/15 01/05 01/26 02/16 03/09 03/30 04/20 05/11 06/01
0
2
4
6
8
10
12
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
0
3 3
12
5
0 0
Shopify / batmanPUBLIC
CodeCode NetworkNetwork Pull RequestsPull Requests IssuesIssues WikiWiki GraphsGraphs1818 9595
WatchWatch UnstarUnstar 1,386 ForkFork 149
Search or type a commandThis repositoryThis repository
Batman.js
#1hornairs
887 commits / 312,981 ++ / 286,603 --
04/11 10/11 04/12 10/12 04/13
20
40
#2nickjs
451 commits / 71,198 ++ / 37,029 --
04/11 10/11 04/12 10/12 04/13
20
40
#3jamesmacaulay
193 commits / 13,651 ++ / 7,793 --
04/11 10/11 04/12 10/12 04/13
20
40
#4kristianpd
77 commits / 4,525 ++ / 1,748 --
04/11 10/11 04/12 10/12 04/13
20
40
January 8th 2011 ‐ June 1st 2013
Commits to master, excluding merge commits
Shopify / batmanPUBLIC
CodeCode NetworkNetwork Pull RequestsPull Requests IssuesIssues WikiWiki GraphsGraphs1818 9595
CommitsCommitsContribution Type:Contribution Type:
April July October 2012 April July October 2013 April
0
20
40
60
80
WatchWatch UnstarUnstar 1,386 ForkFork 149
Search or type a commandThis repositoryThis repository
#1hornairs
887 commits / 312,981 ++ / 286,603 --
04/11 10/11 04/12 10/12 04/13
20
40
#2nickjs
451 commits / 71,198 ++ / 37,029 --
04/11 10/11 04/12 10/12 04/13
20
40
#3jamesmacaulay
193 commits / 13,651 ++ / 7,793 --
04/11 10/11 04/12 10/12 04/13
20
40
#4kristianpd
77 commits / 4,525 ++ / 1,748 --
04/11 10/11 04/12 10/12 04/13
20
40
January 8th 2011 ‐ June 1st 2013
Commits to master, excluding merge commits
Shopify / batmanPUBLIC
CodeCode NetworkNetwork Pull RequestsPull Requests IssuesIssues WikiWiki GraphsGraphs1818 9595
CommitsCommitsContribution Type:Contribution Type:
April July October 2012 April July October 2013 April
0
20
40
60
80
WatchWatch UnstarUnstar 1,386 ForkFork 149
Search or type a commandThis repositoryThis repository
Batman.js
Batman.js
Batman.js
• 0.5.0 released August 2011
• Created by Nick Small
• ...and some other Shoppers =)
• The name?
• Something about an Arduino
• Elevator pitch
• Rails values
• Rails looks
• Rails rock
Underview
• Keypaths
• Observables
• Properties
• Bindings
Underview
class Awesome.Object extends Batman.Object
# Default accessors
@accessor 'myFirstName', 'myLastName'
# Computed properties
@accessor 'fullName', =>
@get('myFirstName') + @get('myLastName')
# Callbacks when changes happen
@observe 'fullName', (newValue, oldValue) =>
value = Person.find(oldValue).set 'name', newValue
@fire 'hashedName', value
# Catch fired events
@on 'hashedName', (value) =>
alert "Hello there! My hashed name is #{value}"
Underview
• Keypaths
• Observables
• Properties
• Bindings
• Data sources
• Models
• Adapters
• IOU objects
Underviewclass Awesome.Post extends Batman.Model
# Persist with extension of RESTStorage
@persist Batman.RailsStorage
# Define attributes
@encode 'title', 'body', 'tags', 'published'
@encode 'publishedOn', Batman.Encoders.railsDate
class Awesome.PostsController extends Batman.Controller
# Save from minification pain
routingKey: 'posts'
index: (params) ->
# Set in controller context with =>
iou = Awesome.Post.load (err, results) =>
# Returns a Batman.Set
@set 'posts', results
Underview
• Keypaths
• Observables
• Properties
• Bindings
• Data sources
• Models
• Adapters
• IOU objects
• Templates, Views, Controllers
Batman.js on Rails 4
Demo
Overview
• Rails JSON backend
• With observers
• Serving assets
• Batman.js MVC frontend
• With adapter
• View bindings
• Realtime
• Over WebSockets
• With Robin.js
CanShame
• CoffeeScript
• Idiomatic
• Two-way bindings
• Gorgeous architecture
• As Low Level As Possible
• Keep It Consistent, Stupid
• Don’t Make Me Repeat Myself
• Low boilerplate *
Snagsnsuch
• Too much boilerplate *
• Context subtleties
• Rails integration
• Camelization
• JSON structure
• Template reuse
• Handlebars
• Extra div elements
• Realtime gotchas
To the, => @Bat.Poles
Make something awesome...
To the, => @Bat.Poles
...and follow me on twitter: @nybblr

More Related Content

Viewers also liked

Paso al cole y verano
Paso al cole y veranoPaso al cole y verano
Paso al cole y veranoComunicarte
 
Plantila presentacion-sena-2015 - 800
Plantila presentacion-sena-2015 - 800Plantila presentacion-sena-2015 - 800
Plantila presentacion-sena-2015 - 800AMARBE
 
Tiip presentation 1
Tiip presentation 1Tiip presentation 1
Tiip presentation 1susanaoliu
 
2nd yr BDS Students sterilization and disinfection updates
2nd yr BDS Students sterilization and disinfection updates2nd yr BDS Students sterilization and disinfection updates
2nd yr BDS Students sterilization and disinfection updatesArsh Gull
 
Angilu la gata misu
Angilu la gata misuAngilu la gata misu
Angilu la gata misuangie6to
 
Presentación1 pintureria
Presentación1 pintureriaPresentación1 pintureria
Presentación1 pintureriaNicoP12
 

Viewers also liked (13)

Art del barroc
Art del barrocArt del barroc
Art del barroc
 
Paso al cole y verano
Paso al cole y veranoPaso al cole y verano
Paso al cole y verano
 
Ρωμαϊκή Ιστορία
Ρωμαϊκή ΙστορίαΡωμαϊκή Ιστορία
Ρωμαϊκή Ιστορία
 
Tommy anou
Tommy anouTommy anou
Tommy anou
 
Debora miño 07
Debora miño 07Debora miño 07
Debora miño 07
 
Plantila presentacion-sena-2015 - 800
Plantila presentacion-sena-2015 - 800Plantila presentacion-sena-2015 - 800
Plantila presentacion-sena-2015 - 800
 
Tiip presentation 1
Tiip presentation 1Tiip presentation 1
Tiip presentation 1
 
2nd yr BDS Students sterilization and disinfection updates
2nd yr BDS Students sterilization and disinfection updates2nd yr BDS Students sterilization and disinfection updates
2nd yr BDS Students sterilization and disinfection updates
 
Tommy anou
Tommy anouTommy anou
Tommy anou
 
Angilu la gata misu
Angilu la gata misuAngilu la gata misu
Angilu la gata misu
 
CURRICULUM VITAE
CURRICULUM VITAECURRICULUM VITAE
CURRICULUM VITAE
 
CURRICULUM VITAE
CURRICULUM VITAECURRICULUM VITAE
CURRICULUM VITAE
 
Presentación1 pintureria
Presentación1 pintureriaPresentación1 pintureria
Presentación1 pintureria
 

Similar to Batman - By Jonathan Martin - ATLRUG Meeting - 6/12/2013

Similar to Batman - By Jonathan Martin - ATLRUG Meeting - 6/12/2013 (10)

Paging Like A Pro
Paging Like A ProPaging Like A Pro
Paging Like A Pro
 
DEF CON 27 -OMER GULL - select code execution from using sq lite
DEF CON 27 -OMER GULL - select code execution from using sq liteDEF CON 27 -OMER GULL - select code execution from using sq lite
DEF CON 27 -OMER GULL - select code execution from using sq lite
 
BDACA1516s2 - Lecture6
BDACA1516s2 - Lecture6BDACA1516s2 - Lecture6
BDACA1516s2 - Lecture6
 
BDACA1617s2 - Lecture6
BDACA1617s2 - Lecture6BDACA1617s2 - Lecture6
BDACA1617s2 - Lecture6
 
Syndicated content on your web pages
Syndicated content on your web pagesSyndicated content on your web pages
Syndicated content on your web pages
 
Cucumber
CucumberCucumber
Cucumber
 
An Introduction To jQuery
An Introduction To jQueryAn Introduction To jQuery
An Introduction To jQuery
 
GCRC 2014 - The Dark Side of Ruby
GCRC 2014 - The Dark Side of RubyGCRC 2014 - The Dark Side of Ruby
GCRC 2014 - The Dark Side of Ruby
 
Elastic{ON} 2016 Review - 김종민 님
Elastic{ON} 2016 Review - 김종민 님Elastic{ON} 2016 Review - 김종민 님
Elastic{ON} 2016 Review - 김종민 님
 
With Great Nerdery Comes Great Responsibility
With Great Nerdery Comes Great Responsibility With Great Nerdery Comes Great Responsibility
With Great Nerdery Comes Great Responsibility
 

More from jasnow

app/assets/stylesheets - How to not make a mess
app/assets/stylesheets - How to not make a messapp/assets/stylesheets - How to not make a mess
app/assets/stylesheets - How to not make a messjasnow
 
ATLRUG Community Announcements for December 2016
ATLRUG Community Announcements for December 2016ATLRUG Community Announcements for December 2016
ATLRUG Community Announcements for December 2016jasnow
 
Commitment
CommitmentCommitment
Commitmentjasnow
 
ATLRUG Community/Giveback Announcments
ATLRUG Community/Giveback AnnouncmentsATLRUG Community/Giveback Announcments
ATLRUG Community/Giveback Announcmentsjasnow
 
ATLRUG Announcements - October 2016
ATLRUG Announcements - October 2016ATLRUG Announcements - October 2016
ATLRUG Announcements - October 2016jasnow
 
Seamless Migration
Seamless MigrationSeamless Migration
Seamless Migrationjasnow
 
ATLRUG Announcements - Septemer 2016
ATLRUG Announcements - Septemer 2016ATLRUG Announcements - Septemer 2016
ATLRUG Announcements - Septemer 2016jasnow
 
Hacking Aaway with ionic
Hacking Aaway with ionicHacking Aaway with ionic
Hacking Aaway with ionicjasnow
 
ATLRUG Announcements/Upgrade News - August 2016
ATLRUG Announcements/Upgrade News - August 2016ATLRUG Announcements/Upgrade News - August 2016
ATLRUG Announcements/Upgrade News - August 2016jasnow
 
ATLRUG Announcements - July 2016
ATLRUG Announcements - July 2016ATLRUG Announcements - July 2016
ATLRUG Announcements - July 2016jasnow
 
Ruby on Docker
Ruby on DockerRuby on Docker
Ruby on Dockerjasnow
 
Getting Answers to Your Testing Questions
Getting Answers to Your Testing QuestionsGetting Answers to Your Testing Questions
Getting Answers to Your Testing Questionsjasnow
 
ATLRUG Announcments - May 2016
ATLRUG Announcments - May 2016ATLRUG Announcments - May 2016
ATLRUG Announcments - May 2016jasnow
 
ATLRUG Announcements and Fun Facts - April 2016
ATLRUG Announcements and Fun Facts - April 2016ATLRUG Announcements and Fun Facts - April 2016
ATLRUG Announcements and Fun Facts - April 2016jasnow
 
ATLRUG Announcements - March 2016
ATLRUG Announcements - March 2016ATLRUG Announcements - March 2016
ATLRUG Announcements - March 2016jasnow
 
Our ATLRUG.com Web Site
Our ATLRUG.com Web SiteOur ATLRUG.com Web Site
Our ATLRUG.com Web Sitejasnow
 
WebRTC: Real Time Video/Audio For Your App ...
WebRTC: Real Time Video/Audio For Your App ...WebRTC: Real Time Video/Audio For Your App ...
WebRTC: Real Time Video/Audio For Your App ...jasnow
 
ATLRUG Announcements for Feb. 2016
ATLRUG Announcements for Feb. 2016ATLRUG Announcements for Feb. 2016
ATLRUG Announcements for Feb. 2016jasnow
 
ATLRUG December 2015
ATLRUG December 2015ATLRUG December 2015
ATLRUG December 2015jasnow
 
Ecto Introduction by Patrick Vanstee
Ecto Introduction by Patrick VansteeEcto Introduction by Patrick Vanstee
Ecto Introduction by Patrick Vansteejasnow
 

More from jasnow (20)

app/assets/stylesheets - How to not make a mess
app/assets/stylesheets - How to not make a messapp/assets/stylesheets - How to not make a mess
app/assets/stylesheets - How to not make a mess
 
ATLRUG Community Announcements for December 2016
ATLRUG Community Announcements for December 2016ATLRUG Community Announcements for December 2016
ATLRUG Community Announcements for December 2016
 
Commitment
CommitmentCommitment
Commitment
 
ATLRUG Community/Giveback Announcments
ATLRUG Community/Giveback AnnouncmentsATLRUG Community/Giveback Announcments
ATLRUG Community/Giveback Announcments
 
ATLRUG Announcements - October 2016
ATLRUG Announcements - October 2016ATLRUG Announcements - October 2016
ATLRUG Announcements - October 2016
 
Seamless Migration
Seamless MigrationSeamless Migration
Seamless Migration
 
ATLRUG Announcements - Septemer 2016
ATLRUG Announcements - Septemer 2016ATLRUG Announcements - Septemer 2016
ATLRUG Announcements - Septemer 2016
 
Hacking Aaway with ionic
Hacking Aaway with ionicHacking Aaway with ionic
Hacking Aaway with ionic
 
ATLRUG Announcements/Upgrade News - August 2016
ATLRUG Announcements/Upgrade News - August 2016ATLRUG Announcements/Upgrade News - August 2016
ATLRUG Announcements/Upgrade News - August 2016
 
ATLRUG Announcements - July 2016
ATLRUG Announcements - July 2016ATLRUG Announcements - July 2016
ATLRUG Announcements - July 2016
 
Ruby on Docker
Ruby on DockerRuby on Docker
Ruby on Docker
 
Getting Answers to Your Testing Questions
Getting Answers to Your Testing QuestionsGetting Answers to Your Testing Questions
Getting Answers to Your Testing Questions
 
ATLRUG Announcments - May 2016
ATLRUG Announcments - May 2016ATLRUG Announcments - May 2016
ATLRUG Announcments - May 2016
 
ATLRUG Announcements and Fun Facts - April 2016
ATLRUG Announcements and Fun Facts - April 2016ATLRUG Announcements and Fun Facts - April 2016
ATLRUG Announcements and Fun Facts - April 2016
 
ATLRUG Announcements - March 2016
ATLRUG Announcements - March 2016ATLRUG Announcements - March 2016
ATLRUG Announcements - March 2016
 
Our ATLRUG.com Web Site
Our ATLRUG.com Web SiteOur ATLRUG.com Web Site
Our ATLRUG.com Web Site
 
WebRTC: Real Time Video/Audio For Your App ...
WebRTC: Real Time Video/Audio For Your App ...WebRTC: Real Time Video/Audio For Your App ...
WebRTC: Real Time Video/Audio For Your App ...
 
ATLRUG Announcements for Feb. 2016
ATLRUG Announcements for Feb. 2016ATLRUG Announcements for Feb. 2016
ATLRUG Announcements for Feb. 2016
 
ATLRUG December 2015
ATLRUG December 2015ATLRUG December 2015
ATLRUG December 2015
 
Ecto Introduction by Patrick Vanstee
Ecto Introduction by Patrick VansteeEcto Introduction by Patrick Vanstee
Ecto Introduction by Patrick Vanstee
 

Recently uploaded

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Batman - By Jonathan Martin - ATLRUG Meeting - 6/12/2013

  • 1. Into the, => @Bat.mobile Jonathan Martin twitter.com/nybblr github.com/nybblr
  • 3. Batman.js Use ← and → to navigate 0 10 20 30 06/09 06/30 07/21 08/11 09/01 09/22 10/13 11/03 11/24 12/15 01/05 01/26 02/16 03/09 03/30 04/20 05/11 06/01 0 2 4 6 8 10 12 Sunday Monday Tuesday Wednesday Thursday Friday Saturday 0 3 3 12 5 0 0 Shopify / batmanPUBLIC CodeCode NetworkNetwork Pull RequestsPull Requests IssuesIssues WikiWiki GraphsGraphs1818 9595 WatchWatch UnstarUnstar 1,386 ForkFork 149 Search or type a commandThis repositoryThis repository Use ← and → to navigate 0 10 20 30 06/09 06/30 07/21 08/11 09/01 09/22 10/13 11/03 11/24 12/15 01/05 01/26 02/16 03/09 03/30 04/20 05/11 06/01 0 2 4 6 8 10 12 Sunday Monday Tuesday Wednesday Thursday Friday Saturday 0 3 3 12 5 0 0 Shopify / batmanPUBLIC CodeCode NetworkNetwork Pull RequestsPull Requests IssuesIssues WikiWiki GraphsGraphs1818 9595 WatchWatch UnstarUnstar 1,386 ForkFork 149 Search or type a commandThis repositoryThis repository
  • 4. Batman.js #1hornairs 887 commits / 312,981 ++ / 286,603 -- 04/11 10/11 04/12 10/12 04/13 20 40 #2nickjs 451 commits / 71,198 ++ / 37,029 -- 04/11 10/11 04/12 10/12 04/13 20 40 #3jamesmacaulay 193 commits / 13,651 ++ / 7,793 -- 04/11 10/11 04/12 10/12 04/13 20 40 #4kristianpd 77 commits / 4,525 ++ / 1,748 -- 04/11 10/11 04/12 10/12 04/13 20 40 January 8th 2011 ‐ June 1st 2013 Commits to master, excluding merge commits Shopify / batmanPUBLIC CodeCode NetworkNetwork Pull RequestsPull Requests IssuesIssues WikiWiki GraphsGraphs1818 9595 CommitsCommitsContribution Type:Contribution Type: April July October 2012 April July October 2013 April 0 20 40 60 80 WatchWatch UnstarUnstar 1,386 ForkFork 149 Search or type a commandThis repositoryThis repository #1hornairs 887 commits / 312,981 ++ / 286,603 -- 04/11 10/11 04/12 10/12 04/13 20 40 #2nickjs 451 commits / 71,198 ++ / 37,029 -- 04/11 10/11 04/12 10/12 04/13 20 40 #3jamesmacaulay 193 commits / 13,651 ++ / 7,793 -- 04/11 10/11 04/12 10/12 04/13 20 40 #4kristianpd 77 commits / 4,525 ++ / 1,748 -- 04/11 10/11 04/12 10/12 04/13 20 40 January 8th 2011 ‐ June 1st 2013 Commits to master, excluding merge commits Shopify / batmanPUBLIC CodeCode NetworkNetwork Pull RequestsPull Requests IssuesIssues WikiWiki GraphsGraphs1818 9595 CommitsCommitsContribution Type:Contribution Type: April July October 2012 April July October 2013 April 0 20 40 60 80 WatchWatch UnstarUnstar 1,386 ForkFork 149 Search or type a commandThis repositoryThis repository
  • 7. Batman.js • 0.5.0 released August 2011 • Created by Nick Small • ...and some other Shoppers =) • The name? • Something about an Arduino • Elevator pitch • Rails values • Rails looks • Rails rock
  • 9. Underview class Awesome.Object extends Batman.Object # Default accessors @accessor 'myFirstName', 'myLastName' # Computed properties @accessor 'fullName', => @get('myFirstName') + @get('myLastName') # Callbacks when changes happen @observe 'fullName', (newValue, oldValue) => value = Person.find(oldValue).set 'name', newValue @fire 'hashedName', value # Catch fired events @on 'hashedName', (value) => alert "Hello there! My hashed name is #{value}"
  • 10. Underview • Keypaths • Observables • Properties • Bindings • Data sources • Models • Adapters • IOU objects
  • 11. Underviewclass Awesome.Post extends Batman.Model # Persist with extension of RESTStorage @persist Batman.RailsStorage # Define attributes @encode 'title', 'body', 'tags', 'published' @encode 'publishedOn', Batman.Encoders.railsDate class Awesome.PostsController extends Batman.Controller # Save from minification pain routingKey: 'posts' index: (params) -> # Set in controller context with => iou = Awesome.Post.load (err, results) => # Returns a Batman.Set @set 'posts', results
  • 12. Underview • Keypaths • Observables • Properties • Bindings • Data sources • Models • Adapters • IOU objects • Templates, Views, Controllers
  • 14. Overview • Rails JSON backend • With observers • Serving assets • Batman.js MVC frontend • With adapter • View bindings • Realtime • Over WebSockets • With Robin.js
  • 15. CanShame • CoffeeScript • Idiomatic • Two-way bindings • Gorgeous architecture • As Low Level As Possible • Keep It Consistent, Stupid • Don’t Make Me Repeat Myself • Low boilerplate *
  • 16. Snagsnsuch • Too much boilerplate * • Context subtleties • Rails integration • Camelization • JSON structure • Template reuse • Handlebars • Extra div elements • Realtime gotchas
  • 17. To the, => @Bat.Poles Make something awesome...
  • 18. To the, => @Bat.Poles ...and follow me on twitter: @nybblr