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
220
The Best Library I Ever Designed
Andrea Leopardi
May 04, 2017
Tweet
Share
More Decks by Andrea Leopardi
See All by Andrea Leopardi
BEAM: The Perfect Fit for Networks
whatyouhide
1
120
Update from the Elixir team - 2022
whatyouhide
0
330
Testing Asynchronous OTP
whatyouhide
0
440
Elixir Sightseeing Tour
whatyouhide
0
320
Mint - Disrupting HTTP clients
whatyouhide
0
200
BEAM Architecture Handbook
whatyouhide
7
2.5k
The Evolution of a Language
whatyouhide
0
110
Elixir - functional, concurrent, distributed programming for the rest of us
whatyouhide
2
290
Papers we love: Elixir edition
whatyouhide
5
960
Other Decks in Programming
See All in Programming
マイクロサービスがほしいと思ったときに本当に必要だったもの〜なぜ人は共通基盤の夢を見るのか〜 / why microservice
77web
5
980
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
memory1994
PRO
1
490
せっかくモデル図描くのなら、嬉しいことが多い方がいいよね!
kuboaki
1
1.7k
デザインシステムで Tailwind CSSとCSS in JSに分散投資をしたら良かった話
fsubal
14
3.1k
オブジェクトしこう
okuramasafumi
2
130
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
480
Swiftの型推論を学ぼう | Let's Learn About Type Inference in Swift
omochi
2
510
[スクリプト] Swiftの型推論を学ぼう
omochi
0
110
もうすぐ新年度、Babylon.jsがお勧めな3個の理由
hideg
0
160
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
1
160
「コンパイル時のユニットテスト」導入するとユニットテストを 書かなくてよくなるのか?
tomohisa
9
2.2k
実践!RDRAを活用した既存システムの仕様変更 / Specification Changes in Existing Systems Utilizing RDRA
imamotohikaru
0
2.4k
Featured
See All Featured
Design by the Numbers
sachag
274
18k
The Invisible Side of Design
smashingmag
293
49k
Imperfection Machines: The Place of Print at Facebook
scottboms
257
12k
Making Projects Easy
brettharned
106
5.4k
We Have a Design System, Now What?
morganepeng
42
6.7k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Designing the Hi-DPI Web
ddemaree
275
33k
Become a Pro
speakerdeck
PRO
8
4.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
11
1.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
8
8.2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
Designing on Purpose - Digital PM Summit 2013
jponch
109
6.4k
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