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
67
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
94
Go and Node.js: a comparison
nathany
1
180
Diet Hacks
nathany
2
340
Go 1.6 and HTTP/2
nathany
3
120
Upgrading Rails Redux
nathany
1
84
GopherCon recap
nathany
0
150
Go Functions
nathany
0
92
Go Arrays & Slices
nathany
0
120
Go Types
nathany
2
120
Other Decks in Technology
See All in Technology
2025-02-21 ゆるSRE勉強会 Enhancing SRE Using AI
yoshiiryo1
1
330
Culture Deck
optfit
0
420
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
24
7.1k
地方拠点で エンジニアリングマネージャーってできるの? 〜地方という制約を楽しむオーナーシップとコミュニティ作り〜
1coin
1
230
2.5Dモデルのすべて
yu4u
2
860
「海外登壇」という 選択肢を与えるために 〜Gophers EX
logica0419
0
700
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
8
1.5k
管理者しか知らないOutlookの裏側のAIを覗く#AzureTravelers
hirotomotaguchi
2
390
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
530
滅・サービスクラス🔥 / Destruction Service Class
sinsoku
6
1.6k
OpenID BizDay#17 KYC WG活動報告(法人) / 20250219-BizDay17-KYC-legalidentity
oidfj
0
240
リーダブルテストコード 〜メンテナンスしやすい テストコードを作成する方法を考える〜 #DevSumi #DevSumiB / Readable test code
nihonbuson
11
7.2k
Featured
See All Featured
Bash Introduction
62gerente
611
210k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Building Adaptive Systems
keathley
40
2.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Rails Girls Zürich Keynote
gr2m
94
13k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Agile that works and the tools we love
rasmusluckow
328
21k
Being A Developer After 40
akosma
89
590k
Done Done
chrislema
182
16k
The Pragmatic Product Professional
lauravandoore
32
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/