- Peter Frisch, 2016: The Year of the Zettabyte
- Eric Elliott, The Dao of Immutability
- Chris Okasaki, Purely Functional Data Structures (PDF)
- Pat Helland, Immutability Changes Everything (Video) / Whitepaper (PDF)
- Rich Hickey, Persistent Data Structures and Managed References (Video)
- Rich Hickey, Deconstructing the Database (Video)
- Jay Kreps, The Log: What every software engineer should know about real-time data's unifying abstraction
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-module(thunk). | |
-compile(export_all). | |
%% > thunk:take(3, thunk:forever_zero()). | |
%% [0,0,0] | |
%% > thunk:take(3, thunk:fib()). | |
%% [1,1,2] | |
%% > thunk:take(18, thunk:fib()). | |
%% [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
For many developers, the thought of learning functional programming is intimidating. Parentheses, lambda calculus, type theory, and you can't even modify a variable! | |
In this talk we'll look at code that does useful work without requiring a Ph.D. in greybeard. Talk to software on another computer without opening a socket. Iterate over your data without setting up an iterator class hierarchy. Disassemble a network protocol header with this one cool line of code! | |
We'll talk about ideas that are being adopted by languages you probably already use. No functional programming experience required, just a willingness to see what can happen when you think outside the OO box. | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%% Date formats in Erlang are a bit tricky to keep straight, | |
%% especially since the `calendar' library leverages Gregorian seconds | |
%% (seconds since year 0) rather than the more traditional UNIX epoch | |
%% seconds. | |
%% | |
%% This module illustrates the structures and conversions. | |
-module(erlang_dates). | |
-compile(export_all). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env escript | |
% -*- mode: erlang -*- | |
main([BeamFile]) -> | |
{ok,{_,[{abstract_code,{_,AC}}]}} = beam_lib:chunks(BeamFile,[abstract_code]), | |
io:fwrite("~s~n", [erl_prettypr:format(erl_syntax:form_list(AC))]). |
- BBN, RFC 677
- Lamport, Time, Clocks, and the Ordering of Events in a Distributed System
- Version vectors, Detection of Mutual Inconsistency in Distributed Systems
- Vector clocks, Timestamps in Message-Passing Systems That Preserve the Partial Ordering
- Hybrid clocks, Logical Physical Clocks and Consistent Snapshots in Globally Distributed Databases
- Interval tree clocks, Interval Tree Clocks: A Logical Clock for Dynamic Systems
- Jon Moore, Strange Loop 2015, How to Have your Causality and Wall Clocks, Too
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=ERROR REPORT==== 4-Aug-2015::09:01:01 === | |
** gen_event handler lager_stderr_backend crashed. | |
** Was installed in lager_event | |
** Last event was: {log,{lager_msg,[], | |
[{application,cuttlefish}, | |
{module,cuttlefish_conf}, | |
{function,generate_element}, | |
{line,122}, | |
{pid,"<0.719.0>"}, | |
{node,nonode@nohost}], |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%% Replace the item at `Index' in `List' with `Element'. | |
%% Zero-based indexing. Deal with it. | |
-spec replace_list_element(non_neg_integer(), term(), list()). | |
replace_list_element(Index, Element, List) -> | |
{Prefix, Suffix} = lists:split(Index, List), | |
Prefix ++ [Element] ++ tl(Suffix). |