SlideShare a Scribd company logo
1 of 124
Download to read offline
Getting Merged
All about social coding
Yo-An Lin
@c9s
Pull Request,
What's that? 什麼碗糕
The	
  old	
  school	
  open	
  source	
  
collaboration
以往的開源協作
...	
  are	
  done	
  by	
  patches	
  and	
  mailing	
  lists.
是靠 patch + mailing list 完
成的
sometimes	
  you	
  can	
  only	
  contact	
  the	
  
maintainer	
  with	
  an	
  e-­‐mail...
有時候你甚⾄至只有 e-mail
⼀一鍵寄出,⾳音訊全無
You	
  have	
  to	
  poke
戳戳樂,如果你很愛玩的話
無⽌止境合併衝突
The	
  new	
  age	
  of	
  open	
  source	
  
collaboration
新時代的開源協作
..	
  are	
  done	
  by	
  pull	
  requests
是靠 Pull Request 來完成的
Introduced by GitHub in 2008/2009
It	
  combines	
  review,	
  merge,	
  and	
  social
集檢閱, 合併, 社交於⼀一⾝身
One Click
Merge
It	
  reduces	
  the	
  cost	
  of	
  communication	
  &	
  
efforts
減少以往的溝通成本
How does it
work?
Pull Request
如何運作?
For what
reason? 發什麼 PR
"I	
  am	
  doing	
  +ine!	
  why	
  do	
  I	
  have	
  to	
  send	
  
the	
  PRs?!"
我好好的,發什麼 PR ?
http://wowquote.tw/quote/371
If	
  you	
  want	
  to	
  enrich	
  your	
  CV
您的 CV 很無聊嗎?
Then	
  you	
  should	
  send	
  PRs
那就送 PR 吧!
Do	
  you	
  want	
  to	
  claim	
  that	
  you're	
  the	
  
contributor	
  of	
  XXX	
  project?
你想要聲稱是某專案的貢獻
者
Then	
  you	
  should	
  send	
  PRs
那就送 PR 吧!
Seriously,
認真的說,
Once	
  you	
  merged	
  the	
  changes	
  to	
  
upstream
⼀一旦可以合併本地修改到上
游
1.	
  Reduces	
  the	
  cost	
  of	
  maintenance
1. 減少維護成本
2.	
  Helps	
  you	
  update	
  bug	
  Nixes	
  from	
  
upstream	
  without	
  pain
2. 無痛接收新的 BugFix
3.	
  Helps	
  you	
  avoid	
  merge	
  conNlicts	
  for	
  
the	
  future
3. 避免未來的修改衝突
4.	
  The	
  document	
  will	
  be	
  maintained
4. 還有⼈人持續幫你維護⽂文件
有這麼好康還說什麼
Rejected 駁回
Your	
  PR	
  might	
  be	
  rejected	
  if	
  ...
你的 PR 有可能會遭到駁回,
如果...
It	
  doesn't	
  match	
  the	
  direction	
  of	
  
the	
  project
與專案進⾏行⽅方向有衝突
It's	
  out	
  of	
  scope
或者超出範圍
It	
  will	
  break	
  the	
  compatibility
A Real World Case:
遭到駁回
The scientific ways to send
pull requests
RFC First 提案與回饋
Ask	
  First,	
  Shoot	
  later
問清楚,再動⼿手
先射後補也會讓⼈人尷尬
Nobody is
somebody 沒有⼈人就是你
"This	
  project	
  is	
  too	
  large!	
  What	
  
can	
  I	
  do?"
Anything	
  can	
  be	
  included	
  in	
  a	
  pull	
  
request
Build	
  system,	
  Documentation,	
  
Coding	
  style,	
  Designs,	
  Icons...	
  etc
Don't	
  limit	
  yourself
Start small 從⼩小處著⼿手
Small	
  things	
  usually	
  would	
  get	
  
merged	
  easily
Spaces,	
  Wordings,	
  Typos,	
  Small	
  
Nixes...	
  etc
https://twitter.com/jserv/status/552725130690826240
"That letter [the last s] is sad because all the others
have those things [=] below them and it does not."
This patch fixes the tragedy so all the letters can be
happy again.
Read The
Contribution
Document
Big	
  projects	
  have	
  their	
  own	
  coding	
  
rules	
  and	
  contribution	
  rules,	
  you	
  
have	
  to	
  read	
  them	
  carefully.
If	
  you're	
  not	
  doing	
  it	
  right	
  on	
  the	
  
coding	
  style,	
  you're	
  wasting	
  your	
  
time	
  to	
  get	
  merged.
For	
  example,	
  the	
  golang	
  team	
  asks	
  
you	
  to	
  run	
  `go	
  fmt`	
  when	
  
everytime	
  you	
  submit	
  a	
  patch
http://django-oauth-toolkit.readthedocs.org/en/latest/contributing.html
Divide and
Conquer 分⽽而治之
When	
  you	
  want	
  to	
  do	
  something	
  
big
You	
  should	
  divide	
  it	
  into	
  small	
  
separated	
  pull	
  requests
Good	
  impression	
  helps	
  a	
  lot
這是⼀一個
"最熟悉的陌⽣生⼈人"
的概念
Detail matters 細節
Busy	
  people	
  are	
  usually	
  too	
  busy	
  
to	
  listen,	
  think	
  or	
  understand	
  ...
A	
  good	
  brief	
  helps	
  reviewer	
  
quickly	
  understand	
  the	
  changes
BugFix	
  PR	
  should	
  contain	
  a	
  failing	
  
test	
  case	
  and	
  the	
  way	
  to	
  
reproduce	
  the	
  problem.
To	
  proof	
  it's	
  author's	
  fault
Or..	
  to	
  prevent	
  things	
  like	
  this...
At	
  least	
  it	
  prevents	
  from	
  the	
  time-­‐
consuming	
  communication
PR For Feature
• Objective
• Summary
• Effect (Or side effect)
• Tests
Safety 安全
Maintainers	
  usually	
  worry	
  about	
  
breaking	
  backward	
  compatibility,	
  
build	
  system,	
  dependencies...	
  etc
It's	
  also	
  important	
  to	
  get	
  
continuous	
  testing	
  pass
When	
  adding	
  new	
  features,	
  good	
  
tests	
  also	
  help	
  author	
  to	
  verify	
  the	
  
changes
Write	
  down	
  the	
  side	
  effects	
  to	
  
show	
  your	
  careful	
  thoughts	
  to	
  the	
  
author
Just Ask 問就對了
Asia	
  people	
  usually	
  are	
  too	
  shy	
  to	
  
ask	
  
Sometimes	
  people	
  just	
  don't	
  write	
  
down	
  their	
  concern	
  on	
  GitHub
有時專案作者很少會寫下⾃自
⼰己的⼼心中顧慮的部分
When	
  you	
  don't	
  get	
  reply,	
  you	
  
should	
  ask
"If	
  you	
  have	
  any	
  concern,	
  please	
  
let	
  me	
  know"	
  also	
  ping	
  them	
  back	
  
to	
  reply
Timezone
matters 時區有差
Human	
  beings	
  usually	
  check	
  their	
  
e-­‐mail	
  in	
  the	
  morning
For	
  company	
  sponsored	
  projects,	
  
people	
  usually	
  check	
  newly	
  
opened	
  issues	
  in	
  daylight.
For	
  just-­‐for-­‐fun	
  projects,	
  people	
  
usually	
  check	
  the	
  issues	
  in	
  night.
Some	
  non-­‐Asia	
  people	
  usually	
  
don't	
  check	
  e-­‐mail	
  or	
  work	
  on	
  
weekend
Don't	
  expect	
  their	
  e-­‐mail	
  on	
  the	
  
weekend
They	
  have	
  life!
And	
  for	
  Asia	
  
people,	
  you	
  can	
  
just	
  poke	
  around,	
  
they	
  will	
  reply	
  
you	
  all	
  day
San Francisco people get up at
01:00 AM Taipei Time (GMT+8)
And	
  they	
  get	
  off	
  work	
  at	
  10:00	
  
AM	
  Taipei	
  Time	
  (GMT+8)
People from London get up at 15:00
PM Taipei Time
They	
  are	
  having	
  their	
  lunch	
  while	
  
you're	
  having	
  dinner!
To	
  get	
  response	
  instantly
要得到快速回覆
You	
  should	
  send/reply	
  at	
  the	
  correct	
  
time
你應該在正確的時間點發信
And	
  you	
  shall	
  mostly	
  get	
  the	
  
response	
  quicker	
  then	
  you	
  
thought.
And	
  once	
  you	
  get	
  the	
  ping,	
  you	
  
have	
  to	
  pong	
  back	
  quickly
First	
  in,	
  First	
  out
Last	
  In,	
  Never	
  Out
Because	
  they've	
  got	
  off	
  work
The lines on this map show 12 cities’ typical working day, beginning with 9 AM on
the right and ending at 5 PM on the left, and each workday’s overlap with time
zones around the world. Each clock shows that city’s workday overlap with other
cities’ and the best time to schedule a call.
https://hbr.org/2010/10/vision-statement-why-mumbai-
at-1-pm-is-the-center-of-the-business-world
Timezone overlapping
World Clock app for multi-timezone
Countersign 連署
Votes	
  can	
  show	
  the	
  need	
  to	
  the	
  
author
Partnership 合作夥伴
By	
  being	
  reviewed	
  or	
  reviewing	
  
PRs	
  from	
  others	
  
you	
  will	
  know	
  good	
  people
Different	
  from	
  LinkedIn,
You	
  know	
  their	
  code	
  &	
  
personality
Negotiation 交涉
Screenshot
Rocks 有圖有真相
Screencast	
  even	
  better!
https://github.com/c9s/CLIFramework#automatic-zsh-completion-generator
LICEcap
https://github.com/lepht/licecap
Questions? 問題?
Getting merged

More Related Content

Viewers also liked

Globo.com - migração do player flash para html5
Globo.com  - migração do player flash para html5Globo.com  - migração do player flash para html5
Globo.com - migração do player flash para html5Leandro Moreira
 
LINQ の概要とかもろもろ
LINQ の概要とかもろもろLINQ の概要とかもろもろ
LINQ の概要とかもろもろShinichiAoyagi
 
“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~
“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~
“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~ShinichiAoyagi
 
WindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみるWindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみるShinichiAoyagi
 
Windows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみようWindows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみようShinichiAoyagi
 
Why to choose laravel framework
Why to choose laravel frameworkWhy to choose laravel framework
Why to choose laravel frameworkBo-Yi Wu
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web frameworkBo-Yi Wu
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQLKonstantin Gredeskoul
 
暗号通貨勉強会
暗号通貨勉強会暗号通貨勉強会
暗号通貨勉強会Kohei Ogawa
 
Atomic Design powered by React @ AbemaTV
Atomic Design powered by React @ AbemaTVAtomic Design powered by React @ AbemaTV
Atomic Design powered by React @ AbemaTVYusuke Goto
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点についてdcubeio
 
AWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management ConsoleAWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management ConsoleAmazon Web Services Japan
 
AWS Black Belt Tech シリーズ 2015 - AWS WAF
AWS Black Belt Tech シリーズ 2015 - AWS WAFAWS Black Belt Tech シリーズ 2015 - AWS WAF
AWS Black Belt Tech シリーズ 2015 - AWS WAFAmazon Web Services Japan
 
Introduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim SummitIntroduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim SummitRan Mizrahi
 
Intro to JavaScript Testing
Intro to JavaScript TestingIntro to JavaScript Testing
Intro to JavaScript TestingRan Mizrahi
 
Dependency Injection @ AngularJS
Dependency Injection @ AngularJSDependency Injection @ AngularJS
Dependency Injection @ AngularJSRan Mizrahi
 
Starting a Collaboration Revolution
Starting a Collaboration RevolutionStarting a Collaboration Revolution
Starting a Collaboration RevolutionSven Peters
 

Viewers also liked (20)

Globo.com - migração do player flash para html5
Globo.com  - migração do player flash para html5Globo.com  - migração do player flash para html5
Globo.com - migração do player flash para html5
 
XAML 入門
XAML 入門XAML 入門
XAML 入門
 
LINQ の概要とかもろもろ
LINQ の概要とかもろもろLINQ の概要とかもろもろ
LINQ の概要とかもろもろ
 
“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~
“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~
“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~
 
LINQ概要
LINQ概要LINQ概要
LINQ概要
 
WindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみるWindowsストアーアプリでSharpDXを動かしてみる
WindowsストアーアプリでSharpDXを動かしてみる
 
Windows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみようWindows ストアーアプリで SQLite を使ってみよう
Windows ストアーアプリで SQLite を使ってみよう
 
Why to choose laravel framework
Why to choose laravel frameworkWhy to choose laravel framework
Why to choose laravel framework
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web framework
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
暗号通貨勉強会
暗号通貨勉強会暗号通貨勉強会
暗号通貨勉強会
 
Atomic Design powered by React @ AbemaTV
Atomic Design powered by React @ AbemaTVAtomic Design powered by React @ AbemaTV
Atomic Design powered by React @ AbemaTV
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
 
AWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management ConsoleAWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management Console
 
AWS Black Belt Tech シリーズ 2015 - AWS WAF
AWS Black Belt Tech シリーズ 2015 - AWS WAFAWS Black Belt Tech シリーズ 2015 - AWS WAF
AWS Black Belt Tech シリーズ 2015 - AWS WAF
 
Introduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim SummitIntroduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim Summit
 
Intro to JavaScript Testing
Intro to JavaScript TestingIntro to JavaScript Testing
Intro to JavaScript Testing
 
Dependency Injection @ AngularJS
Dependency Injection @ AngularJSDependency Injection @ AngularJS
Dependency Injection @ AngularJS
 
AWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ Amazon VPCAWS Black Belt Techシリーズ Amazon VPC
AWS Black Belt Techシリーズ Amazon VPC
 
Starting a Collaboration Revolution
Starting a Collaboration RevolutionStarting a Collaboration Revolution
Starting a Collaboration Revolution
 

Similar to Getting merged

Levelling up in open source
Levelling up in open sourceLevelling up in open source
Levelling up in open sourceJon Spriggs
 
Avram ODonovan Blogtalk2008
Avram ODonovan Blogtalk2008Avram ODonovan Blogtalk2008
Avram ODonovan Blogtalk2008coniecto
 
How good is your software development team ?
How good is your software development team ?How good is your software development team ?
How good is your software development team ?Kinshuk Adhikary
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)David Benjamin
 
Pretotype it (first pretotype edition) - ProductCamp Nuremberg 2014
Pretotype it (first pretotype edition) - ProductCamp Nuremberg 2014Pretotype it (first pretotype edition) - ProductCamp Nuremberg 2014
Pretotype it (first pretotype edition) - ProductCamp Nuremberg 2014pcampger
 
Webinar - Design thinking 101 - 2018-07-24
Webinar - Design thinking 101 - 2018-07-24Webinar - Design thinking 101 - 2018-07-24
Webinar - Design thinking 101 - 2018-07-24TechSoup
 
Avram O Donovan Bannon Blogtalk 2008
Avram O Donovan Bannon Blogtalk 2008Avram O Donovan Bannon Blogtalk 2008
Avram O Donovan Bannon Blogtalk 2008Blogtalk 2008
 
10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programming10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programmingHugo Shi
 
How to Teach Yourself to Code
How to Teach Yourself to CodeHow to Teach Yourself to Code
How to Teach Yourself to CodeMattan Griffel
 
Open Collaboration and Peer Production: Technical Infrastructure and Communit...
Open Collaboration and Peer Production: Technical Infrastructure and Communit...Open Collaboration and Peer Production: Technical Infrastructure and Communit...
Open Collaboration and Peer Production: Technical Infrastructure and Communit...Sebastian Benthall
 
new srccon pres.pdf
new srccon pres.pdfnew srccon pres.pdf
new srccon pres.pdfDavis Shaver
 
CTO Crunch avec Julien Simon, Viadeo
CTO Crunch avec Julien Simon, ViadeoCTO Crunch avec Julien Simon, Viadeo
CTO Crunch avec Julien Simon, ViadeoFrance Digitale
 
Life in the tech trenches (2015)
Life in the tech trenches (2015)Life in the tech trenches (2015)
Life in the tech trenches (2015)Julien SIMON
 
Many to many: no man is an island
Many to many: no man is an islandMany to many: no man is an island
Many to many: no man is an islandJacopo Romei
 
Many to many: no man is an island
Many to many: no man is an islandMany to many: no man is an island
Many to many: no man is an islandJacopo Romei
 
TMA 2015 The Technical Mind
TMA 2015 The Technical MindTMA 2015 The Technical Mind
TMA 2015 The Technical MindSteve Levy
 
Reaching Peak Performance for Knowledge Workers
Reaching Peak Performance for Knowledge WorkersReaching Peak Performance for Knowledge Workers
Reaching Peak Performance for Knowledge WorkersRichard Thripp
 
DevOps Transition Strategies
DevOps Transition StrategiesDevOps Transition Strategies
DevOps Transition StrategiesAlec Lazarescu
 

Similar to Getting merged (20)

Levelling up in open source
Levelling up in open sourceLevelling up in open source
Levelling up in open source
 
Avram ODonovan Blogtalk2008
Avram ODonovan Blogtalk2008Avram ODonovan Blogtalk2008
Avram ODonovan Blogtalk2008
 
How good is your software development team ?
How good is your software development team ?How good is your software development team ?
How good is your software development team ?
 
Distributed cat herding
Distributed cat herdingDistributed cat herding
Distributed cat herding
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
 
Pretotype it (first pretotype edition) - ProductCamp Nuremberg 2014
Pretotype it (first pretotype edition) - ProductCamp Nuremberg 2014Pretotype it (first pretotype edition) - ProductCamp Nuremberg 2014
Pretotype it (first pretotype edition) - ProductCamp Nuremberg 2014
 
Webinar - Design thinking 101 - 2018-07-24
Webinar - Design thinking 101 - 2018-07-24Webinar - Design thinking 101 - 2018-07-24
Webinar - Design thinking 101 - 2018-07-24
 
Avram O Donovan Bannon Blogtalk 2008
Avram O Donovan Bannon Blogtalk 2008Avram O Donovan Bannon Blogtalk 2008
Avram O Donovan Bannon Blogtalk 2008
 
10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programming10 tips to save you time and frustration while programming
10 tips to save you time and frustration while programming
 
How to Teach Yourself to Code
How to Teach Yourself to CodeHow to Teach Yourself to Code
How to Teach Yourself to Code
 
Open Collaboration and Peer Production: Technical Infrastructure and Communit...
Open Collaboration and Peer Production: Technical Infrastructure and Communit...Open Collaboration and Peer Production: Technical Infrastructure and Communit...
Open Collaboration and Peer Production: Technical Infrastructure and Communit...
 
new srccon pres.pdf
new srccon pres.pdfnew srccon pres.pdf
new srccon pres.pdf
 
Finding the Center
Finding the CenterFinding the Center
Finding the Center
 
CTO Crunch avec Julien Simon, Viadeo
CTO Crunch avec Julien Simon, ViadeoCTO Crunch avec Julien Simon, Viadeo
CTO Crunch avec Julien Simon, Viadeo
 
Life in the tech trenches (2015)
Life in the tech trenches (2015)Life in the tech trenches (2015)
Life in the tech trenches (2015)
 
Many to many: no man is an island
Many to many: no man is an islandMany to many: no man is an island
Many to many: no man is an island
 
Many to many: no man is an island
Many to many: no man is an islandMany to many: no man is an island
Many to many: no man is an island
 
TMA 2015 The Technical Mind
TMA 2015 The Technical MindTMA 2015 The Technical Mind
TMA 2015 The Technical Mind
 
Reaching Peak Performance for Knowledge Workers
Reaching Peak Performance for Knowledge WorkersReaching Peak Performance for Knowledge Workers
Reaching Peak Performance for Knowledge Workers
 
DevOps Transition Strategies
DevOps Transition StrategiesDevOps Transition Strategies
DevOps Transition Strategies
 

More from Lin Yo-An

Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015Lin Yo-An
 
OSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP hatersOSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP hatersLin Yo-An
 
Happy Go Programming
Happy Go ProgrammingHappy Go Programming
Happy Go ProgrammingLin Yo-An
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1Lin Yo-An
 
Secret sauce of building php applications
Secret sauce of building php applicationsSecret sauce of building php applications
Secret sauce of building php applicationsLin Yo-An
 
LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLin Yo-An
 
Vim Script Programming
Vim Script ProgrammingVim Script Programming
Vim Script ProgrammingLin Yo-An
 
CPAN 模組二三事
CPAN 模組二三事CPAN 模組二三事
CPAN 模組二三事Lin Yo-An
 
Vim Hacks (OSSF)
Vim Hacks (OSSF)Vim Hacks (OSSF)
Vim Hacks (OSSF)Lin Yo-An
 
Perl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaLin Yo-An
 
Perl.Hacks.On.Vim
Perl.Hacks.On.VimPerl.Hacks.On.Vim
Perl.Hacks.On.VimLin Yo-An
 

More from Lin Yo-An (12)

Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015
 
OSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP hatersOSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP haters
 
Happy Go Programming
Happy Go ProgrammingHappy Go Programming
Happy Go Programming
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1
 
Secret sauce of building php applications
Secret sauce of building php applicationsSecret sauce of building php applications
Secret sauce of building php applications
 
LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHP
 
Vim Script Programming
Vim Script ProgrammingVim Script Programming
Vim Script Programming
 
CPAN 模組二三事
CPAN 模組二三事CPAN 模組二三事
CPAN 模組二三事
 
Vim Hacks (OSSF)
Vim Hacks (OSSF)Vim Hacks (OSSF)
Vim Hacks (OSSF)
 
Perl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim PerlchinaPerl.Hacks.On.Vim Perlchina
Perl.Hacks.On.Vim Perlchina
 
Perl.Hacks.On.Vim
Perl.Hacks.On.VimPerl.Hacks.On.Vim
Perl.Hacks.On.Vim
 
Vim Hacks
Vim HacksVim Hacks
Vim Hacks
 

Recently uploaded

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Recently uploaded (20)

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
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
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

Getting merged