SlideShare a Scribd company logo
1 of 91
Download to read offline
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
 
初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報Kouhei Sutou
 
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こう
名著『リーダブルコード - より良いコードを書くためのシンプルで実践的なテクニック』を解説者と一緒に読み解こうKouhei Sutou
 
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくする
名著『リーダブルコード』を解説者と一緒に読み解こう - 7章 制御フローを読みやすくするKouhei Sutou
 
Mroonga最新情報2016
Mroonga最新情報2016Mroonga最新情報2016
Mroonga最新情報2016Kouhei 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 DomainKen Collins
 
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 projectCodeIgniter Conference
 
Running an Open-Source CodeIgniter project
Running an Open-Source CodeIgniter projectRunning an Open-Source CodeIgniter project
Running an Open-Source CodeIgniter projectPhil Sturgeon
 
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 & GemcutterAriejan de Vroom
 
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 jvmPawel 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 wayRafael Dohms
 
Codebits Handivi
Codebits HandiviCodebits Handivi
Codebits Handivicfpinto
 
Libraries Frameworks And Cms
Libraries Frameworks And CmsLibraries Frameworks And Cms
Libraries Frameworks And CmsMark Casias
 
Yahoo! Developer Networks ♥ Startups
Yahoo! Developer Networks ♥ StartupsYahoo! Developer Networks ♥ Startups
Yahoo! Developer Networks ♥ StartupsTom 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 researchAdam Pah
 
Ninja Git: Save Your Master
Ninja Git: Save Your MasterNinja Git: Save Your Master
Ninja Git: Save Your MasterNicola Paolucci
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as CodeKris Buytaert
 
Puppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 EditionPuppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 EditionJoshua 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
 
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
 
Running an Open-Source CodeIgniter project
Running an Open-Source CodeIgniter projectRunning an Open-Source CodeIgniter project
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 ArrowKouhei Sutou
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei 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 ArrowKouhei 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 dataKouhei 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 dataKouhei 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.6Kouhei Sutou
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache 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でMroongaKouhei 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

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 

Recently uploaded (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 

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