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
The Best Library I Ever Designed
Search
Andrea Leopardi
May 04, 2017
Programming
1
290
The Best Library I Ever Designed
Andrea Leopardi
May 04, 2017
Tweet
Share
More Decks by Andrea Leopardi
See All by Andrea Leopardi
The Umbrella and the Range
whatyouhide
0
17
gen_statem - OTP's Unsung Hero
whatyouhide
2
270
The World is a Network (and We Are Just Nodes)
whatyouhide
1
230
BEAM: The Perfect Fit for Networks
whatyouhide
1
210
Update from the Elixir team - 2022
whatyouhide
0
420
Testing Asynchronous OTP
whatyouhide
1
530
Elixir Sightseeing Tour
whatyouhide
0
440
Mint - Disrupting HTTP clients
whatyouhide
0
260
BEAM Architecture Handbook
whatyouhide
7
2.9k
Other Decks in Programming
See All in Programming
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
7
1.6k
Conquering Massive Traffic Spikes in Ruby Applications with Pitchfork
riseshia
0
150
Local Peer-to-Peer APIはどのように使われていくのか?
hal_spidernight
2
450
CSC305 Lecture 04
javiergs
PRO
0
250
AIエージェント時代における TypeScriptスキーマ駆動開発の新たな役割
bicstone
4
1.5k
dynamic!
moro
9
6.6k
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
530
『毎日の移動』を支えるGoバックエンド内製開発
yutautsugi
2
190
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
220
Catch Up: Go Style Guide Update
andpad
0
180
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
940
大規模アプリのDIフレームワーク刷新戦略 ~過去最大規模の並行開発を止めずにアプリ全体に導入するまで~
mot_techtalk
0
380
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Six Lessons from altMBA
skipperchong
28
4k
Scaling GitHub
holman
463
140k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Navigating Team Friction
lara
189
15k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Optimizing for Happiness
mojombo
379
70k
Visualization
eitanlees
148
16k
Transcript
LIbRarY DEsiGnED tHe bESt I evER
WhAT HOw
@wHatYOuhIDe
FORZA FOOTBALL
None
WhAT HOw
WhAT
abStRacT
abStRacT COmPleX cODe
abStRacT PAtTerNs/IDeAs
TwO TyPEs OF liBrARiEs
"leT mE HanDlE ThiS fOR yoU"
{:ok, conn} = Redix.start_link() Redix.command(conn, ["GET", "my_key"]) #=> {:ok, "my_value"}
"HEre'S hOW yoU HanDlE ThiS"
Saul.validate( some_data, one_of([&is_ref/1, &is_pid/1]) )
leT mE HanDlE ThiS fOR yoU heRE's How YOu hANdLe
tHIs
HOw
EXteNsIBle
buILt-iN 80 exTEnSibLE 20
Mix.Shell Mix.Shell.IO Mix.Shell.Process Mix.Shell.Quiet
geT Out OF poINtS
LAw oF ABsTrACtiONs LEakY
fragment( "lower(?)", post.title )
COmPosABle
LAnGuAge FEatURes USe
sTreAMs
Xandra.stream_pages!(query) |> Task.async_stream(mapper) |> Enum.reduce(acc, fun)
EXisTInG cONveNtIoNs KnOW
{:ok, term} {:error, term}
FOcuSEd coMpOSabLE <3
EaSy USe TO
coNsISteNt pRinCIpLe Of LeAsT asTOniShMEnT
TrANsParENt ThIN enOuGh ThAT yoU Can SEe ThROugH
{:ok, socket} = :gen_tcp.connect GrEaT ErRorS
DOcuME nTatIoN
WrITe dOCs FOr YoUr FutURe sELf
WhAT HOw
@wHatYOuhIDe