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
86
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
240
Diet Hacks
nathany
2
390
Go 1.6 and HTTP/2
nathany
3
150
Upgrading Rails Redux
nathany
1
97
GopherCon recap
nathany
0
190
Go Functions
nathany
0
100
Go Arrays & Slices
nathany
0
150
Go Types
nathany
2
130
Other Decks in Technology
See All in Technology
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
190
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
1.8k
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
170
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
210
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
380
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
140
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
230
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
230
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
150
プロポーザルに込める段取り八分
shoheimitani
1
190
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.4k
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
200
A Soul's Torment
seathinner
5
2.2k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Unsuck your backbone
ammeep
671
58k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
エンジニアに許された特別な時間の終わり
watany
106
230k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
75
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Making Projects Easy
brettharned
120
6.6k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
51
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
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/