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
60
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
90
Go and Node.js: a comparison
nathany
1
150
Diet Hacks
nathany
2
330
Go 1.6 and HTTP/2
nathany
3
91
Upgrading Rails Redux
nathany
1
78
GopherCon recap
nathany
0
130
Go Functions
nathany
0
73
Go Arrays & Slices
nathany
0
99
Go Types
nathany
2
110
Other Decks in Technology
See All in Technology
業務で使えるかもしれない…!?GitHub Actions の Tips 集 / CI/CD Test Night #7
ponkio_o
PRO
24
7.1k
Azureコストは水道代/The_47th_Tokyo_Jazug
aeonpeople
3
370
現実世界の事象から学ぶSOLID原則
h0r15h0
24
10k
Getting started with controlling LEGO using Swift
hcrane
0
130
エンジニア候補者向け資料2024.03.28.pdf
macloud
0
2.9k
やっていきテスト
k6s4i53rx
0
160
エンジニアブランディングチームの KPI / KPI's of engineer branding team
chaspy
1
140
Elementaryを用いたデータ品質の可視化とデータ基盤の運用改善
10xinc
6
1.6k
複数の LLM モデルを扱う上で直面した辛みまとめ
kazuyaseki
1
250
Challenges - Open Farming Hackdays 2024
loleg
0
560
Introduction to Jetpack Compose
pohjus
1
110
KTC_DBRE.pdf
_awache
1
290
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
43
9.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
257
12k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
Infographics Made Easy
chrislema
237
18k
It's Worth the Effort
3n
180
27k
Agile that works and the tools we love
rasmusluckow
323
20k
10 Git Anti Patterns You Should be Aware of
lemiorhan
644
57k
Embracing the Ebb and Flow
colly
78
4.1k
YesSQL, Process and Tooling at Scale
rocio
160
13k
How GitHub Uses GitHub to Build GitHub
holman
467
290k
The Pragmatic Product Professional
lauravandoore
24
5.7k
Designing on Purpose - Digital PM Summit 2013
jponch
109
6.4k
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/