SlideShare a Scribd company logo
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Be a library developer!
Remember than Imagine
Kouhei Sutou
ClearCode Inc.
2013/06/01
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Table of contents
Share this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Share the goal
Share this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
This talk's goal
You know
how to develop better softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Better?
Show
by example
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API
context.save
context.circle(50, 50, 10)
context.stroke
context.restore
from cairo gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Point
context.save # <- Point
context.circle(50, 50, 10)
context.stroke
context.restore # <- Point
from cairo gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Better
context.save do
context.circle(50, 50, 10)
context.stroke
end
from cairo gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Why
Why is it better?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Because
Because it's
more Ruby-ish
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Ruby-ish?
-ish ==
Similar to others
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Is "similar" better?
Similarity makes consistency✓
Consistency makes readability✓
Readability is important to
develop better softwares
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Is "readability" important?
Readability makes
maintenability
✓
Maintenability is needed for
improving your softwares
repeatedly
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
So
Ruby-ish is
better
Let's validate
the example
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember
File
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember: File
# Setup
file = File.open(path)
file.read
# Teardown
file.close
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember: File
# Setup
File.open(path) do |file|
file.read
end # Teardown
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API (reprise)
context.save # Setup
context.circle(50, 50, 10)
context.stroke
context.restore # Teardown
from cairo gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Better (reprise)
context.save do # Setup
context.circle(50, 50, 10)
context.stroke
end # Teardown
from cairo gem
Wrap up
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Better
Ruby-ish
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
In other words
Similar to others
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
The goal (reprise)
You know
how to develop better softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
In other words
You know
what is "similar"
and do similarly
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Describe key idea
Share this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Key idea
Remember
than
Imagine
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember than Imagine
Knowledge
Remember
???
Imagine
Easy! Di�cult...
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
To remember,
Remember
???
Imagine
Easy! Di�cult...
How to get?
Knowledge
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
How to get knowledge?
Experience✓
Ask✓
Observe✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Experience!
Experience ← Do this �rst!✓
Ask✓
Observe✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Key idea
Remember
than
Imagine
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Apply the key idea
Share this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
The goal (reprise)
You know
how to develop better softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Apply the key idea
Knowledge
Remember
Better
softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
To achieve the goal,
What should
you experience?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
What experience?
Knowledge
Remember
Better
softwares
Knowledge
What experience?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Rubyist
Knowledge
Remember
Better
softwares
Knowledge
Rubyist experience!
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Rubyist?
You
experienced!
Try
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Getter
window.get_property("opacity")
# What is better API???
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Getter (better)
window.get_property("opacity")
window.opacity # Better
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Now,
You found
"remember" is
"di�cult"
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Di�cult!
Remember!?
What is
"Ruby-ish"!?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Di�cult?
Knowledge
Remember
???
Imagine
Di�cult...Easy!
Di�cult???
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Because
You don't have
experience about
"Remember than
Imagine"
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
No "remember" experience
Better
softwares
Knowledge
Rubyist experience!
Remember
No experience
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Your status
Experience✓
Ask (Heard) ← You are here!✓
Observe✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
To achieve the goal,
What should
you experience?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
What experience?
Better
softwares
Knowledge
Rubyist experience!
Remember
What experience?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Library developer
Better
softwares
Knowledge
Rubyist experience!
Remember
Library developer
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Library developer
Considers about
easy to use API
as a Rubyist✓
✓
easy to understand document
as a library user✓
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Library developer
Considers them
many times
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
"Many times"
It's very good
exercise
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Exercises
API✓
Document✓
API
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Getter (reprise)
# Low level
window.get_property("opacity")
# Better
window.opacity
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Better?
# Low level
window.get_property("visible")
# Better
# ???: hint: "visible" is bool
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Better
# Low level
window.get_property("visible")
# Better
window.visible?
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Getter
# Better for record as collection
record["name"]
# Better for record as object
record.name
from rroonga gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Init
require "gst"
# ???
Gst.init # <- What?
Gst::ElementFactory.make("playbin")
from gstreamer gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Init (usage)
require "gst"
# For advanced use
Gst.init("--gst-debug=*:9")
Gst::ElementFactory.make("playbin")
from gstreamer gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Init (better)
require "gst"
# Make optional
# Gst.init
Gst::ElementFactory.make("playbin")
from gstreamer gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Init (impl)
class << Gst
def const_missing(name)
init; const_get(name); end
def init(*argv)
# ...initialize library...
class << self
remove_method(:const_missing)
end; end; end
from gstreamer gem
Document
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Document: Install
Install:
For Debian GNU/Linux:
% sudo apt-get install libgtk2.0-dev
% gem install gtk2
For OS X:
...
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Document: Better
Install:
% gem install gtk2
libgtk2-0-dev is installed automatically
"gem install GEM_NAME" is popular install way
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Exercises end
We remembered about
"what is similar?"
✓
We done "similarly"✓
Do you understand
about
"Remember than
Imagine"?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Wrap up
Share this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
This talk's goal
You know
how to develop better softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Better
Ruby-ish
Similar to others
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Goal: In other words
You know
what is "similar"
and do similarly
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Key idea
Remember
than
Imagine
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember than Imagine
Knowledge
Remember
???
Imagine
Easy! Di�cult...
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
For development
Experience Rubyist for
knowledge
✓
Then remember the knowledge
But it is di�cult because you don't
have experience about "remember"
✓
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
No "remember" experience
Better
softwares
Knowledge
Rubyist experience!
Remember
No experience
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Experience lib developer
It's very good
exercise
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
The next step
Share this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
The next step
Use "library developer"
experience to other
things
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
For example,
Use it to
develop other
softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Develop other softwares
You can remember about
a better bug report
How to reproduce?✓
✓
a better patch
How to commit? (size? message?)✓
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Conclusion
Be a library
developer!
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
FYI
We accept applications about
our internship
You can develop a library with us✓
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Bonus tracks
Similar vs. Innovation✓
No "imagine" communication✓
Similar
vs.
Innovation
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Innovation
Doing "similarly" will not
achieve "innovation"
✓
Should all we aspire
innovation?
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
No
We have regular life✓
It's also important that
we improve our regular life
✓
No
"imagine"
communication
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
No "imagine"
Show all u need from the start
Don't omit anything✓
If you emit something,
other people need "imagine"
✓
✓
Use your experience for it!✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Key idea
Remember
than
Imagine

More Related Content

Viewers also liked

リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有
リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有
リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有
Kouhei Sutou
 
SEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめSEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめ
Kouhei Sutou
 
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえりSEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
Kouhei Sutou
 
開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?
Kouhei Sutou
 
Three Ruby usages
Three Ruby usagesThree Ruby usages
Three Ruby usages
Kouhei Sutou
 
初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報
Kouhei Sutou
 
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
Kouhei Sutou
 
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
Kouhei Sutou
 
Mroonga最新情報2016
Mroonga最新情報2016Mroonga最新情報2016
Mroonga最新情報2016
Kouhei Sutou
 
OSS Gateワークショップ(チュートリアル) - OSS開発手順
OSS Gateワークショップ(チュートリアル) - OSS開発手順OSS Gateワークショップ(チュートリアル) - OSS開発手順
OSS Gateワークショップ(チュートリアル) - OSS開発手順
Kouhei Sutou
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
Kouhei Sutou
 

Viewers also liked (11)

リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有
リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有
リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有
 
SEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめSEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめ
 
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえりSEゼミ2015 - リーダブルコード勉強会のグループふりかえり
SEゼミ2015 - リーダブルコード勉強会のグループふりかえり
 
開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?
 
Three Ruby usages
Three Ruby usagesThree Ruby usages
Three Ruby usages
 
初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報
 
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
 
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
 
Mroonga最新情報2016
Mroonga最新情報2016Mroonga最新情報2016
Mroonga最新情報2016
 
OSS Gateワークショップ(チュートリアル) - OSS開発手順
OSS Gateワークショップ(チュートリアル) - OSS開発手順OSS Gateワークショップ(チュートリアル) - OSS開発手順
OSS Gateワークショップ(チュートリアル) - OSS開発手順
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
 

Similar to Be a library developer!

Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
Ken Collins
 
Running an Open-Source CodeIgniter project
Running an Open-Source CodeIgniter projectRunning an Open-Source CodeIgniter project
Running an Open-Source CodeIgniter project
Phil Sturgeon
 
CICON2010: Phil Sturgeon - Running an Open-Source CodeIgniter project
CICON2010: Phil Sturgeon - Running an Open-Source CodeIgniter projectCICON2010: Phil Sturgeon - Running an Open-Source CodeIgniter project
CICON2010: Phil Sturgeon - Running an Open-Source CodeIgniter project
CodeIgniter Conference
 
Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)
W2O Group
 
Heroku + Jeweler & Gemcutter
Heroku + Jeweler & GemcutterHeroku + Jeweler & Gemcutter
Heroku + Jeweler & Gemcutter
Ariejan de Vroom
 
WordPress Security Blitz
WordPress Security BlitzWordPress Security Blitz
Games for the Masses (Jax)
Games for the Masses (Jax)Games for the Masses (Jax)
Games for the Masses (Jax)
Wooga
 
Know your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvmKnow your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvm
Pawel Szulc
 
Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]
Rafael Dohms
 
Composer the right way
Composer the right wayComposer the right way
Composer the right way
Rafael Dohms
 
Deep Learning with Spark
Deep Learning with SparkDeep Learning with Spark
Deep Learning with Spark
Anastasia Bobyreva
 
Codebits Handivi
Codebits HandiviCodebits Handivi
Codebits Handivi
cfpinto
 
Libraries Frameworks And Cms
Libraries Frameworks And CmsLibraries Frameworks And Cms
Libraries Frameworks And Cms
Mark Casias
 
Python overview
Python overviewPython overview
Python overview
Haroon Karim
 
Ruby - The Hard Bits
Ruby - The Hard BitsRuby - The Hard Bits
Ruby - The Hard Bits
Paul Gallagher
 
Yahoo! Developer Networks ♥ Startups
Yahoo! Developer Networks ♥ StartupsYahoo! Developer Networks ♥ Startups
Yahoo! Developer Networks ♥ Startups
Tom Croucher
 
A quick overview of why to use and how to set up iPython notebooks for research
A quick overview of why to use and how to set up iPython notebooks for researchA quick overview of why to use and how to set up iPython notebooks for research
A quick overview of why to use and how to set up iPython notebooks for research
Adam Pah
 
Ninja Git: Save Your Master
Ninja Git: Save Your MasterNinja Git: Save Your Master
Ninja Git: Save Your Master
Nicola Paolucci
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
Kris Buytaert
 
Puppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 EditionPuppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 Edition
Joshua Thijssen
 

Similar to Be a library developer! (20)

Free The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own DomainFree The Enterprise With Ruby & Master Your Own Domain
Free The Enterprise With Ruby & Master Your Own Domain
 
Running an Open-Source CodeIgniter project
Running an Open-Source CodeIgniter projectRunning an Open-Source CodeIgniter project
Running an Open-Source CodeIgniter project
 
CICON2010: Phil Sturgeon - Running an Open-Source CodeIgniter project
CICON2010: Phil Sturgeon - Running an Open-Source CodeIgniter projectCICON2010: Phil Sturgeon - Running an Open-Source CodeIgniter project
CICON2010: Phil Sturgeon - Running an Open-Source CodeIgniter project
 
Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)
 
Heroku + Jeweler & Gemcutter
Heroku + Jeweler & GemcutterHeroku + Jeweler & Gemcutter
Heroku + Jeweler & Gemcutter
 
WordPress Security Blitz
WordPress Security BlitzWordPress Security Blitz
WordPress Security Blitz
 
Games for the Masses (Jax)
Games for the Masses (Jax)Games for the Masses (Jax)
Games for the Masses (Jax)
 
Know your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvmKnow your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvm
 
Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]
 
Composer the right way
Composer the right wayComposer the right way
Composer the right way
 
Deep Learning with Spark
Deep Learning with SparkDeep Learning with Spark
Deep Learning with Spark
 
Codebits Handivi
Codebits HandiviCodebits Handivi
Codebits Handivi
 
Libraries Frameworks And Cms
Libraries Frameworks And CmsLibraries Frameworks And Cms
Libraries Frameworks And Cms
 
Python overview
Python overviewPython overview
Python overview
 
Ruby - The Hard Bits
Ruby - The Hard BitsRuby - The Hard Bits
Ruby - The Hard Bits
 
Yahoo! Developer Networks ♥ Startups
Yahoo! Developer Networks ♥ StartupsYahoo! Developer Networks ♥ Startups
Yahoo! Developer Networks ♥ Startups
 
A quick overview of why to use and how to set up iPython notebooks for research
A quick overview of why to use and how to set up iPython notebooks for researchA quick overview of why to use and how to set up iPython notebooks for research
A quick overview of why to use and how to set up iPython notebooks for research
 
Ninja Git: Save Your Master
Ninja Git: Save Your MasterNinja Git: Save Your Master
Ninja Git: Save Your Master
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
 
Puppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 EditionPuppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 Edition
 

More from Kouhei Sutou

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
Kouhei Sutou
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Kouhei Sutou
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
Kouhei Sutou
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
Kouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
Kouhei Sutou
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Kouhei Sutou
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
Kouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
Kouhei Sutou
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
Kouhei Sutou
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
Kouhei Sutou
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
Kouhei Sutou
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
Kouhei Sutou
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
Kouhei Sutou
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
Kouhei Sutou
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
Kouhei Sutou
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
Kouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Kouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
Kouhei Sutou
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
Kouhei Sutou
 

More from Kouhei Sutou (20)

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 

Recently uploaded

June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
marufrahmanstratejm
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
saastr
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 

Recently uploaded (20)

June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
9 CEO's who hit $100m ARR Share Their Top Growth Tactics Nathan Latka, Founde...
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 

Be a library developer!

  • 1. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Be a library developer! Remember than Imagine Kouhei Sutou ClearCode Inc. 2013/06/01
  • 2. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Table of contents Share this talk's goal✓ Describe key idea✓ Apply the key idea✓ Wrap up & The next step✓
  • 3. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Share the goal Share this talk's goal✓ Describe key idea✓ Apply the key idea✓ Wrap up & The next step✓
  • 4. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 This talk's goal You know how to develop better softwares
  • 5. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Better? Show by example
  • 6. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API context.save context.circle(50, 50, 10) context.stroke context.restore from cairo gem
  • 7. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Point context.save # <- Point context.circle(50, 50, 10) context.stroke context.restore # <- Point from cairo gem
  • 8. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Better context.save do context.circle(50, 50, 10) context.stroke end from cairo gem
  • 9. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Why Why is it better?
  • 10. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Because Because it's more Ruby-ish
  • 11. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Ruby-ish? -ish == Similar to others
  • 12. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Is "similar" better? Similarity makes consistency✓ Consistency makes readability✓ Readability is important to develop better softwares ✓
  • 13. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Is "readability" important? Readability makes maintenability ✓ Maintenability is needed for improving your softwares repeatedly ✓
  • 14. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 So Ruby-ish is better
  • 16. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Remember File
  • 17. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Remember: File # Setup file = File.open(path) file.read # Teardown file.close
  • 18. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Remember: File # Setup File.open(path) do |file| file.read end # Teardown
  • 19. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API (reprise) context.save # Setup context.circle(50, 50, 10) context.stroke context.restore # Teardown from cairo gem
  • 20. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Better (reprise) context.save do # Setup context.circle(50, 50, 10) context.stroke end # Teardown from cairo gem
  • 22. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Better Ruby-ish
  • 23. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 In other words Similar to others
  • 24. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 The goal (reprise) You know how to develop better softwares
  • 25. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 In other words You know what is "similar" and do similarly
  • 26. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Describe key idea Share this talk's goal✓ Describe key idea✓ Apply the key idea✓ Wrap up & The next step✓
  • 27. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Key idea Remember than Imagine
  • 28. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Remember than Imagine Knowledge Remember ??? Imagine Easy! Di�cult...
  • 29. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 To remember, Remember ??? Imagine Easy! Di�cult... How to get? Knowledge
  • 30. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 How to get knowledge? Experience✓ Ask✓ Observe✓
  • 31. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Experience! Experience ← Do this �rst!✓ Ask✓ Observe✓
  • 32. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Key idea Remember than Imagine
  • 33. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Apply the key idea Share this talk's goal✓ Describe key idea✓ Apply the key idea✓ Wrap up & The next step✓
  • 34. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 The goal (reprise) You know how to develop better softwares
  • 35. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Apply the key idea Knowledge Remember Better softwares
  • 36. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 To achieve the goal, What should you experience?
  • 37. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 What experience? Knowledge Remember Better softwares Knowledge What experience?
  • 38. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Rubyist Knowledge Remember Better softwares Knowledge Rubyist experience!
  • 39. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Rubyist? You experienced!
  • 40. Try
  • 41. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Getter window.get_property("opacity") # What is better API??? from gtk2 gem
  • 42. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Getter (better) window.get_property("opacity") window.opacity # Better from gtk2 gem
  • 43. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Now, You found "remember" is "di�cult"
  • 44. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Di�cult! Remember!? What is "Ruby-ish"!?
  • 45. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Di�cult? Knowledge Remember ??? Imagine Di�cult...Easy! Di�cult???
  • 46. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Because You don't have experience about "Remember than Imagine"
  • 47. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 No "remember" experience Better softwares Knowledge Rubyist experience! Remember No experience
  • 48. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Your status Experience✓ Ask (Heard) ← You are here!✓ Observe✓
  • 49. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 To achieve the goal, What should you experience?
  • 50. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 What experience? Better softwares Knowledge Rubyist experience! Remember What experience?
  • 51. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Library developer Better softwares Knowledge Rubyist experience! Remember Library developer
  • 52. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Library developer Considers about easy to use API as a Rubyist✓ ✓ easy to understand document as a library user✓ ✓
  • 53. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Library developer Considers them many times
  • 54. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 "Many times" It's very good exercise
  • 55. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Exercises API✓ Document✓
  • 56. API
  • 57. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Getter (reprise) # Low level window.get_property("opacity") # Better window.opacity from gtk2 gem
  • 58. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Better? # Low level window.get_property("visible") # Better # ???: hint: "visible" is bool from gtk2 gem
  • 59. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Better # Low level window.get_property("visible") # Better window.visible? from gtk2 gem
  • 60. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Getter # Better for record as collection record["name"] # Better for record as object record.name from rroonga gem
  • 61. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Init require "gst" # ??? Gst.init # <- What? Gst::ElementFactory.make("playbin") from gstreamer gem
  • 62. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Init (usage) require "gst" # For advanced use Gst.init("--gst-debug=*:9") Gst::ElementFactory.make("playbin") from gstreamer gem
  • 63. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Init (better) require "gst" # Make optional # Gst.init Gst::ElementFactory.make("playbin") from gstreamer gem
  • 64. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 API: Init (impl) class << Gst def const_missing(name) init; const_get(name); end def init(*argv) # ...initialize library... class << self remove_method(:const_missing) end; end; end from gstreamer gem
  • 66. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Document: Install Install: For Debian GNU/Linux: % sudo apt-get install libgtk2.0-dev % gem install gtk2 For OS X: ...
  • 67. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Document: Better Install: % gem install gtk2 libgtk2-0-dev is installed automatically "gem install GEM_NAME" is popular install way
  • 68. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Exercises end We remembered about "what is similar?" ✓ We done "similarly"✓
  • 70. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Wrap up Share this talk's goal✓ Describe key idea✓ Apply the key idea✓ Wrap up & The next step✓
  • 71. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 This talk's goal You know how to develop better softwares
  • 72. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Better Ruby-ish Similar to others
  • 73. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Goal: In other words You know what is "similar" and do similarly
  • 74. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Key idea Remember than Imagine
  • 75. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Remember than Imagine Knowledge Remember ??? Imagine Easy! Di�cult...
  • 76. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 For development Experience Rubyist for knowledge ✓ Then remember the knowledge But it is di�cult because you don't have experience about "remember" ✓ ✓
  • 77. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 No "remember" experience Better softwares Knowledge Rubyist experience! Remember No experience
  • 78. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Experience lib developer It's very good exercise
  • 79. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 The next step Share this talk's goal✓ Describe key idea✓ Apply the key idea✓ Wrap up & The next step✓
  • 80. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 The next step Use "library developer" experience to other things
  • 81. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 For example, Use it to develop other softwares
  • 82. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Develop other softwares You can remember about a better bug report How to reproduce?✓ ✓ a better patch How to commit? (size? message?)✓ ✓
  • 83. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Conclusion Be a library developer!
  • 84. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 FYI We accept applications about our internship You can develop a library with us✓ ✓
  • 85. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Bonus tracks Similar vs. Innovation✓ No "imagine" communication✓
  • 87. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Innovation Doing "similarly" will not achieve "innovation" ✓ Should all we aspire innovation? ✓
  • 88. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 No We have regular life✓ It's also important that we improve our regular life ✓
  • 90. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 No "imagine" Show all u need from the start Don't omit anything✓ If you emit something, other people need "imagine" ✓ ✓ Use your experience for it!✓
  • 91. Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8 Key idea Remember than Imagine