SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
DOTHE WORK
Scottish Ruby Conference 2014	

Lori Olson
LORI OLSON
• lori@wndx.com	

• www.wndx.com	

• @wndxlori	

• Freelance developer,
mentor, trainer	

• CANADA!
KUDOS
Changing the world, oneThankYou at a time!	

kudosnow.com
LADIES LEARNING CODE
Instructor/Mentor
TELLYOU A STORY
I’m going to tell you a story.
CAUTIONARYTALE
It’s a somewhat cautionary tale
DOWNTHE RABBIT HOLE
About just how far down the rabbit hole you can go…
INSTEAD OF 	

DOINGTHE WORK
when, instead of doing the work
FALL INTOTHETRAP OF	

AVOIDINGTHE WORK
you fall into the trap of avoiding the work, looking for the easy way out.
THE STORY
WRITE A RUBYMOTION APP
As a side project, to learn more about RubyMotion and iOS Development
WIMBY
Wells In My BackYard
So I picked WIMBY, or Wells in My Back Yard.
That’s a play on NIMBY, or Not In My Back Yard.
!
You might call that a garden….
CALMAR,ALBERTA, CANADA
• "According to the records, they believed that
somewhere in that vicinity was a well site," recalled
Ms. Beaudry, 45, a mother of two.They guessed
right. In her backyard, a metre from her house,
crews found a broken, leaking, 50-year-old natural
gas well.
BUT WHY? HOW?
How is it even possible for people to not know they have an abandoned well on their property?
!
Once the wells were abandoned, Imperial/Texaco Canada surrendered the lease back to the landowner and consequently no longer had an interest in the
lands. Caveats were later removed from the land titles because there was no regulatory requirement that provided for registration of well locations on
land titles once activity had ceased.
WELLS ABANDONED
IMPROPERLY
It was only in the mid 60’s that rules and regulations acquired some teeth, and wells had to be abandoned according to well-established, well-regulated
procedures.
HOMESTORN DOWN
• The re-abandonment of the 1-36 wellbore
required the acquisition and removal of five
Evergreen Crescent properties to accommodate
the safe operation of a drilling rig.
A quote from the Imperial Oil website, w.r.t. the Calmar incident.
I MUST DO SOMETHING
So, having encounter this story, I felt I must do something.
But what?
DATA. GOTTHAT
In fact, I spent the better part of 7 years immersed in the Oil & Gas data used by most of the Canadian oil industry, and provided by 2 of the biggest data
vendors in the business.
LOADS OF DATA
There are over 750,000 oil and gas wells in Canada, and of
those, over 244,000 are abandoned.
THATS A LOT OF WELLS
to keep track of
FOR AN IOS APP	

THATS A LOT OF DATA
YOU SHOULD USE 	

CORE DATA
All of my research let me to the conclusion that I needed to use Core Data.
CORE DATA
in RubyMotion
And there-in lies the problem. Not just using Core Data, where there are books and tutorials galore, but using it in RubyMotion, not so much.
I BETTHERE’S A 	

GEM 	

FORTHAT
Isn’t there always?
–@topfunky
@charliesomeYou must be new to Ruby. We write 16
different independent gems for everything here. ;-)
SO MANY GEMS
• motion-sqlite	

• Nitreon	

• Magical Record	

• Superbox
• Motiondata	

• MotionModel	

• CDQ
Why yes, in fact, there are a lot of gems. And where there are many options there are so many opportunities to become lost in analysis paralysis.
SO MANY REQUIREMENTS	

SO LITTLETIME
PRELOADING *LOTS*	

OF DATA
NON-TRIVIAL DATA MODEL
RELATIONSHIPS
FILTER
by location
LIST
MAP
PARTTIME
But I was only doing this little project on the side. Part time. Evenings & weekends.
RESEARCH
a.k.a.Yak Shaving
And so it went. I researched, and I researched some more. And then so more. And so it went.
NOTHING WORKS
Eventually, I came to a CONCLUSION. Nothing works. At least, not for the specific requirements that my application had.
–@scottdavis99
Young C is expending an extraordinary amount of
energy finding shortcuts rather than just doing the
work. Future #convict or #programmer?
I saw this and thought… this is me. Instead of just buckling down, and doing the work of figuring out Core Data for myself, I wasted all that time trying to
use other people’s code that was not suited to my core requirements.
DIDN'T KNOW ENOUGH
about Core Data
DIDN'T UNDERSTAND 	

THE GEMS
And because I didn’t know enough about Core Data, I didn’t really understand how the gems worked
COULDN'T MODIFY 	

THE GEMS
And because I didn’t understand how they worked, I couldn’t really modify them easily, either.
THE IRONY
I tried to use gems as a shortcut, only to end up wasting more time than just DOING THE WORK.
–@bketelsen
spent 6 hours researching a way to do it the easy way,
when I could have written it in 3, the hard way.
Yup, I resembled this guy too. I wasted 3 weeks of part time efforts, digging into all those gems, so I wouldn’t have to learn Core Data for myself.
DOTHE WORK
back to the basics
So, after all that, I needed to go back, and actually spend time figuring out Core Data in RubyMotion for myself.
LEARNTHE SDK
Because RubyMotion, for all it lets you code in Ruby, does not relieve you of the need to learn the Apple iOS SDK’s.
READTHE API
And what does that mean? Learn the SDK. It meant going back, and actually reading the Apple documentation for Core Data.
READTHE EXAMPLES
It meant downloading and reading the example code that comes with the API documentation.
FIND MORE EXAMPLES
It meant finding some Objective C posts about using Core Data (on Ray Wenderlich’s fab site).
IMPLEMENT SAMPLE
SOLUTIONS
and using those examples, walking thru them, and translating them into RubyMotion.
HARD PROBLEMS ARE HARD
Along the way I (re)discovered… hard problems are hard. Most of my requirements turned out to be fairly challenging problems, in and of themselves.
Most gems are make tedious things simple. But they don’t really tackle the hard problems.
@SERIOUSPONY
On expertise and just how deep the rabbit hole goes
Most of the gems stop at the “Turns out it’s quite simple”.
!
Most of my requirements drove me all the way into “OMG complex!”
!
* https://twitter.com/seriouspony/status/419887010388537344/photo/1
Turns out, I was sort of glad that none of those gems worked for me. I learned SO MUCH.
I KNOW!	

I’LL WRITE A BOOK NOW!
So much in fact, that I ended up with enough material to write a whole book on the subject of Core Data in Ruby Motion.
DOINGTHE WORK
The moral of this long and involved tale
that is somewhat embarrassing
and somewhat uplifting
is that when the problem you are attempting to solve is core to your application, sometimes what you need to do is just sit down, and do the work.
PERILS
What are the perils involved in avoiding “Doing the work”?
EXPERT BEGINNER
How Developers Stop Learning: Rise of the Expert Beginner	

This is where you learn just enough to think you are proficient, but really, you never get to be an expert at anything. Lots of developers fall into this trap.
We need to dig a little deeper, avoid the easy solutions, and do the work.
!
http://www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner
@SERIOUSPONY
On expertise and just how deep the rabbit hole goes
The expert beginner gets stuck in that trough, and never realizes there is more to learn
!
* https://twitter.com/seriouspony/status/419887010388537344/photo/1
ADVANTAGES
What are the advantages of doing the work?
LEARNING IS ITS OWN
REWARD
Ok, sure it’s a cliche, but that doesn’t make it less true. There is deep satisfaction in deep diving into learning, and becoming truly expert in something.
BELONG BY DOING
This is a great quote. I wish I could track down where it came from.
!
Do the work.
CORE DATA IN MOTION
http://coredatainmotion.com
And of course, maybe you too, will some day discover that you have learned enough about a difficult topic that you have enough material at your
fingertips to write a book.
DOTHE
WORK!
Thanks for listening!
Finnegan says…

Más contenido relacionado

La actualidad más candente

Erase and Rewind - Open Web Camp 2015
Erase and Rewind - Open Web Camp 2015Erase and Rewind - Open Web Camp 2015
Erase and Rewind - Open Web Camp 2015Christian Heilmann
 
Structuring Content, Restructuring Organizations - CS Forum 2012
Structuring Content, Restructuring Organizations - CS Forum 2012Structuring Content, Restructuring Organizations - CS Forum 2012
Structuring Content, Restructuring Organizations - CS Forum 2012Sara Wachter-Boettcher
 
Producing a mobile presence. Timeline: Yesterday...
Producing a mobile presence. Timeline: Yesterday...Producing a mobile presence. Timeline: Yesterday...
Producing a mobile presence. Timeline: Yesterday...Nick DeNardis
 
Can we make es6 the baseline of the “modern web”? - BrazilJS 2105
Can we make es6 the baseline of the “modern web”? - BrazilJS 2105 Can we make es6 the baseline of the “modern web”? - BrazilJS 2105
Can we make es6 the baseline of the “modern web”? - BrazilJS 2105 Christian Heilmann
 
JAX2013 Keynote - When open-source enables the Internet of Things
JAX2013 Keynote - When open-source enables the Internet of ThingsJAX2013 Keynote - When open-source enables the Internet of Things
JAX2013 Keynote - When open-source enables the Internet of ThingsBenjamin Cabé
 
What you don't know will hurt you: Designing with and for existing content
What you don't know will hurt you: Designing with and for existing contentWhat you don't know will hurt you: Designing with and for existing content
What you don't know will hurt you: Designing with and for existing contentSara Wachter-Boettcher
 
Web 2.0 tools (1)
Web 2.0 tools (1)Web 2.0 tools (1)
Web 2.0 tools (1)flo15
 
Lights, Camera, ACTION!
Lights, Camera, ACTION!Lights, Camera, ACTION!
Lights, Camera, ACTION!mplibrarylady
 
Smidig 2010: Agile Basics
Smidig 2010: Agile BasicsSmidig 2010: Agile Basics
Smidig 2010: Agile BasicsIngvald Skaug
 
How to find your 1st job ruby
How to find your 1st job rubyHow to find your 1st job ruby
How to find your 1st job rubyOlya Karpa
 
In It Together: Co-Creating Your Content Strategy
In It Together: Co-Creating Your Content StrategyIn It Together: Co-Creating Your Content Strategy
In It Together: Co-Creating Your Content StrategySara Wachter-Boettcher
 
Iterative Website Redesign: Micro Goals in Action - CASEV 2011
Iterative Website Redesign: Micro Goals in Action - CASEV 2011Iterative Website Redesign: Micro Goals in Action - CASEV 2011
Iterative Website Redesign: Micro Goals in Action - CASEV 2011Nick DeNardis
 
Size Doesn't Matter
Size Doesn't MatterSize Doesn't Matter
Size Doesn't MatterRoy Degler
 
Promoting Yourself With A Personal Web Site
Promoting Yourself With A Personal Web SitePromoting Yourself With A Personal Web Site
Promoting Yourself With A Personal Web Sitejasonpuckett
 
HTML5 intro
HTML5 introHTML5 intro
HTML5 introYoniWeb
 

La actualidad más candente (20)

Erase and Rewind - Open Web Camp 2015
Erase and Rewind - Open Web Camp 2015Erase and Rewind - Open Web Camp 2015
Erase and Rewind - Open Web Camp 2015
 
Structuring Content, Restructuring Organizations - CS Forum 2012
Structuring Content, Restructuring Organizations - CS Forum 2012Structuring Content, Restructuring Organizations - CS Forum 2012
Structuring Content, Restructuring Organizations - CS Forum 2012
 
Producing a mobile presence. Timeline: Yesterday...
Producing a mobile presence. Timeline: Yesterday...Producing a mobile presence. Timeline: Yesterday...
Producing a mobile presence. Timeline: Yesterday...
 
Can we make es6 the baseline of the “modern web”? - BrazilJS 2105
Can we make es6 the baseline of the “modern web”? - BrazilJS 2105 Can we make es6 the baseline of the “modern web”? - BrazilJS 2105
Can we make es6 the baseline of the “modern web”? - BrazilJS 2105
 
JAX2013 Keynote - When open-source enables the Internet of Things
JAX2013 Keynote - When open-source enables the Internet of ThingsJAX2013 Keynote - When open-source enables the Internet of Things
JAX2013 Keynote - When open-source enables the Internet of Things
 
Orchestrating Content—FOWD NYC
Orchestrating Content—FOWD NYCOrchestrating Content—FOWD NYC
Orchestrating Content—FOWD NYC
 
Content Amid Chaos
Content Amid ChaosContent Amid Chaos
Content Amid Chaos
 
Orchestrating Content
Orchestrating ContentOrchestrating Content
Orchestrating Content
 
What you don't know will hurt you: Designing with and for existing content
What you don't know will hurt you: Designing with and for existing contentWhat you don't know will hurt you: Designing with and for existing content
What you don't know will hurt you: Designing with and for existing content
 
Managing the Content Process
Managing the Content ProcessManaging the Content Process
Managing the Content Process
 
Web 2.0 tools (1)
Web 2.0 tools (1)Web 2.0 tools (1)
Web 2.0 tools (1)
 
Lights, Camera, ACTION!
Lights, Camera, ACTION!Lights, Camera, ACTION!
Lights, Camera, ACTION!
 
Smidig 2010: Agile Basics
Smidig 2010: Agile BasicsSmidig 2010: Agile Basics
Smidig 2010: Agile Basics
 
How to find your 1st job ruby
How to find your 1st job rubyHow to find your 1st job ruby
How to find your 1st job ruby
 
In It Together: Co-Creating Your Content Strategy
In It Together: Co-Creating Your Content StrategyIn It Together: Co-Creating Your Content Strategy
In It Together: Co-Creating Your Content Strategy
 
Iterative Website Redesign: Micro Goals in Action - CASEV 2011
Iterative Website Redesign: Micro Goals in Action - CASEV 2011Iterative Website Redesign: Micro Goals in Action - CASEV 2011
Iterative Website Redesign: Micro Goals in Action - CASEV 2011
 
Size Doesn't Matter
Size Doesn't MatterSize Doesn't Matter
Size Doesn't Matter
 
Promoting Yourself With A Personal Web Site
Promoting Yourself With A Personal Web SitePromoting Yourself With A Personal Web Site
Promoting Yourself With A Personal Web Site
 
Declutter your website: Keep what works, eliminate the rest
Declutter your website: Keep what works, eliminate the restDeclutter your website: Keep what works, eliminate the rest
Declutter your website: Keep what works, eliminate the rest
 
HTML5 intro
HTML5 introHTML5 intro
HTML5 intro
 

Similar a Do The Work

DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsBen Hall
 
How to Teach Yourself to Code
How to Teach Yourself to CodeHow to Teach Yourself to Code
How to Teach Yourself to CodeMattan Griffel
 
Maintaining a big open source project: lessons learned
Maintaining a big open source project: lessons learnedMaintaining a big open source project: lessons learned
Maintaining a big open source project: lessons learnedLeonardo Tegon
 
Naked and afraid Offline mobile
Naked and afraid Offline mobileNaked and afraid Offline mobile
Naked and afraid Offline mobiledevObjective
 
What is spatial sql
What is spatial sqlWhat is spatial sql
What is spatial sqlshawty_ds
 
What rails taught me – Eugene Pirogov
What rails taught me – Eugene PirogovWhat rails taught me – Eugene Pirogov
What rails taught me – Eugene PirogovRuby Meditation
 
Designing Edenbee
Designing EdenbeeDesigning Edenbee
Designing EdenbeeJames Box
 
ChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef RetrospectiveChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef Retrospectivegwaldo
 
Surviving the technical interview
Surviving the technical interviewSurviving the technical interview
Surviving the technical interviewEric Brooke
 
/dev/fort: you can build it in a week @emw
/dev/fort: you can build it in a week @emw/dev/fort: you can build it in a week @emw
/dev/fort: you can build it in a week @emwJames Aylett
 
Streams on top of scala - #lambdaCon
Streams on top of scala - #lambdaConStreams on top of scala - #lambdaCon
Streams on top of scala - #lambdaConQuentin Adam
 
Simon Owen - Healthy Front-end Workflow - Leeds Front End
Simon Owen - Healthy Front-end Workflow - Leeds Front EndSimon Owen - Healthy Front-end Workflow - Leeds Front End
Simon Owen - Healthy Front-end Workflow - Leeds Front EndLeeds Front End meetup group
 
Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014michaelag1971
 
Technology, Project, and People
Technology, Project, and PeopleTechnology, Project, and People
Technology, Project, and PeopleErin Sean McAtee
 
6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friendForrest Chang
 
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRYLizzyManz
 
Becoming a more productive Rails Developer
Becoming a more productive Rails DeveloperBecoming a more productive Rails Developer
Becoming a more productive Rails DeveloperJohn McCaffrey
 
10 things you should know before learning ruby or rails
10 things you should know before learning ruby or rails10 things you should know before learning ruby or rails
10 things you should know before learning ruby or railsRichardson Dackam
 

Similar a Do The Work (20)

DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable Products
 
How to Teach Yourself to Code
How to Teach Yourself to CodeHow to Teach Yourself to Code
How to Teach Yourself to Code
 
Maintaining a big open source project: lessons learned
Maintaining a big open source project: lessons learnedMaintaining a big open source project: lessons learned
Maintaining a big open source project: lessons learned
 
Naked and afraid Offline Mobile
Naked and afraid Offline MobileNaked and afraid Offline Mobile
Naked and afraid Offline Mobile
 
Naked and afraid Offline mobile
Naked and afraid Offline mobileNaked and afraid Offline mobile
Naked and afraid Offline mobile
 
What is spatial sql
What is spatial sqlWhat is spatial sql
What is spatial sql
 
What rails taught me – Eugene Pirogov
What rails taught me – Eugene PirogovWhat rails taught me – Eugene Pirogov
What rails taught me – Eugene Pirogov
 
Designing Edenbee
Designing EdenbeeDesigning Edenbee
Designing Edenbee
 
ChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef RetrospectiveChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef Retrospective
 
Surviving the technical interview
Surviving the technical interviewSurviving the technical interview
Surviving the technical interview
 
/dev/fort: you can build it in a week @emw
/dev/fort: you can build it in a week @emw/dev/fort: you can build it in a week @emw
/dev/fort: you can build it in a week @emw
 
Streams on top of scala - #lambdaCon
Streams on top of scala - #lambdaConStreams on top of scala - #lambdaCon
Streams on top of scala - #lambdaCon
 
Simon Owen - Healthy Front-end Workflow - Leeds Front End
Simon Owen - Healthy Front-end Workflow - Leeds Front EndSimon Owen - Healthy Front-end Workflow - Leeds Front End
Simon Owen - Healthy Front-end Workflow - Leeds Front End
 
Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014
 
Technology, Project, and People
Technology, Project, and PeopleTechnology, Project, and People
Technology, Project, and People
 
6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend
 
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
“Don’t Repeat Yourself”: 4 Process Street Features to Keep Work DRY
 
Becoming a more productive Rails Developer
Becoming a more productive Rails DeveloperBecoming a more productive Rails Developer
Becoming a more productive Rails Developer
 
10 things you should know before learning ruby or rails
10 things you should know before learning ruby or rails10 things you should know before learning ruby or rails
10 things you should know before learning ruby or rails
 
D3.js mindblow
D3.js mindblowD3.js mindblow
D3.js mindblow
 

Más de Lori Olson

Core Data in RubyMotion #inspect
Core Data in RubyMotion #inspectCore Data in RubyMotion #inspect
Core Data in RubyMotion #inspectLori Olson
 
Core Data in Motion
Core Data in MotionCore Data in Motion
Core Data in MotionLori Olson
 
RubyMotion Introduction
RubyMotion IntroductionRubyMotion Introduction
RubyMotion IntroductionLori Olson
 
Maps and Scale
Maps and ScaleMaps and Scale
Maps and ScaleLori Olson
 
Powerful UX, not just for desktops anymore
Powerful UX, not just for desktops anymorePowerful UX, not just for desktops anymore
Powerful UX, not just for desktops anymoreLori Olson
 

Más de Lori Olson (7)

Core Data in RubyMotion #inspect
Core Data in RubyMotion #inspectCore Data in RubyMotion #inspect
Core Data in RubyMotion #inspect
 
Core Data in Motion
Core Data in MotionCore Data in Motion
Core Data in Motion
 
RubyMotion Introduction
RubyMotion IntroductionRubyMotion Introduction
RubyMotion Introduction
 
Mobile rage
Mobile rageMobile rage
Mobile rage
 
Rails 3.1
Rails 3.1Rails 3.1
Rails 3.1
 
Maps and Scale
Maps and ScaleMaps and Scale
Maps and Scale
 
Powerful UX, not just for desktops anymore
Powerful UX, not just for desktops anymorePowerful UX, not just for desktops anymore
Powerful UX, not just for desktops anymore
 

Último

Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profileakrivarotava
 

Último (20)

Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profile
 

Do The Work

  • 1. DOTHE WORK Scottish Ruby Conference 2014 Lori Olson
  • 2. LORI OLSON • lori@wndx.com • www.wndx.com • @wndxlori • Freelance developer, mentor, trainer • CANADA!
  • 3. KUDOS Changing the world, oneThankYou at a time! kudosnow.com
  • 5. TELLYOU A STORY I’m going to tell you a story.
  • 7. DOWNTHE RABBIT HOLE About just how far down the rabbit hole you can go…
  • 8. INSTEAD OF DOINGTHE WORK when, instead of doing the work
  • 9. FALL INTOTHETRAP OF AVOIDINGTHE WORK you fall into the trap of avoiding the work, looking for the easy way out.
  • 11. WRITE A RUBYMOTION APP As a side project, to learn more about RubyMotion and iOS Development
  • 12. WIMBY Wells In My BackYard So I picked WIMBY, or Wells in My Back Yard. That’s a play on NIMBY, or Not In My Back Yard. ! You might call that a garden….
  • 13. CALMAR,ALBERTA, CANADA • "According to the records, they believed that somewhere in that vicinity was a well site," recalled Ms. Beaudry, 45, a mother of two.They guessed right. In her backyard, a metre from her house, crews found a broken, leaking, 50-year-old natural gas well.
  • 14. BUT WHY? HOW? How is it even possible for people to not know they have an abandoned well on their property? ! Once the wells were abandoned, Imperial/Texaco Canada surrendered the lease back to the landowner and consequently no longer had an interest in the lands. Caveats were later removed from the land titles because there was no regulatory requirement that provided for registration of well locations on land titles once activity had ceased.
  • 15. WELLS ABANDONED IMPROPERLY It was only in the mid 60’s that rules and regulations acquired some teeth, and wells had to be abandoned according to well-established, well-regulated procedures.
  • 16. HOMESTORN DOWN • The re-abandonment of the 1-36 wellbore required the acquisition and removal of five Evergreen Crescent properties to accommodate the safe operation of a drilling rig. A quote from the Imperial Oil website, w.r.t. the Calmar incident.
  • 17. I MUST DO SOMETHING So, having encounter this story, I felt I must do something. But what?
  • 18. DATA. GOTTHAT In fact, I spent the better part of 7 years immersed in the Oil & Gas data used by most of the Canadian oil industry, and provided by 2 of the biggest data vendors in the business.
  • 19. LOADS OF DATA There are over 750,000 oil and gas wells in Canada, and of those, over 244,000 are abandoned.
  • 20. THATS A LOT OF WELLS to keep track of
  • 21. FOR AN IOS APP THATS A LOT OF DATA
  • 22. YOU SHOULD USE CORE DATA All of my research let me to the conclusion that I needed to use Core Data.
  • 23. CORE DATA in RubyMotion And there-in lies the problem. Not just using Core Data, where there are books and tutorials galore, but using it in RubyMotion, not so much.
  • 24. I BETTHERE’S A GEM FORTHAT Isn’t there always?
  • 25. –@topfunky @charliesomeYou must be new to Ruby. We write 16 different independent gems for everything here. ;-)
  • 26. SO MANY GEMS • motion-sqlite • Nitreon • Magical Record • Superbox • Motiondata • MotionModel • CDQ Why yes, in fact, there are a lot of gems. And where there are many options there are so many opportunities to become lost in analysis paralysis.
  • 32. LIST
  • 33. MAP
  • 34. PARTTIME But I was only doing this little project on the side. Part time. Evenings & weekends.
  • 35. RESEARCH a.k.a.Yak Shaving And so it went. I researched, and I researched some more. And then so more. And so it went.
  • 36. NOTHING WORKS Eventually, I came to a CONCLUSION. Nothing works. At least, not for the specific requirements that my application had.
  • 37. –@scottdavis99 Young C is expending an extraordinary amount of energy finding shortcuts rather than just doing the work. Future #convict or #programmer? I saw this and thought… this is me. Instead of just buckling down, and doing the work of figuring out Core Data for myself, I wasted all that time trying to use other people’s code that was not suited to my core requirements.
  • 39. DIDN'T UNDERSTAND THE GEMS And because I didn’t know enough about Core Data, I didn’t really understand how the gems worked
  • 40. COULDN'T MODIFY THE GEMS And because I didn’t understand how they worked, I couldn’t really modify them easily, either.
  • 41. THE IRONY I tried to use gems as a shortcut, only to end up wasting more time than just DOING THE WORK.
  • 42. –@bketelsen spent 6 hours researching a way to do it the easy way, when I could have written it in 3, the hard way. Yup, I resembled this guy too. I wasted 3 weeks of part time efforts, digging into all those gems, so I wouldn’t have to learn Core Data for myself.
  • 43. DOTHE WORK back to the basics So, after all that, I needed to go back, and actually spend time figuring out Core Data in RubyMotion for myself.
  • 44. LEARNTHE SDK Because RubyMotion, for all it lets you code in Ruby, does not relieve you of the need to learn the Apple iOS SDK’s.
  • 45. READTHE API And what does that mean? Learn the SDK. It meant going back, and actually reading the Apple documentation for Core Data.
  • 46. READTHE EXAMPLES It meant downloading and reading the example code that comes with the API documentation.
  • 47. FIND MORE EXAMPLES It meant finding some Objective C posts about using Core Data (on Ray Wenderlich’s fab site).
  • 48. IMPLEMENT SAMPLE SOLUTIONS and using those examples, walking thru them, and translating them into RubyMotion.
  • 49. HARD PROBLEMS ARE HARD Along the way I (re)discovered… hard problems are hard. Most of my requirements turned out to be fairly challenging problems, in and of themselves. Most gems are make tedious things simple. But they don’t really tackle the hard problems.
  • 50. @SERIOUSPONY On expertise and just how deep the rabbit hole goes Most of the gems stop at the “Turns out it’s quite simple”. ! Most of my requirements drove me all the way into “OMG complex!” ! * https://twitter.com/seriouspony/status/419887010388537344/photo/1
  • 51. Turns out, I was sort of glad that none of those gems worked for me. I learned SO MUCH.
  • 52. I KNOW! I’LL WRITE A BOOK NOW! So much in fact, that I ended up with enough material to write a whole book on the subject of Core Data in Ruby Motion.
  • 53. DOINGTHE WORK The moral of this long and involved tale that is somewhat embarrassing and somewhat uplifting is that when the problem you are attempting to solve is core to your application, sometimes what you need to do is just sit down, and do the work.
  • 54. PERILS What are the perils involved in avoiding “Doing the work”?
  • 55. EXPERT BEGINNER How Developers Stop Learning: Rise of the Expert Beginner This is where you learn just enough to think you are proficient, but really, you never get to be an expert at anything. Lots of developers fall into this trap. We need to dig a little deeper, avoid the easy solutions, and do the work. ! http://www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner
  • 56. @SERIOUSPONY On expertise and just how deep the rabbit hole goes The expert beginner gets stuck in that trough, and never realizes there is more to learn ! * https://twitter.com/seriouspony/status/419887010388537344/photo/1
  • 57. ADVANTAGES What are the advantages of doing the work?
  • 58. LEARNING IS ITS OWN REWARD Ok, sure it’s a cliche, but that doesn’t make it less true. There is deep satisfaction in deep diving into learning, and becoming truly expert in something.
  • 59. BELONG BY DOING This is a great quote. I wish I could track down where it came from. ! Do the work.
  • 60. CORE DATA IN MOTION http://coredatainmotion.com And of course, maybe you too, will some day discover that you have learned enough about a difficult topic that you have enough material at your fingertips to write a book.