$30 off During Our Annual Pro Sale. View Details »
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
310
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
20
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
430
Testing Asynchronous OTP
whatyouhide
1
540
Elixir Sightseeing Tour
whatyouhide
0
450
Mint - Disrupting HTTP clients
whatyouhide
0
270
BEAM Architecture Handbook
whatyouhide
7
2.9k
Other Decks in Programming
See All in Programming
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
130
251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?
east_takumi
0
260
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
130
JEP 496 と JEP 497 から学ぶ耐量子計算機暗号入門 / Learning Post-Quantum Crypto Basics from JEP 496 & 497
mackey0225
2
500
スタートアップを支える技術戦略と組織づくり
pospome
8
13k
生成AIを活用したリファクタリング実践 ~コードスメルをなくすためのアプローチ
raedion
0
150
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
490
Honoを技術選定したAI要件定義プラットフォームAcsimでの意思決定
codenote
0
280
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
22
19k
AIを駆使して新しい技術を効率的に理解する方法
nogu66
1
670
GeistFabrik and AI-augmented software development
adewale
PRO
0
210
Atomics APIを知る / Understanding Atomics API
ssssota
1
220
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Music & Morning Musume
bryan
46
7k
Building Adaptive Systems
keathley
44
2.8k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Building an army of robots
kneath
306
46k
Facilitating Awesome Meetings
lara
57
6.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
980
Context Engineering - Making Every Token Count
addyosmani
9
430
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
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