Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Learning by Contributing
Search
Nathan Youngman
April 26, 2014
Technology
1
74
Learning by Contributing
Lightning talk at GopherCon 2014 on what I've learned by contributing to open source Go projects.
Nathan Youngman
April 26, 2014
Tweet
Share
More Decks by Nathan Youngman
See All by Nathan Youngman
The Healthy Programmer
nathany
2
110
Go and Node.js: a comparison
nathany
1
210
Diet Hacks
nathany
2
370
Go 1.6 and HTTP/2
nathany
3
130
Upgrading Rails Redux
nathany
1
91
GopherCon recap
nathany
0
180
Go Functions
nathany
0
100
Go Arrays & Slices
nathany
0
140
Go Types
nathany
2
130
Other Decks in Technology
See All in Technology
工業高校で学習したとあるエンジニアのキャリアの話
shirayanagiryuji
0
100
夏休みWebアプリパフォーマンス相談室/web-app-performance-on-radio
hachi_eiji
0
220
Segment Anything Modelの最新動向:SAM2とその発展系
tenten0727
0
830
「AIと一緒にやる」が当たり前になるまでの奮闘記
kakehashi
PRO
3
150
Delegate authentication and a lot more to Keycloak with OpenID Connect
ahus1
0
220
AWS DDoS攻撃防御の最前線
ryutakondo
1
170
アカデミーキャンプ 2025 SuuuuuuMMeR「燃えろ!!ロボコン」 / Academy Camp 2025 SuuuuuuMMeR "Burn the Spirit, Robocon!!" DAY 1
ks91
PRO
0
150
家族の思い出を形にする 〜 1秒動画の生成を支えるインフラアーキテクチャ
ojima_h
3
1.2k
Autonomous Database Serverless 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
18
51k
Lambda management with ecspresso and Terraform
ijin
2
170
LTに影響を受けてテンプレリポジトリを作った話
hol1kgmg
0
370
LLMをツールからプラットフォームへ〜Ai Workforceの戦略〜 #BetAIDay
layerx
PRO
1
1k
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
77
9.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Embracing the Ebb and Flow
colly
86
4.8k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Optimizing for Happiness
mojombo
379
70k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.4k
The Language of Interfaces
destraynor
158
25k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Transcript
! Learning by Contributing @nathany
Open Source
None
howeyc/fsnotify • Used by: • revel • jkl • gin
• countless others…
Learning Adapter OS inotify Linux, Android kqueue BSD, OS X,
iOS ReadDirectoryChangesW Windows File Event Notifications (FEN) Solaris 11 FSEvents OS X fanotify Linux
Oh. Windows. Testing on multiple platforms. https://github.com/gophertown/vagrant-gopher
Backwards compatibility
Code style pathsToRemove := make([]string, 0) ! “Just write: !
var pathsToRemove []string” - iant! https://code.google.com/p/go-wiki/wiki/CodeReviewComments
Effective use of the standard library ! atomic.AddInt32(&c.val, 1) !
“use ioutil.TempDir to create a unique root for this test run” - dfc!
Naming things func validateFlags() error “notice that the purpose of
this is to set up state; the validation is secondary. it's misnamed.” - r
Error messages "phrasing: say what's wrong, not how to fix
it.” ! return fmt.Errorf("unexpected argument provided”) “this isn't quite right. "extra argument"? "too many arguments"?” - r
– rsc “The goal here should be to expose the
minimal necessary functionality that lets people build useful things…” API design
– rsc “The problem with callbacks is that you now
have to worry about user code blocking (or panicking) a library goroutine. ! A channel is a much better separation.” I hadn’t considered…
– rsc “There is no testing benefit here to the
interface over a simple struct with only public fields.” Keep it simple
–Chad Fowler “Pick an open source project that you admire
and whose developers appear to be at that "next level" you’re looking to reach.”
exercism.io
@nathany http://edmontongo.org/