From 69272f598d831e89da83bdc8c9290d5607dfb14d Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sat, 31 Oct 2020 20:26:37 -0400 Subject: Re-named the directory for my bookmarks to better reflect what they are. --- documentation/bookmark.md | 9 + documentation/bookmark/3D.md | 4 + documentation/bookmark/Abstract interpretation.md | 4 + documentation/bookmark/Agent.md | 8 + documentation/bookmark/Array.md | 4 + .../bookmark/Berkeley Packet Filter (BPF).md | 5 + documentation/bookmark/Cache.md | 4 + documentation/bookmark/Code mods.md | 7 + documentation/bookmark/Compilation.md | 4 + documentation/bookmark/Data format.md | 4 + documentation/bookmark/Feature toggle.md | 4 + .../bookmark/Graphic User Interface (GUI).md | 26 ++ documentation/bookmark/Graphics.md | 5 + documentation/bookmark/Internet of Things (IoT).md | 22 + .../Localization and Internationalization.md | 4 + documentation/bookmark/Memory Management.md | 44 ++ .../bookmark/Optics (eg lenses & prisms).md | 24 + documentation/bookmark/Optimization.md | 38 ++ .../bookmark/Probabilistic data-structure.md | 32 ++ documentation/bookmark/Procedural generation.md | 4 + documentation/bookmark/Recursion schemes.md | 16 + documentation/bookmark/Security.md | 95 ++++ .../Software Reliability Engineering (SRE).md | 4 + .../bookmark/Statistical Programming Languages.md | 4 + documentation/bookmark/Testing.md | 12 + .../bookmark/Type theory/Dependent types.md | 43 ++ .../bookmark/Type theory/Row polymorphism.md | 4 + .../bookmark/architecture/microservice.md | 3 + documentation/bookmark/back-end/Python.md | 4 + .../bookmark/back-end/WebAssembly (WASM).md | 33 ++ documentation/bookmark/back-end/native.md | 125 ++++++ documentation/bookmark/browser.md | 49 +++ documentation/bookmark/chemistry.md | 4 + documentation/bookmark/cryptography.md | 60 +++ documentation/bookmark/culture.md | 3 + documentation/bookmark/database.md | 471 ++++++++++++++++++++ documentation/bookmark/debugging.md | 92 ++++ documentation/bookmark/distributed_programming.md | 103 +++++ documentation/bookmark/documentation.md | 82 ++++ documentation/bookmark/falsehood.md | 4 + documentation/bookmark/floating point.md | 4 + documentation/bookmark/game_programming.md | 482 +++++++++++++++++++++ documentation/bookmark/machine_learning.md | 87 ++++ documentation/bookmark/math.md | 395 +++++++++++++++++ documentation/bookmark/math/real numbers.md | 5 + documentation/bookmark/operating_system.md | 281 ++++++++++++ .../paradigm/Ambient-Oriented Programming.md | 5 + .../bookmark/paradigm/Answer Set Programming.md | 4 + .../bookmark/paradigm/Concept programming.md | 8 + .../bookmark/paradigm/flow_based_programming.md | 4 + .../paradigm/functional reactive programming.md | 4 + .../bookmark/paradigm/logic_programming.md | 53 +++ .../bookmark/paradigm/probabilistic_programming.md | 75 ++++ documentation/bookmark/parsing.md | 5 + documentation/bookmark/programmability.md | 4 + documentation/bookmark/runners or comodels.md | 4 + documentation/bookmark/text_editor & ide.md | 225 ++++++++++ documentation/bookmark/tool/Diff.md | 4 + documentation/bookmark/tool/Notebook.md | 4 + documentation/bookmark/tool/Search.md | 4 + documentation/bookmark/tool/build_system.md | 65 +++ documentation/bookmark/tool/compiler.md | 4 + documentation/bookmark/transducer_stream_pipe.md | 28 ++ documentation/bookmark/web_framework.md | 158 +++++++ documentation/research.md | 9 - documentation/research/3D.md | 4 - documentation/research/Abstract interpretation.md | 4 - documentation/research/Agent.md | 8 - documentation/research/Array.md | 4 - .../research/Berkeley Packet Filter (BPF).md | 5 - documentation/research/Cache.md | 4 - documentation/research/Code mods.md | 7 - documentation/research/Compilation.md | 4 - documentation/research/Data format.md | 4 - documentation/research/Feature toggle.md | 4 - .../research/Graphic User Interface (GUI).md | 26 -- documentation/research/Graphics.md | 5 - documentation/research/Internet of Things (IoT).md | 22 - .../Localization and Internationalization.md | 4 - documentation/research/Memory Management.md | 44 -- .../research/Optics (eg lenses & prisms).md | 24 - documentation/research/Optimization.md | 38 -- .../research/Probabilistic data-structure.md | 32 -- documentation/research/Procedural generation.md | 4 - documentation/research/Recursion schemes.md | 16 - documentation/research/Security.md | 95 ---- .../Software Reliability Engineering (SRE).md | 4 - .../research/Statistical Programming Languages.md | 4 - documentation/research/Testing.md | 12 - .../research/Type theory/Dependent types.md | 43 -- .../research/Type theory/Row polymorphism.md | 4 - .../research/architecture/microservice.md | 3 - documentation/research/back-end/Python.md | 4 - .../research/back-end/WebAssembly (WASM).md | 33 -- documentation/research/back-end/native.md | 125 ------ documentation/research/browser.md | 49 --- documentation/research/chemistry.md | 4 - documentation/research/cryptography.md | 60 --- documentation/research/culture.md | 3 - documentation/research/database.md | 471 -------------------- documentation/research/debugging.md | 92 ---- documentation/research/distributed_programming.md | 103 ----- documentation/research/documentation.md | 82 ---- documentation/research/falsehood.md | 4 - documentation/research/floating point.md | 4 - documentation/research/game_programming.md | 482 --------------------- documentation/research/machine_learning.md | 87 ---- documentation/research/math.md | 395 ----------------- documentation/research/math/real numbers.md | 5 - documentation/research/operating_system.md | 281 ------------ .../paradigm/Ambient-Oriented Programming.md | 5 - .../research/paradigm/Answer Set Programming.md | 4 - .../research/paradigm/Concept programming.md | 8 - .../research/paradigm/flow_based_programming.md | 4 - .../paradigm/functional reactive programming.md | 4 - .../research/paradigm/logic_programming.md | 53 --- .../research/paradigm/probabilistic_programming.md | 75 ---- documentation/research/parsing.md | 5 - documentation/research/programmability.md | 4 - documentation/research/runners or comodels.md | 4 - documentation/research/text_editor & ide.md | 225 ---------- documentation/research/tool/Diff.md | 4 - documentation/research/tool/Notebook.md | 4 - documentation/research/tool/Search.md | 4 - documentation/research/tool/build_system.md | 65 --- documentation/research/tool/compiler.md | 4 - documentation/research/transducer_stream_pipe.md | 28 -- documentation/research/web_framework.md | 158 ------- stdlib/source/lux/control/concatenative.lux | 4 +- stdlib/source/lux/control/concurrency/process.lux | 8 +- stdlib/source/lux/control/function/memo.lux | 4 +- stdlib/source/lux/control/security/capability.lux | 4 +- stdlib/source/lux/data/collection/list.lux | 6 +- stdlib/source/lux/data/collection/stack.lux | 94 ++-- stdlib/source/lux/data/collection/tree.lux | 11 +- stdlib/source/lux/data/collection/tree/zipper.lux | 29 +- stdlib/source/lux/data/text/regex.lux | 16 +- stdlib/source/lux/host.jvm.lux | 16 +- stdlib/source/lux/meta/annotation.lux | 4 +- stdlib/source/lux/time.lux | 2 +- stdlib/source/lux/time/duration.lux | 22 +- stdlib/source/lux/time/instant.lux | 6 +- stdlib/source/lux/time/year.lux | 2 +- .../lux/tool/compiler/language/lux/generation.lux | 2 +- .../language/lux/phase/generation/js/case.lux | 14 +- .../language/lux/phase/generation/js/function.lux | 12 +- .../language/lux/phase/generation/js/runtime.lux | 4 +- .../language/lux/phase/generation/js/structure.lux | 4 +- .../language/lux/phase/generation/lua/function.lux | 16 +- .../language/lux/phase/generation/lua/loop.lux | 10 +- .../language/lux/phase/generation/php/case.lux | 4 +- .../language/lux/phase/generation/php/function.lux | 12 +- .../language/lux/phase/generation/php/loop.lux | 10 +- .../lux/phase/generation/python/function.lux | 16 +- .../language/lux/phase/generation/python/loop.lux | 10 +- .../lux/phase/generation/ruby/function.lux | 12 +- .../language/lux/phase/generation/ruby/loop.lux | 10 +- .../language/lux/phase/generation/scheme/case.lux | 4 +- .../lux/phase/generation/scheme/structure.lux | 4 +- .../lux/tool/compiler/meta/archive/artifact.lux | 14 +- .../source/lux/tool/compiler/meta/packager/jvm.lux | 4 +- .../lux/tool/compiler/meta/packager/script.lux | 6 +- stdlib/source/lux/type/abstract.lux | 27 +- stdlib/source/lux/world/file.lux | 44 +- stdlib/source/lux/world/net/http/query.lux | 14 +- stdlib/source/lux/world/shell.lux | 6 +- stdlib/source/program/aedifex.lux | 15 +- stdlib/source/program/aedifex/command/install.lux | 62 +++ stdlib/source/program/aedifex/local.lux | 18 - stdlib/source/program/aedifex/shell.lux | 19 +- stdlib/source/program/compositor/export.lux | 14 +- stdlib/source/test/aedifex.lux | 4 +- stdlib/source/test/aedifex/command/install.lux | 101 +++++ stdlib/source/test/lux/abstract/interval.lux | 16 +- stdlib/source/test/lux/abstract/predicate.lux | 4 +- stdlib/source/test/lux/control/continuation.lux | 8 +- .../source/test/lux/control/parser/synthesis.lux | 32 +- stdlib/source/test/lux/control/pipe.lux | 4 +- stdlib/source/test/lux/data/binary.lux | 6 +- stdlib/source/test/lux/data/collection/array.lux | 14 +- stdlib/source/test/lux/data/collection/bits.lux | 14 +- .../lux/data/collection/dictionary/ordered.lux | 4 +- stdlib/source/test/lux/data/collection/list.lux | 26 +- stdlib/source/test/lux/data/collection/queue.lux | 4 +- .../test/lux/data/collection/queue/priority.lux | 10 +- stdlib/source/test/lux/data/collection/row.lux | 24 +- .../source/test/lux/data/collection/sequence.lux | 8 +- .../test/lux/data/collection/set/ordered.lux | 6 +- stdlib/source/test/lux/data/collection/stack.lux | 85 ++-- stdlib/source/test/lux/data/collection/tree.lux | 6 +- .../test/lux/data/collection/tree/zipper.lux | 8 +- stdlib/source/test/lux/data/color.lux | 10 +- stdlib/source/test/lux/data/number/complex.lux | 12 +- stdlib/source/test/lux/data/number/i16.lux | 4 +- stdlib/source/test/lux/data/number/i32.lux | 4 +- stdlib/source/test/lux/data/number/i64.lux | 4 +- stdlib/source/test/lux/data/number/i8.lux | 4 +- stdlib/source/test/lux/host.old.lux | 6 +- stdlib/source/test/lux/macro/poly/equivalence.lux | 6 +- stdlib/source/test/lux/macro/poly/json.lux | 4 +- stdlib/source/test/lux/macro/template.lux | 2 +- stdlib/source/test/lux/meta.lux | 4 +- stdlib/source/test/lux/time/duration.lux | 6 +- stdlib/source/test/lux/type.lux | 20 +- stdlib/source/test/lux/type/check.lux | 18 +- stdlib/source/test/lux/type/implicit.lux | 4 +- stdlib/source/test/lux/world/file.lux | 6 +- 207 files changed, 4022 insertions(+), 3849 deletions(-) create mode 100644 documentation/bookmark.md create mode 100644 documentation/bookmark/3D.md create mode 100644 documentation/bookmark/Abstract interpretation.md create mode 100644 documentation/bookmark/Agent.md create mode 100644 documentation/bookmark/Array.md create mode 100644 documentation/bookmark/Berkeley Packet Filter (BPF).md create mode 100644 documentation/bookmark/Cache.md create mode 100644 documentation/bookmark/Code mods.md create mode 100644 documentation/bookmark/Compilation.md create mode 100644 documentation/bookmark/Data format.md create mode 100644 documentation/bookmark/Feature toggle.md create mode 100644 documentation/bookmark/Graphic User Interface (GUI).md create mode 100644 documentation/bookmark/Graphics.md create mode 100644 documentation/bookmark/Internet of Things (IoT).md create mode 100644 documentation/bookmark/Localization and Internationalization.md create mode 100644 documentation/bookmark/Memory Management.md create mode 100644 documentation/bookmark/Optics (eg lenses & prisms).md create mode 100644 documentation/bookmark/Optimization.md create mode 100644 documentation/bookmark/Probabilistic data-structure.md create mode 100644 documentation/bookmark/Procedural generation.md create mode 100644 documentation/bookmark/Recursion schemes.md create mode 100644 documentation/bookmark/Security.md create mode 100644 documentation/bookmark/Software Reliability Engineering (SRE).md create mode 100644 documentation/bookmark/Statistical Programming Languages.md create mode 100644 documentation/bookmark/Testing.md create mode 100644 documentation/bookmark/Type theory/Dependent types.md create mode 100644 documentation/bookmark/Type theory/Row polymorphism.md create mode 100644 documentation/bookmark/architecture/microservice.md create mode 100644 documentation/bookmark/back-end/Python.md create mode 100644 documentation/bookmark/back-end/WebAssembly (WASM).md create mode 100644 documentation/bookmark/back-end/native.md create mode 100644 documentation/bookmark/browser.md create mode 100644 documentation/bookmark/chemistry.md create mode 100644 documentation/bookmark/cryptography.md create mode 100644 documentation/bookmark/culture.md create mode 100644 documentation/bookmark/database.md create mode 100644 documentation/bookmark/debugging.md create mode 100644 documentation/bookmark/distributed_programming.md create mode 100644 documentation/bookmark/documentation.md create mode 100644 documentation/bookmark/falsehood.md create mode 100644 documentation/bookmark/floating point.md create mode 100644 documentation/bookmark/game_programming.md create mode 100644 documentation/bookmark/machine_learning.md create mode 100644 documentation/bookmark/math.md create mode 100644 documentation/bookmark/math/real numbers.md create mode 100644 documentation/bookmark/operating_system.md create mode 100644 documentation/bookmark/paradigm/Ambient-Oriented Programming.md create mode 100644 documentation/bookmark/paradigm/Answer Set Programming.md create mode 100644 documentation/bookmark/paradigm/Concept programming.md create mode 100644 documentation/bookmark/paradigm/flow_based_programming.md create mode 100644 documentation/bookmark/paradigm/functional reactive programming.md create mode 100644 documentation/bookmark/paradigm/logic_programming.md create mode 100644 documentation/bookmark/paradigm/probabilistic_programming.md create mode 100644 documentation/bookmark/parsing.md create mode 100644 documentation/bookmark/programmability.md create mode 100644 documentation/bookmark/runners or comodels.md create mode 100644 documentation/bookmark/text_editor & ide.md create mode 100644 documentation/bookmark/tool/Diff.md create mode 100644 documentation/bookmark/tool/Notebook.md create mode 100644 documentation/bookmark/tool/Search.md create mode 100644 documentation/bookmark/tool/build_system.md create mode 100644 documentation/bookmark/tool/compiler.md create mode 100644 documentation/bookmark/transducer_stream_pipe.md create mode 100644 documentation/bookmark/web_framework.md delete mode 100644 documentation/research.md delete mode 100644 documentation/research/3D.md delete mode 100644 documentation/research/Abstract interpretation.md delete mode 100644 documentation/research/Agent.md delete mode 100644 documentation/research/Array.md delete mode 100644 documentation/research/Berkeley Packet Filter (BPF).md delete mode 100644 documentation/research/Cache.md delete mode 100644 documentation/research/Code mods.md delete mode 100644 documentation/research/Compilation.md delete mode 100644 documentation/research/Data format.md delete mode 100644 documentation/research/Feature toggle.md delete mode 100644 documentation/research/Graphic User Interface (GUI).md delete mode 100644 documentation/research/Graphics.md delete mode 100644 documentation/research/Internet of Things (IoT).md delete mode 100644 documentation/research/Localization and Internationalization.md delete mode 100644 documentation/research/Memory Management.md delete mode 100644 documentation/research/Optics (eg lenses & prisms).md delete mode 100644 documentation/research/Optimization.md delete mode 100644 documentation/research/Probabilistic data-structure.md delete mode 100644 documentation/research/Procedural generation.md delete mode 100644 documentation/research/Recursion schemes.md delete mode 100644 documentation/research/Security.md delete mode 100644 documentation/research/Software Reliability Engineering (SRE).md delete mode 100644 documentation/research/Statistical Programming Languages.md delete mode 100644 documentation/research/Testing.md delete mode 100644 documentation/research/Type theory/Dependent types.md delete mode 100644 documentation/research/Type theory/Row polymorphism.md delete mode 100644 documentation/research/architecture/microservice.md delete mode 100644 documentation/research/back-end/Python.md delete mode 100644 documentation/research/back-end/WebAssembly (WASM).md delete mode 100644 documentation/research/back-end/native.md delete mode 100644 documentation/research/browser.md delete mode 100644 documentation/research/chemistry.md delete mode 100644 documentation/research/cryptography.md delete mode 100644 documentation/research/culture.md delete mode 100644 documentation/research/database.md delete mode 100644 documentation/research/debugging.md delete mode 100644 documentation/research/distributed_programming.md delete mode 100644 documentation/research/documentation.md delete mode 100644 documentation/research/falsehood.md delete mode 100644 documentation/research/floating point.md delete mode 100644 documentation/research/game_programming.md delete mode 100644 documentation/research/machine_learning.md delete mode 100644 documentation/research/math.md delete mode 100644 documentation/research/math/real numbers.md delete mode 100644 documentation/research/operating_system.md delete mode 100644 documentation/research/paradigm/Ambient-Oriented Programming.md delete mode 100644 documentation/research/paradigm/Answer Set Programming.md delete mode 100644 documentation/research/paradigm/Concept programming.md delete mode 100644 documentation/research/paradigm/flow_based_programming.md delete mode 100644 documentation/research/paradigm/functional reactive programming.md delete mode 100644 documentation/research/paradigm/logic_programming.md delete mode 100644 documentation/research/paradigm/probabilistic_programming.md delete mode 100644 documentation/research/parsing.md delete mode 100644 documentation/research/programmability.md delete mode 100644 documentation/research/runners or comodels.md delete mode 100644 documentation/research/text_editor & ide.md delete mode 100644 documentation/research/tool/Diff.md delete mode 100644 documentation/research/tool/Notebook.md delete mode 100644 documentation/research/tool/Search.md delete mode 100644 documentation/research/tool/build_system.md delete mode 100644 documentation/research/tool/compiler.md delete mode 100644 documentation/research/transducer_stream_pipe.md delete mode 100644 documentation/research/web_framework.md create mode 100644 stdlib/source/program/aedifex/command/install.lux create mode 100644 stdlib/source/test/aedifex/command/install.lux diff --git a/documentation/bookmark.md b/documentation/bookmark.md new file mode 100644 index 000000000..0344c452b --- /dev/null +++ b/documentation/bookmark.md @@ -0,0 +1,9 @@ +# Reference + +1. [Designing File Formats](https://www.fadden.com/tech/file-formats.html) +1. [The Twelve-Factor Container](https://medium.com/notbinary/the-twelve-factor-container-8d1edc2a49d4) +1. [What is PL Research?](https://www.youtube.com/watch?v=vyF5d-EFIwU) +1. https://www.ambient-mixer.com/ +1. https://github.com/danistefanovic/build-your-own-x +1. [LoCal: A Language for Programs Operating onSerialized Data](http://recurial.com/pldi19main.pdf) + diff --git a/documentation/bookmark/3D.md b/documentation/bookmark/3D.md new file mode 100644 index 000000000..a7020c3ef --- /dev/null +++ b/documentation/bookmark/3D.md @@ -0,0 +1,4 @@ +# Three.js + +1. [Three.js Fundamentals](https://threejsfundamentals.org/) + diff --git a/documentation/bookmark/Abstract interpretation.md b/documentation/bookmark/Abstract interpretation.md new file mode 100644 index 000000000..d98525f7c --- /dev/null +++ b/documentation/bookmark/Abstract interpretation.md @@ -0,0 +1,4 @@ +# Reference + +1. ["Easy Abstract Interpretation with SPARTA" by Arnaud Venet and Jez Ng](https://www.youtube.com/watch?v=_fA7vkVJhF8) + diff --git a/documentation/bookmark/Agent.md b/documentation/bookmark/Agent.md new file mode 100644 index 000000000..5f8a7629a --- /dev/null +++ b/documentation/bookmark/Agent.md @@ -0,0 +1,8 @@ +# Reference + +1. [Introduction to Java Agents](https://devolution.tech/introduction-to-java-agents/) +1. https://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html +1. http://javabeat.net/introduction-to-java-agents/ +1. https://www.javacodegeeks.com/2015/09/java-agents.html +1. https://github.com/cretz/stackparam + diff --git a/documentation/bookmark/Array.md b/documentation/bookmark/Array.md new file mode 100644 index 000000000..29c0dc889 --- /dev/null +++ b/documentation/bookmark/Array.md @@ -0,0 +1,4 @@ +# Reference + +1. [Dex: array programming with typed indices](https://openreview.net/pdf?id=rJxd7vsWPS) + diff --git a/documentation/bookmark/Berkeley Packet Filter (BPF).md b/documentation/bookmark/Berkeley Packet Filter (BPF).md new file mode 100644 index 000000000..951e6ccac --- /dev/null +++ b/documentation/bookmark/Berkeley Packet Filter (BPF).md @@ -0,0 +1,5 @@ +# Reference + +1. [Extended BPF: A new software type](https://www.youtube.com/watch?v=7pmXdG8-7WU) +1. [Berkeley Packet Filter](https://en.wikipedia.org/wiki/Berkeley_Packet_Filter) + diff --git a/documentation/bookmark/Cache.md b/documentation/bookmark/Cache.md new file mode 100644 index 000000000..cba5d6826 --- /dev/null +++ b/documentation/bookmark/Cache.md @@ -0,0 +1,4 @@ +# Reference + +1. https://github.com/eko/gocache + diff --git a/documentation/bookmark/Code mods.md b/documentation/bookmark/Code mods.md new file mode 100644 index 000000000..3a08c7cdb --- /dev/null +++ b/documentation/bookmark/Code mods.md @@ -0,0 +1,7 @@ +# Reference + +1. https://comby.dev/ +1. ["Parser Parser Combinators for Program Transformation" by Rijnard van Tonder](https://www.youtube.com/watch?v=JMZLBB_BFNg) +1. [Codemod](https://github.com/facebook/codemod) +1. [jscodeshift](https://github.com/facebook/jscodeshift) + diff --git a/documentation/bookmark/Compilation.md b/documentation/bookmark/Compilation.md new file mode 100644 index 000000000..2249ebdc3 --- /dev/null +++ b/documentation/bookmark/Compilation.md @@ -0,0 +1,4 @@ +# Demand-driven + +1. [Queries: demand-driven compilation](https://github.com/rust-lang/rustc-guide/blob/master/src/query.md) + diff --git a/documentation/bookmark/Data format.md b/documentation/bookmark/Data format.md new file mode 100644 index 000000000..6961ff704 --- /dev/null +++ b/documentation/bookmark/Data format.md @@ -0,0 +1,4 @@ +# Reference + +1. https://internetobject.org/ + diff --git a/documentation/bookmark/Feature toggle.md b/documentation/bookmark/Feature toggle.md new file mode 100644 index 000000000..7e55a519b --- /dev/null +++ b/documentation/bookmark/Feature toggle.md @@ -0,0 +1,4 @@ +# Reference + +1. [Feature Toggles (aka Feature Flags)](https://martinfowler.com/articles/feature-toggles.html) + diff --git a/documentation/bookmark/Graphic User Interface (GUI).md b/documentation/bookmark/Graphic User Interface (GUI).md new file mode 100644 index 000000000..10a2bb764 --- /dev/null +++ b/documentation/bookmark/Graphic User Interface (GUI).md @@ -0,0 +1,26 @@ +# User experience (UX) + +1. https://lawsofux.com/ + +# Widget + +1. [Progress bar.js](https://kimmobrunfeldt.github.io/progressbar.js/) + +# Design + +1. [Ant Design](https://ant.design/) +1. [7 Practical Tips for Cheating at Design](https://medium.com/refactoring-ui/7-practical-tips-for-cheating-at-design-40c736799886) + +# Dark Patterns + +1. https://neal.fun/dark-patterns/ + +# Immediate mode + +1. [Sol on Immediate Mode GUIs (IMGUI)](http://sol.gfxile.net/imgui/) +1. [Immediate-Mode Graphical User Interfaces (2005)](https://caseymuratori.com/blog_0001) + +# Accessibility + +1. [What I’ve learned about accessibility in SPAs](https://nolanlawson.com/2019/11/05/what-ive-learned-about-accessibility-in-spas/) + diff --git a/documentation/bookmark/Graphics.md b/documentation/bookmark/Graphics.md new file mode 100644 index 000000000..5438adeff --- /dev/null +++ b/documentation/bookmark/Graphics.md @@ -0,0 +1,5 @@ +# 2D + +1. [Einar Høst - Composition by Juxtaposition: A PostScript on Functional Geometry - Lambda Days 2020](https://www.youtube.com/watch?v=GvTh0MmVPQI) +1. [Functional geometry](https://dl.acm.org/doi/10.1145/800068.802148) + diff --git a/documentation/bookmark/Internet of Things (IoT).md b/documentation/bookmark/Internet of Things (IoT).md new file mode 100644 index 000000000..9d147ee43 --- /dev/null +++ b/documentation/bookmark/Internet of Things (IoT).md @@ -0,0 +1,22 @@ +# Device + +1. https://www.pine64.org/ +1. http://beagleboard.org/ + +# Language + +1. [A Programming Language for the Internet of Things](https://www.duo.uio.no/bitstream/handle/10852/56894/Thesis.pdf) +1. http://www.eclipse.org/mita/ + +# Protocol + +1. http://coap.technology/ +1. https://medium.com/@patburns/a-new-way-to-think-about-the-p2p-iot-5fde27e96833 +1. https://plc4x.apache.org/ +1. [OpenThread](https://openthread.io/) +1. [Thread](https://www.threadgroup.org/) + +# Security + +1. https://www.theregister.co.uk/2019/03/13/congress_iot_security/ + diff --git a/documentation/bookmark/Localization and Internationalization.md b/documentation/bookmark/Localization and Internationalization.md new file mode 100644 index 000000000..198d768bd --- /dev/null +++ b/documentation/bookmark/Localization and Internationalization.md @@ -0,0 +1,4 @@ +# Reference + +1. [CSS for internationalisation](https://chenhuijing.com/blog/css-for-i18n/) + diff --git a/documentation/bookmark/Memory Management.md b/documentation/bookmark/Memory Management.md new file mode 100644 index 000000000..8905c6b20 --- /dev/null +++ b/documentation/bookmark/Memory Management.md @@ -0,0 +1,44 @@ +# Static + +1. [ASAP: As Static As Possible memory management](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-908.pdf) + +# Allocation + +1. [Always Bump Downwards](https://fitzgeraldnick.com/2019/11/01/always-bump-downwards.html) + +# Compaction + +1. ["Compacting the Uncompactable" by Bobby Powers](https://www.youtube.com/watch?v=c1UBJbfR-H0) + +# Reference counting + +1. [Introducing --gc:arc](https://forum.nim-lang.org/t/5734) +1. [Counting Immutable Beans: Reference Counting Optimized for Purely Functional Programming](https://arxiv.org/abs/1908.05647) + +# Layout + +1. [Floorplan: Spatial Layout in Memory Management Systems](https://conf.researchr.org/details/gpce-2019/gpce-2019-papers/6/Floorplan-Spatial-Layout-in-Memory-Management-Systems) + +# Garbage collection + +1. [The Garbage Collection Handbook](http://gchandbook.org/) +1. [Baby's First Garbage Collector](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/) + +# Reference + +1. [Relative Pointers](https://www.gingerbill.org/article/2020/05/17/relative-pointers/) +1. [Scopes Describe Frames: A Uniform Model for Memory Layout in Dynamic Semantics](http://drops.dagstuhl.de/opus/volltexte/2016/6114/) +1. https://uridiumauthor.blogspot.com/2018/06/memory-management.html +1. https://github.com/mtrebi/memory-allocators +1. http://www.newlisp.org/MemoryManagement.html +1. http://gee.cs.oswego.edu/dl/html/malloc.html +1. https://shipilev.net/blog/2014/jmm-pragmatics/ +1. https://floooh.github.io/2018/06/17/handles-vs-pointers.html +1. https://www.codemag.com/Article/1807051/Introducing-.NET-Core-2.1-Flagship-Types-Span-T-and-Memory-T +1. https://stefansf.de/post/pointers-are-more-abstract-than-you-might-expect/ +1. [Memory Management Reference](https://www.memorymanagement.org/) +1. [Pseudomonarchia jemallocum: The false kingdom of jemalloc, or On exploiting the jemalloc memory manager](http://phrack.com/issues/68/10.html#article) +1. https://gankro.github.io/blah/rust-layouts-and-abis/ +1. https://paul.bone.id.au/2018/10/19/gc-falsehoods/ +1. [Safe Programming with Pointers through Stateful Views](https://www.cs.bu.edu/~hwxi/academic/papers/padl05.pdf) + diff --git a/documentation/bookmark/Optics (eg lenses & prisms).md b/documentation/bookmark/Optics (eg lenses & prisms).md new file mode 100644 index 000000000..6f7acb5ca --- /dev/null +++ b/documentation/bookmark/Optics (eg lenses & prisms).md @@ -0,0 +1,24 @@ +# Reference + +1. [Profunctor optics, a categorical update](https://arxiv.org/abs/2001.07488) +1. [On Lawful Lenses](https://blog.statebox.org/on-lawful-lenses-6e18a1e17bdf) +1. https://medium.com/urbint-engineering/haskell-lens-operator-onboarding-a235481e8fac +1. https://fstarlang.github.io/general/2018/01/12/lens-indexed-lenses.html +1. [Jeremy Gibbons - Profunctor Optics Modular Data Accessors](https://www.youtube.com/watch?v=sfWzUMViP0M &&& http://www.cs.ox.ac.uk/people/jeremy.gibbons/publications/poptics.pdf) +1. http://hackage.haskell.org/package/profunctors-3.3.0.1/docs/Data-Profunctor.html +1. https://github.com/purescript-contrib/purescript-profunctor-lenses +1. https://hackage.haskell.org/package/lens-4.16/docs/Control-Lens-Indexed.html +1. http://oleg.fi/gists/posts/2017-04-18-glassery.html +1. http://oleg.fi/gists/posts/2017-12-23-functor-optics.html +1. [Edward Kmett - Monad Transformer Lenses](https://www.youtube.com/watch?v=Bxcz23GOJqc) +1. [Brian McKenna - Productionisation of Functional Optics](https://www.youtube.com/watch?v=H01dw-BMmlE) +1. [YOW! Lambda Jam 2017 Ken Scambler - Lenses for the Masses – Introducing Goggles](https://www.youtube.com/watch?v=oIhdOqaKSEg) +1. https://bartoszmilewski.com/2017/07/07/profunctor-optics-the-categorical-view/ +1. [Profunctor Optics: The Categorical Approach - Bartosz Milewski](https://www.youtube.com/watch?v=l1FCXUi6Vlw) +1. https://calmm-js.github.io/partial.lenses/ +1. http://evincarofautumn.blogspot.com/2016/01/thoughts-on-using-fractional-types-to.html +1. https://www.slideshare.net/davidoverton/comonad +1. http://codingismycraft.com/index.php/2017/10/04/adding-descriptors-to-your-python-arsenal/ +1. https://blog.jle.im/entry/lenses-products-prisms-sums.html +1. http://www.philipzucker.com/lens-as-a-divisibility-relation-goofin-off-with-the-algebra-of-types/ + diff --git a/documentation/bookmark/Optimization.md b/documentation/bookmark/Optimization.md new file mode 100644 index 000000000..e31686963 --- /dev/null +++ b/documentation/bookmark/Optimization.md @@ -0,0 +1,38 @@ +# Pre-fetching + +1. [Prefetching in Functional Languages](https://www.cl.cam.ac.uk/~tmj32/papers/docs/ainsworth20-ismm.pdf) + +# Partial evaluation + +1. [AnyDSL - A Partial Evaluation Framework for Programming High-Performance Libraries](https://anydsl.github.io/) + +# For the compiler + +1. [Self Hosting a Million-Lines-Per-Second Parser](https://bjou-lang.org/blog/7-10-2019-self-hosting-a-million-lines-per-second-parser/7-10-2019-self-hosting-a-million-lines-per-second-parser.html) + +# Reference + +1. [Compiler Detection of Function Call Side Effects](https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=B3D92D05C88C3D9C165785594350C169?doi=10.1.1.70.2096&rep=rep1&type=pdf) +1. [A Language for Describing Optimization Strategies](https://arxiv.org/abs/2002.02268) +1. https://docs.google.com/presentation/d/1tpeJZFObkeick4CF-mx0L3CeCgvT15B96aJeRpxEPcE/preview?slide=id.p +1. https://www.quora.com/What-is-the-future-of-optimizing-compilers?share=1 +1. https://advancedweb.hu/2016/05/27/jvm_jit_optimization_techniques/ &&& https://advancedweb.hu/2016/06/28/jvm_jit_optimization_techniques_part_2/ +1. http://www.scala-native.org/en/latest/blog/interflow.html +1. https://github.com/roman01la/closure-compiler-handbook +1. http://hubicka.blogspot.com/2018/06/gcc-8-link-time-and-interprocedural.html +1. [CppCon 2017: Matt Godbolt “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid”](https://www.youtube.com/watch?v=bSkpMdDe4g4) +1. http://duriansoftware.com/joe/Optimizing-is-multiple-checks-with-modular-arithmetic.html? +1. https://www.ericsson.com/research-blog/outperforming-state-art-compilers-unison/ +1. http://compileroptimizations.com/index.html +1. https://polly.llvm.org/ +1. http://paulcavallaro.com/blog/optimizing-function-placement-with-call-chain-clustering/ +1. http://leto.net/docs/C-optimization.php +1. https://engineering.purdue.edu/~eigenman/ECE663/Handouts/bacon-compiling4hpc.pdf +1. http://venge.net/graydon/talks/CompilerTalk-2019.pdf +1. http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/6620/pdf/imm6620.pdf +1. [Lost in translation: Exposing hidden compiler optimization opportunities](https://arxiv.org/pdf/1903.11397.pdf) +1. https://kristerw.blogspot.com/2019/04/how-llvm-optimizes-geometric-sums.html +1. https://nfrechette.github.io/2019/05/08/sign_flip_optimization/ +1. https://grin-tech.github.io/ +1. [Loop Optimizations in LLVM - Michael Kruse](https://www.youtube.com/watch?v=oAPgGYr8T3Y) + diff --git a/documentation/bookmark/Probabilistic data-structure.md b/documentation/bookmark/Probabilistic data-structure.md new file mode 100644 index 000000000..f7c025de2 --- /dev/null +++ b/documentation/bookmark/Probabilistic data-structure.md @@ -0,0 +1,32 @@ +# Hash function + +1. http://fastcompression.blogspot.com/2019/03/presenting-xxh3.html +1. http://cyan4973.github.io/xxHash/ + +# Reference + +1. [Xor Filters: Faster and Smaller Than Bloom Filters](https://lemire.me/blog/2019/12/19/xor-filters-faster-and-smaller-than-bloom-filters/) +1. [Morton Filters: Faster, Space-Efficient Cuckoo Filters via Biasing, Compression, and Decoupled Logical Sparsity](http://www.vldb.org/pvldb/vol11/p1041-breslow.pdf) +1. https://github.com/efficient/SuRF +1. https://medium.com/orbs-network/constructing-bloom-filters-without-false-positives-7aaf50b92f3b +1. https://welcometotheoryland.wordpress.com/2017/10/19/what-is-a-hash-function-it-depends-on-whos-speaking/ +1. http://docs.pipelinedb.com/probabilistic.html +1. [Probabilistic Data Structures](https://www.youtube.com/watch?v=F7EhDBfsTA8) +1. http://www.i-programmer.info/programming/theory/4641-the-invertible-bloom-filter.html +1. https://github.com/seiflotfy/hyperbitbit +1. https://blog.yld.io/2017/04/19/hyperloglog-a-probabilistic-data-structure/#.WPtT_R_6zCI +1. http://www.partow.net/programming/bloomfilter/idx.html +1. https://github.com/pawandubey/cuckoo_filter +1. https://cloud.google.com/blog/big-data/2017/07/counting-uniques-faster-in-bigquery-with-hyperloglog +1. https://blog.dataweave.com/using-probabilistic-data-structures-to-build-real-time-monitoring-dashboards-25b17c968c08 +1. https://bdupras.github.io/filter-tutorial/ +1. https://sagi.io/2017/07/bloom-filters-for-the-perplexed/ +1. https://www.somethingsimilar.com/2012/05/21/the-opposite-of-a-bloom-filter/ +1. https://github.com/splatlab/cqf +1. [LogLog-Beta and More: A New Algorithm for Cardinality Estimation Based on LogLog Counting](https://arxiv.org/ftp/arxiv/papers/1612/1612.02284.pdf) +1. https://blog.acolyer.org/2017/08/08/a-general-purpose-counting-filter-making-every-bit-count/ +1. [Ode on a Random Urn (Functional Pearl)](https://www.youtube.com/watch?v=O37FMxLxm78) +1. http://smalldatum.blogspot.com/2018/09/bloom-filter-and-cuckoo-filter.html +1. https://hackernoon.com/cuckoo-filter-vs-bloom-filter-from-a-gophers-perspective-94d5e6c53299 +1. https://github.com/axiomhq/hyperminhash + diff --git a/documentation/bookmark/Procedural generation.md b/documentation/bookmark/Procedural generation.md new file mode 100644 index 000000000..40553176b --- /dev/null +++ b/documentation/bookmark/Procedural generation.md @@ -0,0 +1,4 @@ +# Fractional Brownian Motion + +1. http://iquilezles.org/www/articles/fbm/fbm.htm + diff --git a/documentation/bookmark/Recursion schemes.md b/documentation/bookmark/Recursion schemes.md new file mode 100644 index 000000000..fe65ffca6 --- /dev/null +++ b/documentation/bookmark/Recursion schemes.md @@ -0,0 +1,16 @@ +# Reference + +1. http://maartenfokkinga.github.io/utwente/mmf91m.pdf +1. http://blog.sumtypeofway.com/an-introduction-to-recursion-schemes/ +1. http://blog.sumtypeofway.com/recursion-schemes-part-2/ +1. http://blog.sumtypeofway.com/recursion-schemes-part-iii-folds-in-context/ +1. http://blog.sumtypeofway.com/recursion-schemes-part-iv-time-is-of-the-essence/ +1. http://comonad.com/reader/2009/recursion-schemes/ +1. [Peeling the Banana: Recursion Schemes from First Principles - Zainab Ali](https://www.youtube.com/watch?v=XZ9nPZbaYfE) +1. https://github.com/passy/awesome-recursion-schemes +1. [YOW! Lambda Jam 2018 - Amy Wong - Introduction to recursion scheme](https://www.youtube.com/watch?v=YnqPdlJd38o) +1. https://bartoszmilewski.com/2018/08/20/recursion-schemes-for-higher-algebras/ +1. https://blog.sumtypeofway.com/recursion-schemes-part-6-comonads-composition-and-generality/ +1. https://chrilves.github.io/hugo/posts/recursion_schemes_intro/ +1. [Recursion Schemes: A Field Guide (Redux)](http://comonad.com/reader/2009/recursion-schemes/) + diff --git a/documentation/bookmark/Security.md b/documentation/bookmark/Security.md new file mode 100644 index 000000000..b9d45faff --- /dev/null +++ b/documentation/bookmark/Security.md @@ -0,0 +1,95 @@ +# Homomorphic encryption + +1. https://github.com/Microsoft/SEAL + +# Privacy + +1. https://privacypatterns.org/ + +# Inspiration + +1. [Kasm: Desktop and Browser Isolation Platform](https://www.kasmweb.com/) +1. https://www.mailvelope.com + +# Finger-printing + +1. [How Browser Fingerprinting Works](https://kevq.uk/how-browser-fingerprinting-works/) +1. https://github.com/Valve/fingerprintjs2 + +# Access Control List + +1. [Capirca: Multi-platform ACL generation system](https://github.com/google/capirca) + +# Return-oriented programming + +1. https://github.com/immunant/selfrando + +# Static analysis + +1. [Cam Tenny - Beyond the Paper - End-to-End Program Analysis](https://www.youtube.com/watch?v=hmDz0Rv6hKI) +1. https://www.curry-on.org/2019/sessions/beyond-the-paper-end-to-end-program-analysis.html + +# Programming language + +1. [Secure Compilation](https://blog.sigplan.org/2019/07/01/secure-compilation/) + +# Cautionary tale + +1. [Thou Shalt Not Depend on Me: A look at JavaScript libraries in the wild](https://queue.acm.org/detail.cfm?id=3205288) +1. https://medium.com/@nodepractices/were-under-attack-23-node-js-security-best-practices-e33c146cb87d + +# Surface area + +1. [Towards Automated Application-Specific Software Stacks](https://arxiv.org/pdf/1907.01933.pdf) + +# Vulnerability + +1. [Against Cipher Agility in Cryptography Protocols](https://paragonie.com/blog/2019/10/against-agility-in-cryptography-protocols) +1. [Padding the struct: How a compiler optimization can disclose stack memory](https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2019/october/padding-the-struct-how-a-compiler-optimization-can-disclose-stack-memory/) +1. [PCG generators are easily “crackable”](https://news.ycombinator.com/item?id=21475210) +1. [Safely Creating And Using Temporary Files](https://www.netmeister.org/blog/mktemp.html) +1. [CSS Injection Primitives](https://x-c3ll.github.io/posts/CSS-Injection-Primitives/) +1. https://medium.com/@shnatsel/how-rusts-standard-library-was-vulnerable-for-years-and-nobody-noticed-aebf0503c3d6 +1. [ACLs don’t](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.406.4684&rep=rep1&type=pdf) +1. https://www.cs.auckland.ac.nz/~pgut001/pubs/book.pdf +1. https://pwnedkeys.com/ +1. [What Spectre Means for Lanugage Implementers - Ben Titzer - PLISS 2019](https://www.youtube.com/watch?v=FGX-KD5Nh2g) +1. https://rambleed.com/ +1. https://browserleaks.com/ + +# Reference + +1. [Don't get pwned: practicing the principle of least privilege](https://cloud.google.com/blog/products/identity-security/dont-get-pwned-practicing-the-principle-of-least-privilege) +1. [Good Practices for Capability URLs](https://www.w3.org/TR/capability-urls/) +1. [Secure Socket API](https://securesocketapi.org/) +1. [Mind your Language(s): A discussion about languages and security](https://www.ssi.gouv.fr/uploads/IMG/pdf/Mind_Your_Languages_-_version_longue.pdf) +1. https://www.microsoft.com/en-us/research/blog/scaling-the-everest-of-software-security-with-dr-jonathan-protzenko/ +1. https://www.owasp.org/index.php/Main_Page +1. https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project +1. https://wiki.sei.cmu.edu/confluence/display/seccode/Top+10+Secure+Coding+Practices +1. https://www.archive.ece.cmu.edu/~grey/ +1. http://www.cs.umd.edu/projects/PL/selinks/ +1. http://www.cis.upenn.edu/~stevez/sol/related.html +1. https://www.bsimm.com/ +1. https://www.microsoft.com/en-us/securityengineering/sdl/ +1. https://www.engineeringtrustworthysystems.com/ +1. http://www.ats-lang.org/ +1. http://www.cis.upenn.edu/~stevez/papers/publications.html +1. http://collingreene.com/6_buckets_of_prodsec.html +1. [On Post-Compromise Security](https://eprint.iacr.org/2016/221.pdf) +1. https://messaginglayersecurity.rocks/ +1. https://github.blog/2019-05-23-introducing-new-ways-to-keep-your-code-secure/ +1. [RustBelt](https://plv.mpi-sws.org/rustbelt/popl18/) +1. https://github.com/dckc/awesome-ocap +1. https://projects.csail.mit.edu/jeeves/ +1. https://www.sans.org/top25-software-errors/ +1. https://www.owasp.org/index.php/Top_10_2013-Top_10 +1. https://nvd.nist.gov/cwe.cfm +1. https://en.wikipedia.org/wiki/Software_Development_Security +1. http://gigi.nullneuron.net/gigilabs/the-sorry-state-of-the-web-in-2016/ +1. http://www.ranum.com/security/computer_security/editorials/dumb/index.html +1. [Information Technology — Programming languages — Guidance to avoiding vulnerabilities in programming languages](http://www.open-std.org/jtc1/sc22/wg23/docs/ISO-IECJTC1-SC22-WG23_N0751-tr24772-1-after-pre-meeting-51-webex-20171016.pdf) + +# Control-flow integrity +1. [On the Effectiveness of Type-based Control Flow Integrity](https://sajjadium.github.io/files/acsac2018typecfi_paper.pdf) + diff --git a/documentation/bookmark/Software Reliability Engineering (SRE).md b/documentation/bookmark/Software Reliability Engineering (SRE).md new file mode 100644 index 000000000..bd6a8443b --- /dev/null +++ b/documentation/bookmark/Software Reliability Engineering (SRE).md @@ -0,0 +1,4 @@ +# Reference + +1. [A Case Study in Community-Driven Software Adoption](http://landing.google.com/sre/resources/practicesandprocesses/case-study-community-driven-software-adoption/) + diff --git a/documentation/bookmark/Statistical Programming Languages.md b/documentation/bookmark/Statistical Programming Languages.md new file mode 100644 index 000000000..e3127c1c9 --- /dev/null +++ b/documentation/bookmark/Statistical Programming Languages.md @@ -0,0 +1,4 @@ +# Reference + +1. [Statistical programming languages](https://www.refsmmat.com/notebooks/stats-langs.html) + diff --git a/documentation/bookmark/Testing.md b/documentation/bookmark/Testing.md new file mode 100644 index 000000000..32d47ea8d --- /dev/null +++ b/documentation/bookmark/Testing.md @@ -0,0 +1,12 @@ +# Concolic Testing + +1. [Robby Findler: Concolic Testing with Higher-Order Inputs](https://www.youtube.com/watch?v=aO9nOCqNdfQ) + +# Symbolic + +1. [Crux](https://crux.galois.com/) + +# White box + +1. [Ricardo Peña - White-Box Path Generation in Recursive Programs - Lambda Days 2020](https://www.youtube.com/watch?v=7RXJhPaQCkc) + diff --git a/documentation/bookmark/Type theory/Dependent types.md b/documentation/bookmark/Type theory/Dependent types.md new file mode 100644 index 000000000..84d739492 --- /dev/null +++ b/documentation/bookmark/Type theory/Dependent types.md @@ -0,0 +1,43 @@ +# Exemplar + +1. [A simple type-theoretic language: Mini-TT](http://www.cse.chalmers.se/~bengt/papers/GKminiTT.pdf) +1. https://cedille.github.io/ + +# Reference + +1. [Thorsten Altenkirch - The power of Π - Lambda Days 2020](https://www.youtube.com/watch?v=3zT5eVHpQwA) +1. [A Path To DOT: Formalizing Fully Path-Dependent Types](https://arxiv.org/abs/1904.07298) +1. [Ghosts of Departed Proofs (Functional Pearl)](https://www.youtube.com/watch?v=2cAxOJEiL00) +1. [Ghosts of Departed Proofs (Functional Pearl)](https://kataskeue.com/gdp.pdf) +1. [F# Linear algebra with type-level dimensions and static checks](https://notebooks.azure.com/allisterb/projects/sylvester/html/Sylvester.Tensors.ipynb) +1. [From Scheme to Dependent Types in 100 lines by Gershom Bazerman](https://vimeo.com/134561872 &&& https://vimeo.com/135746080) +1. [A Tutorial Implementation of a Dependently Typed Lambda Calculus](https://www.andres-loeh.de/LambdaPi/) +1. [The calculus of constructions](http://www.sciencedirect.com/science/article/pii/0890540188900053#) +1. https://www.idris-lang.org/ +1. https://www.amazon.com/Type-driven-Development-Idris-Edwin-Brady/dp/1617293024/ +1. http://blog.codersbase.com/posts/2013-12-03-learning-dependent-types.html +1. http://oxij.org/note/BrutalDepTypes/ +1. https://hydraz.club/posts/2017-09-08.html +1. [Hoare Type Theory, Polymorphism and Separation](http://ynot.cs.harvard.edu/papers/jfpsep07.pdf) +1. ["Dependent Types in Haskell" by Stephanie Weirich](https://www.youtube.com/watch?v=wNa3MMbhwS4) +1. [A Little Bit of Dependent Types](https://youtu.be/WI8uA4KjQJk?t=5169) +1. [Type Checking Without Types](https://matthias.benkard.de/typecore/typecore.pdf) +1. [Cubical Type Theory: a constructive interpretation of the univalence axiom](http://www.cse.chalmers.se/~coquand/cubicaltt.pdf) +1. https://github.com/mortberg/cubicaltt +1. https://leanprover.github.io/introduction_to_lean/ +1. [Infinity](https://github.com/groupoid/infinity) +1. https://github.com/groupoid +1. http://groupoid.space/ +1. https://existentialtype.wordpress.com/2016/07/31/cubical-higher-type-theory-as-a-programming-language/ +1. https://github.com/silt-lang/silt +1. [Parametric Quantifiers for Dependent Type Theory](https://people.cs.kuleuven.be/~andreas.nuyts/ParametricQuantifiers.pdf &&& https://www.youtube.com/watch?v=lJB5MhYJ4Js) +1. [A Specification for Dependently-Typed Haskell:](http://www.seas.upenn.edu/~sweirich/papers/systemd-submission.pdf) +1. [A Specification for Dependent Types in Haskell](http://www.seas.upenn.edu/~sweirich/papers/systemd-submission.pdf &&& https://cs.brynmawr.edu/~rae/papers/2017/dep-haskell-spec/dep-haskell-spec.pdf &&& https://www.youtube.com/watch?v=0157rUxC4_8) +1. [Normalization by Evaluation for Sized Dependent Types](http://publications.lib.chalmers.se/records/fulltext/252072/local_252072.pdf &&& https://www.youtube.com/watch?v=uSP91COE_ZA) +1. https://bluishcoder.co.nz/2018/01/03/writing-basic-proofs-in-ats.html +1. [AN INTRODUCTION TO UNIVALENT FOUNDATIONS FOR MATHEMATICIANS](http://www.ams.org/journals/bull/2018-55-04/S0273-0979-2018-01616-9/S0273-0979-2018-01616-9.pdf) +1. https://medium.com/@maiavictor/about-induction-on-the-calculus-of-constructions-581fcfdb89c5 +1. [05 A Dependent Haskell Triptych](https://www.youtube.com/watch?v=soKl1IslU-I) +1. https://cs.ru.nl/~wouters/Publications/ThePowerOfPi.pdf +1. [Algebraic Presentations of Dependent Type Theories](https://arxiv.org/abs/1602.08504v3) + diff --git a/documentation/bookmark/Type theory/Row polymorphism.md b/documentation/bookmark/Type theory/Row polymorphism.md new file mode 100644 index 000000000..3194405ff --- /dev/null +++ b/documentation/bookmark/Type theory/Row polymorphism.md @@ -0,0 +1,4 @@ +# Reference + +1. [Row Polymorphism without the Jargon](https://jadon.io/blog/row-polymorphism) + diff --git a/documentation/bookmark/architecture/microservice.md b/documentation/bookmark/architecture/microservice.md new file mode 100644 index 000000000..ab15c99de --- /dev/null +++ b/documentation/bookmark/architecture/microservice.md @@ -0,0 +1,3 @@ +# Reference + +1. [Convey - a simple recipe for .NET Core microservices.](https://www.youtube.com/watch?v=cxEXx4UT1FI) diff --git a/documentation/bookmark/back-end/Python.md b/documentation/bookmark/back-end/Python.md new file mode 100644 index 000000000..5a3266107 --- /dev/null +++ b/documentation/bookmark/back-end/Python.md @@ -0,0 +1,4 @@ +# Platform + +1. [BeeWare: Write once. Deploy everywhere.](https://beeware.org/) + diff --git a/documentation/bookmark/back-end/WebAssembly (WASM).md b/documentation/bookmark/back-end/WebAssembly (WASM).md new file mode 100644 index 000000000..4e6487d85 --- /dev/null +++ b/documentation/bookmark/back-end/WebAssembly (WASM).md @@ -0,0 +1,33 @@ +# Exemplar + +1. [Announcing GraalWasm — a WebAssembly engine in GraalVM](https://medium.com/graalvm/announcing-graalwasm-a-webassembly-engine-in-graalvm-25cd0400a7f2) +1. [Towards a WebAssembly standalone runtime on GraalVM](https://dl.acm.org/citation.cfm?id=3362780) +1. https://github.com/vvanders/wasm_lua +1. https://github.com/AppCypher/webassemblylanguages +1. https://medium.com/perlin-network/life-a-secure-blazing-fast-cross-platform-webassembly-vm-in-go-ea3b31fa6e09 + +# Reference + +1. https://bytecodealliance.org/ +1. [Faster Fractals with Multi-Threaded WebAssembly](https://blog.scottlogic.com/2019/07/15/multithreaded-webassembly.html) +1. https://blog.scottlogic.com/2018/07/20/wasm-future.html +1. http://fitzgeraldnick.com/2018/04/26/how-does-dynamic-dispatch-work-in-wasm.html +1. https://hacks.mozilla.org/2018/03/making-webassembly-better-for-rust-for-all-languages/ +1. https://webassembly.github.io/ +1. https://github.com/WebAssembly/spec/blob/md-proto/md-proto/WebAssembly.md +1. https://github.com/WebAssembly/binaryen +1. [NYLUG Presents: Luke Wagner -on- WebAssembly: A New Compiler Target For The Web](https://www.youtube.com/watch?v=RByPdCN1RQ4) +1. https://binji.github.io/2017/03/05/webassembly-type-checking.html +1. https://github.com/WebAssembly/spec/tree/master/interpreter +1. https://mbebenita.github.io//WasmExplorer/ +1. http://thecodebarbarian.com/getting-started-with-webassembly-in-node.js.html +1. http://blog.seraum.com/compiling-javascript-to-webassembly-wasm-or-asm-js-with-nectarjs +1. https://hacks.mozilla.org/2017/07/memory-in-webassembly-and-why-its-safer-than-you-think/ +1. [Using WebAssembly and Threads (Chrome Dev Summit 2018)](https://www.youtube.com/watch?v=zgOGZgAPUjQ) +1. https://github.com/wasmerio/wasmer +1. https://www.fastly.com/blog/announcing-lucet-fastly-native-webassembly-compiler-runtime +1. https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ +1. https://cybernetist.com/2019/04/25/wasm-universal-application-runtime/ +1. https://github.com/intel/wasm-micro-runtime +1. https://medium.com/wasmer/running-webassembly-on-the-kernel-8e04761f1d8e + diff --git a/documentation/bookmark/back-end/native.md b/documentation/bookmark/back-end/native.md new file mode 100644 index 000000000..ec1ba689d --- /dev/null +++ b/documentation/bookmark/back-end/native.md @@ -0,0 +1,125 @@ +# Call stack + +1. http://stffrdhrn.github.io/software/embedded/openrisc/2018/06/08/gcc_stack_frames.html +1. https://yurichev.com/blog/reg_alloc/ + +# Unicode + +1. http://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/ +1. https://garbagecollected.org/2013/03/15/reverse-strings-like-a-pro/ +1. http://reedbeta.com/blog/programmers-intro-to-unicode/ +1. https://mathiasbynens.be/notes/javascript-unicode +1. http://www.daemonology.net/blog/2008-06-05-faster-utf8-strlen.html +1. https://haxe.org/blog/unicode/ +1. http://justinblank.com/notebooks/stringrepresentationsandstringapis.html + +# Shell + +1. https://github.com/dylanaraps/pure-bash-bible + +# Platforms + +1. https://github.com/neutralinojs/neutralinojs + +# Concurrency + +1. https://github.com/hnes/libaco + +# Numeric operation + +1. https://github.com/ridiculousfish/libdivide +1. https://lemire.me/blog/2019/02/08/faster-remainders-when-the-divisor-is-a-constant-beating-compilers-and-libdivide/ + +# Optimization + +1. http://ssw.jku.at/General/Staff/Leopoldseder/manlang2018-fast_path_unrolling_authorpreprint.pdf + +# Foreign function interface (FFI) + +1. https://github.com/swig/swig +1. http://www.swig.org/ +1. http://www.swig.org/Doc2.0/Go.html +1. https://begriffs.com/posts/2019-01-19-inside-c-standard-lib.html +1. https://www.amazon.com/Standard-C-Library-P-J-Plauger/dp/0131315099 + +# Graal + +1. https://www.newtv.co.th/video/video.php?v=topKYJgv6qA + +# Floating point arithmetic + +1. [Accurate Differences of Products with Kahan's Algorithm](https://pharr.org/matt/blog/2019/11/03/difference-of-floats.html) +1. https://floating-point-gui.de/ +1. [Faster floating point arithmetic with Exclusive OR](http://nfrechette.github.io/2019/10/22/float_xor_optimization/) +1. https://oded.ninja/2017/05/01/floating-point/ +1. [What Every Computer Scientist Should Know About Floating-Point Arithmetic](http://www.lsi.upc.edu/~robert/teaching/master/material/p5-goldberg.pdf) +1. https://lemire.me/blog/2017/11/16/fast-exact-integer-divisions-using-floating-point-operations/ + +# Reference + +1. [Executables - Linking and Loading](https://github.com/MattPD/cpplinks/blob/master/executables.linking_loading.md) +1. http://luajit.org/ +1. http://luajit.org/ext_ffi.html +1. http://luajit.org/dynasm.html +1. [The Standard C Library](https://www.amazon.com/Standard-C-Library-P-J-Plauger/dp/0131315099) +1. [C Is Not a Low-level Language: Your computer is not a fast PDP-11.](https://queue.acm.org/detail.cfm?id=3212479) +1. http://www.ffconsultancy.com/ocaml/hlvm/ +1. https://nullprogram.com/blog/2018/05/27/ +1. https://github.com/dyu/ffi-overhead +1. https://ivorylang.org/ivory-introduction.html +1. http://blog.llvm.org/2018/03/dragonffi-ffijit-for-c-language-using.html +1. https://internals.rust-lang.org/t/refactoring-std-for-ultimate-portability/4301 +1. https://blog.plan99.net/kotlin-native-310ffac94af2 +1. https://blog.jetbrains.com/kotlin/2017/12/kotlinnative-v0-5-released-calling-kotlin-from-swift-and-c-llvm-5-and-more/ +1. https://readytalk.github.io/avian/ +1. https://medium.com/@octskyward/kotlin-native-310ffac94af2#.xbcxqlm1w +1. https://www.infoq.com/presentations/clojure-scheme +1. https://github.com/ollef/sixten +1. https://software.intel.com/sites/landingpage/IntrinsicsGuide/ +1. https://llvllatrix.wordpress.com/2016/12/31/system-calls-for-developers/ +1. http://www.cipht.net/2017/10/03/are-jump-tables-always-fastest.html +1. https://github.com/libuv/libuv +1. https://www.threadingbuildingblocks.org/ +1. https://cafbit.com/post/tokio_internals/ +1. https://medium.com/@unmeshvjoshi/how-java-thread-maps-to-os-thread-e280a9fb2e06 +1. http://pixielang.org/ +1. https://github.com/pixie-lang/pixie +1. https://github.com/rust-lang/rust +1. http://ziglang.org/# +1. http://www.mpfr.org/ +1. http://www.mpfr.org/algorithms.pdf +1. http://wilsonminesco.com/16bitMathTables/ +1. http://blog.veitheller.de/Fixed_Point_Division.html +1. http://libdivide.com/ +1. [Modern Computer Arithmetic](https://members.loria.fr/PZimmermann/mca/mca-cup-0.5.9.pdf) +1. [Division by Invariant Integers using Multiplication](https://gmplib.org/~tege/divcnst-pldi94.pdf) +1. https://lion137.blogspot.com/2019/02/borneo-language-102.html +1. https://www.youtube.com/watch?v=N0JTvyCxiv8 +1. http://robert.ocallahan.org/2017/02/what-rust-can-do-that-other-languages.html +1. https://github.com/graalvm/truffleruby/blob/master/doc/user/svm.md +1. http://bellard.org/libbf/ +1. http://paulcavallaro.com/blog/hashed-and-hierarchical-timing-wheels/ +1. http://speleotrove.com/decimal/ +1. http://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking +1. [Skip the FFI!](http://llvm.org/devmtg/2014-10/Slides/Skip%20the%20FFI.pdf) +1. http://www.infoworld.com/article/3187370/application-development/kotlin-compiles-directly-to-native-code-via-llvm.html +1. https://blog.jetbrains.com/kotlin/2017/04/kotlinnative-tech-preview-kotlin-without-a-vm/ +1. https://github.com/bugvm/bugvm +1. https://github.com/rampantpixels/rpmalloc +1. https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html +1. http://web.stanford.edu/group/sequoia/ +1. https://hackernoon.com/experimenting-with-small-buffer-optimization-for-c-lambdas-d5b703fb47e4 +1. https://www.microsoft.com/en-us/research/wp-content/uploads/2017/03/kedia2017mem.pdf +1. https://github.com/tomhrr/dale +1. [Fast String Searching](https://pdfs.semanticscholar.org/d991/2ea262986794e29e3f15e5f8930d42f2ced4.pdf) +1. https://github.com/apple/swift/blob/master/docs/StringManifesto.md +1. http://home.pipeline.com/~hbaker1/CheneyMTA.html +1. [Position: Lightweight static resources 0Sexy types for embedded and systems programming](https://pdfs.semanticscholar.org/2368/ccf8c62ab981e2426cd698ba2229f3eca311.pdf?_ga=2.228359389.1990612643.1507689838-1658669397.1507689838) +1. http://homes.soic.indiana.edu/ccshan/tfp2007/talk.pdf +1. http://www.catb.org/esr/structure-packing/ +1. [Ahead Of Time (AOT) Internals](https://www.youtube.com/watch?v=n5DCg6M2MDM) +1. [Polyglot Native: Java, Scala, Kotlin, & JVM languages](https://www.youtube.com/watch?v=5BMHIeMXTqA) +1. https://ziviani.net/2017/functions-in-assembly +1. https://ziviani.net/2017/functions-in-assembly-ii +1. [Hashed and Hierarchical Timing Wheels: Data Structures for the Efficient Implementation of a Timer Facility](http://www.cs.columbia.edu/~nahum/w6998/papers/sosp87-timing-wheels.pdf) + diff --git a/documentation/bookmark/browser.md b/documentation/bookmark/browser.md new file mode 100644 index 000000000..7579e468b --- /dev/null +++ b/documentation/bookmark/browser.md @@ -0,0 +1,49 @@ +# Exemplar + +1. [Flow: The super fast, multithreaded HTML5 browser from Ekioh](https://www.ekioh.com/flow-browser/) +1. https://refresh.study/ +1. https://github.com/breach/breach_core +1. https://github.com/browserhtml/browserhtml +1. https://depolium.com/ +1. https://vivaldi.com/ +1. https://www.nidium.com/ +1. https://github.com/trevorlinton/webkit.js +1. https://www.epicbrowser.com/ +1. https://minbrowser.github.io/min/ +1. https://www.palemoon.org/ +1. https://github.com/beakerbrowser/webdb +1. https://github.com/beakerbrowser +1. https://github.com/nEXT-Browser/nEXT +1. https://techcrunch.com/2018/02/23/veil-is-private-browsing-for-the-ultra-paranoid/ +1. https://github.com/wexond/wexond +1. http://next.atlas.engineer +1. https://workona.com/ +1. https://luakit.github.io/ +1. https://www.thurrott.com/cloud/web-browsers/204669/opera-web-browser-is-reborn + +# Security + +1. https://developers.google.com/web/updates/2018/06/feature-policy +1. https://cure53.de/#browser-security-whitepaper +1. https://anon.cosheaf.com/ +1. [Secure Browser Architecture Based on Hardware Virtualization](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.664.9527&rep=rep1&type=pdf) +1. https://medium.com/personal-capital-tech-blog/why-we-write-post-only-apis-f15108fb6558 + +# Performance + +1. https://github.com/slightlyoff/never_slow_mode + +# Reference + +1. https://www.opera.com/gx +1. https://evertpot.com/tabs-are-the-wrong-abstraction/ +1. http://news.mit.edu/2018/system-patches-private-browsing-0223 +1. https://vivaldi.com/blog/vivaldi-makes-history/?hl=en-us&version=1.8.770.56&os=W10.0.14393 +1. https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/ +1. https://mozillagfx.wordpress.com/2017/09/21/introduction-to-webrender-part-1-browsers-today/ +1. https://noncombatant.org/2017/11/07/problems-of-urls/ +1. https://stoyannk.wordpress.com/2017/11/13/rendering-html-at-1000-fps-part-2/ +1. https://v8project.blogspot.com/2018/08/embedded-builtins.html +1. https://developers.google.com/web/updates/2018/09/inside-browser-part1 +1. https://addons.mozilla.org/en-US/firefox/addon/tree-style-tab/ + diff --git a/documentation/bookmark/chemistry.md b/documentation/bookmark/chemistry.md new file mode 100644 index 000000000..96feafe20 --- /dev/null +++ b/documentation/bookmark/chemistry.md @@ -0,0 +1,4 @@ +# Reference + +1. [Cando chemistry language](https://github.com/cando-developers/cando) + diff --git a/documentation/bookmark/cryptography.md b/documentation/bookmark/cryptography.md new file mode 100644 index 000000000..7eaf9cc9f --- /dev/null +++ b/documentation/bookmark/cryptography.md @@ -0,0 +1,60 @@ +# Constant-time programming + +1. [Constant-Time WebAssembly](https://github.com/PLSysSec/ct-wasm) +1. [Verifying Constant-Time Implementations](https://michael-emmi.github.io/papers/conf-uss-AlmeidaBBDE16.pdf) +1. https://www.bearssl.org/ctmul.html +1. [FaCT: A Flexible, Constant-Time Programming Language](https://cseweb.ucsd.edu/~dstefan/pubs/cauligi:2017:fact.pdf) +1. [FaCT: A DSL for Timing-Sensitive Computation](https://ranjitjhala.github.io/static/fact_dsl.pdf) +1. ["FaCT: A New Language for Constant-Time Programming" by Sunjay Cauligi](https://www.youtube.com/watch?v=kbn9UCRK2Qg) + +# Zero-knowledge proof + +1. ["Rhapsody in Zero Knowledge: Proving Without Revealing" by Tony Arcieri](https://www.youtube.com/watch?v=jKSz7W5dTgY) +1. [Zero-Knowledge Proofs: What are they, how do they work, and are they fast yet?](https://zkp.science/) + +# Hash + +1. [On future-proof cryptographic hashes](https://pascalprecht.github.io/posts/future-proofed-hashes-with-multihash/) + +# Library + +1. [zinc: Introduce minimal cryptography library](https://git.kernel.org/pub/scm/linux/kernel/git/zx2c4/linux.git/commit/?h=zinc) +1. https://joshlf.com/post/2018/11/06/introducing-mundane/ +1. https://github.com/akhawaja/ecc-crypto-helper +1. [Introducing CIRCL: An Advanced Cryptographic Library](https://blog.cloudflare.com/introducing-circl/) + +# Criticism + +1. [Fuck RSA](https://blog.trailofbits.com/2019/07/08/fuck-rsa/) + +# Reference + +1. [Sunjay Cauligi - Constant-time crypto programming with FaCT](https://www.youtube.com/watch?v=SSEHF_u79e4) +1. https://blog.acolyer.org/2018/07/06/oblix-an-efficient-oblivious-search-index/ +1. https://cryptography.pizza/ +1. [HACL∗: A Verified Modern Cryptographic Library](https://eprint.iacr.org/2017/536.pdf) +1. [How to Use Java Cryptography API Securely](https://www.youtube.com/watch?v=3HIdaSgxMlo) +1. [A Graduate Course in Applied Cryptography](http://toc.cryptotextbook.net/home) +1. https://github.com/InstantWebP2P/tweetnacl-java +1. https://github.com/kevinburke/nacl +1. https://github.com/miracl/MIRACL +1. https://github.com/open-quantum-safe/liboqs +1. https://www.bearssl.org/bigint.html +1. https://timtaubert.de/blog/2018/08/bitslicing-an-introduction/ +1. [CT-Wasm: Type-Driven Secure Cryptography for the Web Ecosystem](https://arxiv.org/abs/1808.01348) +1. https://arstechnica.com/information-technology/2013/10/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/ +1. https://medium.com/@dbkats/a-gentle-introduction-to-attribute-based-encryption-edca31744ac6 +1. https://cryptoswift.io/ + +# Language + +1. https://cryptol.net/ +1. [Formally Verified Cryptographic Web Applicationsin WebAssembly](https://eprint.iacr.org/2019/542.pdf) + +# Randomness extractor + +1. [An introduction to randomness extractors](https://cs.haifa.ac.il/~ronen/online_papers/ICALPinvited.pdf) + +# Homomorphic Encryption + +1. [Practical Homomorphic Encryption Over the Integers](https://arxiv.org/abs/1702.07588) diff --git a/documentation/bookmark/culture.md b/documentation/bookmark/culture.md new file mode 100644 index 000000000..5abdff8d5 --- /dev/null +++ b/documentation/bookmark/culture.md @@ -0,0 +1,3 @@ +# Reference + +1. [Five Worlds](https://www.joelonsoftware.com/2002/05/06/five-worlds/) diff --git a/documentation/bookmark/database.md b/documentation/bookmark/database.md new file mode 100644 index 000000000..2152dd124 --- /dev/null +++ b/documentation/bookmark/database.md @@ -0,0 +1,471 @@ +# Reference + +1. ["Temporal Databases for Streaming Architectures" by Jeremy Taylor and Jon Pither](https://www.youtube.com/watch?v=ykbYNBE-V3k) +1. ["Makings of a Modern ACID Compliant Distributed Database" by Attila Szegedi](https://www.youtube.com/watch?v=pn8mCeX3LDE) +1. https://edgedb.com/blog/a-path-to-a-10x-database/ +1. https://cstack.github.io/db_tutorial/ +1. http://www.sql-workbench.eu/dbms_comparison.html +1. http://www.interdb.jp/pg/index.html +1. [Foundations of Databases](http://webdam.inria.fr/Alice/) +1. https://medium.com/textileio/building-the-firebase-for-crdts-7dd8dea8953a + +# Data structure + +1. [The Concurrent 2-Trie](https://medium.com/@chrisvest/the-concurrent-2-trie-67deb2b57ba1) + +# Query + +1. [A Short Story About SQL’s Biggest Rival](https://www.holistics.io/blog/quel-vs-sql/) +1. https://calcite.apache.org/ +1. https://juxt.pro/blog/crux-sql +1. https://www.influxdata.com/blog/why-were-building-flux-a-new-data-scripting-and-query-language/ +1. https://crate.io/a/lab-notes-how-we-made-joins-23-thousand-times-faster-part-two/ +1. GC: A Graph Caching System for Subgraph/Supergraph Queries + + http://www.vldb.org/pvldb/vol11/p2022-wang.pdf +1. How to Architect a Query Compiler, Revisited + + https://www.cs.purdue.edu/homes/rompf/papers/tahboub-sigmod18.pdf +1. https://gql.today/ +1. Everything You Always Wanted to Know About Compiled and Vectorized Queries But Were Afraid to Ask + + http://www.vldb.org/pvldb/vol11/p2209-kersten.pdf +1. https://github.com/efficient/SuRF +1. http://www.try-alf.org/blog/2013-10-21-relations-as-first-class-citizen +1. https://icfp18.sigplan.org/event/hope-2018-papers-finding-fixed-points-faster +1. Froid: Optimization of Imperative Programs in a Relational Database + + http://www.vldb.org/pvldb/vol11/p432-ramachandra.pdf +1. Query Combinators + + https://arxiv.org/abs/1702.08409 +1. https://github.com/medmain/deepr +1. https://edgedb.com/blog/we-can-do-better-than-sql/ +1. https://github.com/ollef/sixten/blob/master/docs/QueryCompilerDriver.md + +# Optimization + +1. [Hera - High Efficiency Reliable Access to data stores](https://github.com/paypal/hera) +1. [Relaxed Operator Fusion for In-Memory Databases: Making Compilation, Vectorization, and Prefetching Work Together At Last](https://db.cs.cmu.edu/papers/2017/p1-menon.pdf) +1. https://medium.com/connect-the-dots/optimizing-queries-in-rethinkdb-584d7f660cb +1. https://blog.acolyer.org/2019/01/18/towards-a-hands-free-query-optimizer-through-deep-learning/ +1. http://blog.felipe.rs/2019/01/29/demystifying-join-algorithms/ +1. https://corecursive.com/030-rethinking-databases-with-jon-gjengset/ + +# Index + +1. https://www.pilosa.com/ +1. https://en.wikipedia.org/wiki/Fractal_tree_index +1. [Beating hash tables with trees? The ART-ful radix trie](https://www.the-paper-trail.org/post/art-paper-notes/) +1. https://www.ristret.com/s/gnd4yr/brief_history_log_structured_merge_trees +1. [Getting The Most Out Of Your PostgreSQL Indexes](https://pgdash.io/blog/postgres-indexes.html?p) +1. http://databasearchitects.blogspot.com/2019/05/why-use-learning-when-you-can-fit.html +1. https://priyankvex.wordpress.com/2019/05/19/a-tale-on-concatenated-indexes-master-roshi-and-gokus-fireside-chat/ + +# Relational Algebra + +1. https://slamdata.com/what-is-multidimensional-relational-algebra/ +1. https://github.com/slamdata/purescript-mra + +# Time traveling + +1. https://www.arangodb.com/2018/07/time-traveling-with-graph-databases/ + +# Data processing +1. https://medium.com/@gauthierleonard/apache-beam-a-unified-programming-model-for-data-processing-pipelines-4de9fb6ede6d + +# Philosophy +1. http://dhickey.ie/2016/01/03/commercial-suicide-integration-at-the-database-level/ + +# Storage + +1. [Understanding LSM Trees: What Powers Write-Heavy Databases](https://yetanotherdevblog.com/lsm/) +1. http://www.benstopford.com/2015/02/14/log-structured-merge-trees/ +1. A Comparison of Adaptive Radix Trees and Hash Tables + + https://bigdata.uni-saarland.de/publications/ARCD15.pdf +1. HashKV: Enabling Efficient Updates in KV Storage via Hashing + + https://www.usenix.org/system/files/conference/atc18/atc18-chan.pdf +1. https://akumuli.org/akumuli/2018/08/03/high-cardinality-support/ +1. Ideal Hash Trees + + https://github.com/papers-we-love/papers-we-love/blob/master/data_structures/ideal-hash-trees.pdf +1. https://clemenswinter.com/2018/08/13/how-read-100s-of-millions-of-records-per-second-from-a-single-disk/ +1. https://github.com/vmxdev/tkvdb +1. https://blog.acolyer.org/2018/09/28/columnstore-and-b-tree-are-hybrid-physical-designs-important/ +1. http://sergeiturukin.com/2017/06/07/storage-engine-introduction.html +1. https://accumulo.apache.org/ +1. http://www.mit.edu/~kepner/D4M/ +1. Achieving 100,000,000 database inserts per second using Accumulo and D4M + + http://www.ieee-hpec.org/2014/CD/index_htm_files/FinalPapers/31.pdf +1. Lambda World 2018 - The Radix Trees How IntMap Works - Tikhon Jelvis + + https://www.youtube.com/watch?v=0udjkEiCjog +1. FineLine: Log-structured Transactional Storage and Recovery + + http://www.vldb.org/pvldb/vol11/p2249-sauer.pdf +1. Storm: a fast transactional dataplane forremote data structures + + http://www.cs.technion.ac.il/~dan/papers/storm-systor-2019.pdf + +# Exemplar + +1. [Irmin](https://irmin.org/) +1. [Database of Databases](https://dbdb.io/) + +## General + +1. https://github.com/Workiva/eva/ +1. https://learndb.net/ +1. http://orientdb.com/ +1. https://ignite.apache.org/ +1. http://www.datomic.com/ +1. https://eventsourcing.com/ +1. https://geteventstore.com/ +1. http://cassandra.apache.org/ +1. https://kafka.apache.org/ +1. http://basho.com/products/riak-kv/ +1. https://www.influxdata.com/time-series-platform/influxdb/ +1. https://prestodb.io/ +1. https://github.com/mozilla/datomish +1. http://sqream.com/ +1. http://pelotondb.io/ +1. https://github.com/tidwall/summitdb +1. https://github.com/facebookincubator/beringei + + https://code.facebook.com/posts/952820474848503/beringei-a-high-performance-time-series-storage-engine +1. https://github.com/tonsky/datascript +1. https://github.com/biokoda/actordb +1. https://www.slashdb.com/ +1. https://realm.io/ +1. https://www.bigchaindb.com/ +1. http://samza.apache.org/ +1. https://www.umiacs.umd.edu/~zhangyp/papers/IntegriDB.pdf +1. https://github.com/PumpkinDB/PumpkinDB +1. https://symas.com/offerings/lightning-memory-mapped-database/ +1. http://gun.js.org/ +1. https://open.dgraph.io/post/benchmark-neo4j/ + + 1. https://github.com/dgraph-io/dgraph + 1. https://dgraph.io/ +1. https://www.spreadsheetdb.io/ +1. http://www.openio.io/ +1. https://github.com/pingcap/tidb +1. http://druid.io/ +1. http://hsqldb.org/ +1. http://siridb.net/blog/time-series-with-siridb/ +1. https://github.com/jankotek/mapdb +1. https://github.com/NationalSecurityAgency/lemongraph +1. https://twobithistory.org/2017/10/07/the-most-important-database.html +1. https://github.com/couchbase/forestdb +1. https://www.nuodb.com/ +1. https://edgedb.com/ +1. https://www.harperdb.io/ +1. https://www.antidotedb.eu/ +1. https://tech.marksblogg.com/minimalist-guide-tutorial-foundationdb.html +1. https://www.foundationdb.org/blog/announcing-document-layer/ +1. https://www.foundationdb.org/ + + 1. https://en.wikipedia.org/wiki/FoundationDB +1. https://github.com/orbitdb/orbit-db +1. https://www.aerospike.com/ +1. https://sirix.io/ + +## Data-flow + +1. [Noria: data-flow for high-performance web applications](https://github.com/mit-pdos/noria) + +## Graph + +1. https://github.com/hugegraph/hugegraph +1. https://github.com/Microsoft/GraphEngine +1. https://redislabs.com/blog/release-redisgraph-v1-0-preview/ +1. https://github.com/JanusGraph/janusgraph +1. https://www.slideshare.net/RoiLipman/graph-algebra +1. https://juxt.pro/crux/docs/index.html +1. https://github.com/juxt/crux +1. [The Crux of Bitemporality - Jon Pither](https://www.youtube.com/watch?v=3Stja6YUB94) + +## Column + +1. https://blog.acolyer.org/2018/09/26/the-design-and-implementation-of-modern-column-oriented-database-systems/ + +## Log + +1. https://code.fb.com/core-data/logdevice-a-distributed-data-store-for-logs/ + +## Key-Value + +1. https://github.com/yahoo/HaloDB +1. https://chronicle.software/products/map/ + +## Blockchain + +1. https://flur.ee/ + +## Time-series + +1. https://github.com/alpacahq/marketstore +1. https://www.outlyer.com/blog/why-not-to-build-a-time-series-database/ + +## GPU + +1. https://blazingdb.com/#/ + +## Tree + +1. A Novel Method for Representing Hierarchies in a Relational Database Using Bignums and SQLite + + https://s3.amazonaws.com/pub.xhuntley.net/Huntley_Tcl2011.pdf + +# CQRS | Event-Sourcing + +1. [Introducing Derivative Event Sourcing](https://www.confluent.io/blog/event-sourcing-vs-derivative-event-sourcing-explained) +1. https://blog.wallaroolabs.com/2018/06/implementing-time-windowing-in-an-evented-streaming-system/ +1. https://data-artisans.com/blog/a-practical-guide-to-broadcast-state-in-apache-flink +1. https://medium.com/@hugo.oliveira.rocha/what-they-dont-tell-you-about-event-sourcing-6afc23c69e9a +1. https://vvvvalvalval.github.io/posts/2018-11-12-datomic-event-sourcing-without-the-hassle.html +1. https://chriskiehl.com/article/event-sourcing-is-hard +1. https://medium.com/serialized-io/apache-kafka-is-not-for-event-sourcing-81735c3cf5c + +# Architecture + +1. https://www.sqlite.org/arch.html + +# Criticism + +1. https://codeburst.io/doing-without-databases-in-the-21st-century-6e25cf495373 + +# Geo-spatial + +1. H3: Uber’s Hexagonal Hierarchical Spatial Index + + https://eng.uber.com/h3/ +1. http://s2geometry.io/ +1. https://github.com/mourner/flatbush + +# Transaction +1. MixT: An embedded, domain-specific language for Mixed-Consistency Transactions + + https://mpmilano.github.io/MixT/ +1. The Case for Shared Nothing + + http://db.cs.berkeley.edu/papers/hpts85-nothing.pdf + +# Consistency + +1. https://jepsen.io/consistency +1. http://muratbuffalo.blogspot.com/2018/08/the-many-faces-of-consistency.html +1. https://fauna.com/blog/consistency-without-clocks-faunadb-transaction-protocol + +# P2P Networking + +1. https://medium.com/perlin-network/noise-an-opinionated-p2p-networking-stack-for-decentralized-protocols-in-go-bfc6fecf157d +1. https://xorro-p2p.github.io/ + +# Data Visualization + +1. https://www.tadviewer.com/ + +# Privacy + +1. https://blog.acolyer.org/2019/06/17/towards-multiverse-databases/ +1. [Towards Multiverse Databases](https://people.csail.mit.edu/malte/pub/papers/2019-hotos-multiversedb.pdf) + +# Security + +1. [The ZombieLoad Pragmatist: Tips for Surviving in a Post-Meltdown World](https://www.scylladb.com/2019/05/17/the-zombieload-pragmatist/) + +# _Temporary cache_ + +1. https://github.com/pubkey/rxdb +1. https://hackernoon.com/execute-millions-of-sql-statements-in-milliseconds-in-the-browser-with-webassembly-and-web-workers-3e0b25c3f1a6#.w8w8qi8b3 +1. https://github.com/kripken/sql.js +1. http://zmtp.org/ +1. https://github.com/agentm/project-m36 +1. http://graphql.org/ +1. https://docs.microsoft.com/en-us/azure/documentdb/documentdb-introduction +1. http://storm.apache.org/ +1. http://www.intersystems.com/our-products/cache/cache-overview/ +1. https://prometheus.io/ +1. http://www.ragic.com/ +1. https://github.com/bittorrent/sqltorrent +1. https://github.com/bitnine-oss/agensgraph +1. [Comdb2: Bloomberg’s Highly Available Relational Database System](http://www.vldb.org/pvldb/vol9/p1377-scotti.pdf) +1. https://www.pipelinedb.com/ +1. https://fauna.com/home +1. https://fauna.com/blog/a-database-built-like-an-operating-system +1. http://www.timescaledb.com/ +1. https://www.dataengineeringpodcast.com/episode-4-scylladb-with-eyal-gutkind/ +1. http://quickstep.incubator.apache.org/ +1. https://barrel-db.org/ +1. https://misfra.me/2016/04/09/tsdb-list/ +1. https://github.com/cayleygraph/cayley +1. https://deepstreamhub.com/ +1. http://www.spdk.io/ +1. https://github.com/pilosa/pilosa +1. http://sophia.systems/ +1. https://humio.com/ +1. https://medium.com/@uwdb/introducing-cosette-527898504bd6 +1. https://mixmax.com/blog/bee-queue-v1-node-redis-queue +1. http://btrdb.io/ +1. https://clickhouse.yandex/ +1. https://github.com/rqlite/rqlite +1. https://www.confluent.io/blog/ksql-open-source-streaming-sql-for-apache-kafka/ +1. https://github.com/Tencent/paxosstore +1. https://www.ibm.com/us-en/marketplace/project-eventstore +1. [LogDevice: a distributed data store for logs](https://code.facebook.com/posts/357056558062811) +1. https://crate.io/ +1. http://traildb.io/ +1. http://profanedb.gitlab.io/ +1. https://github.com/PyroclastIO/metamorphic +1. https://franchise.cloud/ +1. https://github.com/ssbc/secure-scuttlebutt +1. ["Datafun: a functional query language" by Michael Arntzenius](https://www.youtube.com/watch?v=gC295d3V9gE) +1. https://github.com/neo4j-contrib/spatial +1. https://github.com/agershun/alasql +1. http://www.tiledb.io/ +1. https://databricks.com/product/databricks-delta +1. http://www.geomesa.org/ +1. https://bookkeeper.apache.org/ +1. https://blog.outlyer.com/top10-open-source-time-series-databases +1. https://github.com/qubole/rubix +1. https://github.com/confluentinc/ksql +1. https://www.datanami.com/2018/06/15/streaming-sql-for-real-time-analytics/ +1. https://blog.fauna.com/fauna-topology-operations +1. https://fabianlindfors.se/blog/building-an-object-store-with-foundation-db/ +1. https://use-the-index-luke.com/no-offset +1. [GOTO 2016 • Conflict Resolution for Eventual Consistency • Martin Kleppmann](https://www.youtube.com/watch?v=yCcWpzY8dIA) +1. https://www.thoughts-on-java.org/5-common-hibernate-mistakes-that-cause-dozens-of-unexpected-queries/ +1. https://www.nicolaferraro.me/2018/04/25/saga-pattern-in-apache-camel/ +1. http://augustl.com/blog/2018/datomic_look_at_all_the_things_i_am_not_doing/ +1. https://blog.2ndquadrant.com/application-users-vs-row-level-security/ +1. https://medium.com/databasss/on-ways-to-agree-part-1-links-and-flp-impossibility-f6bd8a6a0980 +1. https://medium.com/@robot_dreams/disk-can-be-faster-than-memory-37c57e7ebca7 +1. http://www.bailis.org/blog/when-is-acid-acid-rarely/ +1. https://hackernoon.com/five-data-models-for-sharding-and-which-is-right-f5c3fa480b00 +1. http://www.aosabook.org/en/500L/an-archaeology-inspired-database.html +1. https://www.clever-cloud.com/blog/engineering/2015/05/20/why-auto-increment-is-a-terrible-idea/ +1. https://samrat.me/posts/2017-11-04-kvstore-linear-hashing/ +1. https://detect.io/news/2017/10/16/three-time-series-that-defeat-typical-anomaly-detection +1. http://blog.memsql.com/scaling-distributed-joins/ +1. http://akumuli.org/akumuli/2017/11/17/indexing/ +1. https://10clouds.com/blog/postgresql-10/ +1. https://cstack.github.io/db_tutorial/ +1. https://msdn.microsoft.com/en-us/library/jj591569.aspx +1. https://chatwithengineers.com/2016/08/29/a-survey-of-query-execution-engines-from-volcano-to-vectorized-processing/ +1. https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html +1. https://medium.com/the-hoard/building-a-kafka-that-doesnt-depend-on-zookeeper-2c4701b6e961#.paa4pjdtc +1. https://blog.acolyer.org/2017/01/23/ground-a-data-context-service/ +1. https://engineering.instagram.com/sharding-ids-at-instagram-1cf5a71e5a5c#.omhi4kyaj +1. http://rystsov.info/2017/02/15/simple-consensus.html +1. https://blog.jooq.org/2016/10/05/why-you-should-design-your-database-to-optimise-for-statistics/ +1. https://thesquareplanet.com/blog/students-guide-to-raft/ +1. https://rjuju.github.io/postgresql/2015/07/02/how-about-hypothetical-indexes.html +1. http://amitkapila16.blogspot.com/2017/03/hash-indexes-are-faster-than-btree.html +1. http://rhaas.blogspot.com/2017/04/new-features-coming-in-postgresql-10.html +1. https://fabxc.org/blog/2017-04-10-writing-a-tsdb/# +1. https://github.com/confluentinc/bottledwater-pg +1. http://www.postgresonline.com/journal/archives/173-Using-LTree-to-Represent-and-Query-Hierarchy-and-Tree-Structures.html +1. https://juxt.pro/blog/posts/datascript-dom.html +1. https://github.com/agentm/project-m36 +1. https://fortytw2.com/relational-dbs-on-kv-store-pt-1 +1. https://blog.slicingdice.com/want-to-build-a-new-time-series-database-start-here-d4c3fd1517b1 +1. http://akumuli.org/akumuli/2017/04/29/nbplustree/ +1. https://www.hugopicado.com/2017/05/06/what-event-sourcing-is-not.html +1. https://news.realm.io/news/conflict-resolution-for-eventual-consistency-goto/ +1. https://www.citusdata.com/blog/2017/05/11/dynamo-citus-and-tradeoffs-in-distributed-databases/ +1. http://www.cakesolutions.net/teamblogs/how-to-build-a-distributed-counter +1. https://netsil.com/blog/comparison-of-time-series-databases-netsils-use-of-druid/ +1. https://www.infoq.com/interviews/meijer-big-data +1. https://www.cs.cmu.edu/~jarulraj/pages/sigmod_2017_tutorial.html +1. https://speakerdeck.com/caitiem20/distributed-sagas-a-protocol-for-coordinating-microservices +1. https://blog.timescale.com/what-the-heck-is-time-series-data-and-why-do-i-need-a-time-series-database-dcf3b1b18563 +1. https://medium.com/hyrise/the-brain-of-every-database-c622aaba7d75 +1. http://codecapsule.com/2012/11/07/ikvs-implementing-a-key-value-store-table-of-contents/ +1. https://www.cockroachlabs.com/blog/sql-in-cockroachdb-mapping-table-data-to-key-value-storage/ +1. https://blog.acolyer.org/2017/07/07/do-we-need-specialized-graph-databases-benchmarking-real-time-social-networking-applications/ +1. http://vvvvalvalval.github.io/posts/2017-07-08-Datomic-this-is-not-the-history-youre-looking-for.html?t=1&cn=ZmxleGlibGVfcmVjc18y&iid=1e725951a13247d8bdc6fe8c113647d5&uid=2418042062&nid=244+293670920 +1. https://maxdemarzi.com/2017/07/13/using-a-cuckoo-filter-for-unique-relationships/ +1. https://medium.baqend.com/real-time-databases-explained-why-meteor-rethinkdb-parse-and-firebase-dont-scale-822ff87d2f87 +1. http://dawn.cs.stanford.edu/2017/08/07/asap/ +1. [TimescaleDB vs. Postgres for time-series: 20x higher inserts, 2000x faster deletes, 1.2x-14,000x faster queries](https://blog.timescale.com/timescaledb-vs-6a696248104e) +1. https://www.elastic.co/blog/elasticsearch-sequence-ids-6-0 +1. https://neo4j.com/blog/efficient-graph-algorithms-neo4j/ +1. https://blog.jooq.org/2017/05/30/when-to-use-bind-values-and-when-to-use-inline-values-in-sql/ +1. https://fylux.github.io/2017/08/09/VAR_Model_Time_Series/ +1. https://brandur.org/postgres-atomicity +1. [Generative Programming and Verification - Nada Amin](https://www.youtube.com/watch?v=QuJ-cEvH_oI) +1. http://ithare.com/oltp-db-optimizations-101-thinking-in-terms-of-execution-plans/ +1. https://pingcap.github.io/blog/2017/08/15/multi-raft/ +1. https://medium.com/@ajstorm/the-lambda-architecture-simplified-a28e436fa55e +1. http://akumuli.org/akumuli/2016/12/30/compression_part1/ +1. https://en.wikipedia.org/wiki/Codd%27s_12_rules +1. https://blog.jooq.org/2017/09/28/10-cool-sql-optimisations-that-do-not-depend-on-the-cost-model/ +1. https://medium.com/@ifesdjeen/on-disk-storage-part-4-b-trees-30791060741 +1. https://www.cockroachlabs.com/blog/automated-rebalance-and-repair/ +1. http://danielwhittaker.me/2017/10/09/handle-set-based-consistency-validation-cqrs/ +1. http://db.cs.cmu.edu/seminar2017/ +1. https://blog.timescale.com/time-series-data-postgresql-10-vs-timescaledb-816ee808bac5 +1. [Is Datomic strictly better than Facebook's graph datastore?](http://www.dustingetz.com/ezpjb2RlLWRhdGFiYXNlICJzdGFydGVyLWJsb2ctc3JjMiIsIDpsaW5rLWRiaWQgI0RiSWRbMTc1OTIxODYwNDU1NTkgI1VSSSAiZGF0b21pYzpmcmVlOi8vZGF0b21pYzo0MzM0L3N0YXJ0ZXItYmxvZy1zcmMyIl0sIDpxdWVyeS1wYXJhbXMgezplbnRpdHkgI0RiSWRbMTc1OTIxODYwNDYxNDQgI1VSSSAiZGF0b21pYzpmcmVlOi8vZGF0b21pYzo0MzM0L2R1c3RpbmdldHouY29tIl19fQ,,) +1. https://www.citusdata.com/blog/2017/10/17/tour-of-postgres-index-types/ +1. https://blog.grakn.ai/modelling-data-with-hypergraphs-edff1e12edf0 +1. http://www.scylladb.com/2017/10/05/io-access-methods-scylla/ +1. http://code.hootsuite.com/row-stores-vs-column-stores-why-not-use-both/ +1. http://matthewrocklin.com/blog/work/2017/10/16/streaming-dataframes-1 +1. https://brightinventions.pl/blog/database-timeouts/ +1. https://brandur.org/redis-streams +1. https://www.fittedcloud.com/blog/machine-learning-driven-optimization-outperforms-auto-scaling-dynamodb-capacity-management/ +1. https://parquet.apache.org/ +1. https://arrow.apache.org/ +1. https://www.youtube.com/watch?v=6lCVKMQR8Dw +1. https://blog.acolyer.org/2015/10/15/ironfleet-proving-practical-distributed-systems-correc/ +1. https://underscore.io/blog/posts/2017/03/07/refined-data-config-database.html +1. https://www.quickdatabasediagrams.com/ +1. [The Case for Learned Index Structures](https://arxiv.org/abs/1712.01208) +1. https://arxiv.org/abs/0806.3115 +1. https://arxiv.org/abs/1604.03607 +1. https://arxiv.org/abs/1702.07588 +1. [HoTTSQL: Proving Query Rewrites with Univalent SQL Semantics](https://arxiv.org/abs/1607.04822) +1. http://www.vldb.org/pvldb/vol9/p1707-pirk.pdf +1. [Continuous Analytics Over Discontinuous Streams](https://people.eecs.berkeley.edu/~franklin/Papers/sigmod10krishnamurthy.pdf) +1. http://www.vldb.org/ +1. https://blog.acolyer.org/2017/01/30/how-good-are-query-optimizers-really/ +1. http://gun.js.org/distributed/matters.html +1. http://blog.datomic.com/2017/01/the-ten-rules-of-schema-growth.html +1. https://blogs.technet.microsoft.com/dataplatforminsider/2017/01/05/how-six-lines-of-code-sql-server-can-bring-deep-learning-to-any-app/ +1. https://muratbuffalo.blogspot.com/2014/07/hybrid-logical-clocks.html +1. https://yokota.blog/2017/02/17/dont-settle-for-eventual-consistency/ +1. [AN INTRODUCTION TO GRAPH COMPRESSION TECHNIQUES FOR IN-MEMORY GRAPH COMPUTATION](https://www.cs.umd.edu/sites/default/files/scholarly_papers/Chavan.pdf) +1. [Relational Lattices: From Databases to Universal Algebra](http://www.dcs.bbk.ac.uk/~szabolcs/rellat-jlamp-second-submission-2.pdf) +1. https://bitworking.org/news/2017/03/prometheus +1. [Partioned Elias-Fano indexes](http://hpc.isti.cnr.it/hpcworkshop2014/PartitionedEliasFanoIndexes.pdf) +1. http://h2co3.org/blog/index.php/2017/04/10/join-considered-harmful/ +1. https://blog.jooq.org/2016/07/05/say-no-to-venn-diagrams-when-explaining-joins/ +1. [A Seven-Dimensional Analysis of Hashing Methods and its Implications on Query Processing](http://www.vldb.org/pvldb/vol9/p96-richter.pdf) +1. https://research.googleblog.com/2017/04/consistent-hashing-with-bounded-loads.html +1. [The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases](https://pdfs.semanticscholar.org/6abf/5107efc723c655956f027b4a67565b048799.pdf) +1. [Adapting Tree Structures for Processing with SIMD Instructions](https://openproceedings.org/2014/conf/edbt/ZeuchFH14.pdf) +1. [Compressed Computation for Text Indexing](http://www2.compute.dtu.dk/~npre/documents/thesis.pdf) +1. [Databases from finite categories](http://lambda-the-ultimate.org/node/5435) +1. https://github.com/datproject/docs/blob/master/papers/dat-paper.pdf +1. [Algorithms for Data Streams](http://twiki.di.uniroma1.it/pub/BDC/WebHome/SurveyStreaming08-DemetrescuFinocchi.pdf) +1. [Datafun: a Functional Datalog](https://people.mpi-sws.org/~neelk/datafun.pdf) +1. [Enabling Signal Processing over Data Streams](https://www.cs.ox.ac.uk/files/9135/sigmod2017-trilldsp.pdf) +1. [Database Learning: Toward a Database that Becomes Smarter Every Time](https://arxiv.org/abs/1703.05468) +1. https://github.com/jarulraj/databaseology +1. [Write-Behind Logging](http://www.vldb.org/pvldb/vol10/p337-arulraj.pdf) +1. [HoTTSQL: Proving Query Rewrites with Univalent SQL Semantics](https://homes.cs.washington.edu/~chushumo/files/cosette_pldi17.pdf) +1. [PebblesDB: Building Key-Value Stores using Fragmented Log-Structured Merge Trees](http://www.cs.utexas.edu/~vijay/papers/sosp17-pebblesdb.pdf) +1. [DROP: Dimensionality Reduction Optimization for Time Series](https://arxiv.org/abs/1708.00183) +1. http://www.cs.yale.edu/homes/aspnes/papers/skip-graphs-journal.pdf +1. https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321 +1. https://www.amazon.com/Database-Reliability-Engineering-Designing-Operating/dp/1491925949 +1. https://www.enterprisetimes.co.uk/2017/02/22/can-severalnines-improve-mongodb-security/ +1. https://severalnines.com/ +1. http://engineering.pivotal.io/post/trilogy-the-sql-testing-framework/ +1. https://techcrunch.com/2016/08/19/mysql-founder-tries-a-new-software-licensing-model/ +1. https://blog.datopia.io/2018/11/03/hitchhiker-tree/ + diff --git a/documentation/bookmark/debugging.md b/documentation/bookmark/debugging.md new file mode 100644 index 000000000..6f7d5126b --- /dev/null +++ b/documentation/bookmark/debugging.md @@ -0,0 +1,92 @@ +# Service + +1. https://www.bugreplay.com/ + +# Input + +1. [Debugging Inputs](https://www.dropbox.com/s/ddn3fe55lws1rdr/icse2020-ddmax.pdf) + +# Omniscient debugging + +1. https://pernos.co/ + +# Tool + +1. [drgn: Scriptable debugger library](https://github.com/osandov/drgn) +1. [Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/) +1. https://github.com/srg-imperial/SaBRe +1. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/WebReplay +1. https://umaar.github.io/performance-debugging-devtools-2018/#/ +1. https://microsoft.github.io/debug-adapter-protocol/ +1. http://plasma-umass.org/BLeak/ +1. https://clinicjs.org/ +1. http://pev.sourceforge.net/ + +# Tracing + +1. ["Understanding Microservices with Distributed Tracing" by Lita Cho](https://www.youtube.com/watch?v=URCLeycMrhU) + +# Reference + +1. [The Power Of Collaborative Debugging](https://robert.ocallahan.org/2019/11/the-power-of-collaborative-debugging.html) +1. [Multiverse Debugging: Non-Deterministic Debugging for Non-Deterministic Programs](https://stefan-marr.de/2019/07/what-if-we-could-see-all-concurrency-bugs-in-the-debugger/) +1. [Writing a Debugger](http://system.joekain.com/debugger/) +1. https://en.wikipedia.org/wiki/Jinx_Debugger +1. http://www.mattzeunert.com/2017/12/07/better-types-of-debuggers.html +1. https://www.youtube.com/watch?v=ipDhvd1NsmE +1. http://georgejahad.com/clojure/cdt.html +1. http://endlessparentheses.com/cider-debug-a-visual-interactive-debugger-for-clojure.html +1. https://github.com/razum2um/clj-debugger +1. https://stories.jotform.com/how-to-become-a-good-debugger-9324543fea33#.1ctzqfyly +1. https://www.microsoft.com/en-us/research/publication/time-travel-debugging-javascriptnode-js/ +1. http://valgrind.org/ +1. http://fitzgeraldnick.com/2015/06/19/source-maps-are-insufficient.html +1. http://stefan-marr.de/downloads/draft-marr-et-al-concurrency-agnostic-protocol-for-debugging.pdf +1. https://tip.golang.org/doc/diagnostics.html +1. https://github.com/solo-io/squash +1. http://www.michaelburge.us/2017/09/27/delta-debugging-in-haskell.html +1. https://undo.io/ +1. [Clojure Compilation, Backwards - Nicola Mometto](https://www.youtube.com/watch?v=2SGFeegEt9E) +1. https://zorbash.com/post/debugging-elixir-applications/ +1. [Compose :: Melbourne 2017 - Ronen Narkis - Re-ops, a Functional Live-Infrastructure as Code](https://www.youtube.com/watch?v=iopuirQuK-s) +1. [Compose :: Melbourne 2017 - Jurriaan Hage - Domain-Specific Type Error Diagnosis in GHC](https://www.youtube.com/watch?v=GbCfmnTmQDc) +1. https://raygun.com/javascript-debugging-tips +1. https://github.com/bpiel/sayid +1. [Algorithmic Program Debugging](http://cpsc.yale.edu/sites/default/files/files/tr237.pdf) +1. [Effect-Driven QuickChecking of Compilers](http://janmidtgaard.dk/papers/Midtgaard-al%3AICFP17-full.pdf) +1. https://www.youtube.com/watch?v=_KrZzaShDew +1. [NodeJS uses the Chome debugger protocol:](https://developer.chrome.com/devtools/docs/debugger-protocol) +1. http://www.dwarfstd.org/ +1. https://docs.oracle.com/javase/7/docs/technotes/guides/jpda/jdwp-spec.html +1. [Coarse Hierarchical Delta Debugging](http://www.inf.u-szeged.hu/~akiss/pub/pdf/hodovan2017coarsehdd.pdf) +1. [Improving live debugging of concurrent threads through thread histories](http://scg.unibe.ch/scgbib?query=Lesk17a&display=abstract) +1. [The JVM is Not Observable Enough (and What To Do About It)](https://www.cs.kent.ac.uk/people/staff/srk21//papers/kell12jvm-preprint.pdf) +1. http://nikhilism.com/post/2019/retrieving-function-arguments-while-unwinding-the-stack/ +1. https://backtrace.io/blog/engineering/compile-once-debug-twice-picking-a-compiler-for-debuggability-1of3/ +1. https://singaporedatacompany.com/blog/more-developers-more-problems +1. https://github.com/gruns/icecream +1. https://lemire.me/blog/2016/06/21/i-do-not-use-a-debugger/ +1. https://the.agilesql.club/2019/05/how-to-load-test-a-sql-database/?u=h + +# Benchmark + +1. https://github.com/smarr/ReBench + +# Performance + +1. ["Software Performance: A Shape Not a Number" by Kay Ousterhout](https://www.youtube.com/watch?v=f7HCeE377-0) +1. ["A Practical Look at Performance Theory" by Kavya Joshi](https://www.youtube.com/watch?v=bEYY3M0d-w8) +1. https://nsirap.com/posts/001-web-porformance-api/ + +# Profiling + +1. https://www.opsian.com/blog/what-is-continuous-profiling/ + +# Time-travelling + +1. [Travelling through time with WinDbg at a system level](https://www.youtube.com/watch?v=mB9LIztjSKg) + +# Monitoring + +1. https://www.erlang-solutions.com/blog/introducing-telemetry.html + diff --git a/documentation/bookmark/distributed_programming.md b/documentation/bookmark/distributed_programming.md new file mode 100644 index 000000000..916bdfcea --- /dev/null +++ b/documentation/bookmark/distributed_programming.md @@ -0,0 +1,103 @@ +# Microservices + +1. [The seven deceptions of microservices](https://scottrogowski.com/the-seven-deceptions-of-microservices.html) + +# Synchronization + +1. [Braid: Synchronization for HTTP](https://braid.news/) +1. [The Braid Protocol: Synchronization for HTTP](https://tools.ietf.org/html/draft-toomim-braid-00) + +# Reference + +1. [Ambients: Peer-to-Peer Programs and Data](https://ipfs.io/ipfs/QmPhPJE55GvqSz7Pwvkc8n9dbKmqGw6tUGTE1MgfNQvzsf) +1. [Bastion: Highly-available Distributed Fault-tolerant Runtime](https://bastion.rs/) +1. [DDD and Messaging Architectures: An overview of my different series on patterns in distributed systems.](http://verraes.net/2019/05/ddd-msg-arch/) +1. https://replicated.cc/ +1. http://www.the-paper-trail.org/post/2014-08-09-distributed-systems-theory-for-the-distributed-systems-engineer/ +1. https://courses.engr.illinois.edu/cs525/sp2018/index.html +1. https://arxiv.org/abs/1701.07615 +1. http://proto.actor/ +1. https://blog.acolyer.org/2015/10/15/ironfleet-proving-practical-distributed-systems-correc/ +1. http://pythonsweetness.tumblr.com/post/165366346547/mitogen-an-infrastructure-code-baseline-that +1. https://github.com/heathermiller/dist-prog-book +1. https://lasp-lang.readme.io/ +1. https://speakerdeck.com/cmeiklejohn/practical-evaluation-of-the-lasp-programming-model-at-scale +1. http://bloom-lang.net/ +1. https://www.oreilly.com/ideas/scaling-a-startup-with-a-21st-century-language +1. https://github.com/grailbio/reflow +1. https://github.com/reactors-io/reactors +1. http://funcool.github.io/urania/latest/ +1. https://raft.github.io/ +1. https://github.com/ashwin153/caustic +1. http://prl.ccs.neu.edu/blog/2017/10/22/monotonicity-types-towards-a-type-system-for-eventual-consistency/ +1. http://www.swirlds.com/ +1. [Whip: Higher-Order Contracts for Modern Services](https://people.seas.harvard.edu/~chong/pubs/icfp17-whip.pdf &&& https://www.youtube.com/watch?v=phHrSC6pkXU) +1. https://channel9.msdn.com/Shows/On-NET/Orleans-onNET +1. [A Meta-EDSL for Distributed Web Applications](https://www.youtube.com/watch?v=Xzv6CfyXUdM) +1. https://en.wikipedia.org/wiki/Petriscript +1. [Fallacies of Distributed Computing Explained](http://www.rgoarchitects.com/Files/fallacies.pdf) +1. https://abhishek-tiwari.com/friends-dont-let-friends-build-data-pipelines/ +1. [Differential Synchronization](https://neil.fraser.name/writing/sync/) +1. https://medium.com/@mycoralhealth/why-blockchains-dont-suck-and-the-perils-of-distributed-databases-1a522cc7cfe1 +1. [The Remote Monad](http://www.ittc.ku.edu/research/thesis/documents/justin_dawson_thesis.pdf) +1. https://blog.acolyer.org/2017/08/17/on-the-design-of-distributed-programming-models/ +1. https://twitter.com/ifesdjeen/status/1024775959961128961 +1. https://sekniqi.com/blog/a-distributed-systems-primer-for-non-experts.html +1. [numpywren: serverless linear algebra](https://arxiv.org/abs/1810.09679) +1. https://hackernoon.com/a-thorough-introduction-to-distributed-systems-3b91562c9b3c +1. ["Towards Language Support for Distributed Systems" by Heather Miller](https://www.youtube.com/watch?v=IeBbiQZYmuY) +1. http://jepsen.io/ +1. [Think Local: Reducing Coordination and Improving Performance when Designing around Distributed State](https://vimeo.com/304106598) +1. [Introducing AMBROSIA: a new platform for reliable distributed applications without all the hassle](https://cloudblogs.microsoft.com/opensource/2018/12/13/introducing-ambrosia-new-platform-distributed-applications/) +1. https://distributedobjectprotocol.org/ +1. https://medium.com/bitfinex/introducing-svc-js-a-framework-for-grenache-7119f2d7769e +1. http://dbmsmusings.blogspot.com/2019/01/its-time-to-move-on-from-two-phase.html + +# Rate limiting + +1. https://blog.ably.io/how-adopting-a-distributed-rate-limiting-helps-scale-your-platform-1afdf3944b5a + +# Programming language + +1. ["Unison: a new distributed programming language" by Paul Chiusano](https://www.youtube.com/watch?v=gCWtkvDQ2ZI) +1. http://radicle.xyz/ +1. [Lambda World 2018 - Introduction to the Unison programming language - Rúnar Bjarnason](https://www.youtube.com/watch?v=rp_Eild1aq8) +1. https://www.infoq.com/presentations/language-design-process + +# Parallel commit + +1. [Parallel Commits: An Atomic Commit Protocol For Globally Distributed Transactions](https://www.cockroachlabs.com/blog/parallel-commits) + +# Two-phase commit + +1. https://shekhargulati.com/2018/09/05/two-phase-commit-protocol/ + +# Linearizability + +1. https://ristret.com/s/uqin9q/mild_generalization_linearizability +1. https://en.wikipedia.org/wiki/Vector_clock + +# Exemplar + +1. http://meshbird.com/ + +# Logical clock + +1. [Version Vectors are not Vector Clocks](https://haslab.wordpress.com/2011/07/08/version-vectors-are-not-vector-clocks/) +1. [Distributed Systems: Physical, Logical, and Vector Clocks](https://levelup.gitconnected.com/distributed-systems-physical-logical-and-vector-clocks-7ca989f5f780) +1. [The Bloom Clock](https://arxiv.org/pdf/1905.13064.pdf) +1. [Why Logical Clocks are Easy: Sometimes all you need is the right language.](https://queue.acm.org/detail.cfm?id=2917756) + +# Consensus protocol + +1. https://medium.com/s/story/lets-take-a-crack-at-understanding-distributed-consensus-dad23d0dc95 +1. [Spectrum: A Framework for Adapting Consensus Protocols](https://arxiv.org/abs/1902.05873) + +# Locality + +1. [Think Local: Reducing Coordination and Improving Performance when Designing around Distributed State](https://vimeo.com/304106598) + +# Distributed transaction + +1. [Life beyond Distributed Transactions: an Apostate’s Opinion](http://adrianmarriott.net/logosroot/papers/LifeBeyondTxns.pdf) + diff --git a/documentation/bookmark/documentation.md b/documentation/bookmark/documentation.md new file mode 100644 index 000000000..2bb1d12e6 --- /dev/null +++ b/documentation/bookmark/documentation.md @@ -0,0 +1,82 @@ +# Programming + +1. [Skribilo: The Ultimate Document Programming Framework](https://www.nongnu.org/skribilo/) + +# Diagram | Chart + +1. https://c4model.com/ +1. https://github.com/lukaslueg/macro_railroad +1. https://bramp.github.io/js-sequence-diagrams/ +1. https://github.com/erikbrinkman/d3-dag +1. https://dumptyd.github.io/treeflex/ +1. https://info.datalabsagency.com/blog/data-visualization-news/15-most-common-types-of-data-visualisation +1. https://wettel.github.io/codecity.html +1. http://quantifiedcode.github.io/code-is-beautiful/ +1. http://js.cytoscape.org/ +1. https://arcentry.com/ +1. https://bramp.github.io/js-sequence-diagrams/ +1. https://brokenbaysoftware.co/2018/12/18/Cumulative-Flow/ +1. https://frappe.io/gantt +1. https://dbdiagram.io/home/ +1. https://ptsjs.org/ +1. https://blog.usejournal.com/bridging-the-gap-between-low-level-and-high-level-charting-libraries-a8f6c1819ba5 +1. https://www.infoq.com/articles/why-architectural-diagrams +1. https://gramener.github.io/visual-vocabulary-vega/ +1. [Visually Representing the Landscape of Mathematical Structures](https://arxiv.org/abs/1809.05930) +1. http://www.java2uml.com/s + +# Philosophy + +1. [Forget reusability, aim for perfection](https://www.openbsd.org/papers/bsdcan18-mandoc.pdf) +1. https://increment.com/documentation/ +1. https://blog.stoplight.io/writing-documentation-when-you-arent-a-technical-writer-part-two-59997587cc2a + +# Explorability + +1. https://explorabl.es/jam/ +1. https://flowium.com/help.html +1. https://apfelmus.nfshost.com/blog/2018/08/06-hyper-0-2.html + +# README + +1. https://github.com/LappleApple/feedmereadmes + +# Doclet + +1. https://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/doclet/overview.html +1. http://www.doclet.com/ +1. https://en.wikipedia.org/wiki/Doclet + +# Reference + +1. [Architecture decision record (ADR)](https://github.com/joelparkerhenderson/architecture_decision_record) +1. [Seamless API Specification](https://github.com/seamlessapis/seamless/tree/master/domain) +1. https://docs.racket-lang.org/pollen/ +1. [Documenting the Clojure/Script Ecosystem – Martin Klepsch](https://www.youtube.com/watch?v=mWrvd6SE7Vg) +1. http://apistylebook.com/ +1. https://docusaurus.io/ +1. https://gist.github.com/oakes/8db57ac808bf6ec144d627fd83a89da3 +1. https://github.com/oakes/Dynadoc +1. https://github.com/bhauman/devcards +1. https://kiwidocs.js.org/ +1. https://github.com/Microsoft/tsdoc +1. https://github.com/PharkMillups/beautiful-docs +1. http://lwm.github.io/posts/html/document-haskell.html +1. http://lwm.github.io/texts/lets-write-documentation-for-haskell/ +1. https://groups.google.com/forum/#!msg/scala-internals/r2GnzCFc3TY/x3PmIq4cAgAJ +1. http://naildrivin5.com/blog/2016/12/08/learn-graphviz-and-up-your-diagramming-game.html +1. https://idyll-lang.github.io/ +1. http://docs.racket-lang.org/pollen/ +1. https://opensource.com/article/17/9/modular-documentation +1. https://clojurecademy.github.io/dsl-documentation/# +1. https://www.asyncapi.com/ +1. http://jupyter.org/ +1. https://medium.freecodecamp.org/how-to-build-interactive-presentations-with-jupyter-notebook-and-reveal-js-c7e24f4bd9c5 +1. https://github.com/stevekrouse/unbreakable-links +1. https://www.divio.com/en/blog/documentation/ +1. https://github.com/Bogdan-Lyashenko/js-code-to-svg-flowchart +1. https://anbasile.github.io/programming/2015/12/25/hosting-reveal-pres-on-github/ +1. http://www.megacz.com/software/wix/ +1. https://github.com/documentationjs/documentation +1. https://www.cockroachlabs.com/blog/go-file-size/ + diff --git a/documentation/bookmark/falsehood.md b/documentation/bookmark/falsehood.md new file mode 100644 index 000000000..3cf534fbc --- /dev/null +++ b/documentation/bookmark/falsehood.md @@ -0,0 +1,4 @@ +# List + +1. [Falsehoods programmers believe about prices](https://gist.github.com/rgs/6509585) + diff --git a/documentation/bookmark/floating point.md b/documentation/bookmark/floating point.md new file mode 100644 index 000000000..9268449d9 --- /dev/null +++ b/documentation/bookmark/floating point.md @@ -0,0 +1,4 @@ +# Algorithm + +1. [Kahan summation algorithm](https://en.wikipedia.org/wiki/Kahan_summation_algorithm) + diff --git a/documentation/bookmark/game_programming.md b/documentation/bookmark/game_programming.md new file mode 100644 index 000000000..03efdc258 --- /dev/null +++ b/documentation/bookmark/game_programming.md @@ -0,0 +1,482 @@ +# Path finding + +1. [Friday Facts #317 - New pathfinding algorithm](https://factorio.com/blog/post/fff-317) + +# Conduct + +1. [Kawa - Yet Another Conduct Conversation: a history of conducts in roguelikes](https://www.youtube.com/watch?v=KLHJsJuJfYg) + +# Rules + +1. [Scott Kovach - Managing Game Logic With Rule Systems - Using Relational Programming to Build Games](https://www.youtube.com/watch?v=s9Wyn9BJJI4) + +# Procedural generation + +1. [Aaron Santos - Optimizing procgen parameters using mini-batch gradient descent](https://www.youtube.com/watch?v=TsDIUuEneo4) +1. [Brian Bucklew - Dungeon Generation via Wave Function Collapse](https://www.youtube.com/watch?v=fnFj3dOKcIQ) +1. [So you want to build a generator…](https://galaxykate0.tumblr.com/post/139774965871/so-you-want-to-build-a-generator) +1. [Spencer Egart - Procedurally Generated Ritual Spell Systems](https://www.youtube.com/watch?v=q4Tf0vf2kiI) +1. [Isaac Karth - Why Do You Want to Generate That? A Vocabulary For Talking About Procedural Generation](https://www.youtube.com/watch?v=MHEkE7nPuZc) + +# User interaction + +1. [Verb-noun vs noun-verb](https://simblob.blogspot.com/2019/10/verb-noun-vs-noun-verb.html) + +# Network + +1. https://github.com/librg/librg + +# Noise + +1. https://github.com/KdotJPG/New-Simplex-Style-Gradient-Noise +1. [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) +1. [Gradient noise](https://en.wikipedia.org/wiki/Gradient_noise) +1. [Value noise](https://en.wikipedia.org/wiki/Value_noise) +1. [Simplex noise](https://en.wikipedia.org/wiki/Simplex_noise) +1. [OpenSimplex noise](https://en.wikipedia.org/wiki/OpenSimplex_noise) +1. [Worley noise](https://en.wikipedia.org/wiki/Worley_noise) + +# Ethics + +1. [Ethics in Game Design - PAX Prime 2012](https://www.youtube.com/watch?v=sIS5cJzeLGA) + +# Grinding + +1. [When Games Idolize Busywork](https://medium.com/@fischerdesign/when-games-idolize-busywork-8454bfe769ff) +1. [PAX West 2016 - The Grind - Full Panel](https://www.youtube.com/watch?v=32DCEzpcVEY) +1. [A Brief History of Leveling Systems](https://theludite.com/2014/08/03/a-brief-history-of-leveling-systems/) +1. [Leveling Systems Part Two: Where We Could Go From Here](https://theludite.com/2014/08/28/leveling-systems-part-two-where-we-could-go-from-here/) + +# Engine + +1. https://www.raylib.com/index.html +1. https://github.com/GoogleCloudPlatform/agones +1. https://luxeengine.com/ +1. https://www.haroldserrano.com/blog/books-i-used-to-develop-a-game-engine +1. http://www.executionunit.com/blog/2017/07/14/in-defence-of-writing-your-own-engine/ +1. http://vincentgarreau.com/particles.js/#default +1. http://www.npruehs.de/game-models-a-different-approach-part-2/ +1. https://maikklein.github.io/post/shading-language-part1/ +1. https://cuberite.org/ +1. http://www.helixsoft.nl/articles/circle/sincos.htm +1. http://helm-engine.org/ +1. http://regl.party/ +1. https://github.com/lallassu/Qake +1. http://pcg.wikidot.com/ +1. http://laurenslapre.nl/lapre_004.htm +1. http://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/ +1. https://shotsinshorts.com/top-javascript-engines-make-html5-desktop-mobile-games/ +1. http://gamedevs.org/ +1. http://clockwork.js.org/ +1. http://arewegameyet.com/ +1. https://www.inklestudios.com/ink/ +1. https://godotengine.org/ +1. https://castle-engine.io/index.php +1. https://www.rpginabox.com/ +1. https://heaps.io/ +1. https://codeparade.itch.io/marblemarcher +1. https://github.com/HackerPoet/MarbleMarcher +1. https://github.com/amzeratul/halley +1. https://github.com/ondras/rot.js +1. https://github.com/pupcraft/sucle +1. http://superpowers-html5.com/index.en.html + +# Reference + +1. https://mod.io/ +1. https://www.amazon.com/Game-Engine-Black-Book-Wolfenstein/dp/1539692876 +1. http://shaderbits.com/blog/octahedral-impostors/ +1. https://godotengine.org/article/handling-axis-godot +1. https://interplayoflight.wordpress.com/2017/10/25/how-unreal-renders-a-frame/ +1. http://www.jagregory.com/abrash-black-book/ +1. http://docs.godotengine.org/en/3.0/tutorials/math/rotations.html +1. http://www.essentialmath.com/ +1. http://gameprogrammingpatterns.com/ +1. http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/ +1. https://github.com/Dvergar/awesome-haxe-gamedev + +# Rendering + +1. [Wired Elements](https://wiredjs.com/) +1. [The Graphics Codex](http://graphicscodex.com/) +1. [PIXELARTOR: Animation Tool for converting 3D models with animations to 2D sprite frames](https://github.com/Chleba/PIXELARTOR) +1. https://raytracing.github.io/ +1. [WebGL2 Fundamentals](https://webgl2fundamentals.org/) +1. [Tiles to Curves: Fun With Voronoi Graphs (part 1)](https://www.gamedev.net/articles/programming/general-and-gameplay-programming/tiles-to-curves-fun-with-voronoi-graphs-part-1-r5150/) +1. [Lazy Incremental Computation for Efficient Scene Graph Rendering](https://www.cg.tuwien.ac.at/courses/RendEng/2015/RendEng-2015-11-16-paper2.pdf) +1. [3D Wireframes in SVG](https://prideout.net/blog/svg_wireframes/) +1. https://zzz.dog/ +1. https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/ +1. https://roughjs.com/ +1. https://github.com/pshihn/rough +1. https://www.voxelquest.com/ +1. https://github.com/google/filament +1. https://google.github.io/filament/Filament.md.html +1. https://voxeltoy.com/ +1. [Oil on GlCanvas](https://www.shaderoo.org/?shader=FYLJFU) +1. http://voxeljs.com/ +1. http://gameprogrammingpatterns.com/double-buffer.html +1. https://research.cs.wisc.edu/graphics/Gallery/NPRQuake/whatIsIt.html +1. http://www.realtimerendering.com/Real-Time_Rendering_4th-Real-Time_Ray_Tracing.pdf +1. https://webglfundamentals.org/ +1. https://interplayoflight.wordpress.com/2018/09/30/readings-on-the-state-of-the-art-in-rendering/ +1. https://prideout.net/blog/distance_fields/ +1. http://graphics.cs.cmu.edu/projects/slang/ +1. [ADOPTING LESSONS FROM OFFLINE RAY-TRACING TO REAL-TIME RAY TRACING FOR PRACTICAL PIPELINES](http://advances.realtimerendering.com/s2018/Pharr%20-%20Advances%20in%20RTR%20-%20Real-time%20Ray%20Tracing.pdf) +1. http://www.gamasutra.com/blogs/SvyatoslavCherkasov/20181023/329151/Graveyard_Keeper_How_the_graphics_effects_are_made.php +1. https://alain.xyz/blog/comparison-of-modern-graphics-apis +1. https://webkit.org/blog/8482/web-high-level-shading-language/ +1. [Physically Based Rendering](http://www.pbr-book.org/3ed-2018/contents.html) +1. https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/ +1. https://www.hadean.com/blog/open-source-library-for-spatial-representations +1. [The inevitable volumetric future | Dan Tabar and Branislav Siles](https://www.youtube.com/watch?v=JHJ4TKJom88) +1. https://www.ronja-tutorials.com/2018/12/01/2d-shadows.html +1. https://ephtracy.github.io/ +1. https://www.nebularender.com/ +1. [An Explanation of the Rendering Equation](https://www.youtube.com/watch?v=eo_MTI-d28s) +1. [Non-Euclidean Worlds Engine](https://www.youtube.com/watch?v=kEB11PQ9Eo8) +1. [DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation](https://arxiv.org/pdf/1901.05103v1.pdf) +1. [Slang – A Shader Compilation System forExtensible, Real-Time Shading](http://graphics.cs.cmu.edu/projects/renderergenerator/yong_he_thesis.pdf) +1. http://machinethink.net/blog/3d-rendering-without-shaders/ +1. http://www.cs.cmu.edu/afs/cs/usr/sbk/www/phigs/phigs.html +1. http://www.realtimerendering.com/raytracinggems/ +1. https://github.com/mckennapsean/wood-shader +1. https://spritestack.io/ +1. http://blog.hvidtfeldts.net/index.php/2011/06/distance-estimated-3d-fractals-part-i/ +1. https://github.com/oakes/play-cljc +1. [Physically Based Modeling: Principles and Practice](http://www.cs.cmu.edu/~baraff/sigcourse/) +1. https://sonicether.com/seus/ +1. http://stephaniehurlburt.com/blog/2019/3/25/resources-for-learning-graphics-programming +1. [Principles of Lighting and Rendering with John Carmack at QuakeCon 2013](https://www.youtube.com/watch?v=IyUgHPs86XM) +1. http://math.hws.edu/graphicsbook/ +1. https://blog.mecheye.net/2019/05/why-is-2d-graphics-is-harder-than-3d-graphics/ +1. https://www.babylonjs.com/ +1. https://github.com/lettier/3d-game-shaders-for-beginners +1. [What good are hundreds of lights without hundreds of shadows?](https://worldoffries.wordpress.com/2019/03/26/what-good-is-hundreds-of-lights-with-out-hundreds-of-shadows/) +1. [Ray Tracing with Metal](https://developer.apple.com/videos/play/wwdc2019/613/) + +# Idea + +1. [The Content Conundrum - Why So Many Games Feel Generic - Extra Credits](https://www.youtube.com/watch?v=NxX9sGhsbks) + +# Camera + +1. [Math for Game Programmers: Juicing Your Cameras With Math](https://www.youtube.com/watch?v=tu-Qe66AvtY) +1. https://jsantell.com/3d-projection + +# Entity Component System (ECS) + +1. [On DOTS: Entity Component System](https://blogs.unity3d.com/2019/03/08/on-dots-entity-component-system/) +1. http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ +1. [Bob Nystrom - Is There More to Game Architecture than ECS?](https://www.youtube.com/watch?v=JxI3Eu5DPwE) + +# Simulation + +1. https://en.wikipedia.org/wiki/Sigmoid_function +1. https://prideout.net/blog/distance_fields/ +1. https://www.gdcvault.com/play/1022016/Getting-off-the-NavMesh-Navigating +1. https://nialltl.neocities.org/articles/mpm_guide.html +1. http://fabiensanglard.net/doom_fire_psx/index.html +1. http://sol.gfxile.net/interpolation/ +1. https://medium.com/unity3danimation/create-your-own-inverse-dynamics-in-unity-1ed0371ee658 +1. https://github.com/franciscop/ola/ + +# Animation + +1. https://blog.varunramesh.net/posts/composable-animations/ + +# Game history | Game preservation + +1. https://threader.app/thread/1027300086022254592 +1. https://gamehistory.org/ + +# Physics + +1. http://brm.io/matter-js/ +1. http://www.jbox2d.org/ +1. https://www.tapirgames.com/blog/open-source-physics-engines + +# Matchmaking + +1. https://cloud.google.com/blog/products/open-source/open-match-flexible-and-extensible-matchmaking-for-games + +# NPC artificial intelligence + +1. [Mark R Johnson - Speech Generation in a Procedurally Generated World](https://www.youtube.com/watch?v=qh9vyoMviJI) +1. [Jim Shepard - Blooming on the Battlefield: Relationships, Rivals, and Romance in Gameplay](https://www.youtube.com/watch?v=LKCRim02opc) +1. [Max Kreminski - Designing AI systems to support player storytelling](https://www.youtube.com/watch?v=BDcZSWHu8RQ) +1. https://en.wikipedia.org/wiki/Monte_Carlo_tree_search +1. http://www.roguelikeradio.com/2018/02/episode-144-ai.html +1. https://www.red3d.com/cwr/boids/ +1. https://www.blog.drewcutchins.com/blog/2018-8-16-flocking +1. http://www.gabrielgambetta.com/generic-search.html + +# Hexagonal grid + +1. https://www.redblobgames.com/grids/hexagons/ +1. [Hex Grid Geometry for Game Developers (1.3)](http://www.gamelogic.co.za/downloads/HexMath2.pdf) + +# Mods / Modding + +1. https://minecraft.net/en-us/article/programmers-play-minecrafts-inner-workings + +# Streaming + +1. https://blog.rainway.io/building-a-cross-browser-cross-platform-real-time-game-streaming-protocol-b00d000fe788 + +# Interactive narrative fiction + +1. [Max Kreminski - Designing AI systems to support player storytelling](https://www.youtube.com/watch?v=BDcZSWHu8RQ) +1. http://narrascope.org/ +1. http://pdf.textfiles.com/books/iftheorybook.pdf +1. https://notimetoplay.org/engines/advprompt/ + +# Design + +1. [Benjamin Berman - Tips, Tricks and History for Card Game Roguelike Design](https://www.youtube.com/watch?v=DT9_7sW5knY) +1. [WIRED by Design: A Game Designer Explains the Counterintuitive Secret to Fun](https://www.youtube.com/watch?v=78rPt0RsosQ) +1. [How to Add Literally Infinite Features into Minecraft (with one update)](https://www.youtube.com/watch?v=CS5DQVSp058) +1. [The Lost Soul Arts of Demon's Souls](https://www.youtube.com/watch?v=Np5PdpsfINA) +1. [Dark Souls 2 Critique](https://www.youtube.com/watch?v=UScsme8didI) +1. [How Thief's Stealth System Almost Didn't Work | War Stories | Ars Technica](https://www.youtube.com/watch?v=qzD9ldLoc3c) +1. [Three Other Approaches to Turn Timers | GMTK Extra](https://www.youtube.com/watch?v=QAVf7rb0IwM) +1. [Sanderson's Laws of Magic](https://stormlightarchive.fandom.com/wiki/Sanderson%27s_Laws_of_Magic) +1. [Level Design Patterns in 2D Games](http://akhalifa.com/documents/level-design-patterns.pdf) +1. https://en.wikipedia.org/wiki/Rules_of_Play + + ## [Game Maker's Toolkit](https://www.youtube.com/channel/UCqJ-Xo29CKyLTjn6z2XwYAw) + + 1. [Can We Make Talking as Much Fun as Shooting? | Game Maker's Toolkit](https://www.youtube.com/watch?v=l9TzqNQBmr0) + 1. [Are Score Systems Still Relevant? | Game Maker's Toolkit](https://www.youtube.com/watch?v=K6y9PJipfpk) + 1. [What Makes a Good Combat System? | Game Maker's Toolkit](https://www.youtube.com/watch?v=8X4fx-YncqA) + 1. [The Rise of the Systemic Game | Game Maker's Toolkit](https://www.youtube.com/watch?v=SnpAAX9CkIc) + 1. [Playing Past Your Mistakes | Game Maker's Toolkit](https://www.youtube.com/watch?v=Go0BQugwGgM) + 1. [How to Keep Players Engaged (Without Being Evil) | Game Maker's Toolkit](https://www.youtube.com/watch?v=hbzGO_Qonu0) + 1. [Building Better Skill Trees | Game Maker's Toolkit](https://www.youtube.com/watch?v=wsmEuHa1eL8) + 1. [The Year Stealth Games Got Serious | Game Maker's Toolkit](https://www.youtube.com/watch?v=Iz-XTR3pwrE) + 1. [Why Synergies are the Secret to Slay the Spire’s Fun | Game Maker’s Toolkit](https://www.youtube.com/watch?v=terD4Bk3L_8) + 1. [Why Metro Exodus is 2019’s Most Immersive Open World Game | Game Maker's Toolkit](https://www.youtube.com/watch?v=8geGHbWIMXA) + 1. [Roguelikes, Persistency, and Progression | Game Maker's Toolkit](https://www.youtube.com/watch?v=G9FB5R4wVno) + 1. [Do We Need a Soulslike Genre? | Game Maker's Toolkit](https://www.youtube.com/watch?v=Lx7BWayWu08) + 1. [Forging God of War's Leviathan Axe | Game Maker's Toolkit](https://www.youtube.com/watch?v=vwbz9gxoQFg) + 1. [What Makes a Good Puzzle? | Game Maker's Toolkit](https://www.youtube.com/watch?v=zsjC6fa_YBg) + 1. [How Games Use Feedback Loops | Game Maker’s Toolkit](https://www.youtube.com/watch?v=H4kbJObhcHw) + 1. [Depth, Mastery, and Vanquish | Game Maker's Toolkit](https://www.youtube.com/watch?v=IG8LVpuzYls) + 1. [Morality in the Mechanics | Game Maker's Toolkit](https://www.youtube.com/watch?v=6RHH7M4siPM) + 1. [Anatomy of a Side Quest: Beyond the Beef | Game Maker's Toolkit](https://www.youtube.com/watch?v=yM1yR7WYqgM) + 1. [Telling Stories with Systems | Game Maker's Toolkit](https://www.youtube.com/watch?v=NyMndWpihTM) + 1. [What Makes Good AI? | Game Maker's Toolkit](https://www.youtube.com/watch?v=9bbhJi0NBkk) + 1. [What Makes a Good Detective Game? | Game Maker's Toolkit](https://www.youtube.com/watch?v=gwV_mA2cv_0) + 1. [How Game Designers Protect Players From Themselves | Game Maker's Toolkit](https://www.youtube.com/watch?v=7L8vAGGitr8) + 1. [What Made Psychonauts Special | Game Maker's Toolkit](https://www.youtube.com/watch?v=5I4vD2S01d0) + 1. [How Event[0] Works | Game Maker's Toolkit](https://www.youtube.com/watch?v=bCJw4hQkPj4) + 1. [The Comeback of the Immersive Sim | Game Maker's Toolkit](https://www.youtube.com/watch?v=kbyTOAlhRHk) + 1. [How Games Do Health | Game Maker's Toolkit](https://www.youtube.com/watch?v=4AEKbBF3URE) + 1. [Should Dark Souls Have an Easy Mode? | Game Maker's Toolkit](https://www.youtube.com/watch?v=K5tPJDZv_VE) + 1. [Is The Swindle the First Great Heist Game? | Game Maker's Toolkit](https://www.youtube.com/watch?v=cUbyNJKsi7E) + 1. [Redesigning Death | Game Maker's Toolkit](https://www.youtube.com/watch?v=6WyalnKQIpg) + 1. [Secrets of Game Feel and Juice | Game Maker's Toolkit](https://www.youtube.com/watch?v=216_5nu4aVQ) + 1. [Arkham Knight and the Scourge of Scale | Game Maker's Toolkit](https://www.youtube.com/watch?v=Kvbnc-7Y0fE) + 1. [The World Design of Castlevania: Symphony of the Night | Boss Keys](https://www.youtube.com/watch?v=a1hHOVIkrcc) + 1. [The World Design of Dark Souls | Boss Keys](https://www.youtube.com/watch?v=QhWdBhc3Wjc) + + ## [Game Wisdom](https://www.youtube.com/channel/UCJPQyAGAbIcXZXfM01oOPOA) + + 1. [Is Extreme RNG Bad For Game Design? (Critical Thought)](https://www.youtube.com/watch?v=yVhQWkQoykQ) + 1. [What Does it Mean to Last in the Game Industry? | Critical Thought](https://www.youtube.com/watch?v=Xku4IOO37s0) + 1. [The Game Design Trap of a Zelda Roguelike](https://www.youtube.com/watch?v=oWSj8WEy9YE) + 1. [Using Supplemental Content to Grow Rogue-Like and Strategy Game Design -- Critical Thought](https://www.youtube.com/watch?v=xsbPr0SND5s) + 1. [A Critical Thought on Class Based RPG Design](https://www.youtube.com/watch?v=EcX3rPHmmfI) + 1. [Why 2D Game Design Is Never Going Away | Critical Thought](https://www.youtube.com/watch?v=CqO4DgJZC04) + 1. [A Critical Thought on RPG Class Design](https://www.youtube.com/watch?v=ykvwgSAwvgM) + 1. [The Difficulty Behind Grand Strategy Game Design -- Critical Thought](https://www.youtube.com/watch?v=Vthi6_fgkWk) + 1. [The Game Design Trap of Modern Retro Games -- Critical Thought](https://www.youtube.com/watch?v=utfM4OVAlXw) + 1. [The Secret to Replayable Video Games: Defining Variance (Critical Thought)](https://www.youtube.com/watch?v=6jmhzfk7cI0) + 1. [The Limits of Battle Royale Game Design | Critical Thought](https://www.youtube.com/watch?v=jGEokQBbZm8) + 1. [A Critical Thought on WRPG vs JRPG Design](https://www.youtube.com/watch?v=QptfFveZH40) + 1. [When Does a Video Game Become Tactical? (Critical Thought)](https://www.youtube.com/watch?v=9DjMyJ4c6sc) + 1. [How Numbers Impact Game Design (Critical Thought)](https://www.youtube.com/watch?v=ychRUeGxuA4) + 1. [A Critical Thought on Asymmetrical Design and Balance](https://www.youtube.com/watch?v=ah-q6gmcCcM) + 1. [A Critical Thought on RPG Progression](https://www.youtube.com/watch?v=kou6zzE7odk) + 1. [A Critical Thought on Gear-Based Progression](https://www.youtube.com/watch?v=Qtf4JrJADuE) + 1. [The Difference Between Environmental and Level Design in Video Games -- Critical Thought](https://www.youtube.com/watch?v=Lmf1oQIwNCk) + 1. [The Limitations of Leveling in Game Design | Critical Thought](https://www.youtube.com/watch?v=V4EK53qA2ZA) + 1. [What Makes Grinding Fun in Videogames | Critical Thought](https://www.youtube.com/watch?v=a5skg3YF6D0) + 1. [Should Videogames be a Mystery? | Critical Thought](https://www.youtube.com/watch?v=J3Pm61xk444) + 1. [A Critical Thought on Apex Predator Stealth Game Design](https://www.youtube.com/watch?v=69rJy146F7I) + 1. [The Limits of Realism in Video Games -- Critical Thought](https://www.youtube.com/watch?v=R_hXwd-TXqw) + 1. [What Makes an Immersive Sim? (Critical Thought)](https://www.youtube.com/watch?v=lMi1PNiQoTg) + 1. [A Critical Thought on the Bar of Game Design](https://www.youtube.com/watch?v=30xMJFRNwpc) + 1. [A Critical Thought on Persistent Systems in Game Design](https://www.youtube.com/watch?v=uk_1VoMtmK8) + 1. [A Critical Thought on Game Pricing](https://www.youtube.com/watch?v=BGAa11Wmnsw) + 1. [A Critical Thought on 7-9 Review Scores](https://www.youtube.com/watch?v=QjI_ayarAq4) + 1. [A Critical Thought on Event-Driven Game Design](https://www.youtube.com/watch?v=df_cS3N5Ri4) + 1. [A Critical Thought on the Flow State and Video Games](https://www.youtube.com/watch?v=dGfuN7PT8Fg) + 1. [A Critical Thought on Boss Battle Design](https://www.youtube.com/watch?v=R73FdiuwNQc) + 1. [The Difference Between Graphics and Aesthetics in Videogames (Critical Thought)](https://www.youtube.com/watch?v=dDh_P0FZYCE) + 1. [A Critical Thought on the Foundation of Emergent Gameplay](https://www.youtube.com/watch?v=EbYvxZcMzGw) + 1. [A Critical Thought on Environmental Storytelling in Video Games](https://www.youtube.com/watch?v=bryR9RY7KFs) + 1. [A Critical Thought on Puzzle Design](https://www.youtube.com/watch?v=jlPokDZWN3Q) + 1. [A Critical Thought on Good Stealth Game Design](https://www.youtube.com/watch?v=MMhR5o2EcLc) + 1. [How to Define Gameplay in Videogames | Critical Thought](https://www.youtube.com/watch?v=S97Z8WarJT4) + 1. [A Critical Thought on "Upen" World Game Design](https://www.youtube.com/watch?v=d0aced1ONCM) + 1. [A Critical Thought on the Hierarchy of Fail States](https://www.youtube.com/watch?v=FACTASJ5UzA) + 1. [The Problems With Designing for Depth in Videogames (Critical Thought)](https://www.youtube.com/watch?v=a9tbDWdZ7W0) + 1. [The Contradiction of Fun Pain in Video Games -- Critical Thought](https://www.youtube.com/watch?v=SYaEAOlbCwE) + 1. [A Critical Thought on Creating Enemy Behaviors in Game Design](https://www.youtube.com/watch?v=FoG_8wVdoow) + 1. [A Critical Thought on Balancing Failure in Game Design](https://www.youtube.com/watch?v=DZW9f48G2mQ) + 1. [How Dissonance Can Affect Videogames | Critical Thought](https://www.youtube.com/watch?v=Ip12_GQ09Bk) + 1. [Defining the Core Gameplay Loop of your Game | Critical Thought](https://www.youtube.com/watch?v=-kIwf-dNXr0) + 1. [Helpful Tips to Improve Playability in Game Design | Critical Thought](https://www.youtube.com/watch?v=pNsIe6EU4Cc) + 1. [A Critical Thought on Understanding Emergent Gameplay](https://www.youtube.com/watch?v=LTc_zIsUfMw) + 1. [Defining Accessibility vs. Playability in Game Design | Critical Thought](https://www.youtube.com/watch?v=ASwCEelR_J8) + 1. [How to Fix Loot Boxes Before They're Banned | Critical Thought](https://www.youtube.com/watch?v=cPoaRpDRZbc) + 1. [The Design Behind Effective Loot Tables -- Critical Thought](https://www.youtube.com/watch?v=Nz3dk3Q4LxY) + 1. [A Critical Thought on When Video Game Difficulty Becomes Cheap](https://www.youtube.com/watch?v=fae9Q173YUU) + 1. [A Critical Thought on Fair Use and Fan Games](https://www.youtube.com/watch?v=cTUW6-P_3Rg) + 1. [A Critical Thought on Direct vs. Indirect Competition](https://www.youtube.com/watch?v=_Klc69XDR1w) + 1. [A Critical Thought on Conditioning Players](https://www.youtube.com/watch?v=efeqryVz7ro) + 1. [A Critical Thought on Combining RPG and Action Games](https://www.youtube.com/watch?v=Kh8itq2jf_M) + 1. [The Three Elements of Good Level Design in Video Games -- Critical Thought](https://www.youtube.com/watch?v=sHKc_DqdxQk) + 1. [The Three Forms of Stealth Gameplay (Critical Thought)](https://www.youtube.com/watch?v=nLOMq5qCxKU) + 1. [The Deeper Design Behind the Dark Souls Formula -- Critical Thought](https://www.youtube.com/watch?v=hlccvyRGdPI) + 1. [The Limits of Randomization in Game Design -- Critical Thought](https://www.youtube.com/watch?v=fuIihMRNEeE) + 1. [How RNG in Games is Like a Spice -- Critical Thought](https://www.youtube.com/watch?v=A3cG4IHaOUY) + 1. [The Failing Point of Free to Play Game Design -- Critical Thought](https://www.youtube.com/watch?v=_7-cQdFgD4k) + 1. [A Critical Thought on Game Design Abstraction](https://www.youtube.com/watch?v=odCFa72nQCc) + 1. [A Critical Thought on Difficulty Scaling in Game Design](https://www.youtube.com/watch?v=Y4AQPefZwt0) + 1. [What Makes the Collectible Hunt So Addicting in Videogames | Critical Thought](https://www.youtube.com/watch?v=mg-OlFeU0YQ) + 1. [What Makes a Metroidvania Work? | Critical Thought](https://www.youtube.com/watch?v=4ggILevH7Tw) + 1. [A Critical Thought on the Worst Kind of Video Game Grinding](https://www.youtube.com/watch?v=7jrYVFsW_Rw) + 1. [A Critical Thought on Mixed Genre Game Design](https://www.youtube.com/watch?v=g7_nVpGVuHQ) + 1. [The Problems With Punishment Systems in Videogames | Critical Thought](https://www.youtube.com/watch?v=gkp2tW_rzz0) + 1. [Can Persistence Work in Esports? (Critical Thought)](https://www.youtube.com/watch?v=4BysWm6SqTk) + 1. [A Critical Thought on The Race to the Bottom](https://www.youtube.com/watch?v=YhdbYhoWECs) + 1. [A Critical Thought on Why Build Orders Spell Trouble for Video Games](https://www.youtube.com/watch?v=XJHxfnWUdTc) + 1. [A Critical Thought on Persistence Mechanics](https://www.youtube.com/watch?v=G2W7JGB8uug) + 1. [A Critical Thought on Regenerating Health Game Design](https://www.youtube.com/watch?v=tPlPxGAskx8) + 1. [A Critical Thought on Meta-Game Design](https://www.youtube.com/watch?v=pjpf7wFnvaU) + 1. [A Critical Thought on Hard Games](https://www.youtube.com/watch?v=z92x3tnXG2A) + 1. [A Critical Thought on Downtime in Video Games](https://www.youtube.com/watch?v=t46bDmK4qFo) + 1. [A Critical Thought on Item Hoarding](https://www.youtube.com/watch?v=hMybxTFMMXw) + 1. [Why Morality Systems in Games Don't Work -- Critical Thought](https://www.youtube.com/watch?v=qvNMXZFc8og) + 1. [A Critical Thought on ELO Rating Systems](https://www.youtube.com/watch?v=1akzEbNLKqs) + 1. [A Critical Thought on Probability in Game Design](https://www.youtube.com/watch?v=wgi-MH1PxAg) + 1. [Defining (And Reducing) Grinding in Video Games -- Critical Thought](https://www.youtube.com/watch?v=dPH2OkVJmnM) + 1. [Explaining the Assassin's Creed Odyssey Backlash on Player Choice-- Critical Thought](https://www.youtube.com/watch?v=sJhPYiNopKo) + 1. [A Critical Thought on WRPG vs CRPG Design](https://www.youtube.com/watch?v=mzsRs-qinJU) + 1. [A Critical Thought on Unpredictable Competitive Games](https://www.youtube.com/watch?v=LyrFdFwCYxw) + 1. [A Critical Thought on Game Reviewers](https://www.youtube.com/watch?v=ejLcJ680Je0) + 1. [A Critical Thought on Disgaea's Design and Layered Game Systems](https://www.youtube.com/watch?v=s_z5liQ4Zbw) + 1. [A Critical Thought on the Dangers of Feature Creep](https://www.youtube.com/watch?v=3lvkxfOrnSo) + 1. [A Critical Thought on Making Competitive Games](https://www.youtube.com/watch?v=su0zUE_iU14) + 1. [A Critical Thought on Power Curves in Game Design](https://www.youtube.com/watch?v=j0-Mmcfq3so) + 1. [A Critical Thought on the Blue Shell Debate](https://www.youtube.com/watch?v=teYuozYi8Kg) + 1. [A Critical Thought on Strategy Guides](https://www.youtube.com/watch?v=vW3qgpt4s2c) + 1. [A Critical Thought on Breaking Games](https://www.youtube.com/watch?v=aorjSqZMb5E) + + ## [Roguelike Radio](http://www.roguelikeradio.com/) + + 1. [Episode 3: Brogue](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio3.mp3) + 1. [Episode 4: DoomRL](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio4.mp3) + 1. [Episode 5: Frozen Depths](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio5.mp3) + 1. [Episode 8: Progression Systems](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio8.mp3) + 1. [Interview: Brian Walker aka Pender](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio-pender.mp3) + 1. [Episode 9: Powder](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio9.mp3) + 1. [Episode 10: Deity Systems](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio10.mp3) + 1. [Episode 12: Roguelikes Features in Other Genres](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio12.mp3) + 1. [Episode 13: Mystery Dungeon 2: Shiren the Wander](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio13.mp3) + 1. [Episode 14: Resource Management](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio14.mp3) + 1. [Episode 15: Quickband](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio15.mp3) + 1. [Episode 16: History and Future of Roguelikes](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio16.mp3) + 1. [Episode 18: ToME4](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio18.mp3) + 1. [Episode 19: Interview with DarkGod, creator of ToME4](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio19.mp3) + 1. [Episode 20: Cataclysm](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio20.mp3) + 1. [Episode 21: Procedural Generation](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio21.mp3) + 1. [Episode 22: Infra Arcana](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio22.mp3) + 1. [Episode 23: Interview with David Ploog](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio23.mp3) + 1. [Episode 24: Themes and Settings](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio24.mp3) + 1. [Episode 25: Permadeath](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio25.mp3) + 1. [Episode 26: How to Make a 7DRL](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio26.mp3) + 1. [Episode 30: Identification Systems](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio30.mp3) + 1. [Episode 31 - Rogue, with co-creator Glenn Wichman](http://www.roguelikeradio.com/2012/04/episode-31-rogue-with-co-creator-glenn.html) + 1. [Episode 32: Combat Mechanics](http://www.roguelikeradio.com/2012/04/episode-32-combat-mechanics.html) + 1. [Episode 33: Interview with Thomas Biskup, creator of ADOM](http://www.roguelikeradio.com/2012/05/episode-33-interview-with-thomas-biskup.html) + 1. [Episode 34: Red Rogue, with creator Aaron Steed](http://www.roguelikeradio.com/2012/05/episode-34-red-rogue-with-creator-aaron.html) + 1. [Episode 35: Diablo](http://www.roguelikeradio.com/2012/05/episode-35-diablo.html) + 1. [Episode 36: Coffeebreak Roguelikes](http://www.roguelikeradio.com/2012/05/episode-36-coffeebreak-roguelikes.html) + 1. [Episode 38: Zaga-33 and MicRogue](http://www.roguelikeradio.com/2012/06/episode-38-zaga-33-and-microgue.html) + 1. [Episode 40: Designing for Non-Roguelikers](http://www.roguelikeradio.com/2012/07/episode-40-designing-for-non.html) + 1. [Episode 41: Score Systems](http://www.roguelikeradio.com/2012/07/episode-41-score-systems.html) + 1. [Episode 42: Elitism](http://www.roguelikeradio.com/2012/07/episode-42-elitism.html) + 1. [Episode 43: Spelunky](http://www.roguelikeradio.com/2012/08/episode-43-spelunky.html) + 1. [Episode 44: Winning](http://www.roguelikeradio.com/2012/08/episode-44-winning.html) + 1. [Episode 45 - Caves of Qud](http://www.roguelikeradio.com/2012/09/episode-45-caves-of-qud.html) + 1. [Episode 51: Graphics and Tile Design part 1](http://www.roguelikeradio.com/2012/11/episode-51-graphics-and-tile-design.html) + 1. [Episode 53: Game Design in Academia](http://www.roguelikeradio.com/2012/11/episode-53-game-design-in-academia.html) + 1. [Episode 54: Game Jams](http://www.roguelikeradio.com/2012/11/episode-54-game-jams.html) + 1. [Episode 55: Strategy Games](http://www.roguelikeradio.com/2012/12/episode-55-strategy-games.html) + 1. [Episode 59: Sil](http://www.roguelikeradio.com/2013/01/episode-59-sil.html) + 1. [Episode 64: Player competitions](http://www.roguelikeradio.com/2013/03/episode-64-player-competitions.html) + 1. [Episode 65: Roguelike Communities](http://www.roguelikeradio.com/2013/03/episode-65-roguelike-communities.html) + 1. [Episode 68: 7DRL 2013 Failures](http://www.roguelikeradio.com/2013/04/episode-68-7drl-2013-failures.html) + 1. [Episode 69: Boss Fights](http://www.roguelikeradio.com/2013/04/episode-69-boss-fights.html) + 1. [Episode 70: Introducing People to Roguelikes](http://www.roguelikeradio.com/2013/04/episode-70-introducing-people-to.html) + 1. [Episode 71: The Hunger Clock](http://www.roguelikeradio.com/2013/05/episode-71-hunger-clock.html) + 1. [Episode 72: IRDC 2013](http://www.roguelikeradio.com/2013/06/episode-72-irdc-2013.html) + 1. [Episode 74 - Sword of the Stars: The Pit](http://www.roguelikeradio.com/2013/06/episode-74-sword-of-stars-pit.html) + 1. [Episode 75: Cataclysm Dark Days Ahead](http://www.roguelikeradio.com/2013/07/episode-75-cataclysm-dark-days-ahead.html) + 1. [Episode 77: The Hero Trap](http://www.roguelikeradio.com/2013/08/episode-77-hero-trap.html) + 1. [Episode 78: Inspiration from Board Games](http://www.roguelikeradio.com/2013/08/episode-78-inspiration-from-board-games.html) + 1. [Episode 79 - Mobile Roguelikes](http://www.roguelikeradio.com/2013/09/episode-79-mobile-roguelikes.html) + 1. [Episode 80: UnReal World](http://www.roguelikeradio.com/2013/09/this-is-episode-80-of-roguelike-radio.html) + 1. [Episode 81: Puzzles](http://www.roguelikeradio.com/2013/10/episode-81-puzzles.html) + 1. [Episode 82: Interview with Zeno](http://www.roguelikeradio.com/2013/11/episode-82-interview-with-zeno.html) + 1. [Episode 83: ASCII](http://www.roguelikeradio.com/2013/12/episode-83-ascii.html) + 1. [Episode 84: Nethack](http://www.roguelikeradio.com/2013/12/episode-84-nethack.html) + 1. [Episode 86: How to Make a Unique 7DRL](http://www.roguelikeradio.com/2014/03/episode-86-how-to-make-unique-7drl.html) + 1. [Episode 89: Interview with the Angband devteam part 1](http://www.roguelikeradio.com/2014/08/episode-89-interview-with-angband.html) + 1. [Episode 90: Angband devteam interview part 2](http://www.roguelikeradio.com/2014/08/episode-90-angband-devteam-interview.html) + 1. [Episode 91: Our First Roguelikes](http://www.roguelikeradio.com/2014/09/episode-91-our-first-roguelikes.html) + 1. [Episode 92: Return to Brogue](http://www.roguelikeradio.com/2014/10/episode-92-return-to-brogue.html) + 1. [Episode 94: ProcJam](http://www.roguelikeradio.com/2014/10/episode-94-procjam.html) + 1. [Episode 98: What Players Want from 7DRLs](http://www.roguelikeradio.com/2015/03/episode-98-what-players-want-from-7drls.html) + 1. [Episode 100: YASDs](http://www.roguelikeradio.com/2015/06/episode-100-yasds.html) + 1. [Episode 102: Interview with Frank Lantz](http://www.roguelikeradio.com/2015/06/episode-102-interview-with-frank-lantz.html) + 1. [Episode 105: Dungeon Hacks, a book about roguelikes](http://www.roguelikeradio.com/2015/08/episode-105-dungeon-hacks-book-about.html) + 1. [Episode 106: 30 Minutes of UMoria](http://www.roguelikeradio.com/2015/08/episode-106-30-minutes-of-umoria.html) + 1. [Episode 107: Listeners Q&As](http://www.roguelikeradio.com/2015/09/episode-107-listeners-q.html) + 1. [Episode 108: Information](http://www.roguelikeradio.com/2015/10/episode-108-information.html) + 1. [Episode 109: Cogmind](http://www.roguelikeradio.com/2015/10/episode-109-cogmind.html) + 1. [Episode 110: Obsession](http://www.roguelikeradio.com/2015/11/episode-110-obsession.html) + 1. [Episode 111: Invisible Inc](http://www.roguelikeradio.com/2015/12/episode-111-invisible-inc.html) + 1. [Episode 114: Gameplay-Orientated Procedural Generation](http://www.roguelikeradio.com/2016/01/episode-114-gameplay-orientated.html) + 1. [Episode 115: The Curious Expedition](http://www.roguelikeradio.com/2016/02/episode-115-curious-expedition.html) + 1. [Episode 118: Interview with John Harris](http://www.roguelikeradio.com/2016/03/episode-118-interview-with-john-harris.html) + 1. [Episode 121: Simulation](http://www.roguelikeradio.com/2016/04/episode-121-simulation.html) + 1. [Episode 122: Nethack Tool-Assisted Speedruns](http://www.roguelikeradio.com/2016/06/episode-122-nethack-tool-assisted.html) + 1. [Episode 123: Geometry in Roguelikes](http://www.roguelikeradio.com/2016/06/episode-123-geometry-in-roguelikes.html) + 1. [Episode 124: Shoot Em Ups](http://www.roguelikeradio.com/2016/08/episode-124-shoot-em-ups.html) + 1. [Episode 125: Road Not Taken](http://www.roguelikeradio.com/2016/08/episode-125-road-not-taken.html) + 1. [Episode 126: IVAN](http://www.roguelikeradio.com/2016/09/episode-126-ivan.html) + 1. [Episode 128: How To Be Good At Roguelikes](http://www.roguelikeradio.com/2016/10/episode-128-how-to-be-good-at-roguelikes.html) + 1. [Episode 134: Randomness](http://www.roguelikeradio.com/2017/03/episode-134-randomness.html) + 1. [Episode 137: Book on Procedural Generation in Game Design](http://www.roguelikeradio.com/2017/06/episode-137-book-on-procedural.html) + 1. [Episode 138: Golden Krone Hotel](http://www.roguelikeradio.com/2017/08/episode-138-golden-krone-hotel.html) + 1. [Episode 139: Unexplored](http://www.roguelikeradio.com/2017/09/episode-139-unexplored.html) + 1. [Episode 140: Horror](http://www.roguelikeradio.com/2017/10/episode-140-horror.html) + 1. [Episode 141: MUDs](http://www.roguelikeradio.com/2017/11/episode-141-muds.html) + 1. [Episode 144: AI](http://www.roguelikeradio.com/2018/02/episode-144-ai.html) + 1. [Episode 147: Difficulty](http://www.roguelikeradio.com/2018/08/episode-147-difficulty.html) + 1. [Episode 149: Chaos Theory](http://www.roguelikeradio.com/2018/12/episode-149-chaos-theory.html) + 1. [Episode 150: Rot.js with Ondrej Zara](http://www.roguelikeradio.com/2019/01/episode-150-rotjs-with-ondrej-zara.html) + 1. [Episode 154: Jupiter Hell - Early Access](http://www.roguelikeradio.com/2019/08/episode-154-jupiter-hell-early-access.html) + +# Voxel + +1. https://github.com/stoyannk/voxels + +# Planning + +1. https://github.com/adnzzzzZ/blog/issues/47 + diff --git a/documentation/bookmark/machine_learning.md b/documentation/bookmark/machine_learning.md new file mode 100644 index 000000000..d897b7730 --- /dev/null +++ b/documentation/bookmark/machine_learning.md @@ -0,0 +1,87 @@ +# Transformer + +1. [Transformers from scratch](http://www.peterbloem.nl/blog/transformers) + +# Exemplar + +1. https://ml5js.org/ +1. https://www.csie.ntu.edu.tw/~cjlin/libsvm/ +1. http://halide-lang.org/ + +# Reference + +1. ["Multi-Level Intermediate Representation" Compiler Infrastructure](https://github.com/tensorflow/mlir) +1. [Sampling can be faster than optimization](https://www.pnas.org/content/116/42/20881) +1. [Layer rotation: a surprisingly powerful indicator of generalization in deep networks](https://arxiv.org/abs/1806.01603v2) +1. https://nostalgebraist.tumblr.com/post/185326092369/the-transformer-explained +1. [HyperE: Hyperbolic Embeddings for Entities](https://hazyresearch.github.io/hyperE/) +1. https://www.samcoope.com/posts/playing_around_with_noise_as_targets +1. https://lobste.rs/s/hgejxf/why_is_machine_learning_most_often +1. https://boingboing.net/2018/11/12/local-optima-r-us.html/amp +1. https://crazyoscarchang.github.io/2019/02/16/seven-myths-in-machine-learning-research/ +1. https://www.c4ml.org/ +1. https://medium.com/@l2k/why-are-machine-learning-projects-so-hard-to-manage-8e9b9cf49641 +1. https://github.com/MikeInnes/diff-zoo +1. https://cloud.google.com/blog/products/ai-machine-learning/introducing-feast-an-open-source-feature-store-for-machine-learning +1. https://towardsdatascience.com/introducing-manifold-db9e90f20347 +1. http://snap.stanford.edu/graphsage/ +1. https://heartbeat.fritz.ai/capsule-networks-a-new-and-attractive-ai-architecture-bd1198cc8ad4 +1. http://super-ms.mit.edu/rum.html + +# Deep learning + +1. [Evolution Strategies](https://lilianweng.github.io/lil-log/2019/09/05/evolution-strategies.html) +1. [Monadic Deep Learning: Performing monadic automatic differentiation in parallel](https://deeplearning.thoughtworks.school/assets/paper.pdf) +1. [Demystifying Differentiable Programming: Shift/Reset the Penultimate Backpropagator](https://arxiv.org/abs/1803.10228) +1. https://github.com/microsoft/tensorwatch +1. https://d2l.ai/ +1. https://hadrienj.github.io/posts/Deep-Learning-Book-Series-Introduction/ +1. http://nlp.seas.harvard.edu/NamedTensor +1. https://tvm.ai/ +1. https://machinelearningmastery.com/framework-for-better-deep-learning/ +1. [Geometric Understanding of Deep Learning](https://arxiv.org/abs/1805.10451) +1. https://towardsdatascience.com/what-is-geometric-deep-learning-b2adb662d91d +1. https://deeplearning4j.org/ +1. [Deep(er) learning](http://www.jneurosci.org/content/early/2018/07/13/JNEUROSCI.0153-18.2018?versioned=true) + +# Neural network + +1. https://github.com/BrainJS/brain.js +1. https://blog.jle.im/entry/practical-dependent-types-in-haskell-1.html +1. https://matloff.wordpress.com/2018/06/20/neural-networks-are-essentially-polynomial-regression/ +1. https://www.quantamagazine.org/foundations-built-for-a-general-theory-of-neural-networks-20190131#AI +1. https://rkevingibson.github.io/blog/neural-networks-as-ordinary-differential-equations/ + +# Tensor + +1. http://nlp.seas.harvard.edu/NamedTensor.html +1. http://nlp.seas.harvard.edu/NamedTensor2 + +# Meta-learning + +1. https://blog.fastforwardlabs.com/2019/05/22/metalearners-learning-how-to-learn.html +1. https://www.bayeswatch.com/2018/11/30/HTYM/ +1. https://bender.dreem.com/ + +# Model + +1. http://onnx.ai/ + +# Training + +1. https://ai.googleblog.com/2019/03/introducing-gpipe-open-source-library.html + +# Differentiable programming + +1. [The Taichi Programming Language](http://taichi.graphics/) +1. [The principles behind Differentiable Programming - Erik Meijer](https://www.youtube.com/watch?v=lk0PhtSHE38) +1. [Kotlin∇: Type-safe Symbolic Differentiation for Kotlin](https://github.com/breandan/kotlingrad) +1. [Differentiable Programming Manifesto](https://github.com/apple/swift/blob/master/docs/DifferentiableProgramming.md) +1. [Backpropagation in the Simply Typed Lambda-calculus with Linear Negation](https://arxiv.org/abs/1909.13768) +1. [One-and-a-Half Simple Differential Programming Languages](https://pages.cpsc.ucalgary.ca/~robin/FMCS/FMCS2019/slides/GordonPlotkin-FMCS2019.pdf) +1. [Differentiable Programming Mega-Proposal](https://forums.swift.org/t/differentiable-programming-mega-proposal/28547) +1. https://fluxml.ai/2019/02/07/what-is-differentiable-programming.html +1. https://github.com/breandan/kotlingrad +1. https://colinraffel.com/blog/you-don-t-know-jax.html +1. https://github.com/tensorflow/mlir + diff --git a/documentation/bookmark/math.md b/documentation/bookmark/math.md new file mode 100644 index 000000000..a582bb64d --- /dev/null +++ b/documentation/bookmark/math.md @@ -0,0 +1,395 @@ +# Tensor calculus + +1. [Introduction to Tensor Calculus](http://www.ita.uni-heidelberg.de/~dullemond/lectures/tensor/tensor.pdf) + +# Geometry + +1. [Perspectives on Projective Geometry: A Guided Tour through Real and Complex Geometry](https://www-m10.ma.tum.de/foswiki/pub/Lehre/WS0910/ProjektiveGeometrieWS0910/GeomBook.pdf) +1. [Symplectic Geometry for Engineers - Fundamentals](https://www.researchgate.net/publication/338124384_Symplectic_Geometry_for_Engineers_-_Fundamentals) + +# Prime number + +1. [The History of the Primality of One: A Selection of Sources](https://cs.uwaterloo.ca/journals/JIS/VOL15/Caldwell2/cald6.pdf) + +# Trigonometry + +1. [Approximating the Sine Function](http://datagenetics.com/blog/july12019/index.html) + +# Period + +1. https://en.wikipedia.org/wiki/Ring_of_periods +1. [PERIODS](http://www.ihes.fr/~maxim/TEXTS/Periods.pdf) + +# Proof theory + +1. [Mathematical Components](https://math-comp.github.io/mcb/) + +# Statistics + +1. https://www.statisticsdonewrong.com/ + +# Topology + +1. [What is Topology?](https://medium.com/cantors-paradise/what-is-topology-963ef4cc6365) +1. [Pointless topology](https://en.wikipedia.org/wiki/Pointless_topology) +1. [ELEMENTARY APPLIED TOPOLOGY](https://www.math.upenn.edu/~ghrist/notes.html) + +# Library + +1. https://github.com/ZacharyPatten/Towel + +# Polynomials + +1. https://brainbomb.org/0-1-efficient-metholds-for-evaluting-polynomials/ +1. https://en.wikipedia.org/wiki/Horner%27s_method + +# Chaos Theory + +1. http://ncase.me/attractors/ + +# Number Theory + +1. https://twitter.com/johncarlosbaez/status/1184492139897507840 +1. https://en.wikipedia.org/wiki/Dual_number +1. https://en.wikipedia.org/wiki/Division_algebra +1. [Division algebras](https://www.youtube.com/watch?v=3BZyds_KFWM&list=PLNxhIPHaOTRZMO1VjJcs7_3dgyJ2qU1yZ) +1. https://www.quantamagazine.org/the-octonion-math-that-could-underpin-physics-20180720 +1. http://illustratedtheoryofnumbers.com/ +1. [Topology of Numbers](http://pi.math.cornell.edu/~hatcher/TN/TNpage.html) + +## Hyperreal number + +1. [Yes, You Can Manipulate Infinity—in Math](https://mindmatters.ai/2019/10/yes-you-can-manipulate-infinity-in-math/) + +# Quaternions + +1. [Dual Quaternions for Mere Mortals](https://www.jeremyong.com/math/2019/08/05/dual-quaternions-for-mere-mortals/) +1. [Stepping into a New Dimension: Using Quaternions to See the Invisible](https://medium.com/@vieyrasoftware/stepping-into-a-new-dimension-using-quaternions-to-see-the-invisible-478087c9ebbf) +1. [How Quaternions Produce 3D Rotation](https://penguinmaths.blogspot.com/2019/06/how-quaternions-produce-3d-rotation.html) +1. [APPLICATION OF DUAL QUATERNIONS ON SELECTED PROBLEMS](https://otik.uk.zcu.cz/bitstream/11025/28563/1/phd_Application%20of%20dual%20quaternions%20on%20selected%20problems.pdf) +1. https://www.3dgep.com/understanding-quaternions/ +1. https://probablydance.com/2017/08/05/intuitive-quaternions/ +1. [Quaternion algebras](https://math.dartmouth.edu/~jvoight/quat.html) + +# _Compendium of resources_ + +1. [Free and Open-Source Textbooks](http://danaernst.com/resources/free-and-open-source-textbooks/) +1. [ALL IN ONE MATHEMATICS CHEAT SHEET](https://ourway.keybase.pub/mathematics_cheat_sheet.pdf) +1. https://github.com/llSourcell/learn_math_fast +1. https://www.algorithm-archive.org/ +1. [3b1b featured creators #1](https://www.youtube.com/watch?v=VcgJro0sTiM) +1. [An infinite descent into pure mathematics](https://infinitedescent.xyz/) +1. https://hackernoon.com/be-a-better-programmer-with-these-40-mathematics-courses-d8ca48a2f8a2 +1. https://www.intmath.com/ +1. https://en.wikipedia.org/wiki/Graduate_Texts_in_Mathematics + +# Bézier curves + +1. [Circles and lines vs. polynomial splines](https://wordsandbuttons.online/circles_and_lines_vs_polynomial_splines.html) +1. https://cormullion.github.io/blog/2018/06/21/bezier.html +1. https://pomax.github.io/bezierinfo/ +1. https://99designs.com/blog/engineering/math-draw-vector-curves/ +1. https://medium.freecodecamp.org/nerding-out-with-bezier-curves-6e3c0bc48e2f +1. https://pomax.github.io/bezierinfo/#curvature +1. https://raphlinus.github.io/curves/2018/12/28/bezier-arclength.html +1. https://astiopin.github.io/2019/01/04/qbez-parabola.html +1. http://dlacko.org/blog/2016/10/19/approximating-bezier-curves-by-biarcs/ +1. https://bosker.wordpress.com/2013/11/13/beyond-bezier-curves/ + +# Number systems + +1. https://en.wikipedia.org/wiki/Negative_base + +# Discrete mathematics + +1. [Applied Discrete Structures](http://discretemath.org/ads-latex/ads.pdf) +1. [Notes on Discrete Mathematics](http://www.cs.yale.edu/homes/aspnes/classes/202/notes.pdf) +1. [The system of integer functions, an efficient version of discrete mathematical analysis](https://arxiv.org/abs/1710.00676) +1. [Computing the Continuous Discretely: Integer-Point Enumeration in Polyhedra](http://math.sfsu.edu/beck/papers/ccd.pdf) +1. [Discrete Mathematics: An Open Introduction](http://discrete.openmathbooks.org/dmoi2/frontmatter.html) + +# Probability + +1. [Introduction to Probability at anadvanced leve](https://www.stat.berkeley.edu/~aditya/resources/AllLectures2018Fall201A.pdf) + +# Linear Algebra + +1. [Linear Algebra And Multi Dimensional Geometry](https://mirtitles.org/2020/02/13/4129/) +1. [Interactive Linear Algebra](https://textbooks.math.gatech.edu/ila/) +1. [Don’t invert that matrix](https://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/) +1. [“Don’t invert that matrix” – why and how](https://civilstat.com/2015/07/dont-invert-that-matrix-why-and-how/) +1. [Thirty-three Miniatures: Mathematical and Algorithmic Applications of Linear Algebra](https://kam.mff.cuni.cz/~matousek/stml-53-matousek-1.pdf) +1. [Covectors are Different than Vectors, Usually](http://infohost.nmt.edu/~parendt/Phys509/notes/2diracnot/node4.html) +1. [Introduction to Applied Linear Algebra: Vectors, Matrices, and Least Squares](https://web.stanford.edu/~boyd/vmls/vmls.pdf) +1. [Linear Algebra Done Wrong.](http://www.math.brown.edu/~treil/papers/LADW/LADW.html) +1. [Linear Algebra Done Right](http://linear.axler.net/) +1. [Down with Determinants!](http://www.axler.net/DwD.html) +1. https://github.com/jacobbogers/blasjs +1. https://graphicallinearalgebra.net/ +1. [Wild Linear Algebra](https://www.youtube.com/watch?v=yAb12PWrhV0&list=PLIljB45xT85BhzJ-oWNug1YtUjfWp1qAp &&& https://www.youtube.com/watch?v=nJdWFoliRnc&list=PLIljB45xT85DF5G-Hq0xPsVUnR5_wJRSw) +1. https://github.com/ferreiradaselva/mathc +1. http://www.fast.ai/2017/07/17/num-lin-alg/ +1. https://github.com/bluemathsoft/bm-linalg +1. [The Matrix Cookbook](https://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf) +1. https://dhruvp.netlify.com/2018/12/31/matrices/ +1. https://www.nalgebra.org/ +1. http://immersivemath.com/ila/index.html +1. [Linear Logic and Linear Algebra](http://www.cs.bham.ac.uk/~drg/bll/steve.pdf) +1. https://www.math3ma.com/blog/matrices-probability-graphs +1. [Essence of linear algebra](https://www.youtube.com/watch?v=fNk_zzaMoSs&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) +1. https://www.dhruvonmath.com/2018/12/31/matrices/ +1. http://blog.ezyang.com/2019/05/a-short-note-about-functional-linear-maps/ +1. https://www.math3ma.com/blog/matrices-as-tensor-network-diagrams +1. [Convolution is outer product](https://arxiv.org/abs/1905.01289) +1. [Graphical Calculus for products and convolutions](https://arxiv.org/abs/1903.01366) + +# Domain Theory + +1. [A Brief Intro to Domain Theory](https://www.alignmentforum.org/posts/4C4jha5SdReWgg7dF/a-brief-intro-to-domain-theory) + +# Category Theory + +1. [Programming with Categories](https://www.youtube.com/watch?v=Y5YCE_mVjvg&list=PLhgq-BqyZ7i7MTGhUROZy3BOICnVixETS&index=1) +1. [Awesome Applied Category Theory](https://github.com/statebox/awesome-applied-ct) +1. [Categorical Query Language](https://www.categoricaldata.net/) +1. [Abstract and Concrete Categories: The Joy of Cats](http://katmat.math.uni-bremen.de/acc/acc.pdf) +1. https://bartoszmilewski.com/ +1. [YOW! Lambda Jam 2018 - Mark Hopkins -All of Basic Category Theory](https://www.youtube.com/watch?v=9u1q3lH7VbE) +1. [Categorifying cardinal arithmetic](http://www.math.jhu.edu/~eriehl/arithmetic.pdf) +1. https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/ +1. [Elements of ∞-Category Theory](http://www.math.jhu.edu/~eriehl/elements.pdf) +1. [Category Theory: A Gentle Introduction](https://www.logicmatters.net/resources/pdfs/GentleIntro.pdf) +1. [Applied Category Theory (@ MIT 2019)](https://www.youtube.com/playlist?list=PLhgq-BqyZ7i5lOqOqqRiS0U5SwTmPpHQ5) +1. https://jvns.ca/blog/2019/03/26/what-are-monoidal-categories/ +1. [Daniela Sfregola - A Pragmatic Introduction to Category Theories - Code Mesh 2017](https://www.youtube.com/watch?v=8XGFFMPHG0o) +1. [Seven Sketches in Compositionality: An Invitation to Applied Category Theory](http://xahlee.info/math/i/category_theory_brendan_fong_david_spivak_2018-03.pdf) + +# Direct Logic + +1. [Strong Types for Direct Logic](https://drive.google.com/file/d/1relKFB4aOMD2VZHM9qj3wWMXOq-q2AJr/view) + +# Geometric Algebra | Clifford Algebra + +1. [Euclidean Geometry and Geometric Algebra](http://geometry.mrao.cam.ac.uk/2020/06/euclidean-geometry-and-geometric-algebra/) +1. [Plane-based Geometric Algebra for Computer Science](https://bivector.net/PGA4CS.html) +1. [Differential geometric algebra foundations: Grassmann.jl Ascend](https://www.youtube.com/watch?v=7hlDRLEhc8o&feature=youtu.be) +1. [Projective Geometric Algebra Done Right](http://terathon.com/blog/projective-geometric-algebra-done-right/) +1. [Siggraph2019 Geometric Algebra](https://www.youtube.com/watch?v=tX4H_ctggYo) +1. [Introduction to Clifford Algebra](https://www.av8n.com/physics/clifford-intro.htm) +1. [An Introduction to Geometric Algebra over R^2](https://bitworking.org/news/ga/2d) +1. [Exterior Product](https://medium.com/@marksaroufim/exterior-product-ecd5836c28ab) +1. [Projective geometric algebra: A modern framework for doing geometry](http://page.math.tu-berlin.de/~gunn/PGA/index.html) +1. [Geometric Algebra for Computer Graphics](https://slides.com/enkimute/siggraph/#/) +1. https://bivector.net/ +1. https://slehar.wordpress.com/2014/03/18/clifford-algebra-a-visual-introduction/ +1. [Vectors and Beyond: Geometric Algebra and its Philosophical Significance](http://www.tara.tcd.ie/bitstream/handle/2262/61825/Vectors%20and%20Beyond%20as%20Printed.pdf?sequence=1&isAllowed=y) +1. [Let's remove Quaternions from every 3D Engine](http://marctenbosch.com/quaternions/) +1. [Geometric Algebra Playlist](https://www.youtube.com/playlist?list=PLLvlxwbzkr7igd6bL7959WWE7XInCCevt) +1. https://github.com/wolftype/versor +1. [Exploring Physics with Geometric Algebra, Book 1](http://peeterjoot.com/archives/math2015/gabookI.pdf) +1. [Joan Lasenby on Applications of Geometric Algebra in Engineering](https://www.youtube.com/watch?v=ikCIUzX9myY) +1. https://www.amazon.com/Geometric-Algebra-Computer-Graphics-Vince/dp/1846289963 +1. https://www.amazon.com/Geometric-Algebra-Computer-Science-Revised/dp/0123749425 +1. https://www.amazon.com/Space-Time-Algebra-David-Hestenes/dp/3319184121 +1. https://www.amazon.com/Introduction-Clifford-Algebras-Spinors/dp/0198782926 +1. https://gist.github.com/pervognsen/b204bf31af0809af078617af1609c8b8 +1. [Fundamentals of Grassmann Algebra](http://www.terathon.com/gdc12_lengyel.pdf) +1. https://github.com/chakravala/Grassmann.jl + +# Abstract Algebra + +1. [A Brief Guide to A Few Algebraic Structures](https://argumatronic.com//posts/2019-06-21-algebra-cheatsheet.html) +1. [DUALITY FOR GROUPS](https://projecteuclid.org/download/pdf_1/euclid.bams/1183515045) +1. https://gowers.wordpress.com/2011/11/20/normal-subgroups-and-quotient-groups/ +1. [Abstract Algebra: Theory and Applications](http://abstract.ups.edu/) +1. [Group Theory](http://birdtracks.eu/version9.0/GroupTheory.pdf) +1. [VISUAL GROUP THEORY](http://web.bentley.edu/empl/c/ncarter/vgt/index.html) +1. [THE GEOMETRY OF REFLECTION GROUPS](http://people.mpim-bonn.mpg.de/geordie/mpg.pdf) +1. https://kubuszok.com/2018/algebras-we-love/ +1. [Notes on Computational Group Theory](https://www.math.colostate.edu/~hulpke/CGT/cgtnotes.pdf) +1. [An Invitation to General Algebra and Universal Constructions](https://math.berkeley.edu/~gbergman/245/) + +# Logic + +1. http://openlogicproject.org/ + +# Calculus + +1. [The Fractional Derivative, what is it? | Introduction to Fractional Calculus](https://www.youtube.com/watch?v=A4sTAKN6yFA) +1. [Calculus on Manifolds](http://strangebeautiful.com/other-texts/spivak-calc-manifolds.pdf) +1. [Calculus BLUE](https://www.youtube.com/watch?v=Jes5jwLl1q8&list=PL8erL0pXF3JYm7VaTdKDaWc8Q3FuP8Sa7) +1. [Extending the Algebraic Manipulability of Differentials](https://arxiv.org/abs/1801.09553) +1. https://en.wikipedia.org/wiki/Fractional_calculus +1. https://medium.com/@notaredpanda/fractional-calculus-48192f4e9c9f +1. [Fractional Calculus: Theory and Applications](https://www.mdpi.com/books/pdfview/book/755) +1. [EXTENDING THE ALGEBRAIC MANIPULABILITYOF DIFFERENTIALS](http://online.watsci.org/abstract_pdf/2019v26/v26n3a-pdf/4.pdf) +1. [Finite Calculus: A Tutorial for Solving Nasty Sums](https://www.cs.purdue.edu/homes/dgleich/publications/Gleich%202005%20-%20finite%20calculus.pdf) +1. http://jliszka.github.io/2013/10/24/exact-numeric-nth-derivatives.html + +# Continuous Calculus + +1. [Continuous Calculus](http://www-users.math.umn.edu/~olver/ln_/cc.pdf) + +# Octonion + +1. http://math.ucr.edu/home/baez/octonions/ + +# Differential Geometry + +1. [differential geometry reconstructed: a unified systematic framework](http://www.geometry.org/tex/conc/dgstats.php) +1. [Differential geometry reconstructed: a unified systematic framework](http://www.topology.org/tex/conc/dg.html) + +# Information Theory + +1. [Functional Bits: Lambda Calculus based Algorithmic Information Theory](https://tromp.github.io/cl/LC.pdf) + +# Graph Theory + +1. [Graphs and Geometry](http://web.cs.elte.hu/~lovasz/bookxx/geomgraphbook/geombook2019.01.11.pdf) +1. [Graph-Based Algorithms for Boolean Function Manipulation](http://mtv.ece.ucsb.edu/courses/ece156B_14/randy_obdd86.pdf) +1. [better geometry through graph theory](http://ideolalia.com/2018/08/28/artifex.html) + +# Division by Zero + +1. https://www.hillelwayne.com/post/divide-by-zero/ +1. https://www.1dividedby0.com/ + +# Partial Fractions + +1. https://jaydaigle.net/blog/calculus/easier-partial-fractions/ + +# Non-commutative Algebra + +1. [An Invitation to Noncommutative Algebra](https://arxiv.org/abs/1808.03172) + +# Lambda Calculus + +1. https://medium.com/@maiavictor/the-abstract-calculus-fe8c46bcf39c + +# _Software Library_ + +1. https://github.com/arguiot/TheoremJS +1. https://github.com/arguiot/Descartes + +# Set Theory + +1. [Set Theory and Algebra in Computer Science: A Gentle Introduction to Mathematical Modeling](https://pdfs.semanticscholar.org/d106/6b6de601c1d7d5af25af3f7091bc7ad3ad51.pdf) + +# Uncertainty Theory + +1. http://faculty.math.tsinghua.edu.cn/~bliu/ut.pdf +1. [An Introduction to the Mathematics of Uncertainty: including Set Theory, Logic, Probability, Fuzzy Sets, Rough Sets, and Evidence Theory](https://www.creighton.edu/fileadmin/user/CCAS/programs/fuzzy_math/docs/MOU.pdf) + +# Computational Geometry + +1. [CMPT 813: Computational Geometry (Fall 2011)](http://www.cs.sfu.ca/~binay/813.2011/) +1. https://www.johndcook.com/blog/2018/09/26/polygon-area/ +1. http://s2geometry.io/devguide/s2cell_hierarchy.html +1. http://alienryderflex.com/polygon/ +1. https://libigl.github.io/ + +# Finitism + +1. ["REAL" ANALYSIS Is A DEGENERATE CASE of DISCRETE ANALYSIS](http://sites.math.rutgers.edu/~zeilberg/mamarim/mamarimPDF/real.pdf) + +# Linear programming + +1. https://en.wikibooks.org/wiki/GLPK +1. https://white.ucc.asn.au/2018/05/28/Optimizing-your-diet-with-JuMP.html + +# Measure theory + +1. [Resources for Learning Measure Theory](https://bcmullins.github.io/measure_theory_resources/) + +# Combinatorics + +1. [Advances in Combinatorics](https://www.advancesincombinatorics.com/) +1. http://andy.kitchen/combinations.html +1. [Combinatorial Algorithms](http://www2.denizyuret.com/bib/kreher/donald1999combinatorial/combinatorialA.pdf) + +# Vector + +1. [A Student's Guide to Vectors and Tensors (Student's Guides)](https://www.amazon.com/Students-Guide-Vectors-Tensors-Guides/dp/0521171903) +1. https://www.researchgate.net/publication/327989714_Coordinate_Free_Vector_Algebra_in_R2 + +# Knot theory + +1. [Primes and Knots - Akshay Venkatesh](https://www.youtube.com/watch?v=jvoYgNYKyk0) +1. [The Knot Book](http://math.harvard.edu/~ctm/home/text/books/adams/knot_book/knot_book.pdf) + +# Axiom + +1. [INTRODUCTION TO AXIOMATIC REASONING](http://www.math.harvard.edu/~mazur/papers/Axiomatic.pdf) + +# Differential equations + +1. [ELEMENTARY DIFFERENTIAL EQUATIONS](http://ramanujan.math.trinity.edu/wtrench/texts/TRENCH_FREE_DIFFEQ_I.PDF) +1. [Lecture Notes on Difference Equations](http://people.math.aau.dk/~matarne/11-imat/notes2011a.pdf) + +# Algebraic geometry + +1. http://nautil.us/issue/69/patterns/the-math-that-takes-newton-into-the-quantum-world +1. [Algebraic Geometry](http://www.mathematik.uni-kl.de/~gathmann/class/alggeom-2014/main.pdf) +1. https://en.wikipedia.org/wiki/Superformula + +# Physics + +1. https://www.researchgate.net/publication/309533409_Beyond_Einstein_non-local_physics +1. https://www.theoretical-physics.com/dev/index.html + +# Spherical trigonometry + +1. https://en.wikipedia.org/wiki/Haversine_formula + +# Hyperbolic geometry + +1. [Hyperbolic Functions and Non-Hyperbolic Claims](https://elliptigon.com/hyperbolic-functions-explained/) + +# **Temp Cache** + +1. [Quadratic splines are useful too](https://wordsandbuttons.online/quadric_splines_are_useful_too.html) +1. [Derivations of Applied Mathematics](http://www.derivations.org/) +1. https://www.juliahomotopycontinuation.org/ +1. https://marginalrevolution.com/marginalrevolution/2018/05/one-parameter-equation-can-exactly-fit-scatter-plot.html +1. https://plato.stanford.edu/entries/mathematics-inconsistent/ +1. http://immersivemath.com/ila/index.html?m=1 +1. https://stacks.math.columbia.edu/ +1. http://www.gutenberg.org/ebooks/17384 +1. http://illustratedtheoryofnumbers.com/ +1. [Construction of the Transreal Numbers and Algebraic Transfields](http://www.iaeng.org/IJAM/issues_v46/issue_1/IJAM_46_1_03.pdf) +1. http://simit-lang.org/language +1. http://wykobi.com/tutorial0.html +1. https://pron.github.io/computation-logic-algebra +1. https://github.com/rossant/awesome-math +1. [Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Engineering](https://www.cis.upenn.edu/~jean/math-basics.pdf) +1. http://math.chapman.edu/~jipsen/structures/doku.php/ +1. http://stacks.math.columbia.edu/browse +1. https://bitworking.org/news/ga/2d +1. https://www.youtube.com/watch?v=OmJ-4B-mS-Y +1. https://www.youtube.com/watch?v=ZihywtixUYo +1. https://www.youtube.com/user/njwildberger +1. http://www.hedonisticlearning.com/posts/category-theory-syntactically.html +1. https://www.youtube.com/watch?v=EA1FFtTGAfw&list=PLSekr_gm4hWLRNHB5-sbajyUzN5tLOZmx +1. https://www.artofproblemsolving.com/wiki/index.php/Modular_arithmetic/Introduction +1. [Mathematics for Computer Science](https://courses.csail.mit.edu/6.042/spring17/mcs.pdf) +1. http://www.paultaylor.eu/ASD/foufct/ +1. [Toward the Unification of Physics and Number Theory](http://www.quantumgravityresearch.org/wp-content/uploads/2017/02/Toward-the-Unification-of-Physics2-1.pdf) +1. https://jeremykun.com/2014/03/13/programming-with-finite-fields/ +1. https://courses.cs.washington.edu/courses/cse590b/13au/ +1. http://magma.maths.usyd.edu.au/magma/ +1. [A VIEW OF MATHEMATICS](http://www.alainconnes.org/docs/maths.pdf) +1. [Introduction to Tensor Analysis and the Calculus of Moving Surfaces](https://www.amazon.com/gp/product/1461478669) +1. https://en.wikipedia.org/wiki/Wheel_theory +1. http://wordsandbuttons.online/interactive_guide_to_homogeneous_coordinates.html +1. https://a-guide-to-the-purescript-numeric-hierarchy.readthedocs.io/en/latest/index.html +1. http://blog.wolfram.com/2016/12/22/the-semantic-representation-of-pure-mathematics/ +1. https://www.youtube.com/watch?v=psSyM1zp82k +1. [Viviane Pons - Experimental pure mathematics using Sage - PyCon 2015](https://www.youtube.com/watch?v=3LZiZKgVjaU) +1. http://www.sagemath.org/ +1. [The axioms of constructive geometry](https://www.sciencedirect.com/science/article/pii/0168007295000052) +1. https://www.quora.com/What-is-it-like-to-understand-advanced-mathematics-Does-it-feel-analogous-to-having-mastery-of-another-language-like-in-programming-or-linguistics/answers/873950?share=1 +1. http://www.tricki.org/tricki/map +1. https://maxow.github.io/posts/computational-geometry-set-operations-on-polytopes.html +1. http://blog.robertelder.org/fast-multiplication-using-fourier-transform/ +1. [Graphical Models in a Nutshell](https://ai.stanford.edu/~koller/Papers/Koller+al:SRL07.pdf) + diff --git a/documentation/bookmark/math/real numbers.md b/documentation/bookmark/math/real numbers.md new file mode 100644 index 000000000..2daa1873b --- /dev/null +++ b/documentation/bookmark/math/real numbers.md @@ -0,0 +1,5 @@ +# Reference + +1. https://blog.acolyer.org/2020/10/02/toward-an-api-for-the-real-numbers/ +1. [Towards an API for the real numbers](https://dl.acm.org/doi/abs/10.1145/3385412.3386037) + diff --git a/documentation/bookmark/operating_system.md b/documentation/bookmark/operating_system.md new file mode 100644 index 000000000..82943f024 --- /dev/null +++ b/documentation/bookmark/operating_system.md @@ -0,0 +1,281 @@ +# Code-generation + +1. [It’s Time for a Modern Synthesis Kernel](https://blog.regehr.org/archives/1676) + +# Intepreter + +1. [Jitk: A Trustworthy In-Kernel Interpreter Infrastructure](https://css.csail.mit.edu/jitk/) + +# Architecture + +1. [TabulaROSA: Tabular Operating System Architecture for Massively Parallel Heterogeneous Compute Engines](https://arxiv.org/abs/1807.05308) + +# Graphics | Rendering + +1. [Text Rendering Hates You](https://gankra.github.io/blah/text-hates-you/) +1. https://fuchsia.googlesource.com/garnet/+/master/docs/ui/scenic.md + +# Exemplar + +## Operating system + +1. [CLOSOS: Specication of a Lisp operating system.](http://metamodular.com/lispos.pdf) +1. [CLOSOS: Specication of a Lisp operating system.](http://metamodular.com/closos.pdf) +1. https://medium.com/@jasonyuan/introducing-mercury-os-f4de45a04289 +1. http://lsneff.me/why-nebulet/ ||| https://github.com/nebulet/nebulet +1. http://exposnitc.github.io/index.html +1. https://www.gocosmos.org/ +1. http://www.microkernel.info/ +1. http://webosose.org/ +1. https://ostree.readthedocs.io/en/latest/manual/introduction/ +1. http://www.helenos.org/ +1. http://nixos.org/ +1. https://github.com/klange/toaruos +1. http://greenteapress.com/thinkos/ +1. http://kolibrios.org/en/ +1. http://menuetos.net/ +1. https://sailfishos.org/ +1. http://www.barrelfish.org/index.html +1. https://samypesse.gitbooks.io/how-to-create-an-operating-system/ +1. https://lumina-desktop.org/ +1. 2015 01 GNU Guix The Emacs of Distros &&& https://www.youtube.com/watch?v=AzebnJkfdvM +1. The Synthesis Kernel &&& https://www.usenix.org/legacy/publications/compsystems/1988/win_pu.pdf +1. http://zoo.cs.yale.edu/classes/cs422/pios +1. https://fuchsia.googlesource.com/docs/+/HEAD/book.md +1. https://externos.io/ +1. http://www.shadowdefender.com/ +1. https://pureos.net/ +1. http://progmp.net/ +1. http://www.uruk.org/emu/Taos.html +1. http://www.dickpountain.co.uk/home/computing/byte-articles/the-taos-operating-system-1991?hn +1. https://www.redox-os.org/ +1. https://system76.com/pop +1. http://habitatchronicles.com/2017/05/what-are-capabilities/ &&& ( Start reading where it says "Embedded systems" ) +1. http://genode.org/documentation/general-overview/index +1. https://camlistore.org/ +1. https://opensource.com/article/17/10/flintos +1. https://sortix.org/ +1. https://www.kickstarter.com/projects/xiki/xikihub-the-social-command-line +1. https://www.tockos.org/ +1. http://hydros-project.org/ +1. Twizzler: An Operating System for Next-Generation Memory Hierarchies &&& https://www.ssrc.ucsc.edu/Papers/ssrctr-17-01.pdf +1. http://www.includeos.org/ +1. https://harvey-os.org/ +1. https://github.com/jvburnes/node9 +1. http://unleashed-os.org/ +1. https://github.com/GreenteaOS/Greentea +1. https://xinu.cs.purdue.edu/ +1. https://browsix.org/ +1. https://github.com/frzb/coinboot +1. http://www.jbox.dk/sanos/index.htm +1. https://www.osrtos.com/ +1. [CLOSOS Specification of a Lisp operating system.](http://metamodular.com/lispos.pdf) +1. http://metamodular.com/Common-Lisp/lispos.html +1. http://riot-os.org/ +1. http://www.scs.stanford.edu/histar/ +1. http://sel4.systems/ + +## Unikernel + +1. https://hermitcore.org/2018/06/06/A-Rust-based-Unikernel/ +1. http://unikernel.org/ +1. https://xenproject.org/linux-foundation/80-developers/207-unikraft.html +1. https://fourlightyears.blogspot.com/2018/08/what-i-could-not-undiscover-about.html +1. https://mirage.io/ +1. [Unikernels: No Longer an Academic Exercise](http://250bpm.com/blog:138) +1. https://github.com/hermitcore/libhermit-rs +1. https://next.redhat.com/2018/11/14/ukl-a-unikernel-based-on-linux/ +1. https://github.com/joekoolade/JOE +1. https://ssrg-vt.github.io/hermitux/ +1. https://nanovms.com/dev/tutorials/running-forth-unikernels +1. [Unikernels: The Next Stage of Linux’s Dominance](https://www.cs.bu.edu/~jappavoo/Resources/Papers/unikernel-hotos19.pdf) +1. https://grapheneproject.io/ +1. https://ops.city/ + +## Microkernel + +1. [Snap: a Microkernel Approach to Host Networking](https://storage.googleapis.com/pub-tools-public-publication-data/pdf/36f0f9b41e969a00d75da7693571e988996c9f4c.pdf) + +## Real-time + +1. https://en.wikipedia.org/wiki/VxWorks + +# Reference + +1. [Rethinking files](https://www.devever.net/~hl/objectworld) +1. [Writing an OS in Rust (Second Edition)](https://os.phil-opp.com/) +1. https://archiveos.org/ +1. https://lwn.net/Articles/615809/ +1. https://www.tweag.io/posts/2018-03-15-bazel-nix.html +1. Type-Safe Operating System Abstractions &&& https://www.cs.dartmouth.edu/~trdata/reports/TR2004-526.pdf +1. https://www.hillelwayne.com/post/nix/ +1. https://github.com/pervognsen/bitwise +1. True parallelism, with no concept of threads - Alfred Bratterud - Meeting C++ 2017 &&& https://www.youtube.com/watch?v=9IXivbSA_5A +1. http://ccl.cse.nd.edu/software/parrot/ +1. http://greenteapress.com/wp/think-os/ +1. https://gustavus.edu/mcs/max/os-book/ +1. https://sywtwaosir.wordpress.com/ +1. https://communityblog.fedoraproject.org/modularity-dead-long-live-modularity/ +1. https://en.wikipedia.org/wiki/WinFS +1. An alternative device-tree source language &&& https://lwn.net/SubscriberLink/730217/556c557e8a3bf0a0/ +1. https://joshondesign.com/2017/08/18/idealos_essay +1. https://tuhdo.github.io/os01/ +1. https://www.usenix.org/legacy/events/usenix03/tech/full_papers/padioleau/padioleau_html/index.html +1. https://medium.com/@ifesdjeen/on-disk-io-part-3-lsm-trees-8b2da218496f +1. https://medium.com/@ifesdjeen/on-disk-storage-part-4-b-trees-30791060741 +1. http://fare.tunes.org/LispM.html +1. http://queue.acm.org/detail.cfm?id=1317400 +1. The Art of Unix Programming &&& http://www.catb.org/esr/writings/taoup/html/index.html +1. https://shivambharuka.wordpress.com/2017/10/25/arrakis-the-operating-system-is-the-control-plane/ +1. [Arrakis: The Operating System is the Control Plane](https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-peter_simon.pdf) +1. https://sortix.org/os-test/ +1. https://existentialtype.wordpress.com/2016/07/11/pclsring-in-semantics/ +1. Database/Operating System Co-Design &&& https://www.research-collection.ethz.ch/handle/20.500.11850/136 +1. YOW! Lambda Jam 2017 Brian McKenna - Nix for Functional Systems &&& https://www.youtube.com/watch?v=mIxtBVKo7JE +1. [Mouse Programming with libgpm](https://www.linuxjournal.com/article/4600) +1. https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/WritingDeviceDriver/CPluPlusRuntime/CPlusPlusRuntime.html +1. https://yarchive.net/comp/linux/everything_is_file.html +1. [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) +1. http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699 +1. [The Jury Is In: Monolithic OS Design Is Flawed: Microkernel-based Designs Improve Security](http://ts.data61.csiro.au/publications/csiro_full_text/Biggs_LH_18.pdf) +1. https://medium.com/@enkiv2/composability-homogeneity-and-language-based-systems-fb00e2c2458 +1. [Write your own Operating System](https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M) +1. [Light-weight Contexts: An OS Abstraction for Safety and Performance](https://people.mpi-sws.org/~druschel/publications/osdi16.pdf) +1. https://augustl.com/blog/2014/an_immutable_operating_system/ + +# Higher-Order + +1. https://www.yoctoproject.org/ + +# Formats + +1. http://iokit.racing/machotricks.pdf + +# Error-handling + +1. http://joeduffyblog.com/2016/02/07/the-error-model/ +1. https://code.fb.com/production-engineering/open-sourcing-oomd-a-new-approach-to-handling-ooms/ +1. https://os.phil-opp.com/double-fault-exceptions/ + +# Tools + +1. https://osquery.io/ +1. https://github.com/facebook/osquery + +# Shell + +1. [Magritte: A Language for Pipe-Based Programming](http://files.jneen.net/academic/thesis.pdf) +1. https://latacora.singles/2018/06/21/loud-subshells.html +1. https://github.com/ipetkov/conch-runtime +1. https://www.spinellis.gr/sw/dgsh/ + +# File-system + +1. https://medium.com/@siddontang/use-fuse-to-inject-failure-to-i-o-deb5f2e7800a +1. [Spiffy: Enabling File-System Aware Storage Applications](https://www.usenix.org/conference/fast18/presentation/sun) +1. https://github.com/bindh3x/libnicko +1. https://github.com/floyernick/fleep-py +1. https://brauner.github.io/2018/08/05/unprivileged-file-capabilities.html +1. http://louwrentius.com/the-sorry-state-of-cow-file-systems.html +1. https://www.notthewizard.com/2014/06/17/are-files-appends-really-atomic/ +1. https://medium.com/datadriveninvestor/writing-your-own-file-system-is-not-as-hard-as-you-may-think-aa4af09329cd +1. http://www.betrfs.org/ +1. https://docs.microsoft.com/en-us/windows/desktop/projfs/projected-file-system +1. [The Lustre Storage Architecture](https://arxiv.org/abs/1903.01955) + +# Shared libraries | Dynamic Loading + +1. https://amir.rachum.com/blog/2016/09/17/shared-libraries/ +1. https://www.kix.in/2008/06/19/an-alternative-to-shared-libraries/ +1. https://www.akkadia.org/drepper/no_static_linking.html +1. https://amir.rachum.com/blog/2016/09/17/shared-libraries/ + +# Packages + +1. [Piotr Gaczkowski - Nix -- the functional package manager - Lambda Days 2020](https://www.youtube.com/watch?v=6AvwC25fd_U) +1. https://snapcraft.io/ +1. https://code.fb.com/data-infrastructure/xars-a-more-efficient-open-source-system-for-self-contained-executables/ + +# System Calls + +1. [1001 Ways of Implementing a System Call](https://x86.lol/generic/2019/07/04/kernel-entry.html) +1. https://eli.thegreenplace.net/2018/basics-of-futexes/ +1. [FlexSC: Flexible System Call Scheduling with Exception-Less System Calls](https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Soares.pdf) + +# Security + +1. https://en.wikipedia.org/wiki/Reference_monitor +1. [FINE-CFI: Fine-grained Control-Flow Integrity for Operating System Kernels](http://www.cs.wayne.edu/fengwei/paper/fine-cfi-tifs18.pdf) +1. https://unsat.cs.washington.edu/projects/hyperkernel/ +1. [Capsicum](https://oshogbo.vexillium.org/blog/57/) +1. [OS-level Attacks and Defenses: from Software to Hardware-based Exploits](http://tuprints.ulb.tu-darmstadt.de/8482/1/gens_diss.pdf) +1. [Time Protection: The Missing OS Abstraction](https://ts.data61.csiro.au/publications/csiro_full_text//Ge_YCH_19.pdf) +1. [Light-weight Contexts: An OS Abstraction for Safety and Performance](https://www.usenix.org/system/files/conference/osdi16/osdi16-litton.pdf) +1. https://natsys-lab.blogspot.com/2019/05/goodbye-fast-system-calls.html + +# Driver + +1. https://blogs.windows.com/buildingapps/2018/08/15/introducing-driver-module-framework/#J6CWEbpcH0OwgWbP.97 +1. [Toward Compositional Verification of Interruptible OS Kernels and Device Drivers](http://flint.cs.yale.edu/flint/publications/device-journal.pdf) +1. [Writing Network Drivers in Haskell](https://www.net.in.tum.de/fileadmin/bibtex/publications/theses/2019-ixy-haskell.pdf) + +# Networking + +1. [Computer Networks: A Systems Approach](https://github.com/SystemsApproach/book) + +# Kernel + +1. [A new kernel polling interface](https://lwn.net/Articles/743714/) +1. [Composing Abstractions using the null-Kernel](https://people.mpi-sws.org/~dg/papers/hotosxvii.pdf) + +# I/O + +1. [The block I/O latency controller](https://lwn.net/Articles/758963/) +1. [I/O Is Faster Than the CPU – Let’s Partition Resources and Eliminate (Most) OS Abstractions](https://penberg.org/parakernel-hotos19.pdf) + +# Init System + +1. https://davmac.wordpress.com/2018/10/26/on-the-vagaries-of-init-systems/ + +# Homogeneous Operating Systems + +1. https://ecc-comp.blogspot.com/2014/12/homogeneous-operating-systems-are-better.html + +# Update System + +1. https://theupdateframework.github.io/overview.html + +# Signal + +1. http://delyan.me/code-review-signals/ + +# Daemon + +1. https://chaoticlab.io/c/c++/unix/2018/10/01/daemonize.html + +# Memory + +1. [Memory Systems and Memory-Centric Computing Systems](http://people.inf.ethz.ch/omutlu/acaces2018.html) +1. https://en.wikipedia.org/wiki/Page_replacement_algorithm +1. [Compress Objects, Not Cache Lines:An Object-Based Compressed Memory Hierarchy](https://people.csail.mit.edu/poantsai/papers/2019.zippads.asplos.pdf) + +# Hardware + +1. [There's No Such Thing as a General-purpose Processor](https://queue.acm.org/detail.cfm?id=2687011) + +# Reliability + +1. [CuriOS: Improving Reliability through Operating System Structure](http://people.cs.ksu.edu/~danielwang/Investigation/System_Security/curios.pdf) + +# Booting | Bootstrapping + +1. https://puri.sm/posts/pureboot-the-high-security-boot-process/ + +# Virtualization + +1. [virtio: Towards a De-Facto Standard For Virtual I/O Devices](https://www.ozlabs.org/~rusty/virtio-spec/virtio-paper.pdf) + +# Separation kernel + +1. [High-Assurance Separation Kernels: A Survey on Formal Methods](https://arxiv.org/abs/1701.01535) + diff --git a/documentation/bookmark/paradigm/Ambient-Oriented Programming.md b/documentation/bookmark/paradigm/Ambient-Oriented Programming.md new file mode 100644 index 000000000..4ff41ff5e --- /dev/null +++ b/documentation/bookmark/paradigm/Ambient-Oriented Programming.md @@ -0,0 +1,5 @@ +# Reference + +1. [Ambient-Oriented Programming in AmbientTalk](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.417.906&rep=rep1&type=pdf) +1. [Ambient-oriented programming](https://dl.acm.org/citation.cfm?id=1094867) +1. [AmbientTalk](https://en.wikipedia.org/wiki/AmbientTalk) diff --git a/documentation/bookmark/paradigm/Answer Set Programming.md b/documentation/bookmark/paradigm/Answer Set Programming.md new file mode 100644 index 000000000..089debd99 --- /dev/null +++ b/documentation/bookmark/paradigm/Answer Set Programming.md @@ -0,0 +1,4 @@ +# Reference + +1. [Introduction to Answer Set Programming (ASP)](https://lucas.bourneuf.net/blog/drafts/tuto-asp-en.html) + diff --git a/documentation/bookmark/paradigm/Concept programming.md b/documentation/bookmark/paradigm/Concept programming.md new file mode 100644 index 000000000..c91489723 --- /dev/null +++ b/documentation/bookmark/paradigm/Concept programming.md @@ -0,0 +1,8 @@ +# Language + +1. [XL (programming language)](https://en.wikipedia.org/wiki/XL_(programming_language)) +1. http://xlr.sourceforge.net/ +1. https://sourceforge.net/projects/xlr/ +1. https://github.com/c3d/xl +1. http://mozart-dev.sourceforge.net/xl.html + diff --git a/documentation/bookmark/paradigm/flow_based_programming.md b/documentation/bookmark/paradigm/flow_based_programming.md new file mode 100644 index 000000000..f13969722 --- /dev/null +++ b/documentation/bookmark/paradigm/flow_based_programming.md @@ -0,0 +1,4 @@ +# Reference + +1. [Towards Separation of Concerns in Flow-Based Programming](http://orbit.dtu.dk/files/128046887/FBDSL_final.pdf) + diff --git a/documentation/bookmark/paradigm/functional reactive programming.md b/documentation/bookmark/paradigm/functional reactive programming.md new file mode 100644 index 000000000..5f97ebbec --- /dev/null +++ b/documentation/bookmark/paradigm/functional reactive programming.md @@ -0,0 +1,4 @@ +# Reference + +1. [Explicitly Comprehensible Functional Reactive Programming](https://futureofcoding.org/papers/comprehensible-frp/comprehensible-frp.pdf) + diff --git a/documentation/bookmark/paradigm/logic_programming.md b/documentation/bookmark/paradigm/logic_programming.md new file mode 100644 index 000000000..25c059ca9 --- /dev/null +++ b/documentation/bookmark/paradigm/logic_programming.md @@ -0,0 +1,53 @@ +# Reference + +1. https://book.simply-logical.space/ +1. [Higher-Order Logic Programming](https://www.lix.polytechnique.fr/~dale/papers/Handbook_Logic_AI_LP.pdf) +1. [HiLog: A foundation for higher-order logic programming](http://www.sciencedirect.com/science/article/pii/074310669390039J) +1. https://www.amazon.com/Reasoned-Schemer-MIT-Press-ebook/dp/B07B9SL4LR +1. [Can Logic Programming Execute as Fast as Imperative Programming?](https://www2.eecs.berkeley.edu/Pubs/TechRpts/1990/CSD-90-600.pdf) +1. [Automatic Differentiation using Constraint Handling Rules in Prolog](https://arxiv.org/abs/1706.00231) +1. [A Framework for Extending microKanren with Constraints](https://arxiv.org/pdf/1701.00633.pdf) +1. https://www.amazon.com/Clause-Effect-Programming-Working-Programmer/dp/3540629718 +1. https://medium.com/@enkiv2/mycroft-a-predicate-logic-language-overview-post-mortem-e357fe80d53 +1. http://lambda-the-ultimate.org/node/112 +1. http://okmij.org/ftp/papers/LogicT.pdf +1. https://www.researchgate.net/publication/2274015_Relational_Programming_in_Libra +1. [Monadic-style backtracking](http://www.cs.ox.ac.uk/ralf.hinze/publications/index.html) +1. [Prolog's control constructs in a functional setting - Axioms and implementation](http://www.cs.ox.ac.uk/ralf.hinze/publications/index.html) +1. [Solving Problems Declaratively - Mark Engelberg](https://www.youtube.com/watch?v=TA9DBG8x-ys) +1. http://programming-puzzler.blogspot.com/2013/03/logic-programming-is-overrated.html +1. https://gist.github.com/swannodette/3217582 +1. [AppLP: A Dialogue on Applications of Logic Programming](https://arxiv.org/pdf/1704.02375.pdf) +1. https://www.metalevel.at/prolog +1. https://www.amazon.com/Reasoned-Schemer-MIT-Press-ebook/dp/B004GEBQS6 +1. https://github.com/Web-Prolog/swi-web-prolog/blob/master/web-client/apps/swish/web-prolog.pdf +1. [Den of Clojure Build Your Own Logic Engine](https://www.youtube.com/watch?v=y1bVJOAfhKY) +1. https://eli.thegreenplace.net/2018/unification/ +1. http://boxbase.org/entries/2019/feb/11/dialogical-logic-programming/ +1. [Can logic programming execute as fast as imperative programming?](https://dl.acm.org/citation.cfm?id=128589) +1. https://synthese.wordpress.com/2010/08/21/prologs-death/ + +# Language + +1. [Curry: A Truly Integrated Functional Logic Language](https://www-ps.informatik.uni-kiel.de/currywiki/) +1. https://flix.github.io/ +1. http://logtalk.org/ +1. https://github.com/fnogatz/CHR.js +1. https://mercurylang.org/ +1. https://www.quora.com/What-are-examples-of-statically-typed-logic-programming-languages-ex-similar-to-Prolog +1. [Racklog: Prolog-Style Logic Programming](https://plt.eecs.northwestern.edu/snapshots/current/pdf-doc/racklog.pdf) +1. https://souffle-lang.github.io/ + +# Beyond logic programming + +1. https://github.com/Web-Prolog/swi-web-prolog + +# Constraint Logic Programming + +1. http://www.pathwayslms.com/swipltuts/clpfd/clpfd.html +1. https://stackabuse.com/constraint-programming-with-python-constraint/ + +# Constraint Handling Rules + +1. http://chrjs.net/ + diff --git a/documentation/bookmark/paradigm/probabilistic_programming.md b/documentation/bookmark/paradigm/probabilistic_programming.md new file mode 100644 index 000000000..8cfcc3ce9 --- /dev/null +++ b/documentation/bookmark/paradigm/probabilistic_programming.md @@ -0,0 +1,75 @@ +# Library + +1. [Soss](https://github.com/cscherrer/Soss.jl) + +# Ranked Programming + +1. [Ranked Programming](https://github.com/tjitze/ranked-programming/blob/master/documentation/ranked_programming.pdf) +1. https://github.com/tjitze/ranked-programming + +# Inference + +1. [Gen: A general-purpose probabilistic programming system with programmable inference.](https://probcomp.github.io/Gen/) +1. [Probabilistic Programming with Programmable Inference](https://people.csail.mit.edu/rinard/paper/pldi18.pdf) +1. https://www.microsoft.com/en-us/research/blog/dowhy-a-library-for-causal-inference/ + +# Reference + +1. [An unorthodox path for implementing a probabilistic programming language](http://hyperparameter.space/blog/an-unorthodox-path-for-implementing-a-probabilistic-programming-language/) +1. [The Distribution Monad](http://blog.russelldmatt.com/2018/10/15/the-distribution-monad.html) +1. ["New programming constructs for probabilistic AI" by Marco Cusumano-Towner](https://www.youtube.com/watch?v=xNutxms6SH4) +1. [A tour of probabilistic programming language APIs](https://colcarroll.github.io/ppl-api/) +1. [Paradigms of Probabilistic Programming](https://www.youtube.com/watch?v=CmH1xxKRbiE) +1. [Anatomy of a Probabilistic Programming Framework](https://eigenfoo.xyz/prob-prog-frameworks/) +1. [Probabilistic Programming with monad‑bayes, Part 1: First Steps](https://www.tweag.io/posts/2019-09-20-monad-bayes-1.html) +1. [Probabilistic Programming with monad‑bayes, Part 2: Linear Regression](https://www.tweag.io/posts/2019-11-08-monad-bayes-2.html) +1. [FACTORIE](http://factorie.cs.umass.edu/) +1. [End-User Probabilistic Programming (DRAFT)](https://www.cs.uoregon.edu/research/summerschool/summer19/lecture_notes/DRAFT___Probabilistic_Programming_for_End_Users.pdf) +1. http://willcrichton.net/notes/probabilistic-programming-under-the-hood/ +1. [Ask HN: What companies are using probabilistic programming?](https://news.ycombinator.com/item?id=17220861) +1. https://www-forbes-com.cdn.ampproject.org/v/s/www.forbes.com/sites/quora/2018/05/18/even-the-most-advanced-computer-programmers-have-probably-never-heard-of-this-concept/amp/?amp_js_v=a1&_gsa=1#amp_tf=From%20%251%24s&share=https%3A%2F%2Fwww.forbes.com%2Fsites%2Fquora%2F2018%2F05%2F18%2Feven-the-most-advanced-computer-programmers-have-probably-never-heard-of-this-concept%2Famp%2F%23amp_tf%3DFrom%2520%25251%2524s&share=https%3A%2F%2Fwww.forbes.com%2Fsites%2Fquora%2F2018%2F05%2F18%2Feven-the-most-advanced-computer-programmers-have-probably-never-heard-of-this-concept%2F&share=https%3A%2F%2Fwww.forbes.com%2Fsites%2Fquora%2F2018%2F05%2F18%2Feven-the-most-advanced-computer-programmers-have-probably-never-heard-of-this-concept%2F +1. [Deep Probabilistic Programming Languages: A Qualitative Study](https://arxiv.org/abs/1804.06458) +1. [A Provably Correct Sampler for Probabilistic Programs](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/final.pdf) +1. [Practical Probabilistic Programming with Monads](http://mlg.eng.cam.ac.uk/pub/pdf/SciGhaGor15.pdf) +1. [Probabilistic Functional Programming in Haskell](https://web.engr.oregonstate.edu/~erwig/papers/PFP_JFP06.pdf) +1. [The Probability Monad](https://www.youtube.com/watch?v=qZ4O-1VYv4c) +1. https://www.chrisstucchio.com/blog/2016/probability_the_monad.html +1. http://dippl.org/ +1. [Deep Probabilistic Programming](https://arxiv.org/abs/1701.03757v1) +1. [Symbolic Conditioning of Arrays in Probabilistic Programs](http://homes.soic.indiana.edu/pravnar/disintegrate-arrays.pdf) +1. http://probabilistic-programming.org/wiki/Home +1. http://underscore.io/blog/posts/2016/04/21/probabilistic-programming.html +1. https://moalquraishi.wordpress.com/2015/03/29/the-state-of-probabilistic-programming/ +1. https://en.wikipedia.org/wiki/Probabilistic_programming_language +1. https://probmods.org/ +1. http://adriansampson.net/doc/ppl.html +1. http://blog.fastforwardlabs.com/2017/10/02/pp-bibliography.html +1. http://blog.fastforwardlabs.com/2017/01/30/the-algorithms-behind-probabilistic-programming.html +1. https://arxiv.org/abs/1701.03757 +1. [Typed functional probabilistic programming: ready for practical use?](https://www.youtube.com/watch?v=DGZXoi6ehwA) +1. [Generative probabilistic programming: applications and new ideas](https://www.youtube.com/watch?v=M_vG_6pq0XM) +1. [Probabilistic Programming for Programming Languages People](https://github.com/sampsyo/ppl-intro) +1. [Bayesian Methods for Hackers](https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers) +1. [An Introduction to Probabilistic Programming](https://arxiv.org/abs/1809.10756) +1. http://www.stormchecker.org/index.html +1. https://betanalpha.github.io/assets/case_studies/conditional_probability_theory.html +1. https://kaomorphism.com/2019/01/17/How-To-Predict-Any-Three-Events-More-Accurately.html +1. [Probabilistic Programming with Densities in SlicStan: Efficient, Flexible and Deterministic](https://www.youtube.com/watch?v=CXiCJ7M72Wc) + +# DSL + +1. [Embedded probabilistic domain-specific language Hakaru10 (discrete and continuous distributions, MCMC (MH) sampling)](http://okmij.org/ftp/kakuritu/Hakaru10/index.html) +1. https://github.com/p2t2/figaro +1. http://www.robots.ox.ac.uk/~fwood/anglican/ +1. [Probabilistic programming and meta-programming in Clojure - Vikash Mansinghka](https://www.youtube.com/watch?v=KLGwLkmh8gI) + +# Language + +1. [Bean Machine: A Declarative Probabilistic Programming Language For Efficient Programmable Inference](https://pgm2020.cs.aau.dk/wp-content/uploads/2020/09/tehrani20.pdf) +1. [Reactive Probabilistic Programming](https://arxiv.org/abs/1908.07563) +1. https://hakaru-dev.github.io/ +1. http://probcomp.csail.mit.edu/venture/ +1. https://github.com/tjitze/RankPL/ +1. http://turing.guru/ +1. https://eng.uber.com/pyro/ + diff --git a/documentation/bookmark/parsing.md b/documentation/bookmark/parsing.md new file mode 100644 index 000000000..1d5bac732 --- /dev/null +++ b/documentation/bookmark/parsing.md @@ -0,0 +1,5 @@ +# Reference + +1. [Base64 encoding and decoding at almost the speed of a memory copy](https://arxiv.org/abs/1910.05109) +1. [Parsing XML at the Speed of Light](https://aosabook.org/en/posa/parsing-xml-at-the-speed-of-light.html) + diff --git a/documentation/bookmark/programmability.md b/documentation/bookmark/programmability.md new file mode 100644 index 000000000..ae8af0013 --- /dev/null +++ b/documentation/bookmark/programmability.md @@ -0,0 +1,4 @@ +# Exemplar + +1. [offerzen: Developer-driven banking, for a developer-driven world.](https://www.offerzen.com/community/investec/) + diff --git a/documentation/bookmark/runners or comodels.md b/documentation/bookmark/runners or comodels.md new file mode 100644 index 000000000..3073ff65f --- /dev/null +++ b/documentation/bookmark/runners or comodels.md @@ -0,0 +1,4 @@ +# Reference + +1. https://github.com/andrejbauer/coop + diff --git a/documentation/bookmark/text_editor & ide.md b/documentation/bookmark/text_editor & ide.md new file mode 100644 index 000000000..2240fac6c --- /dev/null +++ b/documentation/bookmark/text_editor & ide.md @@ -0,0 +1,225 @@ +# Residential programming + +1. [Residential Programming without Mutable State - Thomas Getgood](https://www.youtube.com/watch?v=Kgw9fblSOx4) + +# Good Ideas + +1. https://medium.com/@NikitaVoloboev/write-once-never-write-again-c2fa1f6c4e8 +1. [Inline: Efficient Source Code Editing and Manipulation with Code Portals](https://www.youtube.com/watch?v=NQ5h2Ibw6ck) +1. https://devclass.com/2019/02/15/atlassian-make-jira-invisible-target-developers-ides/ +1. http://lispm.de/genera-concepts +1. Hovering/selecting an input to a function inside a function-call should display the name of the input in the function declaration. This would help understand the purpose of the value while in the function call without needing Lux/the-language to have named inputs as a feature. +1. https://www.emacswiki.org/emacs/UndoTree +1. https://jameshfisher.com/2014/05/11/your-syntax-highlighter-is-wrong/ +1. https://medium.com/@evnbr/coding-in-color-3a6db2743a1e + +# Voice + +1. [Speaking in code: how to program by voice](https://www.nature.com/articles/d41586-018-05588-x) + +# Refactoring + +1. https://medium.com/zoosk-engineering/refactoring-at-scale-with-abstract-syntax-trees-a3f989ec8524 +1. https://about.sourcegraph.com/ + +# Visual programming + +1. https://github.com/ivanreese/visual-programming-codex +1. [Lambda Days 2018 - Piotr Moczurad - Visual-textual functional programming with Luna](https://www.youtube.com/watch?v=6xUOuzafmO0) +1. https://www.luna-lang.org/ +1. https://github.com/hoodiecrow/Tclook +1. https://blog.sourcerer.io/build-interactive-diagrams-with-storm-react-diagrams-f172ae26af9d +1. https://www.jointjs.com/opensource +1. https://github.com/jagenjo/litegraph.js +1. https://github.com/retejs/rete +1. http://mikehadlow.blogspot.com/2018/10/visual-programming-why-its-bad-idea.html +1. https://ncase.me/joy/ +1. https://www.jointjs.com/ +1. [Lambda World 2018 - Diagrammatic Execution Models for Functional Languages - Keynote](https://www.youtube.com/watch?v=sgmpVedCsNM) +1. http://joshuahhh.com/projects/pane/ +1. [PANE: Programming with visible data](https://www.youtube.com/watch?v=fIEcXAHy6bU) +1. https://blog.statebox.org/why-visual-programming-doesnt-suck-2c1ece2a414e +1. https://nodered.org/ + +# Reference + +1. [The Piece Table - the Unsung Hero of Your Text Editor](https://darrenburns.net/posts/piece-table/) +1. [Build Your Own Text Editor](https://viewsourcecode.org/snaptoken/kilo/) +1. [It’s 2019. Why don’t we have good code editors?](https://thoughts.thorlaksson.com/2019/09/27/its-2019-why-dont-we-have-good-code-editors/) +1. [Text Editing Hates You Too](https://lord.io/blog/2019/text-editing-hates-you-too/) +1. [Why ContentEditable is Terrible](https://medium.engineering/why-contenteditable-is-terrible-122d8a40e480) +1. [Broot: A better way to navigate directories](https://github.com/Canop/broot) +1. https://www.simplethread.com/editor-plugins-belong-in-lock-file/ +1. [How to Design an IDE-Friendly Language with Peter Gromov @donnerpeter](https://www.youtube.com/watch?v=lubc8udiP_8) +1. https://shaunlebron.github.io/parinfer/ +1. https://www.reddit.com/r/emacs/comments/6ztnj9/what_are_the_things_that_you_do_not_like_in_emacs/?st=j7kdafu2&sh=af9ca25d +1. http://xenodium.com/#emacs-utilities-for-your-os +1. https://techcrunch.com/2017/02/19/why-is-android-studio-still-such-a-gruesome-embarrassment/ +1. http://emacslife.com/ +1. http://tinyletter.com/Flowsheets/letters/flowsheets-visualizations +1. http://www.averylaird.com/programming/editor/2017/09/30/the-piece-table/ +1. [Gallery of Programmer Interfaces](https://docs.google.com/presentation/d/1MD-CgzODFWzdpnYXr8bEgysfDmb8PDV6iCAjH5JIvaI/preview?slide=id.g1da0625f1b_0_56) +1. https://spacevim.org/2017/02/11/use-vim-as-a-java-ide.html +1. https://github.com/p-e-w/envy +1. https://enotuniq.org/python_as_a_dsl.html +1. [Lambda World 2018 - What FP can learn from Smalltalk by Aditya Siram](https://www.youtube.com/watch?v=baxtyeFVn3w) +1. https://chris-martin.org/2017/loc + +# Syntax Highlighting + +1. [Syntax highlighting is backwards](https://www.benkuhn.net/syntax) +1. [Coding in color](https://medium.com/@evnbr/coding-in-color-3a6db2743a1e) +1. https://code.visualstudio.com/blogs/2017/02/08/syntax-highlighting-optimizations +1. https://github.com/alecthomas/chroma +1. https://www.crockford.com/contextcoloring.html + +# Music + +1. https://www.hooktheory.com/hookpad/app + +# Data-Structures + +1. [Data Structures for Text Sequences](https://www.cs.unm.edu/~crowley/papers/sds.pdf) + +# Shell + +1. https://masteringemacs.org/article/complete-guide-mastering-eshell +1. https://medium.com/readcomiccode/behold-z-the-unsung-jewel-that-rethinks-shell-navigation-dae262bb6bdc +1. https://gitlab.com/emacsomancer/equake +1. https://github.com/c-bata/go-prompt + +# Language Server Protocol + +1. https://tomassetti.me/language-server-dot-visual-studio/ +1. https://github.com/Microsoft/language-server-protocol/blob/master/README.md +1. https://www.ncameron.org/blog/what-the-rls-can-do/ + +# Semantic-oriented programming + +1. https://en.wikipedia.org/wiki/Semantic-oriented_programming +1. https://prezi.com/gp6u1jpgkxej/what-are-soplets/ +1. http://symade.tigris.org/ + +# Integrated Development Environment (IDE) + +1. [Theia 1.0 - Finally a Good Browser IDE](https://dev.to/svenefftinge/theia-1-0-finally-a-good-browser-ide-3ok0) +1. https://www.eclipse.org/che/ + +# Advanced AST/source-code manipulation tools + +1. https://caseywatts.com/2018/08/23/codemods.html +1. https://vimeo.com/189514610 +1. https://github.com/facebook/jscodeshift +1. http://astexplorer.net/ +1. https://github.com/avajs/ava-codemods + +# Extensibility + +1. [The Spoofax Language Workbench](https://metaborg.github.io/spoofax/) +1. [A Language Independent Task Engine for Incremental Name and Type Analysis](https://www.researchgate.net/publication/290110229_A_Language_Independent_Task_Engine_for_Incremental_Name_and_Type_Analysis) +1. [Extensible Type-Directed Editing](http://cattheory.com/extensibleTypeDirectedEditing.pdf) + +# Parsing + +1. [tree-sitter](http://tree-sitter.github.io/tree-sitter/) +1. [tree-sitter: An incremental parsing system for programming tools](https://github.com/tree-sitter/tree-sitter) +1. https://blog.github.com/2018-10-31-atoms-new-parsing-system/ +1. ["Tree-sitter - a new parsing system for programming tools" by Max Brunsfeld](https://www.youtube.com/watch?v=Jes3bD6P0To) + +# Notebook + +1. https://tiddlywiki.com/ + +# Extension + +1. https://github.com/Pext/Pext + +# Collaborative editing + +1. https://github.com/gsilvamartin/RTCode +1. https://hackernoon.com/building-conclave-a-decentralized-real-time-collaborative-text-editor-a6ab438fe79f +1. https://github.com/xi-editor/xi-editor/issues/1187 +1. [Chronofold: a data structure for versioned text](https://arxiv.org/abs/2002.09511) + +# Exemplar + +## General + +1. [Left](https://100r.co/site/left.html) +1. https://howl.io/ +1. [The Whole Code Catalog](https://futureofcoding.org/catalog/) +1. http://substance.io/ +1. https://www.querystorm.com/ +1. http://recursivedrawing.com/ +1. http://doc.cat-v.org/bell_labs/sam_lang_tutorial/sam_tut.pdf +1. https://github.com/typeintandem/tandem +1. https://github.com/atom/xray +1. http://strlen.com/treesheets/ +1. https://sekao.net/nightlight/ +1. http://cirru.org/ +1. http://www.sublimetext.com/ +1. https://atom.io/ +1. http://lighttable.com/ +1. https://www.visualstudio.com/vs/whatsnew/ +1. http://www.prototypingtools.co/ +1. https://nexttexteditor.com/ +1. https://medium.com/cirru-project/stack-editor-programming-by-functions-a961f1d9555c +1. https://github.com/Cirru/stack-editor +1. https://kclpure.kcl.ac.uk/portal/files/71018111/Frame_based_editing.pdf +1. http://reactide.io/ +1. http://jumpfm.org/ +1. https://isomorf.io/#!/ +1. http://granthika.co/ +1. https://portacle.github.io/ +1. https://quokkajs.com/ +1. https://github.com/jaredly/treed +1. https://github.com/raxod502/el-patch +1. http://www.jgrasp.org/tutorials200/jGRASP_00_Overview.pdf +1. http://codiad.com/ +1. https://github.com/sahilm/fuzzy +1. https://lively-next.org/ +1. http://www.expressionsofchange.org/ +1. https://github.com/onivim/oni +1. http://wiki.xxiivv.com/ronin +1. https://github.com/google/xi-editor +1. https://teletype.atom.io/ +1. https://github.com/martanne/vis +1. http://www.graspjs.com/ +1. http://kakoune.org/ +1. https://github.com/argimenes/standoff-properties-editor +1. https://www.conyedit.com/ +1. https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand +1. [YOW! Lambda Jam 2018 - Colin Fleming - Developing an IDE for Clojure code](https://www.youtube.com/watch?v=2sPYiGxU4kA) +1. https://github.com/shaunlebron/history-of-lisp-parens/blob/master/editors.md +1. https://www.leoeditor.com/ +1. https://storybook.js.org/ +1. https://grapesjs.com/ +1. https://two-wrongs.com/why-you-should-buy-into-the-emacs-platform +1. https://docs.slatejs.org/ +1. https://github.com/pel-daniel/mind-bicyles +1. https://github.com/metaseed/metaGo +1. https://github.com/argimenes/standoff-properties-editor +1. https://github.com/JeffreyBenjaminBrown/hode +1. https://tratt.net/laurie/blog/entries/an_editor_for_composed_programs.html +1. [Hjalfi makes smalltalk (in Javascript)](https://www.youtube.com/watch?v=JDunc6Cr7YQ) + +## Structured editing + +1. [Towards Tactic Metaprogramming in Haskell](https://reasonablypolymorphic.com/blog/towards-tactics/index.html) +1. https://github.com/Raathigesh/waypoint +1. [Going beyond regular expressions with structural code search](https://about.sourcegraph.com/blog/going-beyond-regular-expressions-with-structural-code-search) +1. [俺のlisp](https://github.com/illiichi/orenolisp) +1. [豆腐 (Tofu): meaningful code editing](https://gregoor.github.io/tofu/) +1. [Tiled Text](http://www.tiledtext.com/projects/tiledtext) +1. [Deuce: A Lightweight User Interface for Structured Editing](https://arxiv.org/abs/1707.00015) +1. ["Structured Editing for Elm* in Elm" by Ravi Chugh](https://www.youtube.com/watch?v=-TFL6E1uSHE) +1. [The TeXmacs user interface and structured text editing](https://www.youtube.com/watch?v=Sc55nOSN0kQ) + +## Tree editor + +1. http://justinpombrio.net/tree-editors/survey.html + +## Image editor + +1. https://www.ludigraphix.org/ + diff --git a/documentation/bookmark/tool/Diff.md b/documentation/bookmark/tool/Diff.md new file mode 100644 index 000000000..61bea55d8 --- /dev/null +++ b/documentation/bookmark/tool/Diff.md @@ -0,0 +1,4 @@ +# Structural diffing + +1. [Autochrome - Structural diffs for Clojure source code](https://fazzone.github.io/autochrome.html) + diff --git a/documentation/bookmark/tool/Notebook.md b/documentation/bookmark/tool/Notebook.md new file mode 100644 index 000000000..7ec319d79 --- /dev/null +++ b/documentation/bookmark/tool/Notebook.md @@ -0,0 +1,4 @@ +# Reference + +1. https://jupyter.org/ + diff --git a/documentation/bookmark/tool/Search.md b/documentation/bookmark/tool/Search.md new file mode 100644 index 000000000..323f9e8bb --- /dev/null +++ b/documentation/bookmark/tool/Search.md @@ -0,0 +1,4 @@ +# Semantic search + +1. https://github.com/returntocorp/semgrep + diff --git a/documentation/bookmark/tool/build_system.md b/documentation/bookmark/tool/build_system.md new file mode 100644 index 000000000..eeeb571ce --- /dev/null +++ b/documentation/bookmark/tool/build_system.md @@ -0,0 +1,65 @@ +# Protocol + +1. [Build Server Protocol](https://build-server-protocol.github.io/) + +# Exemplar + +1. [Mill: A Build Tool based on Pure Functional Programming, Li Haoyi at Scala.Love 2020](https://www.youtube.com/watch?v=j6uThGxx-18) +1. [Mill: A Build Tool based on Pure Functional Programming, Li Haoyi at Scala.Love 2020](https://vimeo.com/409165552) +1. [Pier: Yet another Haskell build tool](https://www.youtube.com/watch?v=JmenfeDVi0w) +1. https://buckbuild.com/ +1. http://boot-clj.com/ +1. http://gulpjs.com/ +1. http://shakebuild.com/ +1. https://ninja-build.org/ +1. https://leiningen.org/ +1. https://github.com/janestreet/jenga +1. https://github.com/apenwarr/redo +1. https://getcook.org/ +1. https://www.python.org/dev/peps/pep-0517/ +1. https://github.com/juxt/mach +1. http://gittup.org/tup/ +1. https://github.com/apple/swift-llbuild +1. https://please.build/ +1. https://github.com/ocaml/dune +1. https://github.com/arrdem/katamari + +# Plugins + +1. https://github.com/sola-da/ConflictJS +1. https://bmuschko.com/blog/gradle-release-strategy/ + +# Packaging + +1. https://neurocline.github.io/papers/survey-of-programming-language-packaging-systems.html + +# Configuration + +1. https://hackernoon.com/configuration-files-suck-6daa9812f601 + +# Dependency + +1. https://github.com/bgard6977/depends + +# Reference + +1. [Falsehoods programmers believe about build systems](https://pozorvlak.livejournal.com/174763.html) +1. [Non-recursive Make Considered Harmful](https://ndmitchell.com/downloads/paper-non_recursive_make_considered_harmful-22_sep_2016.pdf) +1. https://www.microsoft.com/en-us/research/publication/build-systems-la-carte/ +1. [Build Systems à la Carte](https://www.youtube.com/watch?v=BQVT6wiwCxM) +1. https://medium.freecodecamp.com/how-google-builds-a-web-framework-5eeddd691dea#.1dcuob37h +1. https://www.b-list.org/weblog/2018/apr/25/lets-talk-about-packages/ +1. https://medium.com/npm-inc/announcing-npm-6-5d0b1799a905 +1. http://stackoverflow.com/questions/60764/how-should-i-load-jars-dynamically-at-runtime +1. https://github.com/rksm/flatn +1. https://manifest.fm/ +1. https://enotuniq.org/python_as_a_dsl.html +1. http://www.lihaoyi.com/post/SowhatswrongwithSBT.html +1. [Sean Larkin - Everything is a plugin!! Mastering webpack from the inside out.](https://www.youtube.com/watch?v=NHI_PhoykVU) +1. http://www.lihaoyi.com/post/BuildToolsasPureFunctionalPrograms.html +1. https://pozorvlak.livejournal.com/174763.html +1. https://www.cs.virginia.edu/~dww4s/articles/build_systems.html +1. https://ruudvanasseldonk.com/2018/09/03/build-system-insights +1. https://github.com/l3nz/say-cheez +1. https://clojurescript.org/news/2017-07-12-clojurescript-is-not-an-island-integrating-node-modules + diff --git a/documentation/bookmark/tool/compiler.md b/documentation/bookmark/tool/compiler.md new file mode 100644 index 000000000..1cfe0b5d6 --- /dev/null +++ b/documentation/bookmark/tool/compiler.md @@ -0,0 +1,4 @@ +# Reference + +1. [Calculating Correct Compilers II: Return of the Register Machines](http://www.cs.nott.ac.uk/~pszgmh/ccc2.pdf) + diff --git a/documentation/bookmark/transducer_stream_pipe.md b/documentation/bookmark/transducer_stream_pipe.md new file mode 100644 index 000000000..5ba3f040a --- /dev/null +++ b/documentation/bookmark/transducer_stream_pipe.md @@ -0,0 +1,28 @@ +# Reference + +1. [zug](https://sinusoid.es/zug/) +1. https://dev.to/greencoder/build-your-own-transducer-and-impress-your-cat---part-1-mhp +1. https://functional.works-hub.com/learn/reducers-and-transducers-introductory-d0cff +1. http://beerendlauwers.be/posts/2015-12-09-transducers.html +1. https://clojure.org/reference/transducers +1. http://sickaf.xyz/2017/07/transducers +1. http://hypirion.com/musings/haskell-transducers +1. https://github.com/hyPiRion/haskell-transducers +1. https://github.com/cgrand/xforms +1. https://deque.blog/2017/07/28/implementing-clojure-like-transducers-in-idris-part-1/ +1. http://jlongster.com/Transducers.js--A-JavaScript-Library-for-Transformation-of-Data +1. https://labs.uswitch.com/transducers-from-the-ground-up-the-essence/amp/ +1. https://bendyworks.com/blog/transducers-clojures-next-big-idea +1. http://conscientiousprogrammer.com/blog/2014/08/07/understanding-cloure-transducers-through-types/ +1. [Lighting Talk - How to Write a Fast, Reducible Collection - Ghadi Shayban](https://www.youtube.com/watch?v=FjKnlzQfAPc) +1. [Lazy v. Yield: Incremental, Linear Pretty-printing](https://www.cs.indiana.edu/~sabry/papers/yield-pp.pdf) +1. https://labs.uswitch.com/transducers-from-the-ground-up-the-practice/ +1. [Continuations and Transducer Composition](http://matt.might.net/papers/might2006transducers.pdf) +1. https://deque.blog/2017/11/13/free-monads-from-basics-up-to-implementing-composable-and-effectful-stream-processing/ +1. https://www.tweag.io/posts/2018-06-21-linear-streams.html +1. [Common Lisp Study Group An Intro to SERIES](https://www.youtube.com/watch?v=uRLgZCV4bOM) +1. [Appendix A. Series](https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node347.html) +1. [YOW! Lambda Jam 2018 - Simon Belak - Transducing for fun and profit](https://www.youtube.com/watch?v=H0sSbTWxTsM) +1. https://nextjournal.com/zampino/fold +1. [Fusing Effectful Comprehensions*](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/10/fusing_effectful_comprehensions.pdf) + diff --git a/documentation/bookmark/web_framework.md b/documentation/bookmark/web_framework.md new file mode 100644 index 000000000..2e0e54977 --- /dev/null +++ b/documentation/bookmark/web_framework.md @@ -0,0 +1,158 @@ +# Virtual DOM + +1. [Optimal Virtual DOM](https://blog.kabir.sh/posts/optimal-virtual-dom.html) + +# Input + +1. [High-performance input handling on the web](https://nolanlawson.com/2019/08/11/high-performance-input-handling-on-the-web/) + +# Reference + +1. [Line-tracking using plain CSS](https://bubblin.io/blog/line-tracking) +1. [Redux is half of a pattern (1/2)](https://dev.to/davidkpiano/redux-is-half-of-a-pattern-1-2-1hd7) +1. [Introducing Concurrent Mode (Experimental)](https://reactjs.org/docs/concurrent-mode-intro.html) +1. https://github.com/daybrush/scenejs +1. https://blog.ionicframework.com/announcing-capacitor-1-0/ +1. http://joneisen.me/talk-frelp-ui/#/ +1. http://meiosis.js.org/ +1. https://medium.com/samsung-internet-dev/disappearing-frameworks-ed921f411c38 +1. https://jasonhpriestley.com/flows +1. https://hackernoon.com/creating-a-new-programming-language-that-will-allow-anyone-to-make-software-7a8c73238dc2 +1. https://github.com/gmrchk/swup +1. https://www.brucelawson.co.uk/2018/the-practical-value-of-semantic-html/ +1. https://chanind.github.io/rails/2019/03/28/why-i-miss-rails.html +1. https://dockyard.com/blog/2018/12/12/phoenix-liveview-interactive-real-time-apps-no-need-to-write-javascript + +# Exemplar + +1. https://github.com/alpinejs/alpine +1. [Mint: The programming language for writing single page applications.](https://www.mint-lang.com/) +1. [root: A recursive UI resolver](https://github.com/den1k/root) +1. https://www.http4k.org/blog/meet_http4k/ +1. Django +1. Ruby On Rails +1. http://sailsjs.com/ +1. http://www.cerebraljs.com/ +1. http://www.christianalfoni.com/articles/2016_09_11_The-case-for-function-tree +1. https://www.infernojs.org/ +1. https://cycle.js.org/ +1. https://github.com/alixander/Stanchion +1. http://jooby.org/ +1. https://github.com/Day8/re-frame +1. https://reagent-project.github.io/ +1. https://fulcrologic.github.io/fulcro/ +1. https://www.siliconpublishing.com/blog/introducing-lotusjs +1. https://github.com/giapnguyen74/gstate +1. https://robots.thoughtbot.com/lucky-an-experimental-new-web-framework-by-thoughtbot +1. https://github.com/vuejs/vue +1. https://github.com/omcljs/om +1. http://fulcro.fulcrologic.com/index.html +1. https://github.com/vibora-io/vibora +1. https://david-peter.de/articles/flare/ +1. https://medium.com/@tirthbodawala/introducing-pawjs-a-pluggable-framework-caeef166409f +1. https://github.com/reclarejs/reclare +1. https://eng.uber.com/fusionjs/ +1. https://reactjs.org/docs/hooks-intro.html +1. https://medium.freecodecamp.org/the-virtual-dom-is-slow-meet-the-memoized-dom-bb19f546cc52 +1. http://kweb.io/ +1. https://medium.com/dailyjs/redux-without-reducers-reduxless-69afe76d9eeb +1. https://eugenkiss.github.io/7guis/ +1. https://yogalayout.com/ +1. http://www.expressionsofchange.org/reification-of-interaction/ +1. https://www.infoq.com/articles/no-more-mvc-frameworks +1. https://github.com/eugenkiss/7guis/wiki +1. https://unmanner.github.io/imaskjs/ +1. http://www.cssreflex.com/css-frameworks/ +1. https://layerjs.org/ +1. https://enactjs.com/ +1. https://frankchimero.com/writing/everything-easy-is-hard-again/ +1. https://medium.com/@eugenkiss/challenges-in-gui-programming-65d360466e3f +1. https://www.slideshare.net/lmatteis/are-statecharts-the-next-big-ui-paradigm +1. https://guide.elm-lang.org/architecture/ +1. https://skillsmatter.com/skillscasts/8717-arachne-building-a-framework-in-clojure#video +1. https://github.com/arachne-framework +1. https://github.com/duct-framework/duct +1. http://redux.js.org/ +1. https://hackernoon.com/transmission-tx-a-flux-alternative-fe0630eed2a3 +1. https://medium.com/groupon-eng/grox-the-art-of-the-state-b5223f48d696 +1. https://hackage.haskell.org/package/MFlow +1. https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/MFlowDSL +1. https://medium.com/gitconnected/react-component-patterns-ab1f09be2c82?ref=hn +1. https://www.lucidchart.com/techblog/2017/11/08/5-usage-ideas-for-angular-pipes/ +1. [David Khourshid - Infinitely Better UIs with Finite Automata](https://www.youtube.com/watch?v=VU1NKX6Qkxc) +1. https://www.silvestarbistrovic.from.hr/articles/classily-js-toggling-classes-more-classily/ +1. https://www.sitepoint.com/functional-programming-choo/ +1. https://m.alphasights.com/css-evolution-from-css-sass-bem-css-modules-to-styled-components-d4c1da3a659b#.ksank5elf +1. https://www.bassi.io/articles/2017/01/11/constraints-editing/ +1. https://github.com/threepointone/glamor +1. http://ijzerenhein.github.io/autolayout.js/ +1. https://github.com/CodeRocketCo/enhanced-rails-architecture +1. https://github.com/graphcool/graphcool +1. https://www.sitepen.com/blog/2017/08/17/state-of-modern-component-styling/ +1. https://blog.logrocket.com/advanced-vue-js-concepts-mixins-custom-directives-filters-transitions-and-state-management-ca6955905156 +1. https://underscore.io/blog/posts/2017/01/24/finch-functional-web-development.html +1. https://www.sitepoint.com/eqcss-a-javascript-plugin-to-write-element-queries/ +1. https://github.com/cognitect-labs/vase +1. http://donejs.com/ +1. https://github.com/stdlib/lib +1. https://www.hashicorp.com/blog/replacing-queues-with-nomad-dispatch.html +1. https://github.com/darkleaf/router +1. https://gist.github.com/tomhodgins/da7d8aa89d34b69e5c4120980e3945ef + +# Architecture + +1. https://jew.ski/raj/ +1. https://github.com/redux-saga/redux-saga + +# Platforms + +1. https://www.producthunt.com/posts/mason + +# State-management + +1. https://github.com/keajs/kea +1. https://github.com/isocroft/Radixx + +# Styling + +1. [Layout-isolated components](https://visly.app/blog/layout-isolated-components) +1. [Centering in CSS: A Complete Guide](https://css-tricks.com/centering-css-complete-guide/) +1. [Vertical Rhythm Reset](https://jhildenbiddle.github.io/vertical-rhythm-reset/) +1. [Cascading Scoped Style Sheets, aka CSSS, aka C3S](https://github.com/crislin2046/c3s) +1. [The importance of the CSS user-select property](https://www.malgol.com/the-importance-of-the-css-user-select-property/) +1. [Index fun](https://psuter.net/2019/07/07/z-index) +1. [Constraint layouts](https://blog.gtk.org/2019/07/02/constraint-layouts/) +1. https://every-layout.dev/ +1. https://github.com/diegohaz/reuse +1. https://wiki.csswg.org/ideas/mistakes +1. https://developer.mozilla.org/en-US/docs/Web/CSS/Layout_cookbook +1. http://www.tipue.com/blog/css-sticky/ +1. https://modalzmodalzmodalz.com/ +1. https://medium.com/@elad/new-css-logical-properties-bc6945311ce7 +1. https://css-tricks.com/browserlist-good-idea/ +1. http://tabulator.info/ +1. https://css-tricks.com/creating-non-rectangular-headers/ +1. https://github.com/callum-hart/immutable-styles +1. https://developers.google.com/web/updates/2019/02/constructable-stylesheets +1. https://nosir.github.io/cleave.js/ +1. https://blogs.igalia.com/mrego/2019/01/11/an-introduction-to-css-containment/ +1. https://medium.com/@devdevcharlie/things-nobody-ever-taught-me-about-css-5d16be8d5d0e +1. https://medium.freecodecamp.org/the-css-handbook-a-handy-guide-to-css-for-developers-b56695917d11 +1. https://css-tricks.com/look-ma-no-media-queries-responsive-layouts-using-css-grid/ + +# Design system + +1. https://ant.design/ + +# Rendering + +1. https://medium.com/@ryansolid/the-fastest-way-to-render-the-dom-e3b226b15ca3 +1. https://github.com/Famous/engine +1. https://redom.js.org/ +1. https://svelte.dev/blog/virtual-dom-is-pure-overhead + +# Database query + +1. http://slick.lightbend.com/docs/ +1. https://books.underscore.io/essential-slick/essential-slick-3.html + diff --git a/documentation/research.md b/documentation/research.md deleted file mode 100644 index 0344c452b..000000000 --- a/documentation/research.md +++ /dev/null @@ -1,9 +0,0 @@ -# Reference - -1. [Designing File Formats](https://www.fadden.com/tech/file-formats.html) -1. [The Twelve-Factor Container](https://medium.com/notbinary/the-twelve-factor-container-8d1edc2a49d4) -1. [What is PL Research?](https://www.youtube.com/watch?v=vyF5d-EFIwU) -1. https://www.ambient-mixer.com/ -1. https://github.com/danistefanovic/build-your-own-x -1. [LoCal: A Language for Programs Operating onSerialized Data](http://recurial.com/pldi19main.pdf) - diff --git a/documentation/research/3D.md b/documentation/research/3D.md deleted file mode 100644 index a7020c3ef..000000000 --- a/documentation/research/3D.md +++ /dev/null @@ -1,4 +0,0 @@ -# Three.js - -1. [Three.js Fundamentals](https://threejsfundamentals.org/) - diff --git a/documentation/research/Abstract interpretation.md b/documentation/research/Abstract interpretation.md deleted file mode 100644 index d98525f7c..000000000 --- a/documentation/research/Abstract interpretation.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. ["Easy Abstract Interpretation with SPARTA" by Arnaud Venet and Jez Ng](https://www.youtube.com/watch?v=_fA7vkVJhF8) - diff --git a/documentation/research/Agent.md b/documentation/research/Agent.md deleted file mode 100644 index 5f8a7629a..000000000 --- a/documentation/research/Agent.md +++ /dev/null @@ -1,8 +0,0 @@ -# Reference - -1. [Introduction to Java Agents](https://devolution.tech/introduction-to-java-agents/) -1. https://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html -1. http://javabeat.net/introduction-to-java-agents/ -1. https://www.javacodegeeks.com/2015/09/java-agents.html -1. https://github.com/cretz/stackparam - diff --git a/documentation/research/Array.md b/documentation/research/Array.md deleted file mode 100644 index 29c0dc889..000000000 --- a/documentation/research/Array.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [Dex: array programming with typed indices](https://openreview.net/pdf?id=rJxd7vsWPS) - diff --git a/documentation/research/Berkeley Packet Filter (BPF).md b/documentation/research/Berkeley Packet Filter (BPF).md deleted file mode 100644 index 951e6ccac..000000000 --- a/documentation/research/Berkeley Packet Filter (BPF).md +++ /dev/null @@ -1,5 +0,0 @@ -# Reference - -1. [Extended BPF: A new software type](https://www.youtube.com/watch?v=7pmXdG8-7WU) -1. [Berkeley Packet Filter](https://en.wikipedia.org/wiki/Berkeley_Packet_Filter) - diff --git a/documentation/research/Cache.md b/documentation/research/Cache.md deleted file mode 100644 index cba5d6826..000000000 --- a/documentation/research/Cache.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. https://github.com/eko/gocache - diff --git a/documentation/research/Code mods.md b/documentation/research/Code mods.md deleted file mode 100644 index 3a08c7cdb..000000000 --- a/documentation/research/Code mods.md +++ /dev/null @@ -1,7 +0,0 @@ -# Reference - -1. https://comby.dev/ -1. ["Parser Parser Combinators for Program Transformation" by Rijnard van Tonder](https://www.youtube.com/watch?v=JMZLBB_BFNg) -1. [Codemod](https://github.com/facebook/codemod) -1. [jscodeshift](https://github.com/facebook/jscodeshift) - diff --git a/documentation/research/Compilation.md b/documentation/research/Compilation.md deleted file mode 100644 index 2249ebdc3..000000000 --- a/documentation/research/Compilation.md +++ /dev/null @@ -1,4 +0,0 @@ -# Demand-driven - -1. [Queries: demand-driven compilation](https://github.com/rust-lang/rustc-guide/blob/master/src/query.md) - diff --git a/documentation/research/Data format.md b/documentation/research/Data format.md deleted file mode 100644 index 6961ff704..000000000 --- a/documentation/research/Data format.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. https://internetobject.org/ - diff --git a/documentation/research/Feature toggle.md b/documentation/research/Feature toggle.md deleted file mode 100644 index 7e55a519b..000000000 --- a/documentation/research/Feature toggle.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [Feature Toggles (aka Feature Flags)](https://martinfowler.com/articles/feature-toggles.html) - diff --git a/documentation/research/Graphic User Interface (GUI).md b/documentation/research/Graphic User Interface (GUI).md deleted file mode 100644 index 10a2bb764..000000000 --- a/documentation/research/Graphic User Interface (GUI).md +++ /dev/null @@ -1,26 +0,0 @@ -# User experience (UX) - -1. https://lawsofux.com/ - -# Widget - -1. [Progress bar.js](https://kimmobrunfeldt.github.io/progressbar.js/) - -# Design - -1. [Ant Design](https://ant.design/) -1. [7 Practical Tips for Cheating at Design](https://medium.com/refactoring-ui/7-practical-tips-for-cheating-at-design-40c736799886) - -# Dark Patterns - -1. https://neal.fun/dark-patterns/ - -# Immediate mode - -1. [Sol on Immediate Mode GUIs (IMGUI)](http://sol.gfxile.net/imgui/) -1. [Immediate-Mode Graphical User Interfaces (2005)](https://caseymuratori.com/blog_0001) - -# Accessibility - -1. [What I’ve learned about accessibility in SPAs](https://nolanlawson.com/2019/11/05/what-ive-learned-about-accessibility-in-spas/) - diff --git a/documentation/research/Graphics.md b/documentation/research/Graphics.md deleted file mode 100644 index 5438adeff..000000000 --- a/documentation/research/Graphics.md +++ /dev/null @@ -1,5 +0,0 @@ -# 2D - -1. [Einar Høst - Composition by Juxtaposition: A PostScript on Functional Geometry - Lambda Days 2020](https://www.youtube.com/watch?v=GvTh0MmVPQI) -1. [Functional geometry](https://dl.acm.org/doi/10.1145/800068.802148) - diff --git a/documentation/research/Internet of Things (IoT).md b/documentation/research/Internet of Things (IoT).md deleted file mode 100644 index 9d147ee43..000000000 --- a/documentation/research/Internet of Things (IoT).md +++ /dev/null @@ -1,22 +0,0 @@ -# Device - -1. https://www.pine64.org/ -1. http://beagleboard.org/ - -# Language - -1. [A Programming Language for the Internet of Things](https://www.duo.uio.no/bitstream/handle/10852/56894/Thesis.pdf) -1. http://www.eclipse.org/mita/ - -# Protocol - -1. http://coap.technology/ -1. https://medium.com/@patburns/a-new-way-to-think-about-the-p2p-iot-5fde27e96833 -1. https://plc4x.apache.org/ -1. [OpenThread](https://openthread.io/) -1. [Thread](https://www.threadgroup.org/) - -# Security - -1. https://www.theregister.co.uk/2019/03/13/congress_iot_security/ - diff --git a/documentation/research/Localization and Internationalization.md b/documentation/research/Localization and Internationalization.md deleted file mode 100644 index 198d768bd..000000000 --- a/documentation/research/Localization and Internationalization.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [CSS for internationalisation](https://chenhuijing.com/blog/css-for-i18n/) - diff --git a/documentation/research/Memory Management.md b/documentation/research/Memory Management.md deleted file mode 100644 index 8905c6b20..000000000 --- a/documentation/research/Memory Management.md +++ /dev/null @@ -1,44 +0,0 @@ -# Static - -1. [ASAP: As Static As Possible memory management](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-908.pdf) - -# Allocation - -1. [Always Bump Downwards](https://fitzgeraldnick.com/2019/11/01/always-bump-downwards.html) - -# Compaction - -1. ["Compacting the Uncompactable" by Bobby Powers](https://www.youtube.com/watch?v=c1UBJbfR-H0) - -# Reference counting - -1. [Introducing --gc:arc](https://forum.nim-lang.org/t/5734) -1. [Counting Immutable Beans: Reference Counting Optimized for Purely Functional Programming](https://arxiv.org/abs/1908.05647) - -# Layout - -1. [Floorplan: Spatial Layout in Memory Management Systems](https://conf.researchr.org/details/gpce-2019/gpce-2019-papers/6/Floorplan-Spatial-Layout-in-Memory-Management-Systems) - -# Garbage collection - -1. [The Garbage Collection Handbook](http://gchandbook.org/) -1. [Baby's First Garbage Collector](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/) - -# Reference - -1. [Relative Pointers](https://www.gingerbill.org/article/2020/05/17/relative-pointers/) -1. [Scopes Describe Frames: A Uniform Model for Memory Layout in Dynamic Semantics](http://drops.dagstuhl.de/opus/volltexte/2016/6114/) -1. https://uridiumauthor.blogspot.com/2018/06/memory-management.html -1. https://github.com/mtrebi/memory-allocators -1. http://www.newlisp.org/MemoryManagement.html -1. http://gee.cs.oswego.edu/dl/html/malloc.html -1. https://shipilev.net/blog/2014/jmm-pragmatics/ -1. https://floooh.github.io/2018/06/17/handles-vs-pointers.html -1. https://www.codemag.com/Article/1807051/Introducing-.NET-Core-2.1-Flagship-Types-Span-T-and-Memory-T -1. https://stefansf.de/post/pointers-are-more-abstract-than-you-might-expect/ -1. [Memory Management Reference](https://www.memorymanagement.org/) -1. [Pseudomonarchia jemallocum: The false kingdom of jemalloc, or On exploiting the jemalloc memory manager](http://phrack.com/issues/68/10.html#article) -1. https://gankro.github.io/blah/rust-layouts-and-abis/ -1. https://paul.bone.id.au/2018/10/19/gc-falsehoods/ -1. [Safe Programming with Pointers through Stateful Views](https://www.cs.bu.edu/~hwxi/academic/papers/padl05.pdf) - diff --git a/documentation/research/Optics (eg lenses & prisms).md b/documentation/research/Optics (eg lenses & prisms).md deleted file mode 100644 index 6f7acb5ca..000000000 --- a/documentation/research/Optics (eg lenses & prisms).md +++ /dev/null @@ -1,24 +0,0 @@ -# Reference - -1. [Profunctor optics, a categorical update](https://arxiv.org/abs/2001.07488) -1. [On Lawful Lenses](https://blog.statebox.org/on-lawful-lenses-6e18a1e17bdf) -1. https://medium.com/urbint-engineering/haskell-lens-operator-onboarding-a235481e8fac -1. https://fstarlang.github.io/general/2018/01/12/lens-indexed-lenses.html -1. [Jeremy Gibbons - Profunctor Optics Modular Data Accessors](https://www.youtube.com/watch?v=sfWzUMViP0M &&& http://www.cs.ox.ac.uk/people/jeremy.gibbons/publications/poptics.pdf) -1. http://hackage.haskell.org/package/profunctors-3.3.0.1/docs/Data-Profunctor.html -1. https://github.com/purescript-contrib/purescript-profunctor-lenses -1. https://hackage.haskell.org/package/lens-4.16/docs/Control-Lens-Indexed.html -1. http://oleg.fi/gists/posts/2017-04-18-glassery.html -1. http://oleg.fi/gists/posts/2017-12-23-functor-optics.html -1. [Edward Kmett - Monad Transformer Lenses](https://www.youtube.com/watch?v=Bxcz23GOJqc) -1. [Brian McKenna - Productionisation of Functional Optics](https://www.youtube.com/watch?v=H01dw-BMmlE) -1. [YOW! Lambda Jam 2017 Ken Scambler - Lenses for the Masses – Introducing Goggles](https://www.youtube.com/watch?v=oIhdOqaKSEg) -1. https://bartoszmilewski.com/2017/07/07/profunctor-optics-the-categorical-view/ -1. [Profunctor Optics: The Categorical Approach - Bartosz Milewski](https://www.youtube.com/watch?v=l1FCXUi6Vlw) -1. https://calmm-js.github.io/partial.lenses/ -1. http://evincarofautumn.blogspot.com/2016/01/thoughts-on-using-fractional-types-to.html -1. https://www.slideshare.net/davidoverton/comonad -1. http://codingismycraft.com/index.php/2017/10/04/adding-descriptors-to-your-python-arsenal/ -1. https://blog.jle.im/entry/lenses-products-prisms-sums.html -1. http://www.philipzucker.com/lens-as-a-divisibility-relation-goofin-off-with-the-algebra-of-types/ - diff --git a/documentation/research/Optimization.md b/documentation/research/Optimization.md deleted file mode 100644 index e31686963..000000000 --- a/documentation/research/Optimization.md +++ /dev/null @@ -1,38 +0,0 @@ -# Pre-fetching - -1. [Prefetching in Functional Languages](https://www.cl.cam.ac.uk/~tmj32/papers/docs/ainsworth20-ismm.pdf) - -# Partial evaluation - -1. [AnyDSL - A Partial Evaluation Framework for Programming High-Performance Libraries](https://anydsl.github.io/) - -# For the compiler - -1. [Self Hosting a Million-Lines-Per-Second Parser](https://bjou-lang.org/blog/7-10-2019-self-hosting-a-million-lines-per-second-parser/7-10-2019-self-hosting-a-million-lines-per-second-parser.html) - -# Reference - -1. [Compiler Detection of Function Call Side Effects](https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=B3D92D05C88C3D9C165785594350C169?doi=10.1.1.70.2096&rep=rep1&type=pdf) -1. [A Language for Describing Optimization Strategies](https://arxiv.org/abs/2002.02268) -1. https://docs.google.com/presentation/d/1tpeJZFObkeick4CF-mx0L3CeCgvT15B96aJeRpxEPcE/preview?slide=id.p -1. https://www.quora.com/What-is-the-future-of-optimizing-compilers?share=1 -1. https://advancedweb.hu/2016/05/27/jvm_jit_optimization_techniques/ &&& https://advancedweb.hu/2016/06/28/jvm_jit_optimization_techniques_part_2/ -1. http://www.scala-native.org/en/latest/blog/interflow.html -1. https://github.com/roman01la/closure-compiler-handbook -1. http://hubicka.blogspot.com/2018/06/gcc-8-link-time-and-interprocedural.html -1. [CppCon 2017: Matt Godbolt “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid”](https://www.youtube.com/watch?v=bSkpMdDe4g4) -1. http://duriansoftware.com/joe/Optimizing-is-multiple-checks-with-modular-arithmetic.html? -1. https://www.ericsson.com/research-blog/outperforming-state-art-compilers-unison/ -1. http://compileroptimizations.com/index.html -1. https://polly.llvm.org/ -1. http://paulcavallaro.com/blog/optimizing-function-placement-with-call-chain-clustering/ -1. http://leto.net/docs/C-optimization.php -1. https://engineering.purdue.edu/~eigenman/ECE663/Handouts/bacon-compiling4hpc.pdf -1. http://venge.net/graydon/talks/CompilerTalk-2019.pdf -1. http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/6620/pdf/imm6620.pdf -1. [Lost in translation: Exposing hidden compiler optimization opportunities](https://arxiv.org/pdf/1903.11397.pdf) -1. https://kristerw.blogspot.com/2019/04/how-llvm-optimizes-geometric-sums.html -1. https://nfrechette.github.io/2019/05/08/sign_flip_optimization/ -1. https://grin-tech.github.io/ -1. [Loop Optimizations in LLVM - Michael Kruse](https://www.youtube.com/watch?v=oAPgGYr8T3Y) - diff --git a/documentation/research/Probabilistic data-structure.md b/documentation/research/Probabilistic data-structure.md deleted file mode 100644 index f7c025de2..000000000 --- a/documentation/research/Probabilistic data-structure.md +++ /dev/null @@ -1,32 +0,0 @@ -# Hash function - -1. http://fastcompression.blogspot.com/2019/03/presenting-xxh3.html -1. http://cyan4973.github.io/xxHash/ - -# Reference - -1. [Xor Filters: Faster and Smaller Than Bloom Filters](https://lemire.me/blog/2019/12/19/xor-filters-faster-and-smaller-than-bloom-filters/) -1. [Morton Filters: Faster, Space-Efficient Cuckoo Filters via Biasing, Compression, and Decoupled Logical Sparsity](http://www.vldb.org/pvldb/vol11/p1041-breslow.pdf) -1. https://github.com/efficient/SuRF -1. https://medium.com/orbs-network/constructing-bloom-filters-without-false-positives-7aaf50b92f3b -1. https://welcometotheoryland.wordpress.com/2017/10/19/what-is-a-hash-function-it-depends-on-whos-speaking/ -1. http://docs.pipelinedb.com/probabilistic.html -1. [Probabilistic Data Structures](https://www.youtube.com/watch?v=F7EhDBfsTA8) -1. http://www.i-programmer.info/programming/theory/4641-the-invertible-bloom-filter.html -1. https://github.com/seiflotfy/hyperbitbit -1. https://blog.yld.io/2017/04/19/hyperloglog-a-probabilistic-data-structure/#.WPtT_R_6zCI -1. http://www.partow.net/programming/bloomfilter/idx.html -1. https://github.com/pawandubey/cuckoo_filter -1. https://cloud.google.com/blog/big-data/2017/07/counting-uniques-faster-in-bigquery-with-hyperloglog -1. https://blog.dataweave.com/using-probabilistic-data-structures-to-build-real-time-monitoring-dashboards-25b17c968c08 -1. https://bdupras.github.io/filter-tutorial/ -1. https://sagi.io/2017/07/bloom-filters-for-the-perplexed/ -1. https://www.somethingsimilar.com/2012/05/21/the-opposite-of-a-bloom-filter/ -1. https://github.com/splatlab/cqf -1. [LogLog-Beta and More: A New Algorithm for Cardinality Estimation Based on LogLog Counting](https://arxiv.org/ftp/arxiv/papers/1612/1612.02284.pdf) -1. https://blog.acolyer.org/2017/08/08/a-general-purpose-counting-filter-making-every-bit-count/ -1. [Ode on a Random Urn (Functional Pearl)](https://www.youtube.com/watch?v=O37FMxLxm78) -1. http://smalldatum.blogspot.com/2018/09/bloom-filter-and-cuckoo-filter.html -1. https://hackernoon.com/cuckoo-filter-vs-bloom-filter-from-a-gophers-perspective-94d5e6c53299 -1. https://github.com/axiomhq/hyperminhash - diff --git a/documentation/research/Procedural generation.md b/documentation/research/Procedural generation.md deleted file mode 100644 index 40553176b..000000000 --- a/documentation/research/Procedural generation.md +++ /dev/null @@ -1,4 +0,0 @@ -# Fractional Brownian Motion - -1. http://iquilezles.org/www/articles/fbm/fbm.htm - diff --git a/documentation/research/Recursion schemes.md b/documentation/research/Recursion schemes.md deleted file mode 100644 index fe65ffca6..000000000 --- a/documentation/research/Recursion schemes.md +++ /dev/null @@ -1,16 +0,0 @@ -# Reference - -1. http://maartenfokkinga.github.io/utwente/mmf91m.pdf -1. http://blog.sumtypeofway.com/an-introduction-to-recursion-schemes/ -1. http://blog.sumtypeofway.com/recursion-schemes-part-2/ -1. http://blog.sumtypeofway.com/recursion-schemes-part-iii-folds-in-context/ -1. http://blog.sumtypeofway.com/recursion-schemes-part-iv-time-is-of-the-essence/ -1. http://comonad.com/reader/2009/recursion-schemes/ -1. [Peeling the Banana: Recursion Schemes from First Principles - Zainab Ali](https://www.youtube.com/watch?v=XZ9nPZbaYfE) -1. https://github.com/passy/awesome-recursion-schemes -1. [YOW! Lambda Jam 2018 - Amy Wong - Introduction to recursion scheme](https://www.youtube.com/watch?v=YnqPdlJd38o) -1. https://bartoszmilewski.com/2018/08/20/recursion-schemes-for-higher-algebras/ -1. https://blog.sumtypeofway.com/recursion-schemes-part-6-comonads-composition-and-generality/ -1. https://chrilves.github.io/hugo/posts/recursion_schemes_intro/ -1. [Recursion Schemes: A Field Guide (Redux)](http://comonad.com/reader/2009/recursion-schemes/) - diff --git a/documentation/research/Security.md b/documentation/research/Security.md deleted file mode 100644 index b9d45faff..000000000 --- a/documentation/research/Security.md +++ /dev/null @@ -1,95 +0,0 @@ -# Homomorphic encryption - -1. https://github.com/Microsoft/SEAL - -# Privacy - -1. https://privacypatterns.org/ - -# Inspiration - -1. [Kasm: Desktop and Browser Isolation Platform](https://www.kasmweb.com/) -1. https://www.mailvelope.com - -# Finger-printing - -1. [How Browser Fingerprinting Works](https://kevq.uk/how-browser-fingerprinting-works/) -1. https://github.com/Valve/fingerprintjs2 - -# Access Control List - -1. [Capirca: Multi-platform ACL generation system](https://github.com/google/capirca) - -# Return-oriented programming - -1. https://github.com/immunant/selfrando - -# Static analysis - -1. [Cam Tenny - Beyond the Paper - End-to-End Program Analysis](https://www.youtube.com/watch?v=hmDz0Rv6hKI) -1. https://www.curry-on.org/2019/sessions/beyond-the-paper-end-to-end-program-analysis.html - -# Programming language - -1. [Secure Compilation](https://blog.sigplan.org/2019/07/01/secure-compilation/) - -# Cautionary tale - -1. [Thou Shalt Not Depend on Me: A look at JavaScript libraries in the wild](https://queue.acm.org/detail.cfm?id=3205288) -1. https://medium.com/@nodepractices/were-under-attack-23-node-js-security-best-practices-e33c146cb87d - -# Surface area - -1. [Towards Automated Application-Specific Software Stacks](https://arxiv.org/pdf/1907.01933.pdf) - -# Vulnerability - -1. [Against Cipher Agility in Cryptography Protocols](https://paragonie.com/blog/2019/10/against-agility-in-cryptography-protocols) -1. [Padding the struct: How a compiler optimization can disclose stack memory](https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2019/october/padding-the-struct-how-a-compiler-optimization-can-disclose-stack-memory/) -1. [PCG generators are easily “crackable”](https://news.ycombinator.com/item?id=21475210) -1. [Safely Creating And Using Temporary Files](https://www.netmeister.org/blog/mktemp.html) -1. [CSS Injection Primitives](https://x-c3ll.github.io/posts/CSS-Injection-Primitives/) -1. https://medium.com/@shnatsel/how-rusts-standard-library-was-vulnerable-for-years-and-nobody-noticed-aebf0503c3d6 -1. [ACLs don’t](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.406.4684&rep=rep1&type=pdf) -1. https://www.cs.auckland.ac.nz/~pgut001/pubs/book.pdf -1. https://pwnedkeys.com/ -1. [What Spectre Means for Lanugage Implementers - Ben Titzer - PLISS 2019](https://www.youtube.com/watch?v=FGX-KD5Nh2g) -1. https://rambleed.com/ -1. https://browserleaks.com/ - -# Reference - -1. [Don't get pwned: practicing the principle of least privilege](https://cloud.google.com/blog/products/identity-security/dont-get-pwned-practicing-the-principle-of-least-privilege) -1. [Good Practices for Capability URLs](https://www.w3.org/TR/capability-urls/) -1. [Secure Socket API](https://securesocketapi.org/) -1. [Mind your Language(s): A discussion about languages and security](https://www.ssi.gouv.fr/uploads/IMG/pdf/Mind_Your_Languages_-_version_longue.pdf) -1. https://www.microsoft.com/en-us/research/blog/scaling-the-everest-of-software-security-with-dr-jonathan-protzenko/ -1. https://www.owasp.org/index.php/Main_Page -1. https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project -1. https://wiki.sei.cmu.edu/confluence/display/seccode/Top+10+Secure+Coding+Practices -1. https://www.archive.ece.cmu.edu/~grey/ -1. http://www.cs.umd.edu/projects/PL/selinks/ -1. http://www.cis.upenn.edu/~stevez/sol/related.html -1. https://www.bsimm.com/ -1. https://www.microsoft.com/en-us/securityengineering/sdl/ -1. https://www.engineeringtrustworthysystems.com/ -1. http://www.ats-lang.org/ -1. http://www.cis.upenn.edu/~stevez/papers/publications.html -1. http://collingreene.com/6_buckets_of_prodsec.html -1. [On Post-Compromise Security](https://eprint.iacr.org/2016/221.pdf) -1. https://messaginglayersecurity.rocks/ -1. https://github.blog/2019-05-23-introducing-new-ways-to-keep-your-code-secure/ -1. [RustBelt](https://plv.mpi-sws.org/rustbelt/popl18/) -1. https://github.com/dckc/awesome-ocap -1. https://projects.csail.mit.edu/jeeves/ -1. https://www.sans.org/top25-software-errors/ -1. https://www.owasp.org/index.php/Top_10_2013-Top_10 -1. https://nvd.nist.gov/cwe.cfm -1. https://en.wikipedia.org/wiki/Software_Development_Security -1. http://gigi.nullneuron.net/gigilabs/the-sorry-state-of-the-web-in-2016/ -1. http://www.ranum.com/security/computer_security/editorials/dumb/index.html -1. [Information Technology — Programming languages — Guidance to avoiding vulnerabilities in programming languages](http://www.open-std.org/jtc1/sc22/wg23/docs/ISO-IECJTC1-SC22-WG23_N0751-tr24772-1-after-pre-meeting-51-webex-20171016.pdf) - -# Control-flow integrity -1. [On the Effectiveness of Type-based Control Flow Integrity](https://sajjadium.github.io/files/acsac2018typecfi_paper.pdf) - diff --git a/documentation/research/Software Reliability Engineering (SRE).md b/documentation/research/Software Reliability Engineering (SRE).md deleted file mode 100644 index bd6a8443b..000000000 --- a/documentation/research/Software Reliability Engineering (SRE).md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [A Case Study in Community-Driven Software Adoption](http://landing.google.com/sre/resources/practicesandprocesses/case-study-community-driven-software-adoption/) - diff --git a/documentation/research/Statistical Programming Languages.md b/documentation/research/Statistical Programming Languages.md deleted file mode 100644 index e3127c1c9..000000000 --- a/documentation/research/Statistical Programming Languages.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [Statistical programming languages](https://www.refsmmat.com/notebooks/stats-langs.html) - diff --git a/documentation/research/Testing.md b/documentation/research/Testing.md deleted file mode 100644 index 32d47ea8d..000000000 --- a/documentation/research/Testing.md +++ /dev/null @@ -1,12 +0,0 @@ -# Concolic Testing - -1. [Robby Findler: Concolic Testing with Higher-Order Inputs](https://www.youtube.com/watch?v=aO9nOCqNdfQ) - -# Symbolic - -1. [Crux](https://crux.galois.com/) - -# White box - -1. [Ricardo Peña - White-Box Path Generation in Recursive Programs - Lambda Days 2020](https://www.youtube.com/watch?v=7RXJhPaQCkc) - diff --git a/documentation/research/Type theory/Dependent types.md b/documentation/research/Type theory/Dependent types.md deleted file mode 100644 index 84d739492..000000000 --- a/documentation/research/Type theory/Dependent types.md +++ /dev/null @@ -1,43 +0,0 @@ -# Exemplar - -1. [A simple type-theoretic language: Mini-TT](http://www.cse.chalmers.se/~bengt/papers/GKminiTT.pdf) -1. https://cedille.github.io/ - -# Reference - -1. [Thorsten Altenkirch - The power of Π - Lambda Days 2020](https://www.youtube.com/watch?v=3zT5eVHpQwA) -1. [A Path To DOT: Formalizing Fully Path-Dependent Types](https://arxiv.org/abs/1904.07298) -1. [Ghosts of Departed Proofs (Functional Pearl)](https://www.youtube.com/watch?v=2cAxOJEiL00) -1. [Ghosts of Departed Proofs (Functional Pearl)](https://kataskeue.com/gdp.pdf) -1. [F# Linear algebra with type-level dimensions and static checks](https://notebooks.azure.com/allisterb/projects/sylvester/html/Sylvester.Tensors.ipynb) -1. [From Scheme to Dependent Types in 100 lines by Gershom Bazerman](https://vimeo.com/134561872 &&& https://vimeo.com/135746080) -1. [A Tutorial Implementation of a Dependently Typed Lambda Calculus](https://www.andres-loeh.de/LambdaPi/) -1. [The calculus of constructions](http://www.sciencedirect.com/science/article/pii/0890540188900053#) -1. https://www.idris-lang.org/ -1. https://www.amazon.com/Type-driven-Development-Idris-Edwin-Brady/dp/1617293024/ -1. http://blog.codersbase.com/posts/2013-12-03-learning-dependent-types.html -1. http://oxij.org/note/BrutalDepTypes/ -1. https://hydraz.club/posts/2017-09-08.html -1. [Hoare Type Theory, Polymorphism and Separation](http://ynot.cs.harvard.edu/papers/jfpsep07.pdf) -1. ["Dependent Types in Haskell" by Stephanie Weirich](https://www.youtube.com/watch?v=wNa3MMbhwS4) -1. [A Little Bit of Dependent Types](https://youtu.be/WI8uA4KjQJk?t=5169) -1. [Type Checking Without Types](https://matthias.benkard.de/typecore/typecore.pdf) -1. [Cubical Type Theory: a constructive interpretation of the univalence axiom](http://www.cse.chalmers.se/~coquand/cubicaltt.pdf) -1. https://github.com/mortberg/cubicaltt -1. https://leanprover.github.io/introduction_to_lean/ -1. [Infinity](https://github.com/groupoid/infinity) -1. https://github.com/groupoid -1. http://groupoid.space/ -1. https://existentialtype.wordpress.com/2016/07/31/cubical-higher-type-theory-as-a-programming-language/ -1. https://github.com/silt-lang/silt -1. [Parametric Quantifiers for Dependent Type Theory](https://people.cs.kuleuven.be/~andreas.nuyts/ParametricQuantifiers.pdf &&& https://www.youtube.com/watch?v=lJB5MhYJ4Js) -1. [A Specification for Dependently-Typed Haskell:](http://www.seas.upenn.edu/~sweirich/papers/systemd-submission.pdf) -1. [A Specification for Dependent Types in Haskell](http://www.seas.upenn.edu/~sweirich/papers/systemd-submission.pdf &&& https://cs.brynmawr.edu/~rae/papers/2017/dep-haskell-spec/dep-haskell-spec.pdf &&& https://www.youtube.com/watch?v=0157rUxC4_8) -1. [Normalization by Evaluation for Sized Dependent Types](http://publications.lib.chalmers.se/records/fulltext/252072/local_252072.pdf &&& https://www.youtube.com/watch?v=uSP91COE_ZA) -1. https://bluishcoder.co.nz/2018/01/03/writing-basic-proofs-in-ats.html -1. [AN INTRODUCTION TO UNIVALENT FOUNDATIONS FOR MATHEMATICIANS](http://www.ams.org/journals/bull/2018-55-04/S0273-0979-2018-01616-9/S0273-0979-2018-01616-9.pdf) -1. https://medium.com/@maiavictor/about-induction-on-the-calculus-of-constructions-581fcfdb89c5 -1. [05 A Dependent Haskell Triptych](https://www.youtube.com/watch?v=soKl1IslU-I) -1. https://cs.ru.nl/~wouters/Publications/ThePowerOfPi.pdf -1. [Algebraic Presentations of Dependent Type Theories](https://arxiv.org/abs/1602.08504v3) - diff --git a/documentation/research/Type theory/Row polymorphism.md b/documentation/research/Type theory/Row polymorphism.md deleted file mode 100644 index 3194405ff..000000000 --- a/documentation/research/Type theory/Row polymorphism.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [Row Polymorphism without the Jargon](https://jadon.io/blog/row-polymorphism) - diff --git a/documentation/research/architecture/microservice.md b/documentation/research/architecture/microservice.md deleted file mode 100644 index ab15c99de..000000000 --- a/documentation/research/architecture/microservice.md +++ /dev/null @@ -1,3 +0,0 @@ -# Reference - -1. [Convey - a simple recipe for .NET Core microservices.](https://www.youtube.com/watch?v=cxEXx4UT1FI) diff --git a/documentation/research/back-end/Python.md b/documentation/research/back-end/Python.md deleted file mode 100644 index 5a3266107..000000000 --- a/documentation/research/back-end/Python.md +++ /dev/null @@ -1,4 +0,0 @@ -# Platform - -1. [BeeWare: Write once. Deploy everywhere.](https://beeware.org/) - diff --git a/documentation/research/back-end/WebAssembly (WASM).md b/documentation/research/back-end/WebAssembly (WASM).md deleted file mode 100644 index 4e6487d85..000000000 --- a/documentation/research/back-end/WebAssembly (WASM).md +++ /dev/null @@ -1,33 +0,0 @@ -# Exemplar - -1. [Announcing GraalWasm — a WebAssembly engine in GraalVM](https://medium.com/graalvm/announcing-graalwasm-a-webassembly-engine-in-graalvm-25cd0400a7f2) -1. [Towards a WebAssembly standalone runtime on GraalVM](https://dl.acm.org/citation.cfm?id=3362780) -1. https://github.com/vvanders/wasm_lua -1. https://github.com/AppCypher/webassemblylanguages -1. https://medium.com/perlin-network/life-a-secure-blazing-fast-cross-platform-webassembly-vm-in-go-ea3b31fa6e09 - -# Reference - -1. https://bytecodealliance.org/ -1. [Faster Fractals with Multi-Threaded WebAssembly](https://blog.scottlogic.com/2019/07/15/multithreaded-webassembly.html) -1. https://blog.scottlogic.com/2018/07/20/wasm-future.html -1. http://fitzgeraldnick.com/2018/04/26/how-does-dynamic-dispatch-work-in-wasm.html -1. https://hacks.mozilla.org/2018/03/making-webassembly-better-for-rust-for-all-languages/ -1. https://webassembly.github.io/ -1. https://github.com/WebAssembly/spec/blob/md-proto/md-proto/WebAssembly.md -1. https://github.com/WebAssembly/binaryen -1. [NYLUG Presents: Luke Wagner -on- WebAssembly: A New Compiler Target For The Web](https://www.youtube.com/watch?v=RByPdCN1RQ4) -1. https://binji.github.io/2017/03/05/webassembly-type-checking.html -1. https://github.com/WebAssembly/spec/tree/master/interpreter -1. https://mbebenita.github.io//WasmExplorer/ -1. http://thecodebarbarian.com/getting-started-with-webassembly-in-node.js.html -1. http://blog.seraum.com/compiling-javascript-to-webassembly-wasm-or-asm-js-with-nectarjs -1. https://hacks.mozilla.org/2017/07/memory-in-webassembly-and-why-its-safer-than-you-think/ -1. [Using WebAssembly and Threads (Chrome Dev Summit 2018)](https://www.youtube.com/watch?v=zgOGZgAPUjQ) -1. https://github.com/wasmerio/wasmer -1. https://www.fastly.com/blog/announcing-lucet-fastly-native-webassembly-compiler-runtime -1. https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/ -1. https://cybernetist.com/2019/04/25/wasm-universal-application-runtime/ -1. https://github.com/intel/wasm-micro-runtime -1. https://medium.com/wasmer/running-webassembly-on-the-kernel-8e04761f1d8e - diff --git a/documentation/research/back-end/native.md b/documentation/research/back-end/native.md deleted file mode 100644 index ec1ba689d..000000000 --- a/documentation/research/back-end/native.md +++ /dev/null @@ -1,125 +0,0 @@ -# Call stack - -1. http://stffrdhrn.github.io/software/embedded/openrisc/2018/06/08/gcc_stack_frames.html -1. https://yurichev.com/blog/reg_alloc/ - -# Unicode - -1. http://manishearth.github.io/blog/2017/01/14/stop-ascribing-meaning-to-unicode-code-points/ -1. https://garbagecollected.org/2013/03/15/reverse-strings-like-a-pro/ -1. http://reedbeta.com/blog/programmers-intro-to-unicode/ -1. https://mathiasbynens.be/notes/javascript-unicode -1. http://www.daemonology.net/blog/2008-06-05-faster-utf8-strlen.html -1. https://haxe.org/blog/unicode/ -1. http://justinblank.com/notebooks/stringrepresentationsandstringapis.html - -# Shell - -1. https://github.com/dylanaraps/pure-bash-bible - -# Platforms - -1. https://github.com/neutralinojs/neutralinojs - -# Concurrency - -1. https://github.com/hnes/libaco - -# Numeric operation - -1. https://github.com/ridiculousfish/libdivide -1. https://lemire.me/blog/2019/02/08/faster-remainders-when-the-divisor-is-a-constant-beating-compilers-and-libdivide/ - -# Optimization - -1. http://ssw.jku.at/General/Staff/Leopoldseder/manlang2018-fast_path_unrolling_authorpreprint.pdf - -# Foreign function interface (FFI) - -1. https://github.com/swig/swig -1. http://www.swig.org/ -1. http://www.swig.org/Doc2.0/Go.html -1. https://begriffs.com/posts/2019-01-19-inside-c-standard-lib.html -1. https://www.amazon.com/Standard-C-Library-P-J-Plauger/dp/0131315099 - -# Graal - -1. https://www.newtv.co.th/video/video.php?v=topKYJgv6qA - -# Floating point arithmetic - -1. [Accurate Differences of Products with Kahan's Algorithm](https://pharr.org/matt/blog/2019/11/03/difference-of-floats.html) -1. https://floating-point-gui.de/ -1. [Faster floating point arithmetic with Exclusive OR](http://nfrechette.github.io/2019/10/22/float_xor_optimization/) -1. https://oded.ninja/2017/05/01/floating-point/ -1. [What Every Computer Scientist Should Know About Floating-Point Arithmetic](http://www.lsi.upc.edu/~robert/teaching/master/material/p5-goldberg.pdf) -1. https://lemire.me/blog/2017/11/16/fast-exact-integer-divisions-using-floating-point-operations/ - -# Reference - -1. [Executables - Linking and Loading](https://github.com/MattPD/cpplinks/blob/master/executables.linking_loading.md) -1. http://luajit.org/ -1. http://luajit.org/ext_ffi.html -1. http://luajit.org/dynasm.html -1. [The Standard C Library](https://www.amazon.com/Standard-C-Library-P-J-Plauger/dp/0131315099) -1. [C Is Not a Low-level Language: Your computer is not a fast PDP-11.](https://queue.acm.org/detail.cfm?id=3212479) -1. http://www.ffconsultancy.com/ocaml/hlvm/ -1. https://nullprogram.com/blog/2018/05/27/ -1. https://github.com/dyu/ffi-overhead -1. https://ivorylang.org/ivory-introduction.html -1. http://blog.llvm.org/2018/03/dragonffi-ffijit-for-c-language-using.html -1. https://internals.rust-lang.org/t/refactoring-std-for-ultimate-portability/4301 -1. https://blog.plan99.net/kotlin-native-310ffac94af2 -1. https://blog.jetbrains.com/kotlin/2017/12/kotlinnative-v0-5-released-calling-kotlin-from-swift-and-c-llvm-5-and-more/ -1. https://readytalk.github.io/avian/ -1. https://medium.com/@octskyward/kotlin-native-310ffac94af2#.xbcxqlm1w -1. https://www.infoq.com/presentations/clojure-scheme -1. https://github.com/ollef/sixten -1. https://software.intel.com/sites/landingpage/IntrinsicsGuide/ -1. https://llvllatrix.wordpress.com/2016/12/31/system-calls-for-developers/ -1. http://www.cipht.net/2017/10/03/are-jump-tables-always-fastest.html -1. https://github.com/libuv/libuv -1. https://www.threadingbuildingblocks.org/ -1. https://cafbit.com/post/tokio_internals/ -1. https://medium.com/@unmeshvjoshi/how-java-thread-maps-to-os-thread-e280a9fb2e06 -1. http://pixielang.org/ -1. https://github.com/pixie-lang/pixie -1. https://github.com/rust-lang/rust -1. http://ziglang.org/# -1. http://www.mpfr.org/ -1. http://www.mpfr.org/algorithms.pdf -1. http://wilsonminesco.com/16bitMathTables/ -1. http://blog.veitheller.de/Fixed_Point_Division.html -1. http://libdivide.com/ -1. [Modern Computer Arithmetic](https://members.loria.fr/PZimmermann/mca/mca-cup-0.5.9.pdf) -1. [Division by Invariant Integers using Multiplication](https://gmplib.org/~tege/divcnst-pldi94.pdf) -1. https://lion137.blogspot.com/2019/02/borneo-language-102.html -1. https://www.youtube.com/watch?v=N0JTvyCxiv8 -1. http://robert.ocallahan.org/2017/02/what-rust-can-do-that-other-languages.html -1. https://github.com/graalvm/truffleruby/blob/master/doc/user/svm.md -1. http://bellard.org/libbf/ -1. http://paulcavallaro.com/blog/hashed-and-hierarchical-timing-wheels/ -1. http://speleotrove.com/decimal/ -1. http://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking -1. [Skip the FFI!](http://llvm.org/devmtg/2014-10/Slides/Skip%20the%20FFI.pdf) -1. http://www.infoworld.com/article/3187370/application-development/kotlin-compiles-directly-to-native-code-via-llvm.html -1. https://blog.jetbrains.com/kotlin/2017/04/kotlinnative-tech-preview-kotlin-without-a-vm/ -1. https://github.com/bugvm/bugvm -1. https://github.com/rampantpixels/rpmalloc -1. https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html -1. http://web.stanford.edu/group/sequoia/ -1. https://hackernoon.com/experimenting-with-small-buffer-optimization-for-c-lambdas-d5b703fb47e4 -1. https://www.microsoft.com/en-us/research/wp-content/uploads/2017/03/kedia2017mem.pdf -1. https://github.com/tomhrr/dale -1. [Fast String Searching](https://pdfs.semanticscholar.org/d991/2ea262986794e29e3f15e5f8930d42f2ced4.pdf) -1. https://github.com/apple/swift/blob/master/docs/StringManifesto.md -1. http://home.pipeline.com/~hbaker1/CheneyMTA.html -1. [Position: Lightweight static resources 0Sexy types for embedded and systems programming](https://pdfs.semanticscholar.org/2368/ccf8c62ab981e2426cd698ba2229f3eca311.pdf?_ga=2.228359389.1990612643.1507689838-1658669397.1507689838) -1. http://homes.soic.indiana.edu/ccshan/tfp2007/talk.pdf -1. http://www.catb.org/esr/structure-packing/ -1. [Ahead Of Time (AOT) Internals](https://www.youtube.com/watch?v=n5DCg6M2MDM) -1. [Polyglot Native: Java, Scala, Kotlin, & JVM languages](https://www.youtube.com/watch?v=5BMHIeMXTqA) -1. https://ziviani.net/2017/functions-in-assembly -1. https://ziviani.net/2017/functions-in-assembly-ii -1. [Hashed and Hierarchical Timing Wheels: Data Structures for the Efficient Implementation of a Timer Facility](http://www.cs.columbia.edu/~nahum/w6998/papers/sosp87-timing-wheels.pdf) - diff --git a/documentation/research/browser.md b/documentation/research/browser.md deleted file mode 100644 index 7579e468b..000000000 --- a/documentation/research/browser.md +++ /dev/null @@ -1,49 +0,0 @@ -# Exemplar - -1. [Flow: The super fast, multithreaded HTML5 browser from Ekioh](https://www.ekioh.com/flow-browser/) -1. https://refresh.study/ -1. https://github.com/breach/breach_core -1. https://github.com/browserhtml/browserhtml -1. https://depolium.com/ -1. https://vivaldi.com/ -1. https://www.nidium.com/ -1. https://github.com/trevorlinton/webkit.js -1. https://www.epicbrowser.com/ -1. https://minbrowser.github.io/min/ -1. https://www.palemoon.org/ -1. https://github.com/beakerbrowser/webdb -1. https://github.com/beakerbrowser -1. https://github.com/nEXT-Browser/nEXT -1. https://techcrunch.com/2018/02/23/veil-is-private-browsing-for-the-ultra-paranoid/ -1. https://github.com/wexond/wexond -1. http://next.atlas.engineer -1. https://workona.com/ -1. https://luakit.github.io/ -1. https://www.thurrott.com/cloud/web-browsers/204669/opera-web-browser-is-reborn - -# Security - -1. https://developers.google.com/web/updates/2018/06/feature-policy -1. https://cure53.de/#browser-security-whitepaper -1. https://anon.cosheaf.com/ -1. [Secure Browser Architecture Based on Hardware Virtualization](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.664.9527&rep=rep1&type=pdf) -1. https://medium.com/personal-capital-tech-blog/why-we-write-post-only-apis-f15108fb6558 - -# Performance - -1. https://github.com/slightlyoff/never_slow_mode - -# Reference - -1. https://www.opera.com/gx -1. https://evertpot.com/tabs-are-the-wrong-abstraction/ -1. http://news.mit.edu/2018/system-patches-private-browsing-0223 -1. https://vivaldi.com/blog/vivaldi-makes-history/?hl=en-us&version=1.8.770.56&os=W10.0.14393 -1. https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/ -1. https://mozillagfx.wordpress.com/2017/09/21/introduction-to-webrender-part-1-browsers-today/ -1. https://noncombatant.org/2017/11/07/problems-of-urls/ -1. https://stoyannk.wordpress.com/2017/11/13/rendering-html-at-1000-fps-part-2/ -1. https://v8project.blogspot.com/2018/08/embedded-builtins.html -1. https://developers.google.com/web/updates/2018/09/inside-browser-part1 -1. https://addons.mozilla.org/en-US/firefox/addon/tree-style-tab/ - diff --git a/documentation/research/chemistry.md b/documentation/research/chemistry.md deleted file mode 100644 index 96feafe20..000000000 --- a/documentation/research/chemistry.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [Cando chemistry language](https://github.com/cando-developers/cando) - diff --git a/documentation/research/cryptography.md b/documentation/research/cryptography.md deleted file mode 100644 index 7eaf9cc9f..000000000 --- a/documentation/research/cryptography.md +++ /dev/null @@ -1,60 +0,0 @@ -# Constant-time programming - -1. [Constant-Time WebAssembly](https://github.com/PLSysSec/ct-wasm) -1. [Verifying Constant-Time Implementations](https://michael-emmi.github.io/papers/conf-uss-AlmeidaBBDE16.pdf) -1. https://www.bearssl.org/ctmul.html -1. [FaCT: A Flexible, Constant-Time Programming Language](https://cseweb.ucsd.edu/~dstefan/pubs/cauligi:2017:fact.pdf) -1. [FaCT: A DSL for Timing-Sensitive Computation](https://ranjitjhala.github.io/static/fact_dsl.pdf) -1. ["FaCT: A New Language for Constant-Time Programming" by Sunjay Cauligi](https://www.youtube.com/watch?v=kbn9UCRK2Qg) - -# Zero-knowledge proof - -1. ["Rhapsody in Zero Knowledge: Proving Without Revealing" by Tony Arcieri](https://www.youtube.com/watch?v=jKSz7W5dTgY) -1. [Zero-Knowledge Proofs: What are they, how do they work, and are they fast yet?](https://zkp.science/) - -# Hash - -1. [On future-proof cryptographic hashes](https://pascalprecht.github.io/posts/future-proofed-hashes-with-multihash/) - -# Library - -1. [zinc: Introduce minimal cryptography library](https://git.kernel.org/pub/scm/linux/kernel/git/zx2c4/linux.git/commit/?h=zinc) -1. https://joshlf.com/post/2018/11/06/introducing-mundane/ -1. https://github.com/akhawaja/ecc-crypto-helper -1. [Introducing CIRCL: An Advanced Cryptographic Library](https://blog.cloudflare.com/introducing-circl/) - -# Criticism - -1. [Fuck RSA](https://blog.trailofbits.com/2019/07/08/fuck-rsa/) - -# Reference - -1. [Sunjay Cauligi - Constant-time crypto programming with FaCT](https://www.youtube.com/watch?v=SSEHF_u79e4) -1. https://blog.acolyer.org/2018/07/06/oblix-an-efficient-oblivious-search-index/ -1. https://cryptography.pizza/ -1. [HACL∗: A Verified Modern Cryptographic Library](https://eprint.iacr.org/2017/536.pdf) -1. [How to Use Java Cryptography API Securely](https://www.youtube.com/watch?v=3HIdaSgxMlo) -1. [A Graduate Course in Applied Cryptography](http://toc.cryptotextbook.net/home) -1. https://github.com/InstantWebP2P/tweetnacl-java -1. https://github.com/kevinburke/nacl -1. https://github.com/miracl/MIRACL -1. https://github.com/open-quantum-safe/liboqs -1. https://www.bearssl.org/bigint.html -1. https://timtaubert.de/blog/2018/08/bitslicing-an-introduction/ -1. [CT-Wasm: Type-Driven Secure Cryptography for the Web Ecosystem](https://arxiv.org/abs/1808.01348) -1. https://arstechnica.com/information-technology/2013/10/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/ -1. https://medium.com/@dbkats/a-gentle-introduction-to-attribute-based-encryption-edca31744ac6 -1. https://cryptoswift.io/ - -# Language - -1. https://cryptol.net/ -1. [Formally Verified Cryptographic Web Applicationsin WebAssembly](https://eprint.iacr.org/2019/542.pdf) - -# Randomness extractor - -1. [An introduction to randomness extractors](https://cs.haifa.ac.il/~ronen/online_papers/ICALPinvited.pdf) - -# Homomorphic Encryption - -1. [Practical Homomorphic Encryption Over the Integers](https://arxiv.org/abs/1702.07588) diff --git a/documentation/research/culture.md b/documentation/research/culture.md deleted file mode 100644 index 5abdff8d5..000000000 --- a/documentation/research/culture.md +++ /dev/null @@ -1,3 +0,0 @@ -# Reference - -1. [Five Worlds](https://www.joelonsoftware.com/2002/05/06/five-worlds/) diff --git a/documentation/research/database.md b/documentation/research/database.md deleted file mode 100644 index 2152dd124..000000000 --- a/documentation/research/database.md +++ /dev/null @@ -1,471 +0,0 @@ -# Reference - -1. ["Temporal Databases for Streaming Architectures" by Jeremy Taylor and Jon Pither](https://www.youtube.com/watch?v=ykbYNBE-V3k) -1. ["Makings of a Modern ACID Compliant Distributed Database" by Attila Szegedi](https://www.youtube.com/watch?v=pn8mCeX3LDE) -1. https://edgedb.com/blog/a-path-to-a-10x-database/ -1. https://cstack.github.io/db_tutorial/ -1. http://www.sql-workbench.eu/dbms_comparison.html -1. http://www.interdb.jp/pg/index.html -1. [Foundations of Databases](http://webdam.inria.fr/Alice/) -1. https://medium.com/textileio/building-the-firebase-for-crdts-7dd8dea8953a - -# Data structure - -1. [The Concurrent 2-Trie](https://medium.com/@chrisvest/the-concurrent-2-trie-67deb2b57ba1) - -# Query - -1. [A Short Story About SQL’s Biggest Rival](https://www.holistics.io/blog/quel-vs-sql/) -1. https://calcite.apache.org/ -1. https://juxt.pro/blog/crux-sql -1. https://www.influxdata.com/blog/why-were-building-flux-a-new-data-scripting-and-query-language/ -1. https://crate.io/a/lab-notes-how-we-made-joins-23-thousand-times-faster-part-two/ -1. GC: A Graph Caching System for Subgraph/Supergraph Queries - - http://www.vldb.org/pvldb/vol11/p2022-wang.pdf -1. How to Architect a Query Compiler, Revisited - - https://www.cs.purdue.edu/homes/rompf/papers/tahboub-sigmod18.pdf -1. https://gql.today/ -1. Everything You Always Wanted to Know About Compiled and Vectorized Queries But Were Afraid to Ask - - http://www.vldb.org/pvldb/vol11/p2209-kersten.pdf -1. https://github.com/efficient/SuRF -1. http://www.try-alf.org/blog/2013-10-21-relations-as-first-class-citizen -1. https://icfp18.sigplan.org/event/hope-2018-papers-finding-fixed-points-faster -1. Froid: Optimization of Imperative Programs in a Relational Database - - http://www.vldb.org/pvldb/vol11/p432-ramachandra.pdf -1. Query Combinators - - https://arxiv.org/abs/1702.08409 -1. https://github.com/medmain/deepr -1. https://edgedb.com/blog/we-can-do-better-than-sql/ -1. https://github.com/ollef/sixten/blob/master/docs/QueryCompilerDriver.md - -# Optimization - -1. [Hera - High Efficiency Reliable Access to data stores](https://github.com/paypal/hera) -1. [Relaxed Operator Fusion for In-Memory Databases: Making Compilation, Vectorization, and Prefetching Work Together At Last](https://db.cs.cmu.edu/papers/2017/p1-menon.pdf) -1. https://medium.com/connect-the-dots/optimizing-queries-in-rethinkdb-584d7f660cb -1. https://blog.acolyer.org/2019/01/18/towards-a-hands-free-query-optimizer-through-deep-learning/ -1. http://blog.felipe.rs/2019/01/29/demystifying-join-algorithms/ -1. https://corecursive.com/030-rethinking-databases-with-jon-gjengset/ - -# Index - -1. https://www.pilosa.com/ -1. https://en.wikipedia.org/wiki/Fractal_tree_index -1. [Beating hash tables with trees? The ART-ful radix trie](https://www.the-paper-trail.org/post/art-paper-notes/) -1. https://www.ristret.com/s/gnd4yr/brief_history_log_structured_merge_trees -1. [Getting The Most Out Of Your PostgreSQL Indexes](https://pgdash.io/blog/postgres-indexes.html?p) -1. http://databasearchitects.blogspot.com/2019/05/why-use-learning-when-you-can-fit.html -1. https://priyankvex.wordpress.com/2019/05/19/a-tale-on-concatenated-indexes-master-roshi-and-gokus-fireside-chat/ - -# Relational Algebra - -1. https://slamdata.com/what-is-multidimensional-relational-algebra/ -1. https://github.com/slamdata/purescript-mra - -# Time traveling - -1. https://www.arangodb.com/2018/07/time-traveling-with-graph-databases/ - -# Data processing -1. https://medium.com/@gauthierleonard/apache-beam-a-unified-programming-model-for-data-processing-pipelines-4de9fb6ede6d - -# Philosophy -1. http://dhickey.ie/2016/01/03/commercial-suicide-integration-at-the-database-level/ - -# Storage - -1. [Understanding LSM Trees: What Powers Write-Heavy Databases](https://yetanotherdevblog.com/lsm/) -1. http://www.benstopford.com/2015/02/14/log-structured-merge-trees/ -1. A Comparison of Adaptive Radix Trees and Hash Tables - - https://bigdata.uni-saarland.de/publications/ARCD15.pdf -1. HashKV: Enabling Efficient Updates in KV Storage via Hashing - - https://www.usenix.org/system/files/conference/atc18/atc18-chan.pdf -1. https://akumuli.org/akumuli/2018/08/03/high-cardinality-support/ -1. Ideal Hash Trees - - https://github.com/papers-we-love/papers-we-love/blob/master/data_structures/ideal-hash-trees.pdf -1. https://clemenswinter.com/2018/08/13/how-read-100s-of-millions-of-records-per-second-from-a-single-disk/ -1. https://github.com/vmxdev/tkvdb -1. https://blog.acolyer.org/2018/09/28/columnstore-and-b-tree-are-hybrid-physical-designs-important/ -1. http://sergeiturukin.com/2017/06/07/storage-engine-introduction.html -1. https://accumulo.apache.org/ -1. http://www.mit.edu/~kepner/D4M/ -1. Achieving 100,000,000 database inserts per second using Accumulo and D4M - - http://www.ieee-hpec.org/2014/CD/index_htm_files/FinalPapers/31.pdf -1. Lambda World 2018 - The Radix Trees How IntMap Works - Tikhon Jelvis - - https://www.youtube.com/watch?v=0udjkEiCjog -1. FineLine: Log-structured Transactional Storage and Recovery - - http://www.vldb.org/pvldb/vol11/p2249-sauer.pdf -1. Storm: a fast transactional dataplane forremote data structures - - http://www.cs.technion.ac.il/~dan/papers/storm-systor-2019.pdf - -# Exemplar - -1. [Irmin](https://irmin.org/) -1. [Database of Databases](https://dbdb.io/) - -## General - -1. https://github.com/Workiva/eva/ -1. https://learndb.net/ -1. http://orientdb.com/ -1. https://ignite.apache.org/ -1. http://www.datomic.com/ -1. https://eventsourcing.com/ -1. https://geteventstore.com/ -1. http://cassandra.apache.org/ -1. https://kafka.apache.org/ -1. http://basho.com/products/riak-kv/ -1. https://www.influxdata.com/time-series-platform/influxdb/ -1. https://prestodb.io/ -1. https://github.com/mozilla/datomish -1. http://sqream.com/ -1. http://pelotondb.io/ -1. https://github.com/tidwall/summitdb -1. https://github.com/facebookincubator/beringei - - https://code.facebook.com/posts/952820474848503/beringei-a-high-performance-time-series-storage-engine -1. https://github.com/tonsky/datascript -1. https://github.com/biokoda/actordb -1. https://www.slashdb.com/ -1. https://realm.io/ -1. https://www.bigchaindb.com/ -1. http://samza.apache.org/ -1. https://www.umiacs.umd.edu/~zhangyp/papers/IntegriDB.pdf -1. https://github.com/PumpkinDB/PumpkinDB -1. https://symas.com/offerings/lightning-memory-mapped-database/ -1. http://gun.js.org/ -1. https://open.dgraph.io/post/benchmark-neo4j/ - - 1. https://github.com/dgraph-io/dgraph - 1. https://dgraph.io/ -1. https://www.spreadsheetdb.io/ -1. http://www.openio.io/ -1. https://github.com/pingcap/tidb -1. http://druid.io/ -1. http://hsqldb.org/ -1. http://siridb.net/blog/time-series-with-siridb/ -1. https://github.com/jankotek/mapdb -1. https://github.com/NationalSecurityAgency/lemongraph -1. https://twobithistory.org/2017/10/07/the-most-important-database.html -1. https://github.com/couchbase/forestdb -1. https://www.nuodb.com/ -1. https://edgedb.com/ -1. https://www.harperdb.io/ -1. https://www.antidotedb.eu/ -1. https://tech.marksblogg.com/minimalist-guide-tutorial-foundationdb.html -1. https://www.foundationdb.org/blog/announcing-document-layer/ -1. https://www.foundationdb.org/ - - 1. https://en.wikipedia.org/wiki/FoundationDB -1. https://github.com/orbitdb/orbit-db -1. https://www.aerospike.com/ -1. https://sirix.io/ - -## Data-flow - -1. [Noria: data-flow for high-performance web applications](https://github.com/mit-pdos/noria) - -## Graph - -1. https://github.com/hugegraph/hugegraph -1. https://github.com/Microsoft/GraphEngine -1. https://redislabs.com/blog/release-redisgraph-v1-0-preview/ -1. https://github.com/JanusGraph/janusgraph -1. https://www.slideshare.net/RoiLipman/graph-algebra -1. https://juxt.pro/crux/docs/index.html -1. https://github.com/juxt/crux -1. [The Crux of Bitemporality - Jon Pither](https://www.youtube.com/watch?v=3Stja6YUB94) - -## Column - -1. https://blog.acolyer.org/2018/09/26/the-design-and-implementation-of-modern-column-oriented-database-systems/ - -## Log - -1. https://code.fb.com/core-data/logdevice-a-distributed-data-store-for-logs/ - -## Key-Value - -1. https://github.com/yahoo/HaloDB -1. https://chronicle.software/products/map/ - -## Blockchain - -1. https://flur.ee/ - -## Time-series - -1. https://github.com/alpacahq/marketstore -1. https://www.outlyer.com/blog/why-not-to-build-a-time-series-database/ - -## GPU - -1. https://blazingdb.com/#/ - -## Tree - -1. A Novel Method for Representing Hierarchies in a Relational Database Using Bignums and SQLite - - https://s3.amazonaws.com/pub.xhuntley.net/Huntley_Tcl2011.pdf - -# CQRS | Event-Sourcing - -1. [Introducing Derivative Event Sourcing](https://www.confluent.io/blog/event-sourcing-vs-derivative-event-sourcing-explained) -1. https://blog.wallaroolabs.com/2018/06/implementing-time-windowing-in-an-evented-streaming-system/ -1. https://data-artisans.com/blog/a-practical-guide-to-broadcast-state-in-apache-flink -1. https://medium.com/@hugo.oliveira.rocha/what-they-dont-tell-you-about-event-sourcing-6afc23c69e9a -1. https://vvvvalvalval.github.io/posts/2018-11-12-datomic-event-sourcing-without-the-hassle.html -1. https://chriskiehl.com/article/event-sourcing-is-hard -1. https://medium.com/serialized-io/apache-kafka-is-not-for-event-sourcing-81735c3cf5c - -# Architecture - -1. https://www.sqlite.org/arch.html - -# Criticism - -1. https://codeburst.io/doing-without-databases-in-the-21st-century-6e25cf495373 - -# Geo-spatial - -1. H3: Uber’s Hexagonal Hierarchical Spatial Index - - https://eng.uber.com/h3/ -1. http://s2geometry.io/ -1. https://github.com/mourner/flatbush - -# Transaction -1. MixT: An embedded, domain-specific language for Mixed-Consistency Transactions - - https://mpmilano.github.io/MixT/ -1. The Case for Shared Nothing - - http://db.cs.berkeley.edu/papers/hpts85-nothing.pdf - -# Consistency - -1. https://jepsen.io/consistency -1. http://muratbuffalo.blogspot.com/2018/08/the-many-faces-of-consistency.html -1. https://fauna.com/blog/consistency-without-clocks-faunadb-transaction-protocol - -# P2P Networking - -1. https://medium.com/perlin-network/noise-an-opinionated-p2p-networking-stack-for-decentralized-protocols-in-go-bfc6fecf157d -1. https://xorro-p2p.github.io/ - -# Data Visualization - -1. https://www.tadviewer.com/ - -# Privacy - -1. https://blog.acolyer.org/2019/06/17/towards-multiverse-databases/ -1. [Towards Multiverse Databases](https://people.csail.mit.edu/malte/pub/papers/2019-hotos-multiversedb.pdf) - -# Security - -1. [The ZombieLoad Pragmatist: Tips for Surviving in a Post-Meltdown World](https://www.scylladb.com/2019/05/17/the-zombieload-pragmatist/) - -# _Temporary cache_ - -1. https://github.com/pubkey/rxdb -1. https://hackernoon.com/execute-millions-of-sql-statements-in-milliseconds-in-the-browser-with-webassembly-and-web-workers-3e0b25c3f1a6#.w8w8qi8b3 -1. https://github.com/kripken/sql.js -1. http://zmtp.org/ -1. https://github.com/agentm/project-m36 -1. http://graphql.org/ -1. https://docs.microsoft.com/en-us/azure/documentdb/documentdb-introduction -1. http://storm.apache.org/ -1. http://www.intersystems.com/our-products/cache/cache-overview/ -1. https://prometheus.io/ -1. http://www.ragic.com/ -1. https://github.com/bittorrent/sqltorrent -1. https://github.com/bitnine-oss/agensgraph -1. [Comdb2: Bloomberg’s Highly Available Relational Database System](http://www.vldb.org/pvldb/vol9/p1377-scotti.pdf) -1. https://www.pipelinedb.com/ -1. https://fauna.com/home -1. https://fauna.com/blog/a-database-built-like-an-operating-system -1. http://www.timescaledb.com/ -1. https://www.dataengineeringpodcast.com/episode-4-scylladb-with-eyal-gutkind/ -1. http://quickstep.incubator.apache.org/ -1. https://barrel-db.org/ -1. https://misfra.me/2016/04/09/tsdb-list/ -1. https://github.com/cayleygraph/cayley -1. https://deepstreamhub.com/ -1. http://www.spdk.io/ -1. https://github.com/pilosa/pilosa -1. http://sophia.systems/ -1. https://humio.com/ -1. https://medium.com/@uwdb/introducing-cosette-527898504bd6 -1. https://mixmax.com/blog/bee-queue-v1-node-redis-queue -1. http://btrdb.io/ -1. https://clickhouse.yandex/ -1. https://github.com/rqlite/rqlite -1. https://www.confluent.io/blog/ksql-open-source-streaming-sql-for-apache-kafka/ -1. https://github.com/Tencent/paxosstore -1. https://www.ibm.com/us-en/marketplace/project-eventstore -1. [LogDevice: a distributed data store for logs](https://code.facebook.com/posts/357056558062811) -1. https://crate.io/ -1. http://traildb.io/ -1. http://profanedb.gitlab.io/ -1. https://github.com/PyroclastIO/metamorphic -1. https://franchise.cloud/ -1. https://github.com/ssbc/secure-scuttlebutt -1. ["Datafun: a functional query language" by Michael Arntzenius](https://www.youtube.com/watch?v=gC295d3V9gE) -1. https://github.com/neo4j-contrib/spatial -1. https://github.com/agershun/alasql -1. http://www.tiledb.io/ -1. https://databricks.com/product/databricks-delta -1. http://www.geomesa.org/ -1. https://bookkeeper.apache.org/ -1. https://blog.outlyer.com/top10-open-source-time-series-databases -1. https://github.com/qubole/rubix -1. https://github.com/confluentinc/ksql -1. https://www.datanami.com/2018/06/15/streaming-sql-for-real-time-analytics/ -1. https://blog.fauna.com/fauna-topology-operations -1. https://fabianlindfors.se/blog/building-an-object-store-with-foundation-db/ -1. https://use-the-index-luke.com/no-offset -1. [GOTO 2016 • Conflict Resolution for Eventual Consistency • Martin Kleppmann](https://www.youtube.com/watch?v=yCcWpzY8dIA) -1. https://www.thoughts-on-java.org/5-common-hibernate-mistakes-that-cause-dozens-of-unexpected-queries/ -1. https://www.nicolaferraro.me/2018/04/25/saga-pattern-in-apache-camel/ -1. http://augustl.com/blog/2018/datomic_look_at_all_the_things_i_am_not_doing/ -1. https://blog.2ndquadrant.com/application-users-vs-row-level-security/ -1. https://medium.com/databasss/on-ways-to-agree-part-1-links-and-flp-impossibility-f6bd8a6a0980 -1. https://medium.com/@robot_dreams/disk-can-be-faster-than-memory-37c57e7ebca7 -1. http://www.bailis.org/blog/when-is-acid-acid-rarely/ -1. https://hackernoon.com/five-data-models-for-sharding-and-which-is-right-f5c3fa480b00 -1. http://www.aosabook.org/en/500L/an-archaeology-inspired-database.html -1. https://www.clever-cloud.com/blog/engineering/2015/05/20/why-auto-increment-is-a-terrible-idea/ -1. https://samrat.me/posts/2017-11-04-kvstore-linear-hashing/ -1. https://detect.io/news/2017/10/16/three-time-series-that-defeat-typical-anomaly-detection -1. http://blog.memsql.com/scaling-distributed-joins/ -1. http://akumuli.org/akumuli/2017/11/17/indexing/ -1. https://10clouds.com/blog/postgresql-10/ -1. https://cstack.github.io/db_tutorial/ -1. https://msdn.microsoft.com/en-us/library/jj591569.aspx -1. https://chatwithengineers.com/2016/08/29/a-survey-of-query-execution-engines-from-volcano-to-vectorized-processing/ -1. https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html -1. https://medium.com/the-hoard/building-a-kafka-that-doesnt-depend-on-zookeeper-2c4701b6e961#.paa4pjdtc -1. https://blog.acolyer.org/2017/01/23/ground-a-data-context-service/ -1. https://engineering.instagram.com/sharding-ids-at-instagram-1cf5a71e5a5c#.omhi4kyaj -1. http://rystsov.info/2017/02/15/simple-consensus.html -1. https://blog.jooq.org/2016/10/05/why-you-should-design-your-database-to-optimise-for-statistics/ -1. https://thesquareplanet.com/blog/students-guide-to-raft/ -1. https://rjuju.github.io/postgresql/2015/07/02/how-about-hypothetical-indexes.html -1. http://amitkapila16.blogspot.com/2017/03/hash-indexes-are-faster-than-btree.html -1. http://rhaas.blogspot.com/2017/04/new-features-coming-in-postgresql-10.html -1. https://fabxc.org/blog/2017-04-10-writing-a-tsdb/# -1. https://github.com/confluentinc/bottledwater-pg -1. http://www.postgresonline.com/journal/archives/173-Using-LTree-to-Represent-and-Query-Hierarchy-and-Tree-Structures.html -1. https://juxt.pro/blog/posts/datascript-dom.html -1. https://github.com/agentm/project-m36 -1. https://fortytw2.com/relational-dbs-on-kv-store-pt-1 -1. https://blog.slicingdice.com/want-to-build-a-new-time-series-database-start-here-d4c3fd1517b1 -1. http://akumuli.org/akumuli/2017/04/29/nbplustree/ -1. https://www.hugopicado.com/2017/05/06/what-event-sourcing-is-not.html -1. https://news.realm.io/news/conflict-resolution-for-eventual-consistency-goto/ -1. https://www.citusdata.com/blog/2017/05/11/dynamo-citus-and-tradeoffs-in-distributed-databases/ -1. http://www.cakesolutions.net/teamblogs/how-to-build-a-distributed-counter -1. https://netsil.com/blog/comparison-of-time-series-databases-netsils-use-of-druid/ -1. https://www.infoq.com/interviews/meijer-big-data -1. https://www.cs.cmu.edu/~jarulraj/pages/sigmod_2017_tutorial.html -1. https://speakerdeck.com/caitiem20/distributed-sagas-a-protocol-for-coordinating-microservices -1. https://blog.timescale.com/what-the-heck-is-time-series-data-and-why-do-i-need-a-time-series-database-dcf3b1b18563 -1. https://medium.com/hyrise/the-brain-of-every-database-c622aaba7d75 -1. http://codecapsule.com/2012/11/07/ikvs-implementing-a-key-value-store-table-of-contents/ -1. https://www.cockroachlabs.com/blog/sql-in-cockroachdb-mapping-table-data-to-key-value-storage/ -1. https://blog.acolyer.org/2017/07/07/do-we-need-specialized-graph-databases-benchmarking-real-time-social-networking-applications/ -1. http://vvvvalvalval.github.io/posts/2017-07-08-Datomic-this-is-not-the-history-youre-looking-for.html?t=1&cn=ZmxleGlibGVfcmVjc18y&iid=1e725951a13247d8bdc6fe8c113647d5&uid=2418042062&nid=244+293670920 -1. https://maxdemarzi.com/2017/07/13/using-a-cuckoo-filter-for-unique-relationships/ -1. https://medium.baqend.com/real-time-databases-explained-why-meteor-rethinkdb-parse-and-firebase-dont-scale-822ff87d2f87 -1. http://dawn.cs.stanford.edu/2017/08/07/asap/ -1. [TimescaleDB vs. Postgres for time-series: 20x higher inserts, 2000x faster deletes, 1.2x-14,000x faster queries](https://blog.timescale.com/timescaledb-vs-6a696248104e) -1. https://www.elastic.co/blog/elasticsearch-sequence-ids-6-0 -1. https://neo4j.com/blog/efficient-graph-algorithms-neo4j/ -1. https://blog.jooq.org/2017/05/30/when-to-use-bind-values-and-when-to-use-inline-values-in-sql/ -1. https://fylux.github.io/2017/08/09/VAR_Model_Time_Series/ -1. https://brandur.org/postgres-atomicity -1. [Generative Programming and Verification - Nada Amin](https://www.youtube.com/watch?v=QuJ-cEvH_oI) -1. http://ithare.com/oltp-db-optimizations-101-thinking-in-terms-of-execution-plans/ -1. https://pingcap.github.io/blog/2017/08/15/multi-raft/ -1. https://medium.com/@ajstorm/the-lambda-architecture-simplified-a28e436fa55e -1. http://akumuli.org/akumuli/2016/12/30/compression_part1/ -1. https://en.wikipedia.org/wiki/Codd%27s_12_rules -1. https://blog.jooq.org/2017/09/28/10-cool-sql-optimisations-that-do-not-depend-on-the-cost-model/ -1. https://medium.com/@ifesdjeen/on-disk-storage-part-4-b-trees-30791060741 -1. https://www.cockroachlabs.com/blog/automated-rebalance-and-repair/ -1. http://danielwhittaker.me/2017/10/09/handle-set-based-consistency-validation-cqrs/ -1. http://db.cs.cmu.edu/seminar2017/ -1. https://blog.timescale.com/time-series-data-postgresql-10-vs-timescaledb-816ee808bac5 -1. [Is Datomic strictly better than Facebook's graph datastore?](http://www.dustingetz.com/ezpjb2RlLWRhdGFiYXNlICJzdGFydGVyLWJsb2ctc3JjMiIsIDpsaW5rLWRiaWQgI0RiSWRbMTc1OTIxODYwNDU1NTkgI1VSSSAiZGF0b21pYzpmcmVlOi8vZGF0b21pYzo0MzM0L3N0YXJ0ZXItYmxvZy1zcmMyIl0sIDpxdWVyeS1wYXJhbXMgezplbnRpdHkgI0RiSWRbMTc1OTIxODYwNDYxNDQgI1VSSSAiZGF0b21pYzpmcmVlOi8vZGF0b21pYzo0MzM0L2R1c3RpbmdldHouY29tIl19fQ,,) -1. https://www.citusdata.com/blog/2017/10/17/tour-of-postgres-index-types/ -1. https://blog.grakn.ai/modelling-data-with-hypergraphs-edff1e12edf0 -1. http://www.scylladb.com/2017/10/05/io-access-methods-scylla/ -1. http://code.hootsuite.com/row-stores-vs-column-stores-why-not-use-both/ -1. http://matthewrocklin.com/blog/work/2017/10/16/streaming-dataframes-1 -1. https://brightinventions.pl/blog/database-timeouts/ -1. https://brandur.org/redis-streams -1. https://www.fittedcloud.com/blog/machine-learning-driven-optimization-outperforms-auto-scaling-dynamodb-capacity-management/ -1. https://parquet.apache.org/ -1. https://arrow.apache.org/ -1. https://www.youtube.com/watch?v=6lCVKMQR8Dw -1. https://blog.acolyer.org/2015/10/15/ironfleet-proving-practical-distributed-systems-correc/ -1. https://underscore.io/blog/posts/2017/03/07/refined-data-config-database.html -1. https://www.quickdatabasediagrams.com/ -1. [The Case for Learned Index Structures](https://arxiv.org/abs/1712.01208) -1. https://arxiv.org/abs/0806.3115 -1. https://arxiv.org/abs/1604.03607 -1. https://arxiv.org/abs/1702.07588 -1. [HoTTSQL: Proving Query Rewrites with Univalent SQL Semantics](https://arxiv.org/abs/1607.04822) -1. http://www.vldb.org/pvldb/vol9/p1707-pirk.pdf -1. [Continuous Analytics Over Discontinuous Streams](https://people.eecs.berkeley.edu/~franklin/Papers/sigmod10krishnamurthy.pdf) -1. http://www.vldb.org/ -1. https://blog.acolyer.org/2017/01/30/how-good-are-query-optimizers-really/ -1. http://gun.js.org/distributed/matters.html -1. http://blog.datomic.com/2017/01/the-ten-rules-of-schema-growth.html -1. https://blogs.technet.microsoft.com/dataplatforminsider/2017/01/05/how-six-lines-of-code-sql-server-can-bring-deep-learning-to-any-app/ -1. https://muratbuffalo.blogspot.com/2014/07/hybrid-logical-clocks.html -1. https://yokota.blog/2017/02/17/dont-settle-for-eventual-consistency/ -1. [AN INTRODUCTION TO GRAPH COMPRESSION TECHNIQUES FOR IN-MEMORY GRAPH COMPUTATION](https://www.cs.umd.edu/sites/default/files/scholarly_papers/Chavan.pdf) -1. [Relational Lattices: From Databases to Universal Algebra](http://www.dcs.bbk.ac.uk/~szabolcs/rellat-jlamp-second-submission-2.pdf) -1. https://bitworking.org/news/2017/03/prometheus -1. [Partioned Elias-Fano indexes](http://hpc.isti.cnr.it/hpcworkshop2014/PartitionedEliasFanoIndexes.pdf) -1. http://h2co3.org/blog/index.php/2017/04/10/join-considered-harmful/ -1. https://blog.jooq.org/2016/07/05/say-no-to-venn-diagrams-when-explaining-joins/ -1. [A Seven-Dimensional Analysis of Hashing Methods and its Implications on Query Processing](http://www.vldb.org/pvldb/vol9/p96-richter.pdf) -1. https://research.googleblog.com/2017/04/consistent-hashing-with-bounded-loads.html -1. [The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases](https://pdfs.semanticscholar.org/6abf/5107efc723c655956f027b4a67565b048799.pdf) -1. [Adapting Tree Structures for Processing with SIMD Instructions](https://openproceedings.org/2014/conf/edbt/ZeuchFH14.pdf) -1. [Compressed Computation for Text Indexing](http://www2.compute.dtu.dk/~npre/documents/thesis.pdf) -1. [Databases from finite categories](http://lambda-the-ultimate.org/node/5435) -1. https://github.com/datproject/docs/blob/master/papers/dat-paper.pdf -1. [Algorithms for Data Streams](http://twiki.di.uniroma1.it/pub/BDC/WebHome/SurveyStreaming08-DemetrescuFinocchi.pdf) -1. [Datafun: a Functional Datalog](https://people.mpi-sws.org/~neelk/datafun.pdf) -1. [Enabling Signal Processing over Data Streams](https://www.cs.ox.ac.uk/files/9135/sigmod2017-trilldsp.pdf) -1. [Database Learning: Toward a Database that Becomes Smarter Every Time](https://arxiv.org/abs/1703.05468) -1. https://github.com/jarulraj/databaseology -1. [Write-Behind Logging](http://www.vldb.org/pvldb/vol10/p337-arulraj.pdf) -1. [HoTTSQL: Proving Query Rewrites with Univalent SQL Semantics](https://homes.cs.washington.edu/~chushumo/files/cosette_pldi17.pdf) -1. [PebblesDB: Building Key-Value Stores using Fragmented Log-Structured Merge Trees](http://www.cs.utexas.edu/~vijay/papers/sosp17-pebblesdb.pdf) -1. [DROP: Dimensionality Reduction Optimization for Time Series](https://arxiv.org/abs/1708.00183) -1. http://www.cs.yale.edu/homes/aspnes/papers/skip-graphs-journal.pdf -1. https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321 -1. https://www.amazon.com/Database-Reliability-Engineering-Designing-Operating/dp/1491925949 -1. https://www.enterprisetimes.co.uk/2017/02/22/can-severalnines-improve-mongodb-security/ -1. https://severalnines.com/ -1. http://engineering.pivotal.io/post/trilogy-the-sql-testing-framework/ -1. https://techcrunch.com/2016/08/19/mysql-founder-tries-a-new-software-licensing-model/ -1. https://blog.datopia.io/2018/11/03/hitchhiker-tree/ - diff --git a/documentation/research/debugging.md b/documentation/research/debugging.md deleted file mode 100644 index 6f7d5126b..000000000 --- a/documentation/research/debugging.md +++ /dev/null @@ -1,92 +0,0 @@ -# Service - -1. https://www.bugreplay.com/ - -# Input - -1. [Debugging Inputs](https://www.dropbox.com/s/ddn3fe55lws1rdr/icse2020-ddmax.pdf) - -# Omniscient debugging - -1. https://pernos.co/ - -# Tool - -1. [drgn: Scriptable debugger library](https://github.com/osandov/drgn) -1. [Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/) -1. https://github.com/srg-imperial/SaBRe -1. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/WebReplay -1. https://umaar.github.io/performance-debugging-devtools-2018/#/ -1. https://microsoft.github.io/debug-adapter-protocol/ -1. http://plasma-umass.org/BLeak/ -1. https://clinicjs.org/ -1. http://pev.sourceforge.net/ - -# Tracing - -1. ["Understanding Microservices with Distributed Tracing" by Lita Cho](https://www.youtube.com/watch?v=URCLeycMrhU) - -# Reference - -1. [The Power Of Collaborative Debugging](https://robert.ocallahan.org/2019/11/the-power-of-collaborative-debugging.html) -1. [Multiverse Debugging: Non-Deterministic Debugging for Non-Deterministic Programs](https://stefan-marr.de/2019/07/what-if-we-could-see-all-concurrency-bugs-in-the-debugger/) -1. [Writing a Debugger](http://system.joekain.com/debugger/) -1. https://en.wikipedia.org/wiki/Jinx_Debugger -1. http://www.mattzeunert.com/2017/12/07/better-types-of-debuggers.html -1. https://www.youtube.com/watch?v=ipDhvd1NsmE -1. http://georgejahad.com/clojure/cdt.html -1. http://endlessparentheses.com/cider-debug-a-visual-interactive-debugger-for-clojure.html -1. https://github.com/razum2um/clj-debugger -1. https://stories.jotform.com/how-to-become-a-good-debugger-9324543fea33#.1ctzqfyly -1. https://www.microsoft.com/en-us/research/publication/time-travel-debugging-javascriptnode-js/ -1. http://valgrind.org/ -1. http://fitzgeraldnick.com/2015/06/19/source-maps-are-insufficient.html -1. http://stefan-marr.de/downloads/draft-marr-et-al-concurrency-agnostic-protocol-for-debugging.pdf -1. https://tip.golang.org/doc/diagnostics.html -1. https://github.com/solo-io/squash -1. http://www.michaelburge.us/2017/09/27/delta-debugging-in-haskell.html -1. https://undo.io/ -1. [Clojure Compilation, Backwards - Nicola Mometto](https://www.youtube.com/watch?v=2SGFeegEt9E) -1. https://zorbash.com/post/debugging-elixir-applications/ -1. [Compose :: Melbourne 2017 - Ronen Narkis - Re-ops, a Functional Live-Infrastructure as Code](https://www.youtube.com/watch?v=iopuirQuK-s) -1. [Compose :: Melbourne 2017 - Jurriaan Hage - Domain-Specific Type Error Diagnosis in GHC](https://www.youtube.com/watch?v=GbCfmnTmQDc) -1. https://raygun.com/javascript-debugging-tips -1. https://github.com/bpiel/sayid -1. [Algorithmic Program Debugging](http://cpsc.yale.edu/sites/default/files/files/tr237.pdf) -1. [Effect-Driven QuickChecking of Compilers](http://janmidtgaard.dk/papers/Midtgaard-al%3AICFP17-full.pdf) -1. https://www.youtube.com/watch?v=_KrZzaShDew -1. [NodeJS uses the Chome debugger protocol:](https://developer.chrome.com/devtools/docs/debugger-protocol) -1. http://www.dwarfstd.org/ -1. https://docs.oracle.com/javase/7/docs/technotes/guides/jpda/jdwp-spec.html -1. [Coarse Hierarchical Delta Debugging](http://www.inf.u-szeged.hu/~akiss/pub/pdf/hodovan2017coarsehdd.pdf) -1. [Improving live debugging of concurrent threads through thread histories](http://scg.unibe.ch/scgbib?query=Lesk17a&display=abstract) -1. [The JVM is Not Observable Enough (and What To Do About It)](https://www.cs.kent.ac.uk/people/staff/srk21//papers/kell12jvm-preprint.pdf) -1. http://nikhilism.com/post/2019/retrieving-function-arguments-while-unwinding-the-stack/ -1. https://backtrace.io/blog/engineering/compile-once-debug-twice-picking-a-compiler-for-debuggability-1of3/ -1. https://singaporedatacompany.com/blog/more-developers-more-problems -1. https://github.com/gruns/icecream -1. https://lemire.me/blog/2016/06/21/i-do-not-use-a-debugger/ -1. https://the.agilesql.club/2019/05/how-to-load-test-a-sql-database/?u=h - -# Benchmark - -1. https://github.com/smarr/ReBench - -# Performance - -1. ["Software Performance: A Shape Not a Number" by Kay Ousterhout](https://www.youtube.com/watch?v=f7HCeE377-0) -1. ["A Practical Look at Performance Theory" by Kavya Joshi](https://www.youtube.com/watch?v=bEYY3M0d-w8) -1. https://nsirap.com/posts/001-web-porformance-api/ - -# Profiling - -1. https://www.opsian.com/blog/what-is-continuous-profiling/ - -# Time-travelling - -1. [Travelling through time with WinDbg at a system level](https://www.youtube.com/watch?v=mB9LIztjSKg) - -# Monitoring - -1. https://www.erlang-solutions.com/blog/introducing-telemetry.html - diff --git a/documentation/research/distributed_programming.md b/documentation/research/distributed_programming.md deleted file mode 100644 index 916bdfcea..000000000 --- a/documentation/research/distributed_programming.md +++ /dev/null @@ -1,103 +0,0 @@ -# Microservices - -1. [The seven deceptions of microservices](https://scottrogowski.com/the-seven-deceptions-of-microservices.html) - -# Synchronization - -1. [Braid: Synchronization for HTTP](https://braid.news/) -1. [The Braid Protocol: Synchronization for HTTP](https://tools.ietf.org/html/draft-toomim-braid-00) - -# Reference - -1. [Ambients: Peer-to-Peer Programs and Data](https://ipfs.io/ipfs/QmPhPJE55GvqSz7Pwvkc8n9dbKmqGw6tUGTE1MgfNQvzsf) -1. [Bastion: Highly-available Distributed Fault-tolerant Runtime](https://bastion.rs/) -1. [DDD and Messaging Architectures: An overview of my different series on patterns in distributed systems.](http://verraes.net/2019/05/ddd-msg-arch/) -1. https://replicated.cc/ -1. http://www.the-paper-trail.org/post/2014-08-09-distributed-systems-theory-for-the-distributed-systems-engineer/ -1. https://courses.engr.illinois.edu/cs525/sp2018/index.html -1. https://arxiv.org/abs/1701.07615 -1. http://proto.actor/ -1. https://blog.acolyer.org/2015/10/15/ironfleet-proving-practical-distributed-systems-correc/ -1. http://pythonsweetness.tumblr.com/post/165366346547/mitogen-an-infrastructure-code-baseline-that -1. https://github.com/heathermiller/dist-prog-book -1. https://lasp-lang.readme.io/ -1. https://speakerdeck.com/cmeiklejohn/practical-evaluation-of-the-lasp-programming-model-at-scale -1. http://bloom-lang.net/ -1. https://www.oreilly.com/ideas/scaling-a-startup-with-a-21st-century-language -1. https://github.com/grailbio/reflow -1. https://github.com/reactors-io/reactors -1. http://funcool.github.io/urania/latest/ -1. https://raft.github.io/ -1. https://github.com/ashwin153/caustic -1. http://prl.ccs.neu.edu/blog/2017/10/22/monotonicity-types-towards-a-type-system-for-eventual-consistency/ -1. http://www.swirlds.com/ -1. [Whip: Higher-Order Contracts for Modern Services](https://people.seas.harvard.edu/~chong/pubs/icfp17-whip.pdf &&& https://www.youtube.com/watch?v=phHrSC6pkXU) -1. https://channel9.msdn.com/Shows/On-NET/Orleans-onNET -1. [A Meta-EDSL for Distributed Web Applications](https://www.youtube.com/watch?v=Xzv6CfyXUdM) -1. https://en.wikipedia.org/wiki/Petriscript -1. [Fallacies of Distributed Computing Explained](http://www.rgoarchitects.com/Files/fallacies.pdf) -1. https://abhishek-tiwari.com/friends-dont-let-friends-build-data-pipelines/ -1. [Differential Synchronization](https://neil.fraser.name/writing/sync/) -1. https://medium.com/@mycoralhealth/why-blockchains-dont-suck-and-the-perils-of-distributed-databases-1a522cc7cfe1 -1. [The Remote Monad](http://www.ittc.ku.edu/research/thesis/documents/justin_dawson_thesis.pdf) -1. https://blog.acolyer.org/2017/08/17/on-the-design-of-distributed-programming-models/ -1. https://twitter.com/ifesdjeen/status/1024775959961128961 -1. https://sekniqi.com/blog/a-distributed-systems-primer-for-non-experts.html -1. [numpywren: serverless linear algebra](https://arxiv.org/abs/1810.09679) -1. https://hackernoon.com/a-thorough-introduction-to-distributed-systems-3b91562c9b3c -1. ["Towards Language Support for Distributed Systems" by Heather Miller](https://www.youtube.com/watch?v=IeBbiQZYmuY) -1. http://jepsen.io/ -1. [Think Local: Reducing Coordination and Improving Performance when Designing around Distributed State](https://vimeo.com/304106598) -1. [Introducing AMBROSIA: a new platform for reliable distributed applications without all the hassle](https://cloudblogs.microsoft.com/opensource/2018/12/13/introducing-ambrosia-new-platform-distributed-applications/) -1. https://distributedobjectprotocol.org/ -1. https://medium.com/bitfinex/introducing-svc-js-a-framework-for-grenache-7119f2d7769e -1. http://dbmsmusings.blogspot.com/2019/01/its-time-to-move-on-from-two-phase.html - -# Rate limiting - -1. https://blog.ably.io/how-adopting-a-distributed-rate-limiting-helps-scale-your-platform-1afdf3944b5a - -# Programming language - -1. ["Unison: a new distributed programming language" by Paul Chiusano](https://www.youtube.com/watch?v=gCWtkvDQ2ZI) -1. http://radicle.xyz/ -1. [Lambda World 2018 - Introduction to the Unison programming language - Rúnar Bjarnason](https://www.youtube.com/watch?v=rp_Eild1aq8) -1. https://www.infoq.com/presentations/language-design-process - -# Parallel commit - -1. [Parallel Commits: An Atomic Commit Protocol For Globally Distributed Transactions](https://www.cockroachlabs.com/blog/parallel-commits) - -# Two-phase commit - -1. https://shekhargulati.com/2018/09/05/two-phase-commit-protocol/ - -# Linearizability - -1. https://ristret.com/s/uqin9q/mild_generalization_linearizability -1. https://en.wikipedia.org/wiki/Vector_clock - -# Exemplar - -1. http://meshbird.com/ - -# Logical clock - -1. [Version Vectors are not Vector Clocks](https://haslab.wordpress.com/2011/07/08/version-vectors-are-not-vector-clocks/) -1. [Distributed Systems: Physical, Logical, and Vector Clocks](https://levelup.gitconnected.com/distributed-systems-physical-logical-and-vector-clocks-7ca989f5f780) -1. [The Bloom Clock](https://arxiv.org/pdf/1905.13064.pdf) -1. [Why Logical Clocks are Easy: Sometimes all you need is the right language.](https://queue.acm.org/detail.cfm?id=2917756) - -# Consensus protocol - -1. https://medium.com/s/story/lets-take-a-crack-at-understanding-distributed-consensus-dad23d0dc95 -1. [Spectrum: A Framework for Adapting Consensus Protocols](https://arxiv.org/abs/1902.05873) - -# Locality - -1. [Think Local: Reducing Coordination and Improving Performance when Designing around Distributed State](https://vimeo.com/304106598) - -# Distributed transaction - -1. [Life beyond Distributed Transactions: an Apostate’s Opinion](http://adrianmarriott.net/logosroot/papers/LifeBeyondTxns.pdf) - diff --git a/documentation/research/documentation.md b/documentation/research/documentation.md deleted file mode 100644 index 2bb1d12e6..000000000 --- a/documentation/research/documentation.md +++ /dev/null @@ -1,82 +0,0 @@ -# Programming - -1. [Skribilo: The Ultimate Document Programming Framework](https://www.nongnu.org/skribilo/) - -# Diagram | Chart - -1. https://c4model.com/ -1. https://github.com/lukaslueg/macro_railroad -1. https://bramp.github.io/js-sequence-diagrams/ -1. https://github.com/erikbrinkman/d3-dag -1. https://dumptyd.github.io/treeflex/ -1. https://info.datalabsagency.com/blog/data-visualization-news/15-most-common-types-of-data-visualisation -1. https://wettel.github.io/codecity.html -1. http://quantifiedcode.github.io/code-is-beautiful/ -1. http://js.cytoscape.org/ -1. https://arcentry.com/ -1. https://bramp.github.io/js-sequence-diagrams/ -1. https://brokenbaysoftware.co/2018/12/18/Cumulative-Flow/ -1. https://frappe.io/gantt -1. https://dbdiagram.io/home/ -1. https://ptsjs.org/ -1. https://blog.usejournal.com/bridging-the-gap-between-low-level-and-high-level-charting-libraries-a8f6c1819ba5 -1. https://www.infoq.com/articles/why-architectural-diagrams -1. https://gramener.github.io/visual-vocabulary-vega/ -1. [Visually Representing the Landscape of Mathematical Structures](https://arxiv.org/abs/1809.05930) -1. http://www.java2uml.com/s - -# Philosophy - -1. [Forget reusability, aim for perfection](https://www.openbsd.org/papers/bsdcan18-mandoc.pdf) -1. https://increment.com/documentation/ -1. https://blog.stoplight.io/writing-documentation-when-you-arent-a-technical-writer-part-two-59997587cc2a - -# Explorability - -1. https://explorabl.es/jam/ -1. https://flowium.com/help.html -1. https://apfelmus.nfshost.com/blog/2018/08/06-hyper-0-2.html - -# README - -1. https://github.com/LappleApple/feedmereadmes - -# Doclet - -1. https://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/doclet/overview.html -1. http://www.doclet.com/ -1. https://en.wikipedia.org/wiki/Doclet - -# Reference - -1. [Architecture decision record (ADR)](https://github.com/joelparkerhenderson/architecture_decision_record) -1. [Seamless API Specification](https://github.com/seamlessapis/seamless/tree/master/domain) -1. https://docs.racket-lang.org/pollen/ -1. [Documenting the Clojure/Script Ecosystem – Martin Klepsch](https://www.youtube.com/watch?v=mWrvd6SE7Vg) -1. http://apistylebook.com/ -1. https://docusaurus.io/ -1. https://gist.github.com/oakes/8db57ac808bf6ec144d627fd83a89da3 -1. https://github.com/oakes/Dynadoc -1. https://github.com/bhauman/devcards -1. https://kiwidocs.js.org/ -1. https://github.com/Microsoft/tsdoc -1. https://github.com/PharkMillups/beautiful-docs -1. http://lwm.github.io/posts/html/document-haskell.html -1. http://lwm.github.io/texts/lets-write-documentation-for-haskell/ -1. https://groups.google.com/forum/#!msg/scala-internals/r2GnzCFc3TY/x3PmIq4cAgAJ -1. http://naildrivin5.com/blog/2016/12/08/learn-graphviz-and-up-your-diagramming-game.html -1. https://idyll-lang.github.io/ -1. http://docs.racket-lang.org/pollen/ -1. https://opensource.com/article/17/9/modular-documentation -1. https://clojurecademy.github.io/dsl-documentation/# -1. https://www.asyncapi.com/ -1. http://jupyter.org/ -1. https://medium.freecodecamp.org/how-to-build-interactive-presentations-with-jupyter-notebook-and-reveal-js-c7e24f4bd9c5 -1. https://github.com/stevekrouse/unbreakable-links -1. https://www.divio.com/en/blog/documentation/ -1. https://github.com/Bogdan-Lyashenko/js-code-to-svg-flowchart -1. https://anbasile.github.io/programming/2015/12/25/hosting-reveal-pres-on-github/ -1. http://www.megacz.com/software/wix/ -1. https://github.com/documentationjs/documentation -1. https://www.cockroachlabs.com/blog/go-file-size/ - diff --git a/documentation/research/falsehood.md b/documentation/research/falsehood.md deleted file mode 100644 index 3cf534fbc..000000000 --- a/documentation/research/falsehood.md +++ /dev/null @@ -1,4 +0,0 @@ -# List - -1. [Falsehoods programmers believe about prices](https://gist.github.com/rgs/6509585) - diff --git a/documentation/research/floating point.md b/documentation/research/floating point.md deleted file mode 100644 index 9268449d9..000000000 --- a/documentation/research/floating point.md +++ /dev/null @@ -1,4 +0,0 @@ -# Algorithm - -1. [Kahan summation algorithm](https://en.wikipedia.org/wiki/Kahan_summation_algorithm) - diff --git a/documentation/research/game_programming.md b/documentation/research/game_programming.md deleted file mode 100644 index 03efdc258..000000000 --- a/documentation/research/game_programming.md +++ /dev/null @@ -1,482 +0,0 @@ -# Path finding - -1. [Friday Facts #317 - New pathfinding algorithm](https://factorio.com/blog/post/fff-317) - -# Conduct - -1. [Kawa - Yet Another Conduct Conversation: a history of conducts in roguelikes](https://www.youtube.com/watch?v=KLHJsJuJfYg) - -# Rules - -1. [Scott Kovach - Managing Game Logic With Rule Systems - Using Relational Programming to Build Games](https://www.youtube.com/watch?v=s9Wyn9BJJI4) - -# Procedural generation - -1. [Aaron Santos - Optimizing procgen parameters using mini-batch gradient descent](https://www.youtube.com/watch?v=TsDIUuEneo4) -1. [Brian Bucklew - Dungeon Generation via Wave Function Collapse](https://www.youtube.com/watch?v=fnFj3dOKcIQ) -1. [So you want to build a generator…](https://galaxykate0.tumblr.com/post/139774965871/so-you-want-to-build-a-generator) -1. [Spencer Egart - Procedurally Generated Ritual Spell Systems](https://www.youtube.com/watch?v=q4Tf0vf2kiI) -1. [Isaac Karth - Why Do You Want to Generate That? A Vocabulary For Talking About Procedural Generation](https://www.youtube.com/watch?v=MHEkE7nPuZc) - -# User interaction - -1. [Verb-noun vs noun-verb](https://simblob.blogspot.com/2019/10/verb-noun-vs-noun-verb.html) - -# Network - -1. https://github.com/librg/librg - -# Noise - -1. https://github.com/KdotJPG/New-Simplex-Style-Gradient-Noise -1. [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) -1. [Gradient noise](https://en.wikipedia.org/wiki/Gradient_noise) -1. [Value noise](https://en.wikipedia.org/wiki/Value_noise) -1. [Simplex noise](https://en.wikipedia.org/wiki/Simplex_noise) -1. [OpenSimplex noise](https://en.wikipedia.org/wiki/OpenSimplex_noise) -1. [Worley noise](https://en.wikipedia.org/wiki/Worley_noise) - -# Ethics - -1. [Ethics in Game Design - PAX Prime 2012](https://www.youtube.com/watch?v=sIS5cJzeLGA) - -# Grinding - -1. [When Games Idolize Busywork](https://medium.com/@fischerdesign/when-games-idolize-busywork-8454bfe769ff) -1. [PAX West 2016 - The Grind - Full Panel](https://www.youtube.com/watch?v=32DCEzpcVEY) -1. [A Brief History of Leveling Systems](https://theludite.com/2014/08/03/a-brief-history-of-leveling-systems/) -1. [Leveling Systems Part Two: Where We Could Go From Here](https://theludite.com/2014/08/28/leveling-systems-part-two-where-we-could-go-from-here/) - -# Engine - -1. https://www.raylib.com/index.html -1. https://github.com/GoogleCloudPlatform/agones -1. https://luxeengine.com/ -1. https://www.haroldserrano.com/blog/books-i-used-to-develop-a-game-engine -1. http://www.executionunit.com/blog/2017/07/14/in-defence-of-writing-your-own-engine/ -1. http://vincentgarreau.com/particles.js/#default -1. http://www.npruehs.de/game-models-a-different-approach-part-2/ -1. https://maikklein.github.io/post/shading-language-part1/ -1. https://cuberite.org/ -1. http://www.helixsoft.nl/articles/circle/sincos.htm -1. http://helm-engine.org/ -1. http://regl.party/ -1. https://github.com/lallassu/Qake -1. http://pcg.wikidot.com/ -1. http://laurenslapre.nl/lapre_004.htm -1. http://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/ -1. https://shotsinshorts.com/top-javascript-engines-make-html5-desktop-mobile-games/ -1. http://gamedevs.org/ -1. http://clockwork.js.org/ -1. http://arewegameyet.com/ -1. https://www.inklestudios.com/ink/ -1. https://godotengine.org/ -1. https://castle-engine.io/index.php -1. https://www.rpginabox.com/ -1. https://heaps.io/ -1. https://codeparade.itch.io/marblemarcher -1. https://github.com/HackerPoet/MarbleMarcher -1. https://github.com/amzeratul/halley -1. https://github.com/ondras/rot.js -1. https://github.com/pupcraft/sucle -1. http://superpowers-html5.com/index.en.html - -# Reference - -1. https://mod.io/ -1. https://www.amazon.com/Game-Engine-Black-Book-Wolfenstein/dp/1539692876 -1. http://shaderbits.com/blog/octahedral-impostors/ -1. https://godotengine.org/article/handling-axis-godot -1. https://interplayoflight.wordpress.com/2017/10/25/how-unreal-renders-a-frame/ -1. http://www.jagregory.com/abrash-black-book/ -1. http://docs.godotengine.org/en/3.0/tutorials/math/rotations.html -1. http://www.essentialmath.com/ -1. http://gameprogrammingpatterns.com/ -1. http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/ -1. https://github.com/Dvergar/awesome-haxe-gamedev - -# Rendering - -1. [Wired Elements](https://wiredjs.com/) -1. [The Graphics Codex](http://graphicscodex.com/) -1. [PIXELARTOR: Animation Tool for converting 3D models with animations to 2D sprite frames](https://github.com/Chleba/PIXELARTOR) -1. https://raytracing.github.io/ -1. [WebGL2 Fundamentals](https://webgl2fundamentals.org/) -1. [Tiles to Curves: Fun With Voronoi Graphs (part 1)](https://www.gamedev.net/articles/programming/general-and-gameplay-programming/tiles-to-curves-fun-with-voronoi-graphs-part-1-r5150/) -1. [Lazy Incremental Computation for Efficient Scene Graph Rendering](https://www.cg.tuwien.ac.at/courses/RendEng/2015/RendEng-2015-11-16-paper2.pdf) -1. [3D Wireframes in SVG](https://prideout.net/blog/svg_wireframes/) -1. https://zzz.dog/ -1. https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/ -1. https://roughjs.com/ -1. https://github.com/pshihn/rough -1. https://www.voxelquest.com/ -1. https://github.com/google/filament -1. https://google.github.io/filament/Filament.md.html -1. https://voxeltoy.com/ -1. [Oil on GlCanvas](https://www.shaderoo.org/?shader=FYLJFU) -1. http://voxeljs.com/ -1. http://gameprogrammingpatterns.com/double-buffer.html -1. https://research.cs.wisc.edu/graphics/Gallery/NPRQuake/whatIsIt.html -1. http://www.realtimerendering.com/Real-Time_Rendering_4th-Real-Time_Ray_Tracing.pdf -1. https://webglfundamentals.org/ -1. https://interplayoflight.wordpress.com/2018/09/30/readings-on-the-state-of-the-art-in-rendering/ -1. https://prideout.net/blog/distance_fields/ -1. http://graphics.cs.cmu.edu/projects/slang/ -1. [ADOPTING LESSONS FROM OFFLINE RAY-TRACING TO REAL-TIME RAY TRACING FOR PRACTICAL PIPELINES](http://advances.realtimerendering.com/s2018/Pharr%20-%20Advances%20in%20RTR%20-%20Real-time%20Ray%20Tracing.pdf) -1. http://www.gamasutra.com/blogs/SvyatoslavCherkasov/20181023/329151/Graveyard_Keeper_How_the_graphics_effects_are_made.php -1. https://alain.xyz/blog/comparison-of-modern-graphics-apis -1. https://webkit.org/blog/8482/web-high-level-shading-language/ -1. [Physically Based Rendering](http://www.pbr-book.org/3ed-2018/contents.html) -1. https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/ -1. https://www.hadean.com/blog/open-source-library-for-spatial-representations -1. [The inevitable volumetric future | Dan Tabar and Branislav Siles](https://www.youtube.com/watch?v=JHJ4TKJom88) -1. https://www.ronja-tutorials.com/2018/12/01/2d-shadows.html -1. https://ephtracy.github.io/ -1. https://www.nebularender.com/ -1. [An Explanation of the Rendering Equation](https://www.youtube.com/watch?v=eo_MTI-d28s) -1. [Non-Euclidean Worlds Engine](https://www.youtube.com/watch?v=kEB11PQ9Eo8) -1. [DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation](https://arxiv.org/pdf/1901.05103v1.pdf) -1. [Slang – A Shader Compilation System forExtensible, Real-Time Shading](http://graphics.cs.cmu.edu/projects/renderergenerator/yong_he_thesis.pdf) -1. http://machinethink.net/blog/3d-rendering-without-shaders/ -1. http://www.cs.cmu.edu/afs/cs/usr/sbk/www/phigs/phigs.html -1. http://www.realtimerendering.com/raytracinggems/ -1. https://github.com/mckennapsean/wood-shader -1. https://spritestack.io/ -1. http://blog.hvidtfeldts.net/index.php/2011/06/distance-estimated-3d-fractals-part-i/ -1. https://github.com/oakes/play-cljc -1. [Physically Based Modeling: Principles and Practice](http://www.cs.cmu.edu/~baraff/sigcourse/) -1. https://sonicether.com/seus/ -1. http://stephaniehurlburt.com/blog/2019/3/25/resources-for-learning-graphics-programming -1. [Principles of Lighting and Rendering with John Carmack at QuakeCon 2013](https://www.youtube.com/watch?v=IyUgHPs86XM) -1. http://math.hws.edu/graphicsbook/ -1. https://blog.mecheye.net/2019/05/why-is-2d-graphics-is-harder-than-3d-graphics/ -1. https://www.babylonjs.com/ -1. https://github.com/lettier/3d-game-shaders-for-beginners -1. [What good are hundreds of lights without hundreds of shadows?](https://worldoffries.wordpress.com/2019/03/26/what-good-is-hundreds-of-lights-with-out-hundreds-of-shadows/) -1. [Ray Tracing with Metal](https://developer.apple.com/videos/play/wwdc2019/613/) - -# Idea - -1. [The Content Conundrum - Why So Many Games Feel Generic - Extra Credits](https://www.youtube.com/watch?v=NxX9sGhsbks) - -# Camera - -1. [Math for Game Programmers: Juicing Your Cameras With Math](https://www.youtube.com/watch?v=tu-Qe66AvtY) -1. https://jsantell.com/3d-projection - -# Entity Component System (ECS) - -1. [On DOTS: Entity Component System](https://blogs.unity3d.com/2019/03/08/on-dots-entity-component-system/) -1. http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ -1. [Bob Nystrom - Is There More to Game Architecture than ECS?](https://www.youtube.com/watch?v=JxI3Eu5DPwE) - -# Simulation - -1. https://en.wikipedia.org/wiki/Sigmoid_function -1. https://prideout.net/blog/distance_fields/ -1. https://www.gdcvault.com/play/1022016/Getting-off-the-NavMesh-Navigating -1. https://nialltl.neocities.org/articles/mpm_guide.html -1. http://fabiensanglard.net/doom_fire_psx/index.html -1. http://sol.gfxile.net/interpolation/ -1. https://medium.com/unity3danimation/create-your-own-inverse-dynamics-in-unity-1ed0371ee658 -1. https://github.com/franciscop/ola/ - -# Animation - -1. https://blog.varunramesh.net/posts/composable-animations/ - -# Game history | Game preservation - -1. https://threader.app/thread/1027300086022254592 -1. https://gamehistory.org/ - -# Physics - -1. http://brm.io/matter-js/ -1. http://www.jbox2d.org/ -1. https://www.tapirgames.com/blog/open-source-physics-engines - -# Matchmaking - -1. https://cloud.google.com/blog/products/open-source/open-match-flexible-and-extensible-matchmaking-for-games - -# NPC artificial intelligence - -1. [Mark R Johnson - Speech Generation in a Procedurally Generated World](https://www.youtube.com/watch?v=qh9vyoMviJI) -1. [Jim Shepard - Blooming on the Battlefield: Relationships, Rivals, and Romance in Gameplay](https://www.youtube.com/watch?v=LKCRim02opc) -1. [Max Kreminski - Designing AI systems to support player storytelling](https://www.youtube.com/watch?v=BDcZSWHu8RQ) -1. https://en.wikipedia.org/wiki/Monte_Carlo_tree_search -1. http://www.roguelikeradio.com/2018/02/episode-144-ai.html -1. https://www.red3d.com/cwr/boids/ -1. https://www.blog.drewcutchins.com/blog/2018-8-16-flocking -1. http://www.gabrielgambetta.com/generic-search.html - -# Hexagonal grid - -1. https://www.redblobgames.com/grids/hexagons/ -1. [Hex Grid Geometry for Game Developers (1.3)](http://www.gamelogic.co.za/downloads/HexMath2.pdf) - -# Mods / Modding - -1. https://minecraft.net/en-us/article/programmers-play-minecrafts-inner-workings - -# Streaming - -1. https://blog.rainway.io/building-a-cross-browser-cross-platform-real-time-game-streaming-protocol-b00d000fe788 - -# Interactive narrative fiction - -1. [Max Kreminski - Designing AI systems to support player storytelling](https://www.youtube.com/watch?v=BDcZSWHu8RQ) -1. http://narrascope.org/ -1. http://pdf.textfiles.com/books/iftheorybook.pdf -1. https://notimetoplay.org/engines/advprompt/ - -# Design - -1. [Benjamin Berman - Tips, Tricks and History for Card Game Roguelike Design](https://www.youtube.com/watch?v=DT9_7sW5knY) -1. [WIRED by Design: A Game Designer Explains the Counterintuitive Secret to Fun](https://www.youtube.com/watch?v=78rPt0RsosQ) -1. [How to Add Literally Infinite Features into Minecraft (with one update)](https://www.youtube.com/watch?v=CS5DQVSp058) -1. [The Lost Soul Arts of Demon's Souls](https://www.youtube.com/watch?v=Np5PdpsfINA) -1. [Dark Souls 2 Critique](https://www.youtube.com/watch?v=UScsme8didI) -1. [How Thief's Stealth System Almost Didn't Work | War Stories | Ars Technica](https://www.youtube.com/watch?v=qzD9ldLoc3c) -1. [Three Other Approaches to Turn Timers | GMTK Extra](https://www.youtube.com/watch?v=QAVf7rb0IwM) -1. [Sanderson's Laws of Magic](https://stormlightarchive.fandom.com/wiki/Sanderson%27s_Laws_of_Magic) -1. [Level Design Patterns in 2D Games](http://akhalifa.com/documents/level-design-patterns.pdf) -1. https://en.wikipedia.org/wiki/Rules_of_Play - - ## [Game Maker's Toolkit](https://www.youtube.com/channel/UCqJ-Xo29CKyLTjn6z2XwYAw) - - 1. [Can We Make Talking as Much Fun as Shooting? | Game Maker's Toolkit](https://www.youtube.com/watch?v=l9TzqNQBmr0) - 1. [Are Score Systems Still Relevant? | Game Maker's Toolkit](https://www.youtube.com/watch?v=K6y9PJipfpk) - 1. [What Makes a Good Combat System? | Game Maker's Toolkit](https://www.youtube.com/watch?v=8X4fx-YncqA) - 1. [The Rise of the Systemic Game | Game Maker's Toolkit](https://www.youtube.com/watch?v=SnpAAX9CkIc) - 1. [Playing Past Your Mistakes | Game Maker's Toolkit](https://www.youtube.com/watch?v=Go0BQugwGgM) - 1. [How to Keep Players Engaged (Without Being Evil) | Game Maker's Toolkit](https://www.youtube.com/watch?v=hbzGO_Qonu0) - 1. [Building Better Skill Trees | Game Maker's Toolkit](https://www.youtube.com/watch?v=wsmEuHa1eL8) - 1. [The Year Stealth Games Got Serious | Game Maker's Toolkit](https://www.youtube.com/watch?v=Iz-XTR3pwrE) - 1. [Why Synergies are the Secret to Slay the Spire’s Fun | Game Maker’s Toolkit](https://www.youtube.com/watch?v=terD4Bk3L_8) - 1. [Why Metro Exodus is 2019’s Most Immersive Open World Game | Game Maker's Toolkit](https://www.youtube.com/watch?v=8geGHbWIMXA) - 1. [Roguelikes, Persistency, and Progression | Game Maker's Toolkit](https://www.youtube.com/watch?v=G9FB5R4wVno) - 1. [Do We Need a Soulslike Genre? | Game Maker's Toolkit](https://www.youtube.com/watch?v=Lx7BWayWu08) - 1. [Forging God of War's Leviathan Axe | Game Maker's Toolkit](https://www.youtube.com/watch?v=vwbz9gxoQFg) - 1. [What Makes a Good Puzzle? | Game Maker's Toolkit](https://www.youtube.com/watch?v=zsjC6fa_YBg) - 1. [How Games Use Feedback Loops | Game Maker’s Toolkit](https://www.youtube.com/watch?v=H4kbJObhcHw) - 1. [Depth, Mastery, and Vanquish | Game Maker's Toolkit](https://www.youtube.com/watch?v=IG8LVpuzYls) - 1. [Morality in the Mechanics | Game Maker's Toolkit](https://www.youtube.com/watch?v=6RHH7M4siPM) - 1. [Anatomy of a Side Quest: Beyond the Beef | Game Maker's Toolkit](https://www.youtube.com/watch?v=yM1yR7WYqgM) - 1. [Telling Stories with Systems | Game Maker's Toolkit](https://www.youtube.com/watch?v=NyMndWpihTM) - 1. [What Makes Good AI? | Game Maker's Toolkit](https://www.youtube.com/watch?v=9bbhJi0NBkk) - 1. [What Makes a Good Detective Game? | Game Maker's Toolkit](https://www.youtube.com/watch?v=gwV_mA2cv_0) - 1. [How Game Designers Protect Players From Themselves | Game Maker's Toolkit](https://www.youtube.com/watch?v=7L8vAGGitr8) - 1. [What Made Psychonauts Special | Game Maker's Toolkit](https://www.youtube.com/watch?v=5I4vD2S01d0) - 1. [How Event[0] Works | Game Maker's Toolkit](https://www.youtube.com/watch?v=bCJw4hQkPj4) - 1. [The Comeback of the Immersive Sim | Game Maker's Toolkit](https://www.youtube.com/watch?v=kbyTOAlhRHk) - 1. [How Games Do Health | Game Maker's Toolkit](https://www.youtube.com/watch?v=4AEKbBF3URE) - 1. [Should Dark Souls Have an Easy Mode? | Game Maker's Toolkit](https://www.youtube.com/watch?v=K5tPJDZv_VE) - 1. [Is The Swindle the First Great Heist Game? | Game Maker's Toolkit](https://www.youtube.com/watch?v=cUbyNJKsi7E) - 1. [Redesigning Death | Game Maker's Toolkit](https://www.youtube.com/watch?v=6WyalnKQIpg) - 1. [Secrets of Game Feel and Juice | Game Maker's Toolkit](https://www.youtube.com/watch?v=216_5nu4aVQ) - 1. [Arkham Knight and the Scourge of Scale | Game Maker's Toolkit](https://www.youtube.com/watch?v=Kvbnc-7Y0fE) - 1. [The World Design of Castlevania: Symphony of the Night | Boss Keys](https://www.youtube.com/watch?v=a1hHOVIkrcc) - 1. [The World Design of Dark Souls | Boss Keys](https://www.youtube.com/watch?v=QhWdBhc3Wjc) - - ## [Game Wisdom](https://www.youtube.com/channel/UCJPQyAGAbIcXZXfM01oOPOA) - - 1. [Is Extreme RNG Bad For Game Design? (Critical Thought)](https://www.youtube.com/watch?v=yVhQWkQoykQ) - 1. [What Does it Mean to Last in the Game Industry? | Critical Thought](https://www.youtube.com/watch?v=Xku4IOO37s0) - 1. [The Game Design Trap of a Zelda Roguelike](https://www.youtube.com/watch?v=oWSj8WEy9YE) - 1. [Using Supplemental Content to Grow Rogue-Like and Strategy Game Design -- Critical Thought](https://www.youtube.com/watch?v=xsbPr0SND5s) - 1. [A Critical Thought on Class Based RPG Design](https://www.youtube.com/watch?v=EcX3rPHmmfI) - 1. [Why 2D Game Design Is Never Going Away | Critical Thought](https://www.youtube.com/watch?v=CqO4DgJZC04) - 1. [A Critical Thought on RPG Class Design](https://www.youtube.com/watch?v=ykvwgSAwvgM) - 1. [The Difficulty Behind Grand Strategy Game Design -- Critical Thought](https://www.youtube.com/watch?v=Vthi6_fgkWk) - 1. [The Game Design Trap of Modern Retro Games -- Critical Thought](https://www.youtube.com/watch?v=utfM4OVAlXw) - 1. [The Secret to Replayable Video Games: Defining Variance (Critical Thought)](https://www.youtube.com/watch?v=6jmhzfk7cI0) - 1. [The Limits of Battle Royale Game Design | Critical Thought](https://www.youtube.com/watch?v=jGEokQBbZm8) - 1. [A Critical Thought on WRPG vs JRPG Design](https://www.youtube.com/watch?v=QptfFveZH40) - 1. [When Does a Video Game Become Tactical? (Critical Thought)](https://www.youtube.com/watch?v=9DjMyJ4c6sc) - 1. [How Numbers Impact Game Design (Critical Thought)](https://www.youtube.com/watch?v=ychRUeGxuA4) - 1. [A Critical Thought on Asymmetrical Design and Balance](https://www.youtube.com/watch?v=ah-q6gmcCcM) - 1. [A Critical Thought on RPG Progression](https://www.youtube.com/watch?v=kou6zzE7odk) - 1. [A Critical Thought on Gear-Based Progression](https://www.youtube.com/watch?v=Qtf4JrJADuE) - 1. [The Difference Between Environmental and Level Design in Video Games -- Critical Thought](https://www.youtube.com/watch?v=Lmf1oQIwNCk) - 1. [The Limitations of Leveling in Game Design | Critical Thought](https://www.youtube.com/watch?v=V4EK53qA2ZA) - 1. [What Makes Grinding Fun in Videogames | Critical Thought](https://www.youtube.com/watch?v=a5skg3YF6D0) - 1. [Should Videogames be a Mystery? | Critical Thought](https://www.youtube.com/watch?v=J3Pm61xk444) - 1. [A Critical Thought on Apex Predator Stealth Game Design](https://www.youtube.com/watch?v=69rJy146F7I) - 1. [The Limits of Realism in Video Games -- Critical Thought](https://www.youtube.com/watch?v=R_hXwd-TXqw) - 1. [What Makes an Immersive Sim? (Critical Thought)](https://www.youtube.com/watch?v=lMi1PNiQoTg) - 1. [A Critical Thought on the Bar of Game Design](https://www.youtube.com/watch?v=30xMJFRNwpc) - 1. [A Critical Thought on Persistent Systems in Game Design](https://www.youtube.com/watch?v=uk_1VoMtmK8) - 1. [A Critical Thought on Game Pricing](https://www.youtube.com/watch?v=BGAa11Wmnsw) - 1. [A Critical Thought on 7-9 Review Scores](https://www.youtube.com/watch?v=QjI_ayarAq4) - 1. [A Critical Thought on Event-Driven Game Design](https://www.youtube.com/watch?v=df_cS3N5Ri4) - 1. [A Critical Thought on the Flow State and Video Games](https://www.youtube.com/watch?v=dGfuN7PT8Fg) - 1. [A Critical Thought on Boss Battle Design](https://www.youtube.com/watch?v=R73FdiuwNQc) - 1. [The Difference Between Graphics and Aesthetics in Videogames (Critical Thought)](https://www.youtube.com/watch?v=dDh_P0FZYCE) - 1. [A Critical Thought on the Foundation of Emergent Gameplay](https://www.youtube.com/watch?v=EbYvxZcMzGw) - 1. [A Critical Thought on Environmental Storytelling in Video Games](https://www.youtube.com/watch?v=bryR9RY7KFs) - 1. [A Critical Thought on Puzzle Design](https://www.youtube.com/watch?v=jlPokDZWN3Q) - 1. [A Critical Thought on Good Stealth Game Design](https://www.youtube.com/watch?v=MMhR5o2EcLc) - 1. [How to Define Gameplay in Videogames | Critical Thought](https://www.youtube.com/watch?v=S97Z8WarJT4) - 1. [A Critical Thought on "Upen" World Game Design](https://www.youtube.com/watch?v=d0aced1ONCM) - 1. [A Critical Thought on the Hierarchy of Fail States](https://www.youtube.com/watch?v=FACTASJ5UzA) - 1. [The Problems With Designing for Depth in Videogames (Critical Thought)](https://www.youtube.com/watch?v=a9tbDWdZ7W0) - 1. [The Contradiction of Fun Pain in Video Games -- Critical Thought](https://www.youtube.com/watch?v=SYaEAOlbCwE) - 1. [A Critical Thought on Creating Enemy Behaviors in Game Design](https://www.youtube.com/watch?v=FoG_8wVdoow) - 1. [A Critical Thought on Balancing Failure in Game Design](https://www.youtube.com/watch?v=DZW9f48G2mQ) - 1. [How Dissonance Can Affect Videogames | Critical Thought](https://www.youtube.com/watch?v=Ip12_GQ09Bk) - 1. [Defining the Core Gameplay Loop of your Game | Critical Thought](https://www.youtube.com/watch?v=-kIwf-dNXr0) - 1. [Helpful Tips to Improve Playability in Game Design | Critical Thought](https://www.youtube.com/watch?v=pNsIe6EU4Cc) - 1. [A Critical Thought on Understanding Emergent Gameplay](https://www.youtube.com/watch?v=LTc_zIsUfMw) - 1. [Defining Accessibility vs. Playability in Game Design | Critical Thought](https://www.youtube.com/watch?v=ASwCEelR_J8) - 1. [How to Fix Loot Boxes Before They're Banned | Critical Thought](https://www.youtube.com/watch?v=cPoaRpDRZbc) - 1. [The Design Behind Effective Loot Tables -- Critical Thought](https://www.youtube.com/watch?v=Nz3dk3Q4LxY) - 1. [A Critical Thought on When Video Game Difficulty Becomes Cheap](https://www.youtube.com/watch?v=fae9Q173YUU) - 1. [A Critical Thought on Fair Use and Fan Games](https://www.youtube.com/watch?v=cTUW6-P_3Rg) - 1. [A Critical Thought on Direct vs. Indirect Competition](https://www.youtube.com/watch?v=_Klc69XDR1w) - 1. [A Critical Thought on Conditioning Players](https://www.youtube.com/watch?v=efeqryVz7ro) - 1. [A Critical Thought on Combining RPG and Action Games](https://www.youtube.com/watch?v=Kh8itq2jf_M) - 1. [The Three Elements of Good Level Design in Video Games -- Critical Thought](https://www.youtube.com/watch?v=sHKc_DqdxQk) - 1. [The Three Forms of Stealth Gameplay (Critical Thought)](https://www.youtube.com/watch?v=nLOMq5qCxKU) - 1. [The Deeper Design Behind the Dark Souls Formula -- Critical Thought](https://www.youtube.com/watch?v=hlccvyRGdPI) - 1. [The Limits of Randomization in Game Design -- Critical Thought](https://www.youtube.com/watch?v=fuIihMRNEeE) - 1. [How RNG in Games is Like a Spice -- Critical Thought](https://www.youtube.com/watch?v=A3cG4IHaOUY) - 1. [The Failing Point of Free to Play Game Design -- Critical Thought](https://www.youtube.com/watch?v=_7-cQdFgD4k) - 1. [A Critical Thought on Game Design Abstraction](https://www.youtube.com/watch?v=odCFa72nQCc) - 1. [A Critical Thought on Difficulty Scaling in Game Design](https://www.youtube.com/watch?v=Y4AQPefZwt0) - 1. [What Makes the Collectible Hunt So Addicting in Videogames | Critical Thought](https://www.youtube.com/watch?v=mg-OlFeU0YQ) - 1. [What Makes a Metroidvania Work? | Critical Thought](https://www.youtube.com/watch?v=4ggILevH7Tw) - 1. [A Critical Thought on the Worst Kind of Video Game Grinding](https://www.youtube.com/watch?v=7jrYVFsW_Rw) - 1. [A Critical Thought on Mixed Genre Game Design](https://www.youtube.com/watch?v=g7_nVpGVuHQ) - 1. [The Problems With Punishment Systems in Videogames | Critical Thought](https://www.youtube.com/watch?v=gkp2tW_rzz0) - 1. [Can Persistence Work in Esports? (Critical Thought)](https://www.youtube.com/watch?v=4BysWm6SqTk) - 1. [A Critical Thought on The Race to the Bottom](https://www.youtube.com/watch?v=YhdbYhoWECs) - 1. [A Critical Thought on Why Build Orders Spell Trouble for Video Games](https://www.youtube.com/watch?v=XJHxfnWUdTc) - 1. [A Critical Thought on Persistence Mechanics](https://www.youtube.com/watch?v=G2W7JGB8uug) - 1. [A Critical Thought on Regenerating Health Game Design](https://www.youtube.com/watch?v=tPlPxGAskx8) - 1. [A Critical Thought on Meta-Game Design](https://www.youtube.com/watch?v=pjpf7wFnvaU) - 1. [A Critical Thought on Hard Games](https://www.youtube.com/watch?v=z92x3tnXG2A) - 1. [A Critical Thought on Downtime in Video Games](https://www.youtube.com/watch?v=t46bDmK4qFo) - 1. [A Critical Thought on Item Hoarding](https://www.youtube.com/watch?v=hMybxTFMMXw) - 1. [Why Morality Systems in Games Don't Work -- Critical Thought](https://www.youtube.com/watch?v=qvNMXZFc8og) - 1. [A Critical Thought on ELO Rating Systems](https://www.youtube.com/watch?v=1akzEbNLKqs) - 1. [A Critical Thought on Probability in Game Design](https://www.youtube.com/watch?v=wgi-MH1PxAg) - 1. [Defining (And Reducing) Grinding in Video Games -- Critical Thought](https://www.youtube.com/watch?v=dPH2OkVJmnM) - 1. [Explaining the Assassin's Creed Odyssey Backlash on Player Choice-- Critical Thought](https://www.youtube.com/watch?v=sJhPYiNopKo) - 1. [A Critical Thought on WRPG vs CRPG Design](https://www.youtube.com/watch?v=mzsRs-qinJU) - 1. [A Critical Thought on Unpredictable Competitive Games](https://www.youtube.com/watch?v=LyrFdFwCYxw) - 1. [A Critical Thought on Game Reviewers](https://www.youtube.com/watch?v=ejLcJ680Je0) - 1. [A Critical Thought on Disgaea's Design and Layered Game Systems](https://www.youtube.com/watch?v=s_z5liQ4Zbw) - 1. [A Critical Thought on the Dangers of Feature Creep](https://www.youtube.com/watch?v=3lvkxfOrnSo) - 1. [A Critical Thought on Making Competitive Games](https://www.youtube.com/watch?v=su0zUE_iU14) - 1. [A Critical Thought on Power Curves in Game Design](https://www.youtube.com/watch?v=j0-Mmcfq3so) - 1. [A Critical Thought on the Blue Shell Debate](https://www.youtube.com/watch?v=teYuozYi8Kg) - 1. [A Critical Thought on Strategy Guides](https://www.youtube.com/watch?v=vW3qgpt4s2c) - 1. [A Critical Thought on Breaking Games](https://www.youtube.com/watch?v=aorjSqZMb5E) - - ## [Roguelike Radio](http://www.roguelikeradio.com/) - - 1. [Episode 3: Brogue](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio3.mp3) - 1. [Episode 4: DoomRL](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio4.mp3) - 1. [Episode 5: Frozen Depths](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio5.mp3) - 1. [Episode 8: Progression Systems](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio8.mp3) - 1. [Interview: Brian Walker aka Pender](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio-pender.mp3) - 1. [Episode 9: Powder](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio9.mp3) - 1. [Episode 10: Deity Systems](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio10.mp3) - 1. [Episode 12: Roguelikes Features in Other Genres](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio12.mp3) - 1. [Episode 13: Mystery Dungeon 2: Shiren the Wander](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio13.mp3) - 1. [Episode 14: Resource Management](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio14.mp3) - 1. [Episode 15: Quickband](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio15.mp3) - 1. [Episode 16: History and Future of Roguelikes](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio16.mp3) - 1. [Episode 18: ToME4](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio18.mp3) - 1. [Episode 19: Interview with DarkGod, creator of ToME4](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio19.mp3) - 1. [Episode 20: Cataclysm](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio20.mp3) - 1. [Episode 21: Procedural Generation](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio21.mp3) - 1. [Episode 22: Infra Arcana](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio22.mp3) - 1. [Episode 23: Interview with David Ploog](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio23.mp3) - 1. [Episode 24: Themes and Settings](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio24.mp3) - 1. [Episode 25: Permadeath](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio25.mp3) - 1. [Episode 26: How to Make a 7DRL](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio26.mp3) - 1. [Episode 30: Identification Systems](http://www.gamesofgrey.com/roguelikeradio/roguelikeradio30.mp3) - 1. [Episode 31 - Rogue, with co-creator Glenn Wichman](http://www.roguelikeradio.com/2012/04/episode-31-rogue-with-co-creator-glenn.html) - 1. [Episode 32: Combat Mechanics](http://www.roguelikeradio.com/2012/04/episode-32-combat-mechanics.html) - 1. [Episode 33: Interview with Thomas Biskup, creator of ADOM](http://www.roguelikeradio.com/2012/05/episode-33-interview-with-thomas-biskup.html) - 1. [Episode 34: Red Rogue, with creator Aaron Steed](http://www.roguelikeradio.com/2012/05/episode-34-red-rogue-with-creator-aaron.html) - 1. [Episode 35: Diablo](http://www.roguelikeradio.com/2012/05/episode-35-diablo.html) - 1. [Episode 36: Coffeebreak Roguelikes](http://www.roguelikeradio.com/2012/05/episode-36-coffeebreak-roguelikes.html) - 1. [Episode 38: Zaga-33 and MicRogue](http://www.roguelikeradio.com/2012/06/episode-38-zaga-33-and-microgue.html) - 1. [Episode 40: Designing for Non-Roguelikers](http://www.roguelikeradio.com/2012/07/episode-40-designing-for-non.html) - 1. [Episode 41: Score Systems](http://www.roguelikeradio.com/2012/07/episode-41-score-systems.html) - 1. [Episode 42: Elitism](http://www.roguelikeradio.com/2012/07/episode-42-elitism.html) - 1. [Episode 43: Spelunky](http://www.roguelikeradio.com/2012/08/episode-43-spelunky.html) - 1. [Episode 44: Winning](http://www.roguelikeradio.com/2012/08/episode-44-winning.html) - 1. [Episode 45 - Caves of Qud](http://www.roguelikeradio.com/2012/09/episode-45-caves-of-qud.html) - 1. [Episode 51: Graphics and Tile Design part 1](http://www.roguelikeradio.com/2012/11/episode-51-graphics-and-tile-design.html) - 1. [Episode 53: Game Design in Academia](http://www.roguelikeradio.com/2012/11/episode-53-game-design-in-academia.html) - 1. [Episode 54: Game Jams](http://www.roguelikeradio.com/2012/11/episode-54-game-jams.html) - 1. [Episode 55: Strategy Games](http://www.roguelikeradio.com/2012/12/episode-55-strategy-games.html) - 1. [Episode 59: Sil](http://www.roguelikeradio.com/2013/01/episode-59-sil.html) - 1. [Episode 64: Player competitions](http://www.roguelikeradio.com/2013/03/episode-64-player-competitions.html) - 1. [Episode 65: Roguelike Communities](http://www.roguelikeradio.com/2013/03/episode-65-roguelike-communities.html) - 1. [Episode 68: 7DRL 2013 Failures](http://www.roguelikeradio.com/2013/04/episode-68-7drl-2013-failures.html) - 1. [Episode 69: Boss Fights](http://www.roguelikeradio.com/2013/04/episode-69-boss-fights.html) - 1. [Episode 70: Introducing People to Roguelikes](http://www.roguelikeradio.com/2013/04/episode-70-introducing-people-to.html) - 1. [Episode 71: The Hunger Clock](http://www.roguelikeradio.com/2013/05/episode-71-hunger-clock.html) - 1. [Episode 72: IRDC 2013](http://www.roguelikeradio.com/2013/06/episode-72-irdc-2013.html) - 1. [Episode 74 - Sword of the Stars: The Pit](http://www.roguelikeradio.com/2013/06/episode-74-sword-of-stars-pit.html) - 1. [Episode 75: Cataclysm Dark Days Ahead](http://www.roguelikeradio.com/2013/07/episode-75-cataclysm-dark-days-ahead.html) - 1. [Episode 77: The Hero Trap](http://www.roguelikeradio.com/2013/08/episode-77-hero-trap.html) - 1. [Episode 78: Inspiration from Board Games](http://www.roguelikeradio.com/2013/08/episode-78-inspiration-from-board-games.html) - 1. [Episode 79 - Mobile Roguelikes](http://www.roguelikeradio.com/2013/09/episode-79-mobile-roguelikes.html) - 1. [Episode 80: UnReal World](http://www.roguelikeradio.com/2013/09/this-is-episode-80-of-roguelike-radio.html) - 1. [Episode 81: Puzzles](http://www.roguelikeradio.com/2013/10/episode-81-puzzles.html) - 1. [Episode 82: Interview with Zeno](http://www.roguelikeradio.com/2013/11/episode-82-interview-with-zeno.html) - 1. [Episode 83: ASCII](http://www.roguelikeradio.com/2013/12/episode-83-ascii.html) - 1. [Episode 84: Nethack](http://www.roguelikeradio.com/2013/12/episode-84-nethack.html) - 1. [Episode 86: How to Make a Unique 7DRL](http://www.roguelikeradio.com/2014/03/episode-86-how-to-make-unique-7drl.html) - 1. [Episode 89: Interview with the Angband devteam part 1](http://www.roguelikeradio.com/2014/08/episode-89-interview-with-angband.html) - 1. [Episode 90: Angband devteam interview part 2](http://www.roguelikeradio.com/2014/08/episode-90-angband-devteam-interview.html) - 1. [Episode 91: Our First Roguelikes](http://www.roguelikeradio.com/2014/09/episode-91-our-first-roguelikes.html) - 1. [Episode 92: Return to Brogue](http://www.roguelikeradio.com/2014/10/episode-92-return-to-brogue.html) - 1. [Episode 94: ProcJam](http://www.roguelikeradio.com/2014/10/episode-94-procjam.html) - 1. [Episode 98: What Players Want from 7DRLs](http://www.roguelikeradio.com/2015/03/episode-98-what-players-want-from-7drls.html) - 1. [Episode 100: YASDs](http://www.roguelikeradio.com/2015/06/episode-100-yasds.html) - 1. [Episode 102: Interview with Frank Lantz](http://www.roguelikeradio.com/2015/06/episode-102-interview-with-frank-lantz.html) - 1. [Episode 105: Dungeon Hacks, a book about roguelikes](http://www.roguelikeradio.com/2015/08/episode-105-dungeon-hacks-book-about.html) - 1. [Episode 106: 30 Minutes of UMoria](http://www.roguelikeradio.com/2015/08/episode-106-30-minutes-of-umoria.html) - 1. [Episode 107: Listeners Q&As](http://www.roguelikeradio.com/2015/09/episode-107-listeners-q.html) - 1. [Episode 108: Information](http://www.roguelikeradio.com/2015/10/episode-108-information.html) - 1. [Episode 109: Cogmind](http://www.roguelikeradio.com/2015/10/episode-109-cogmind.html) - 1. [Episode 110: Obsession](http://www.roguelikeradio.com/2015/11/episode-110-obsession.html) - 1. [Episode 111: Invisible Inc](http://www.roguelikeradio.com/2015/12/episode-111-invisible-inc.html) - 1. [Episode 114: Gameplay-Orientated Procedural Generation](http://www.roguelikeradio.com/2016/01/episode-114-gameplay-orientated.html) - 1. [Episode 115: The Curious Expedition](http://www.roguelikeradio.com/2016/02/episode-115-curious-expedition.html) - 1. [Episode 118: Interview with John Harris](http://www.roguelikeradio.com/2016/03/episode-118-interview-with-john-harris.html) - 1. [Episode 121: Simulation](http://www.roguelikeradio.com/2016/04/episode-121-simulation.html) - 1. [Episode 122: Nethack Tool-Assisted Speedruns](http://www.roguelikeradio.com/2016/06/episode-122-nethack-tool-assisted.html) - 1. [Episode 123: Geometry in Roguelikes](http://www.roguelikeradio.com/2016/06/episode-123-geometry-in-roguelikes.html) - 1. [Episode 124: Shoot Em Ups](http://www.roguelikeradio.com/2016/08/episode-124-shoot-em-ups.html) - 1. [Episode 125: Road Not Taken](http://www.roguelikeradio.com/2016/08/episode-125-road-not-taken.html) - 1. [Episode 126: IVAN](http://www.roguelikeradio.com/2016/09/episode-126-ivan.html) - 1. [Episode 128: How To Be Good At Roguelikes](http://www.roguelikeradio.com/2016/10/episode-128-how-to-be-good-at-roguelikes.html) - 1. [Episode 134: Randomness](http://www.roguelikeradio.com/2017/03/episode-134-randomness.html) - 1. [Episode 137: Book on Procedural Generation in Game Design](http://www.roguelikeradio.com/2017/06/episode-137-book-on-procedural.html) - 1. [Episode 138: Golden Krone Hotel](http://www.roguelikeradio.com/2017/08/episode-138-golden-krone-hotel.html) - 1. [Episode 139: Unexplored](http://www.roguelikeradio.com/2017/09/episode-139-unexplored.html) - 1. [Episode 140: Horror](http://www.roguelikeradio.com/2017/10/episode-140-horror.html) - 1. [Episode 141: MUDs](http://www.roguelikeradio.com/2017/11/episode-141-muds.html) - 1. [Episode 144: AI](http://www.roguelikeradio.com/2018/02/episode-144-ai.html) - 1. [Episode 147: Difficulty](http://www.roguelikeradio.com/2018/08/episode-147-difficulty.html) - 1. [Episode 149: Chaos Theory](http://www.roguelikeradio.com/2018/12/episode-149-chaos-theory.html) - 1. [Episode 150: Rot.js with Ondrej Zara](http://www.roguelikeradio.com/2019/01/episode-150-rotjs-with-ondrej-zara.html) - 1. [Episode 154: Jupiter Hell - Early Access](http://www.roguelikeradio.com/2019/08/episode-154-jupiter-hell-early-access.html) - -# Voxel - -1. https://github.com/stoyannk/voxels - -# Planning - -1. https://github.com/adnzzzzZ/blog/issues/47 - diff --git a/documentation/research/machine_learning.md b/documentation/research/machine_learning.md deleted file mode 100644 index d897b7730..000000000 --- a/documentation/research/machine_learning.md +++ /dev/null @@ -1,87 +0,0 @@ -# Transformer - -1. [Transformers from scratch](http://www.peterbloem.nl/blog/transformers) - -# Exemplar - -1. https://ml5js.org/ -1. https://www.csie.ntu.edu.tw/~cjlin/libsvm/ -1. http://halide-lang.org/ - -# Reference - -1. ["Multi-Level Intermediate Representation" Compiler Infrastructure](https://github.com/tensorflow/mlir) -1. [Sampling can be faster than optimization](https://www.pnas.org/content/116/42/20881) -1. [Layer rotation: a surprisingly powerful indicator of generalization in deep networks](https://arxiv.org/abs/1806.01603v2) -1. https://nostalgebraist.tumblr.com/post/185326092369/the-transformer-explained -1. [HyperE: Hyperbolic Embeddings for Entities](https://hazyresearch.github.io/hyperE/) -1. https://www.samcoope.com/posts/playing_around_with_noise_as_targets -1. https://lobste.rs/s/hgejxf/why_is_machine_learning_most_often -1. https://boingboing.net/2018/11/12/local-optima-r-us.html/amp -1. https://crazyoscarchang.github.io/2019/02/16/seven-myths-in-machine-learning-research/ -1. https://www.c4ml.org/ -1. https://medium.com/@l2k/why-are-machine-learning-projects-so-hard-to-manage-8e9b9cf49641 -1. https://github.com/MikeInnes/diff-zoo -1. https://cloud.google.com/blog/products/ai-machine-learning/introducing-feast-an-open-source-feature-store-for-machine-learning -1. https://towardsdatascience.com/introducing-manifold-db9e90f20347 -1. http://snap.stanford.edu/graphsage/ -1. https://heartbeat.fritz.ai/capsule-networks-a-new-and-attractive-ai-architecture-bd1198cc8ad4 -1. http://super-ms.mit.edu/rum.html - -# Deep learning - -1. [Evolution Strategies](https://lilianweng.github.io/lil-log/2019/09/05/evolution-strategies.html) -1. [Monadic Deep Learning: Performing monadic automatic differentiation in parallel](https://deeplearning.thoughtworks.school/assets/paper.pdf) -1. [Demystifying Differentiable Programming: Shift/Reset the Penultimate Backpropagator](https://arxiv.org/abs/1803.10228) -1. https://github.com/microsoft/tensorwatch -1. https://d2l.ai/ -1. https://hadrienj.github.io/posts/Deep-Learning-Book-Series-Introduction/ -1. http://nlp.seas.harvard.edu/NamedTensor -1. https://tvm.ai/ -1. https://machinelearningmastery.com/framework-for-better-deep-learning/ -1. [Geometric Understanding of Deep Learning](https://arxiv.org/abs/1805.10451) -1. https://towardsdatascience.com/what-is-geometric-deep-learning-b2adb662d91d -1. https://deeplearning4j.org/ -1. [Deep(er) learning](http://www.jneurosci.org/content/early/2018/07/13/JNEUROSCI.0153-18.2018?versioned=true) - -# Neural network - -1. https://github.com/BrainJS/brain.js -1. https://blog.jle.im/entry/practical-dependent-types-in-haskell-1.html -1. https://matloff.wordpress.com/2018/06/20/neural-networks-are-essentially-polynomial-regression/ -1. https://www.quantamagazine.org/foundations-built-for-a-general-theory-of-neural-networks-20190131#AI -1. https://rkevingibson.github.io/blog/neural-networks-as-ordinary-differential-equations/ - -# Tensor - -1. http://nlp.seas.harvard.edu/NamedTensor.html -1. http://nlp.seas.harvard.edu/NamedTensor2 - -# Meta-learning - -1. https://blog.fastforwardlabs.com/2019/05/22/metalearners-learning-how-to-learn.html -1. https://www.bayeswatch.com/2018/11/30/HTYM/ -1. https://bender.dreem.com/ - -# Model - -1. http://onnx.ai/ - -# Training - -1. https://ai.googleblog.com/2019/03/introducing-gpipe-open-source-library.html - -# Differentiable programming - -1. [The Taichi Programming Language](http://taichi.graphics/) -1. [The principles behind Differentiable Programming - Erik Meijer](https://www.youtube.com/watch?v=lk0PhtSHE38) -1. [Kotlin∇: Type-safe Symbolic Differentiation for Kotlin](https://github.com/breandan/kotlingrad) -1. [Differentiable Programming Manifesto](https://github.com/apple/swift/blob/master/docs/DifferentiableProgramming.md) -1. [Backpropagation in the Simply Typed Lambda-calculus with Linear Negation](https://arxiv.org/abs/1909.13768) -1. [One-and-a-Half Simple Differential Programming Languages](https://pages.cpsc.ucalgary.ca/~robin/FMCS/FMCS2019/slides/GordonPlotkin-FMCS2019.pdf) -1. [Differentiable Programming Mega-Proposal](https://forums.swift.org/t/differentiable-programming-mega-proposal/28547) -1. https://fluxml.ai/2019/02/07/what-is-differentiable-programming.html -1. https://github.com/breandan/kotlingrad -1. https://colinraffel.com/blog/you-don-t-know-jax.html -1. https://github.com/tensorflow/mlir - diff --git a/documentation/research/math.md b/documentation/research/math.md deleted file mode 100644 index a582bb64d..000000000 --- a/documentation/research/math.md +++ /dev/null @@ -1,395 +0,0 @@ -# Tensor calculus - -1. [Introduction to Tensor Calculus](http://www.ita.uni-heidelberg.de/~dullemond/lectures/tensor/tensor.pdf) - -# Geometry - -1. [Perspectives on Projective Geometry: A Guided Tour through Real and Complex Geometry](https://www-m10.ma.tum.de/foswiki/pub/Lehre/WS0910/ProjektiveGeometrieWS0910/GeomBook.pdf) -1. [Symplectic Geometry for Engineers - Fundamentals](https://www.researchgate.net/publication/338124384_Symplectic_Geometry_for_Engineers_-_Fundamentals) - -# Prime number - -1. [The History of the Primality of One: A Selection of Sources](https://cs.uwaterloo.ca/journals/JIS/VOL15/Caldwell2/cald6.pdf) - -# Trigonometry - -1. [Approximating the Sine Function](http://datagenetics.com/blog/july12019/index.html) - -# Period - -1. https://en.wikipedia.org/wiki/Ring_of_periods -1. [PERIODS](http://www.ihes.fr/~maxim/TEXTS/Periods.pdf) - -# Proof theory - -1. [Mathematical Components](https://math-comp.github.io/mcb/) - -# Statistics - -1. https://www.statisticsdonewrong.com/ - -# Topology - -1. [What is Topology?](https://medium.com/cantors-paradise/what-is-topology-963ef4cc6365) -1. [Pointless topology](https://en.wikipedia.org/wiki/Pointless_topology) -1. [ELEMENTARY APPLIED TOPOLOGY](https://www.math.upenn.edu/~ghrist/notes.html) - -# Library - -1. https://github.com/ZacharyPatten/Towel - -# Polynomials - -1. https://brainbomb.org/0-1-efficient-metholds-for-evaluting-polynomials/ -1. https://en.wikipedia.org/wiki/Horner%27s_method - -# Chaos Theory - -1. http://ncase.me/attractors/ - -# Number Theory - -1. https://twitter.com/johncarlosbaez/status/1184492139897507840 -1. https://en.wikipedia.org/wiki/Dual_number -1. https://en.wikipedia.org/wiki/Division_algebra -1. [Division algebras](https://www.youtube.com/watch?v=3BZyds_KFWM&list=PLNxhIPHaOTRZMO1VjJcs7_3dgyJ2qU1yZ) -1. https://www.quantamagazine.org/the-octonion-math-that-could-underpin-physics-20180720 -1. http://illustratedtheoryofnumbers.com/ -1. [Topology of Numbers](http://pi.math.cornell.edu/~hatcher/TN/TNpage.html) - -## Hyperreal number - -1. [Yes, You Can Manipulate Infinity—in Math](https://mindmatters.ai/2019/10/yes-you-can-manipulate-infinity-in-math/) - -# Quaternions - -1. [Dual Quaternions for Mere Mortals](https://www.jeremyong.com/math/2019/08/05/dual-quaternions-for-mere-mortals/) -1. [Stepping into a New Dimension: Using Quaternions to See the Invisible](https://medium.com/@vieyrasoftware/stepping-into-a-new-dimension-using-quaternions-to-see-the-invisible-478087c9ebbf) -1. [How Quaternions Produce 3D Rotation](https://penguinmaths.blogspot.com/2019/06/how-quaternions-produce-3d-rotation.html) -1. [APPLICATION OF DUAL QUATERNIONS ON SELECTED PROBLEMS](https://otik.uk.zcu.cz/bitstream/11025/28563/1/phd_Application%20of%20dual%20quaternions%20on%20selected%20problems.pdf) -1. https://www.3dgep.com/understanding-quaternions/ -1. https://probablydance.com/2017/08/05/intuitive-quaternions/ -1. [Quaternion algebras](https://math.dartmouth.edu/~jvoight/quat.html) - -# _Compendium of resources_ - -1. [Free and Open-Source Textbooks](http://danaernst.com/resources/free-and-open-source-textbooks/) -1. [ALL IN ONE MATHEMATICS CHEAT SHEET](https://ourway.keybase.pub/mathematics_cheat_sheet.pdf) -1. https://github.com/llSourcell/learn_math_fast -1. https://www.algorithm-archive.org/ -1. [3b1b featured creators #1](https://www.youtube.com/watch?v=VcgJro0sTiM) -1. [An infinite descent into pure mathematics](https://infinitedescent.xyz/) -1. https://hackernoon.com/be-a-better-programmer-with-these-40-mathematics-courses-d8ca48a2f8a2 -1. https://www.intmath.com/ -1. https://en.wikipedia.org/wiki/Graduate_Texts_in_Mathematics - -# Bézier curves - -1. [Circles and lines vs. polynomial splines](https://wordsandbuttons.online/circles_and_lines_vs_polynomial_splines.html) -1. https://cormullion.github.io/blog/2018/06/21/bezier.html -1. https://pomax.github.io/bezierinfo/ -1. https://99designs.com/blog/engineering/math-draw-vector-curves/ -1. https://medium.freecodecamp.org/nerding-out-with-bezier-curves-6e3c0bc48e2f -1. https://pomax.github.io/bezierinfo/#curvature -1. https://raphlinus.github.io/curves/2018/12/28/bezier-arclength.html -1. https://astiopin.github.io/2019/01/04/qbez-parabola.html -1. http://dlacko.org/blog/2016/10/19/approximating-bezier-curves-by-biarcs/ -1. https://bosker.wordpress.com/2013/11/13/beyond-bezier-curves/ - -# Number systems - -1. https://en.wikipedia.org/wiki/Negative_base - -# Discrete mathematics - -1. [Applied Discrete Structures](http://discretemath.org/ads-latex/ads.pdf) -1. [Notes on Discrete Mathematics](http://www.cs.yale.edu/homes/aspnes/classes/202/notes.pdf) -1. [The system of integer functions, an efficient version of discrete mathematical analysis](https://arxiv.org/abs/1710.00676) -1. [Computing the Continuous Discretely: Integer-Point Enumeration in Polyhedra](http://math.sfsu.edu/beck/papers/ccd.pdf) -1. [Discrete Mathematics: An Open Introduction](http://discrete.openmathbooks.org/dmoi2/frontmatter.html) - -# Probability - -1. [Introduction to Probability at anadvanced leve](https://www.stat.berkeley.edu/~aditya/resources/AllLectures2018Fall201A.pdf) - -# Linear Algebra - -1. [Linear Algebra And Multi Dimensional Geometry](https://mirtitles.org/2020/02/13/4129/) -1. [Interactive Linear Algebra](https://textbooks.math.gatech.edu/ila/) -1. [Don’t invert that matrix](https://www.johndcook.com/blog/2010/01/19/dont-invert-that-matrix/) -1. [“Don’t invert that matrix” – why and how](https://civilstat.com/2015/07/dont-invert-that-matrix-why-and-how/) -1. [Thirty-three Miniatures: Mathematical and Algorithmic Applications of Linear Algebra](https://kam.mff.cuni.cz/~matousek/stml-53-matousek-1.pdf) -1. [Covectors are Different than Vectors, Usually](http://infohost.nmt.edu/~parendt/Phys509/notes/2diracnot/node4.html) -1. [Introduction to Applied Linear Algebra: Vectors, Matrices, and Least Squares](https://web.stanford.edu/~boyd/vmls/vmls.pdf) -1. [Linear Algebra Done Wrong.](http://www.math.brown.edu/~treil/papers/LADW/LADW.html) -1. [Linear Algebra Done Right](http://linear.axler.net/) -1. [Down with Determinants!](http://www.axler.net/DwD.html) -1. https://github.com/jacobbogers/blasjs -1. https://graphicallinearalgebra.net/ -1. [Wild Linear Algebra](https://www.youtube.com/watch?v=yAb12PWrhV0&list=PLIljB45xT85BhzJ-oWNug1YtUjfWp1qAp &&& https://www.youtube.com/watch?v=nJdWFoliRnc&list=PLIljB45xT85DF5G-Hq0xPsVUnR5_wJRSw) -1. https://github.com/ferreiradaselva/mathc -1. http://www.fast.ai/2017/07/17/num-lin-alg/ -1. https://github.com/bluemathsoft/bm-linalg -1. [The Matrix Cookbook](https://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf) -1. https://dhruvp.netlify.com/2018/12/31/matrices/ -1. https://www.nalgebra.org/ -1. http://immersivemath.com/ila/index.html -1. [Linear Logic and Linear Algebra](http://www.cs.bham.ac.uk/~drg/bll/steve.pdf) -1. https://www.math3ma.com/blog/matrices-probability-graphs -1. [Essence of linear algebra](https://www.youtube.com/watch?v=fNk_zzaMoSs&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) -1. https://www.dhruvonmath.com/2018/12/31/matrices/ -1. http://blog.ezyang.com/2019/05/a-short-note-about-functional-linear-maps/ -1. https://www.math3ma.com/blog/matrices-as-tensor-network-diagrams -1. [Convolution is outer product](https://arxiv.org/abs/1905.01289) -1. [Graphical Calculus for products and convolutions](https://arxiv.org/abs/1903.01366) - -# Domain Theory - -1. [A Brief Intro to Domain Theory](https://www.alignmentforum.org/posts/4C4jha5SdReWgg7dF/a-brief-intro-to-domain-theory) - -# Category Theory - -1. [Programming with Categories](https://www.youtube.com/watch?v=Y5YCE_mVjvg&list=PLhgq-BqyZ7i7MTGhUROZy3BOICnVixETS&index=1) -1. [Awesome Applied Category Theory](https://github.com/statebox/awesome-applied-ct) -1. [Categorical Query Language](https://www.categoricaldata.net/) -1. [Abstract and Concrete Categories: The Joy of Cats](http://katmat.math.uni-bremen.de/acc/acc.pdf) -1. https://bartoszmilewski.com/ -1. [YOW! Lambda Jam 2018 - Mark Hopkins -All of Basic Category Theory](https://www.youtube.com/watch?v=9u1q3lH7VbE) -1. [Categorifying cardinal arithmetic](http://www.math.jhu.edu/~eriehl/arithmetic.pdf) -1. https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/ -1. [Elements of ∞-Category Theory](http://www.math.jhu.edu/~eriehl/elements.pdf) -1. [Category Theory: A Gentle Introduction](https://www.logicmatters.net/resources/pdfs/GentleIntro.pdf) -1. [Applied Category Theory (@ MIT 2019)](https://www.youtube.com/playlist?list=PLhgq-BqyZ7i5lOqOqqRiS0U5SwTmPpHQ5) -1. https://jvns.ca/blog/2019/03/26/what-are-monoidal-categories/ -1. [Daniela Sfregola - A Pragmatic Introduction to Category Theories - Code Mesh 2017](https://www.youtube.com/watch?v=8XGFFMPHG0o) -1. [Seven Sketches in Compositionality: An Invitation to Applied Category Theory](http://xahlee.info/math/i/category_theory_brendan_fong_david_spivak_2018-03.pdf) - -# Direct Logic - -1. [Strong Types for Direct Logic](https://drive.google.com/file/d/1relKFB4aOMD2VZHM9qj3wWMXOq-q2AJr/view) - -# Geometric Algebra | Clifford Algebra - -1. [Euclidean Geometry and Geometric Algebra](http://geometry.mrao.cam.ac.uk/2020/06/euclidean-geometry-and-geometric-algebra/) -1. [Plane-based Geometric Algebra for Computer Science](https://bivector.net/PGA4CS.html) -1. [Differential geometric algebra foundations: Grassmann.jl Ascend](https://www.youtube.com/watch?v=7hlDRLEhc8o&feature=youtu.be) -1. [Projective Geometric Algebra Done Right](http://terathon.com/blog/projective-geometric-algebra-done-right/) -1. [Siggraph2019 Geometric Algebra](https://www.youtube.com/watch?v=tX4H_ctggYo) -1. [Introduction to Clifford Algebra](https://www.av8n.com/physics/clifford-intro.htm) -1. [An Introduction to Geometric Algebra over R^2](https://bitworking.org/news/ga/2d) -1. [Exterior Product](https://medium.com/@marksaroufim/exterior-product-ecd5836c28ab) -1. [Projective geometric algebra: A modern framework for doing geometry](http://page.math.tu-berlin.de/~gunn/PGA/index.html) -1. [Geometric Algebra for Computer Graphics](https://slides.com/enkimute/siggraph/#/) -1. https://bivector.net/ -1. https://slehar.wordpress.com/2014/03/18/clifford-algebra-a-visual-introduction/ -1. [Vectors and Beyond: Geometric Algebra and its Philosophical Significance](http://www.tara.tcd.ie/bitstream/handle/2262/61825/Vectors%20and%20Beyond%20as%20Printed.pdf?sequence=1&isAllowed=y) -1. [Let's remove Quaternions from every 3D Engine](http://marctenbosch.com/quaternions/) -1. [Geometric Algebra Playlist](https://www.youtube.com/playlist?list=PLLvlxwbzkr7igd6bL7959WWE7XInCCevt) -1. https://github.com/wolftype/versor -1. [Exploring Physics with Geometric Algebra, Book 1](http://peeterjoot.com/archives/math2015/gabookI.pdf) -1. [Joan Lasenby on Applications of Geometric Algebra in Engineering](https://www.youtube.com/watch?v=ikCIUzX9myY) -1. https://www.amazon.com/Geometric-Algebra-Computer-Graphics-Vince/dp/1846289963 -1. https://www.amazon.com/Geometric-Algebra-Computer-Science-Revised/dp/0123749425 -1. https://www.amazon.com/Space-Time-Algebra-David-Hestenes/dp/3319184121 -1. https://www.amazon.com/Introduction-Clifford-Algebras-Spinors/dp/0198782926 -1. https://gist.github.com/pervognsen/b204bf31af0809af078617af1609c8b8 -1. [Fundamentals of Grassmann Algebra](http://www.terathon.com/gdc12_lengyel.pdf) -1. https://github.com/chakravala/Grassmann.jl - -# Abstract Algebra - -1. [A Brief Guide to A Few Algebraic Structures](https://argumatronic.com//posts/2019-06-21-algebra-cheatsheet.html) -1. [DUALITY FOR GROUPS](https://projecteuclid.org/download/pdf_1/euclid.bams/1183515045) -1. https://gowers.wordpress.com/2011/11/20/normal-subgroups-and-quotient-groups/ -1. [Abstract Algebra: Theory and Applications](http://abstract.ups.edu/) -1. [Group Theory](http://birdtracks.eu/version9.0/GroupTheory.pdf) -1. [VISUAL GROUP THEORY](http://web.bentley.edu/empl/c/ncarter/vgt/index.html) -1. [THE GEOMETRY OF REFLECTION GROUPS](http://people.mpim-bonn.mpg.de/geordie/mpg.pdf) -1. https://kubuszok.com/2018/algebras-we-love/ -1. [Notes on Computational Group Theory](https://www.math.colostate.edu/~hulpke/CGT/cgtnotes.pdf) -1. [An Invitation to General Algebra and Universal Constructions](https://math.berkeley.edu/~gbergman/245/) - -# Logic - -1. http://openlogicproject.org/ - -# Calculus - -1. [The Fractional Derivative, what is it? | Introduction to Fractional Calculus](https://www.youtube.com/watch?v=A4sTAKN6yFA) -1. [Calculus on Manifolds](http://strangebeautiful.com/other-texts/spivak-calc-manifolds.pdf) -1. [Calculus BLUE](https://www.youtube.com/watch?v=Jes5jwLl1q8&list=PL8erL0pXF3JYm7VaTdKDaWc8Q3FuP8Sa7) -1. [Extending the Algebraic Manipulability of Differentials](https://arxiv.org/abs/1801.09553) -1. https://en.wikipedia.org/wiki/Fractional_calculus -1. https://medium.com/@notaredpanda/fractional-calculus-48192f4e9c9f -1. [Fractional Calculus: Theory and Applications](https://www.mdpi.com/books/pdfview/book/755) -1. [EXTENDING THE ALGEBRAIC MANIPULABILITYOF DIFFERENTIALS](http://online.watsci.org/abstract_pdf/2019v26/v26n3a-pdf/4.pdf) -1. [Finite Calculus: A Tutorial for Solving Nasty Sums](https://www.cs.purdue.edu/homes/dgleich/publications/Gleich%202005%20-%20finite%20calculus.pdf) -1. http://jliszka.github.io/2013/10/24/exact-numeric-nth-derivatives.html - -# Continuous Calculus - -1. [Continuous Calculus](http://www-users.math.umn.edu/~olver/ln_/cc.pdf) - -# Octonion - -1. http://math.ucr.edu/home/baez/octonions/ - -# Differential Geometry - -1. [differential geometry reconstructed: a unified systematic framework](http://www.geometry.org/tex/conc/dgstats.php) -1. [Differential geometry reconstructed: a unified systematic framework](http://www.topology.org/tex/conc/dg.html) - -# Information Theory - -1. [Functional Bits: Lambda Calculus based Algorithmic Information Theory](https://tromp.github.io/cl/LC.pdf) - -# Graph Theory - -1. [Graphs and Geometry](http://web.cs.elte.hu/~lovasz/bookxx/geomgraphbook/geombook2019.01.11.pdf) -1. [Graph-Based Algorithms for Boolean Function Manipulation](http://mtv.ece.ucsb.edu/courses/ece156B_14/randy_obdd86.pdf) -1. [better geometry through graph theory](http://ideolalia.com/2018/08/28/artifex.html) - -# Division by Zero - -1. https://www.hillelwayne.com/post/divide-by-zero/ -1. https://www.1dividedby0.com/ - -# Partial Fractions - -1. https://jaydaigle.net/blog/calculus/easier-partial-fractions/ - -# Non-commutative Algebra - -1. [An Invitation to Noncommutative Algebra](https://arxiv.org/abs/1808.03172) - -# Lambda Calculus - -1. https://medium.com/@maiavictor/the-abstract-calculus-fe8c46bcf39c - -# _Software Library_ - -1. https://github.com/arguiot/TheoremJS -1. https://github.com/arguiot/Descartes - -# Set Theory - -1. [Set Theory and Algebra in Computer Science: A Gentle Introduction to Mathematical Modeling](https://pdfs.semanticscholar.org/d106/6b6de601c1d7d5af25af3f7091bc7ad3ad51.pdf) - -# Uncertainty Theory - -1. http://faculty.math.tsinghua.edu.cn/~bliu/ut.pdf -1. [An Introduction to the Mathematics of Uncertainty: including Set Theory, Logic, Probability, Fuzzy Sets, Rough Sets, and Evidence Theory](https://www.creighton.edu/fileadmin/user/CCAS/programs/fuzzy_math/docs/MOU.pdf) - -# Computational Geometry - -1. [CMPT 813: Computational Geometry (Fall 2011)](http://www.cs.sfu.ca/~binay/813.2011/) -1. https://www.johndcook.com/blog/2018/09/26/polygon-area/ -1. http://s2geometry.io/devguide/s2cell_hierarchy.html -1. http://alienryderflex.com/polygon/ -1. https://libigl.github.io/ - -# Finitism - -1. ["REAL" ANALYSIS Is A DEGENERATE CASE of DISCRETE ANALYSIS](http://sites.math.rutgers.edu/~zeilberg/mamarim/mamarimPDF/real.pdf) - -# Linear programming - -1. https://en.wikibooks.org/wiki/GLPK -1. https://white.ucc.asn.au/2018/05/28/Optimizing-your-diet-with-JuMP.html - -# Measure theory - -1. [Resources for Learning Measure Theory](https://bcmullins.github.io/measure_theory_resources/) - -# Combinatorics - -1. [Advances in Combinatorics](https://www.advancesincombinatorics.com/) -1. http://andy.kitchen/combinations.html -1. [Combinatorial Algorithms](http://www2.denizyuret.com/bib/kreher/donald1999combinatorial/combinatorialA.pdf) - -# Vector - -1. [A Student's Guide to Vectors and Tensors (Student's Guides)](https://www.amazon.com/Students-Guide-Vectors-Tensors-Guides/dp/0521171903) -1. https://www.researchgate.net/publication/327989714_Coordinate_Free_Vector_Algebra_in_R2 - -# Knot theory - -1. [Primes and Knots - Akshay Venkatesh](https://www.youtube.com/watch?v=jvoYgNYKyk0) -1. [The Knot Book](http://math.harvard.edu/~ctm/home/text/books/adams/knot_book/knot_book.pdf) - -# Axiom - -1. [INTRODUCTION TO AXIOMATIC REASONING](http://www.math.harvard.edu/~mazur/papers/Axiomatic.pdf) - -# Differential equations - -1. [ELEMENTARY DIFFERENTIAL EQUATIONS](http://ramanujan.math.trinity.edu/wtrench/texts/TRENCH_FREE_DIFFEQ_I.PDF) -1. [Lecture Notes on Difference Equations](http://people.math.aau.dk/~matarne/11-imat/notes2011a.pdf) - -# Algebraic geometry - -1. http://nautil.us/issue/69/patterns/the-math-that-takes-newton-into-the-quantum-world -1. [Algebraic Geometry](http://www.mathematik.uni-kl.de/~gathmann/class/alggeom-2014/main.pdf) -1. https://en.wikipedia.org/wiki/Superformula - -# Physics - -1. https://www.researchgate.net/publication/309533409_Beyond_Einstein_non-local_physics -1. https://www.theoretical-physics.com/dev/index.html - -# Spherical trigonometry - -1. https://en.wikipedia.org/wiki/Haversine_formula - -# Hyperbolic geometry - -1. [Hyperbolic Functions and Non-Hyperbolic Claims](https://elliptigon.com/hyperbolic-functions-explained/) - -# **Temp Cache** - -1. [Quadratic splines are useful too](https://wordsandbuttons.online/quadric_splines_are_useful_too.html) -1. [Derivations of Applied Mathematics](http://www.derivations.org/) -1. https://www.juliahomotopycontinuation.org/ -1. https://marginalrevolution.com/marginalrevolution/2018/05/one-parameter-equation-can-exactly-fit-scatter-plot.html -1. https://plato.stanford.edu/entries/mathematics-inconsistent/ -1. http://immersivemath.com/ila/index.html?m=1 -1. https://stacks.math.columbia.edu/ -1. http://www.gutenberg.org/ebooks/17384 -1. http://illustratedtheoryofnumbers.com/ -1. [Construction of the Transreal Numbers and Algebraic Transfields](http://www.iaeng.org/IJAM/issues_v46/issue_1/IJAM_46_1_03.pdf) -1. http://simit-lang.org/language -1. http://wykobi.com/tutorial0.html -1. https://pron.github.io/computation-logic-algebra -1. https://github.com/rossant/awesome-math -1. [Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Engineering](https://www.cis.upenn.edu/~jean/math-basics.pdf) -1. http://math.chapman.edu/~jipsen/structures/doku.php/ -1. http://stacks.math.columbia.edu/browse -1. https://bitworking.org/news/ga/2d -1. https://www.youtube.com/watch?v=OmJ-4B-mS-Y -1. https://www.youtube.com/watch?v=ZihywtixUYo -1. https://www.youtube.com/user/njwildberger -1. http://www.hedonisticlearning.com/posts/category-theory-syntactically.html -1. https://www.youtube.com/watch?v=EA1FFtTGAfw&list=PLSekr_gm4hWLRNHB5-sbajyUzN5tLOZmx -1. https://www.artofproblemsolving.com/wiki/index.php/Modular_arithmetic/Introduction -1. [Mathematics for Computer Science](https://courses.csail.mit.edu/6.042/spring17/mcs.pdf) -1. http://www.paultaylor.eu/ASD/foufct/ -1. [Toward the Unification of Physics and Number Theory](http://www.quantumgravityresearch.org/wp-content/uploads/2017/02/Toward-the-Unification-of-Physics2-1.pdf) -1. https://jeremykun.com/2014/03/13/programming-with-finite-fields/ -1. https://courses.cs.washington.edu/courses/cse590b/13au/ -1. http://magma.maths.usyd.edu.au/magma/ -1. [A VIEW OF MATHEMATICS](http://www.alainconnes.org/docs/maths.pdf) -1. [Introduction to Tensor Analysis and the Calculus of Moving Surfaces](https://www.amazon.com/gp/product/1461478669) -1. https://en.wikipedia.org/wiki/Wheel_theory -1. http://wordsandbuttons.online/interactive_guide_to_homogeneous_coordinates.html -1. https://a-guide-to-the-purescript-numeric-hierarchy.readthedocs.io/en/latest/index.html -1. http://blog.wolfram.com/2016/12/22/the-semantic-representation-of-pure-mathematics/ -1. https://www.youtube.com/watch?v=psSyM1zp82k -1. [Viviane Pons - Experimental pure mathematics using Sage - PyCon 2015](https://www.youtube.com/watch?v=3LZiZKgVjaU) -1. http://www.sagemath.org/ -1. [The axioms of constructive geometry](https://www.sciencedirect.com/science/article/pii/0168007295000052) -1. https://www.quora.com/What-is-it-like-to-understand-advanced-mathematics-Does-it-feel-analogous-to-having-mastery-of-another-language-like-in-programming-or-linguistics/answers/873950?share=1 -1. http://www.tricki.org/tricki/map -1. https://maxow.github.io/posts/computational-geometry-set-operations-on-polytopes.html -1. http://blog.robertelder.org/fast-multiplication-using-fourier-transform/ -1. [Graphical Models in a Nutshell](https://ai.stanford.edu/~koller/Papers/Koller+al:SRL07.pdf) - diff --git a/documentation/research/math/real numbers.md b/documentation/research/math/real numbers.md deleted file mode 100644 index 2daa1873b..000000000 --- a/documentation/research/math/real numbers.md +++ /dev/null @@ -1,5 +0,0 @@ -# Reference - -1. https://blog.acolyer.org/2020/10/02/toward-an-api-for-the-real-numbers/ -1. [Towards an API for the real numbers](https://dl.acm.org/doi/abs/10.1145/3385412.3386037) - diff --git a/documentation/research/operating_system.md b/documentation/research/operating_system.md deleted file mode 100644 index 82943f024..000000000 --- a/documentation/research/operating_system.md +++ /dev/null @@ -1,281 +0,0 @@ -# Code-generation - -1. [It’s Time for a Modern Synthesis Kernel](https://blog.regehr.org/archives/1676) - -# Intepreter - -1. [Jitk: A Trustworthy In-Kernel Interpreter Infrastructure](https://css.csail.mit.edu/jitk/) - -# Architecture - -1. [TabulaROSA: Tabular Operating System Architecture for Massively Parallel Heterogeneous Compute Engines](https://arxiv.org/abs/1807.05308) - -# Graphics | Rendering - -1. [Text Rendering Hates You](https://gankra.github.io/blah/text-hates-you/) -1. https://fuchsia.googlesource.com/garnet/+/master/docs/ui/scenic.md - -# Exemplar - -## Operating system - -1. [CLOSOS: Specication of a Lisp operating system.](http://metamodular.com/lispos.pdf) -1. [CLOSOS: Specication of a Lisp operating system.](http://metamodular.com/closos.pdf) -1. https://medium.com/@jasonyuan/introducing-mercury-os-f4de45a04289 -1. http://lsneff.me/why-nebulet/ ||| https://github.com/nebulet/nebulet -1. http://exposnitc.github.io/index.html -1. https://www.gocosmos.org/ -1. http://www.microkernel.info/ -1. http://webosose.org/ -1. https://ostree.readthedocs.io/en/latest/manual/introduction/ -1. http://www.helenos.org/ -1. http://nixos.org/ -1. https://github.com/klange/toaruos -1. http://greenteapress.com/thinkos/ -1. http://kolibrios.org/en/ -1. http://menuetos.net/ -1. https://sailfishos.org/ -1. http://www.barrelfish.org/index.html -1. https://samypesse.gitbooks.io/how-to-create-an-operating-system/ -1. https://lumina-desktop.org/ -1. 2015 01 GNU Guix The Emacs of Distros &&& https://www.youtube.com/watch?v=AzebnJkfdvM -1. The Synthesis Kernel &&& https://www.usenix.org/legacy/publications/compsystems/1988/win_pu.pdf -1. http://zoo.cs.yale.edu/classes/cs422/pios -1. https://fuchsia.googlesource.com/docs/+/HEAD/book.md -1. https://externos.io/ -1. http://www.shadowdefender.com/ -1. https://pureos.net/ -1. http://progmp.net/ -1. http://www.uruk.org/emu/Taos.html -1. http://www.dickpountain.co.uk/home/computing/byte-articles/the-taos-operating-system-1991?hn -1. https://www.redox-os.org/ -1. https://system76.com/pop -1. http://habitatchronicles.com/2017/05/what-are-capabilities/ &&& ( Start reading where it says "Embedded systems" ) -1. http://genode.org/documentation/general-overview/index -1. https://camlistore.org/ -1. https://opensource.com/article/17/10/flintos -1. https://sortix.org/ -1. https://www.kickstarter.com/projects/xiki/xikihub-the-social-command-line -1. https://www.tockos.org/ -1. http://hydros-project.org/ -1. Twizzler: An Operating System for Next-Generation Memory Hierarchies &&& https://www.ssrc.ucsc.edu/Papers/ssrctr-17-01.pdf -1. http://www.includeos.org/ -1. https://harvey-os.org/ -1. https://github.com/jvburnes/node9 -1. http://unleashed-os.org/ -1. https://github.com/GreenteaOS/Greentea -1. https://xinu.cs.purdue.edu/ -1. https://browsix.org/ -1. https://github.com/frzb/coinboot -1. http://www.jbox.dk/sanos/index.htm -1. https://www.osrtos.com/ -1. [CLOSOS Specification of a Lisp operating system.](http://metamodular.com/lispos.pdf) -1. http://metamodular.com/Common-Lisp/lispos.html -1. http://riot-os.org/ -1. http://www.scs.stanford.edu/histar/ -1. http://sel4.systems/ - -## Unikernel - -1. https://hermitcore.org/2018/06/06/A-Rust-based-Unikernel/ -1. http://unikernel.org/ -1. https://xenproject.org/linux-foundation/80-developers/207-unikraft.html -1. https://fourlightyears.blogspot.com/2018/08/what-i-could-not-undiscover-about.html -1. https://mirage.io/ -1. [Unikernels: No Longer an Academic Exercise](http://250bpm.com/blog:138) -1. https://github.com/hermitcore/libhermit-rs -1. https://next.redhat.com/2018/11/14/ukl-a-unikernel-based-on-linux/ -1. https://github.com/joekoolade/JOE -1. https://ssrg-vt.github.io/hermitux/ -1. https://nanovms.com/dev/tutorials/running-forth-unikernels -1. [Unikernels: The Next Stage of Linux’s Dominance](https://www.cs.bu.edu/~jappavoo/Resources/Papers/unikernel-hotos19.pdf) -1. https://grapheneproject.io/ -1. https://ops.city/ - -## Microkernel - -1. [Snap: a Microkernel Approach to Host Networking](https://storage.googleapis.com/pub-tools-public-publication-data/pdf/36f0f9b41e969a00d75da7693571e988996c9f4c.pdf) - -## Real-time - -1. https://en.wikipedia.org/wiki/VxWorks - -# Reference - -1. [Rethinking files](https://www.devever.net/~hl/objectworld) -1. [Writing an OS in Rust (Second Edition)](https://os.phil-opp.com/) -1. https://archiveos.org/ -1. https://lwn.net/Articles/615809/ -1. https://www.tweag.io/posts/2018-03-15-bazel-nix.html -1. Type-Safe Operating System Abstractions &&& https://www.cs.dartmouth.edu/~trdata/reports/TR2004-526.pdf -1. https://www.hillelwayne.com/post/nix/ -1. https://github.com/pervognsen/bitwise -1. True parallelism, with no concept of threads - Alfred Bratterud - Meeting C++ 2017 &&& https://www.youtube.com/watch?v=9IXivbSA_5A -1. http://ccl.cse.nd.edu/software/parrot/ -1. http://greenteapress.com/wp/think-os/ -1. https://gustavus.edu/mcs/max/os-book/ -1. https://sywtwaosir.wordpress.com/ -1. https://communityblog.fedoraproject.org/modularity-dead-long-live-modularity/ -1. https://en.wikipedia.org/wiki/WinFS -1. An alternative device-tree source language &&& https://lwn.net/SubscriberLink/730217/556c557e8a3bf0a0/ -1. https://joshondesign.com/2017/08/18/idealos_essay -1. https://tuhdo.github.io/os01/ -1. https://www.usenix.org/legacy/events/usenix03/tech/full_papers/padioleau/padioleau_html/index.html -1. https://medium.com/@ifesdjeen/on-disk-io-part-3-lsm-trees-8b2da218496f -1. https://medium.com/@ifesdjeen/on-disk-storage-part-4-b-trees-30791060741 -1. http://fare.tunes.org/LispM.html -1. http://queue.acm.org/detail.cfm?id=1317400 -1. The Art of Unix Programming &&& http://www.catb.org/esr/writings/taoup/html/index.html -1. https://shivambharuka.wordpress.com/2017/10/25/arrakis-the-operating-system-is-the-control-plane/ -1. [Arrakis: The Operating System is the Control Plane](https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-peter_simon.pdf) -1. https://sortix.org/os-test/ -1. https://existentialtype.wordpress.com/2016/07/11/pclsring-in-semantics/ -1. Database/Operating System Co-Design &&& https://www.research-collection.ethz.ch/handle/20.500.11850/136 -1. YOW! Lambda Jam 2017 Brian McKenna - Nix for Functional Systems &&& https://www.youtube.com/watch?v=mIxtBVKo7JE -1. [Mouse Programming with libgpm](https://www.linuxjournal.com/article/4600) -1. https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/WritingDeviceDriver/CPluPlusRuntime/CPlusPlusRuntime.html -1. https://yarchive.net/comp/linux/everything_is_file.html -1. [Operating Systems: Three Easy Pieces](http://pages.cs.wisc.edu/~remzi/OSTEP/) -1. http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699 -1. [The Jury Is In: Monolithic OS Design Is Flawed: Microkernel-based Designs Improve Security](http://ts.data61.csiro.au/publications/csiro_full_text/Biggs_LH_18.pdf) -1. https://medium.com/@enkiv2/composability-homogeneity-and-language-based-systems-fb00e2c2458 -1. [Write your own Operating System](https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M) -1. [Light-weight Contexts: An OS Abstraction for Safety and Performance](https://people.mpi-sws.org/~druschel/publications/osdi16.pdf) -1. https://augustl.com/blog/2014/an_immutable_operating_system/ - -# Higher-Order - -1. https://www.yoctoproject.org/ - -# Formats - -1. http://iokit.racing/machotricks.pdf - -# Error-handling - -1. http://joeduffyblog.com/2016/02/07/the-error-model/ -1. https://code.fb.com/production-engineering/open-sourcing-oomd-a-new-approach-to-handling-ooms/ -1. https://os.phil-opp.com/double-fault-exceptions/ - -# Tools - -1. https://osquery.io/ -1. https://github.com/facebook/osquery - -# Shell - -1. [Magritte: A Language for Pipe-Based Programming](http://files.jneen.net/academic/thesis.pdf) -1. https://latacora.singles/2018/06/21/loud-subshells.html -1. https://github.com/ipetkov/conch-runtime -1. https://www.spinellis.gr/sw/dgsh/ - -# File-system - -1. https://medium.com/@siddontang/use-fuse-to-inject-failure-to-i-o-deb5f2e7800a -1. [Spiffy: Enabling File-System Aware Storage Applications](https://www.usenix.org/conference/fast18/presentation/sun) -1. https://github.com/bindh3x/libnicko -1. https://github.com/floyernick/fleep-py -1. https://brauner.github.io/2018/08/05/unprivileged-file-capabilities.html -1. http://louwrentius.com/the-sorry-state-of-cow-file-systems.html -1. https://www.notthewizard.com/2014/06/17/are-files-appends-really-atomic/ -1. https://medium.com/datadriveninvestor/writing-your-own-file-system-is-not-as-hard-as-you-may-think-aa4af09329cd -1. http://www.betrfs.org/ -1. https://docs.microsoft.com/en-us/windows/desktop/projfs/projected-file-system -1. [The Lustre Storage Architecture](https://arxiv.org/abs/1903.01955) - -# Shared libraries | Dynamic Loading - -1. https://amir.rachum.com/blog/2016/09/17/shared-libraries/ -1. https://www.kix.in/2008/06/19/an-alternative-to-shared-libraries/ -1. https://www.akkadia.org/drepper/no_static_linking.html -1. https://amir.rachum.com/blog/2016/09/17/shared-libraries/ - -# Packages - -1. [Piotr Gaczkowski - Nix -- the functional package manager - Lambda Days 2020](https://www.youtube.com/watch?v=6AvwC25fd_U) -1. https://snapcraft.io/ -1. https://code.fb.com/data-infrastructure/xars-a-more-efficient-open-source-system-for-self-contained-executables/ - -# System Calls - -1. [1001 Ways of Implementing a System Call](https://x86.lol/generic/2019/07/04/kernel-entry.html) -1. https://eli.thegreenplace.net/2018/basics-of-futexes/ -1. [FlexSC: Flexible System Call Scheduling with Exception-Less System Calls](https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Soares.pdf) - -# Security - -1. https://en.wikipedia.org/wiki/Reference_monitor -1. [FINE-CFI: Fine-grained Control-Flow Integrity for Operating System Kernels](http://www.cs.wayne.edu/fengwei/paper/fine-cfi-tifs18.pdf) -1. https://unsat.cs.washington.edu/projects/hyperkernel/ -1. [Capsicum](https://oshogbo.vexillium.org/blog/57/) -1. [OS-level Attacks and Defenses: from Software to Hardware-based Exploits](http://tuprints.ulb.tu-darmstadt.de/8482/1/gens_diss.pdf) -1. [Time Protection: The Missing OS Abstraction](https://ts.data61.csiro.au/publications/csiro_full_text//Ge_YCH_19.pdf) -1. [Light-weight Contexts: An OS Abstraction for Safety and Performance](https://www.usenix.org/system/files/conference/osdi16/osdi16-litton.pdf) -1. https://natsys-lab.blogspot.com/2019/05/goodbye-fast-system-calls.html - -# Driver - -1. https://blogs.windows.com/buildingapps/2018/08/15/introducing-driver-module-framework/#J6CWEbpcH0OwgWbP.97 -1. [Toward Compositional Verification of Interruptible OS Kernels and Device Drivers](http://flint.cs.yale.edu/flint/publications/device-journal.pdf) -1. [Writing Network Drivers in Haskell](https://www.net.in.tum.de/fileadmin/bibtex/publications/theses/2019-ixy-haskell.pdf) - -# Networking - -1. [Computer Networks: A Systems Approach](https://github.com/SystemsApproach/book) - -# Kernel - -1. [A new kernel polling interface](https://lwn.net/Articles/743714/) -1. [Composing Abstractions using the null-Kernel](https://people.mpi-sws.org/~dg/papers/hotosxvii.pdf) - -# I/O - -1. [The block I/O latency controller](https://lwn.net/Articles/758963/) -1. [I/O Is Faster Than the CPU – Let’s Partition Resources and Eliminate (Most) OS Abstractions](https://penberg.org/parakernel-hotos19.pdf) - -# Init System - -1. https://davmac.wordpress.com/2018/10/26/on-the-vagaries-of-init-systems/ - -# Homogeneous Operating Systems - -1. https://ecc-comp.blogspot.com/2014/12/homogeneous-operating-systems-are-better.html - -# Update System - -1. https://theupdateframework.github.io/overview.html - -# Signal - -1. http://delyan.me/code-review-signals/ - -# Daemon - -1. https://chaoticlab.io/c/c++/unix/2018/10/01/daemonize.html - -# Memory - -1. [Memory Systems and Memory-Centric Computing Systems](http://people.inf.ethz.ch/omutlu/acaces2018.html) -1. https://en.wikipedia.org/wiki/Page_replacement_algorithm -1. [Compress Objects, Not Cache Lines:An Object-Based Compressed Memory Hierarchy](https://people.csail.mit.edu/poantsai/papers/2019.zippads.asplos.pdf) - -# Hardware - -1. [There's No Such Thing as a General-purpose Processor](https://queue.acm.org/detail.cfm?id=2687011) - -# Reliability - -1. [CuriOS: Improving Reliability through Operating System Structure](http://people.cs.ksu.edu/~danielwang/Investigation/System_Security/curios.pdf) - -# Booting | Bootstrapping - -1. https://puri.sm/posts/pureboot-the-high-security-boot-process/ - -# Virtualization - -1. [virtio: Towards a De-Facto Standard For Virtual I/O Devices](https://www.ozlabs.org/~rusty/virtio-spec/virtio-paper.pdf) - -# Separation kernel - -1. [High-Assurance Separation Kernels: A Survey on Formal Methods](https://arxiv.org/abs/1701.01535) - diff --git a/documentation/research/paradigm/Ambient-Oriented Programming.md b/documentation/research/paradigm/Ambient-Oriented Programming.md deleted file mode 100644 index 4ff41ff5e..000000000 --- a/documentation/research/paradigm/Ambient-Oriented Programming.md +++ /dev/null @@ -1,5 +0,0 @@ -# Reference - -1. [Ambient-Oriented Programming in AmbientTalk](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.417.906&rep=rep1&type=pdf) -1. [Ambient-oriented programming](https://dl.acm.org/citation.cfm?id=1094867) -1. [AmbientTalk](https://en.wikipedia.org/wiki/AmbientTalk) diff --git a/documentation/research/paradigm/Answer Set Programming.md b/documentation/research/paradigm/Answer Set Programming.md deleted file mode 100644 index 089debd99..000000000 --- a/documentation/research/paradigm/Answer Set Programming.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [Introduction to Answer Set Programming (ASP)](https://lucas.bourneuf.net/blog/drafts/tuto-asp-en.html) - diff --git a/documentation/research/paradigm/Concept programming.md b/documentation/research/paradigm/Concept programming.md deleted file mode 100644 index c91489723..000000000 --- a/documentation/research/paradigm/Concept programming.md +++ /dev/null @@ -1,8 +0,0 @@ -# Language - -1. [XL (programming language)](https://en.wikipedia.org/wiki/XL_(programming_language)) -1. http://xlr.sourceforge.net/ -1. https://sourceforge.net/projects/xlr/ -1. https://github.com/c3d/xl -1. http://mozart-dev.sourceforge.net/xl.html - diff --git a/documentation/research/paradigm/flow_based_programming.md b/documentation/research/paradigm/flow_based_programming.md deleted file mode 100644 index f13969722..000000000 --- a/documentation/research/paradigm/flow_based_programming.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [Towards Separation of Concerns in Flow-Based Programming](http://orbit.dtu.dk/files/128046887/FBDSL_final.pdf) - diff --git a/documentation/research/paradigm/functional reactive programming.md b/documentation/research/paradigm/functional reactive programming.md deleted file mode 100644 index 5f97ebbec..000000000 --- a/documentation/research/paradigm/functional reactive programming.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [Explicitly Comprehensible Functional Reactive Programming](https://futureofcoding.org/papers/comprehensible-frp/comprehensible-frp.pdf) - diff --git a/documentation/research/paradigm/logic_programming.md b/documentation/research/paradigm/logic_programming.md deleted file mode 100644 index 25c059ca9..000000000 --- a/documentation/research/paradigm/logic_programming.md +++ /dev/null @@ -1,53 +0,0 @@ -# Reference - -1. https://book.simply-logical.space/ -1. [Higher-Order Logic Programming](https://www.lix.polytechnique.fr/~dale/papers/Handbook_Logic_AI_LP.pdf) -1. [HiLog: A foundation for higher-order logic programming](http://www.sciencedirect.com/science/article/pii/074310669390039J) -1. https://www.amazon.com/Reasoned-Schemer-MIT-Press-ebook/dp/B07B9SL4LR -1. [Can Logic Programming Execute as Fast as Imperative Programming?](https://www2.eecs.berkeley.edu/Pubs/TechRpts/1990/CSD-90-600.pdf) -1. [Automatic Differentiation using Constraint Handling Rules in Prolog](https://arxiv.org/abs/1706.00231) -1. [A Framework for Extending microKanren with Constraints](https://arxiv.org/pdf/1701.00633.pdf) -1. https://www.amazon.com/Clause-Effect-Programming-Working-Programmer/dp/3540629718 -1. https://medium.com/@enkiv2/mycroft-a-predicate-logic-language-overview-post-mortem-e357fe80d53 -1. http://lambda-the-ultimate.org/node/112 -1. http://okmij.org/ftp/papers/LogicT.pdf -1. https://www.researchgate.net/publication/2274015_Relational_Programming_in_Libra -1. [Monadic-style backtracking](http://www.cs.ox.ac.uk/ralf.hinze/publications/index.html) -1. [Prolog's control constructs in a functional setting - Axioms and implementation](http://www.cs.ox.ac.uk/ralf.hinze/publications/index.html) -1. [Solving Problems Declaratively - Mark Engelberg](https://www.youtube.com/watch?v=TA9DBG8x-ys) -1. http://programming-puzzler.blogspot.com/2013/03/logic-programming-is-overrated.html -1. https://gist.github.com/swannodette/3217582 -1. [AppLP: A Dialogue on Applications of Logic Programming](https://arxiv.org/pdf/1704.02375.pdf) -1. https://www.metalevel.at/prolog -1. https://www.amazon.com/Reasoned-Schemer-MIT-Press-ebook/dp/B004GEBQS6 -1. https://github.com/Web-Prolog/swi-web-prolog/blob/master/web-client/apps/swish/web-prolog.pdf -1. [Den of Clojure Build Your Own Logic Engine](https://www.youtube.com/watch?v=y1bVJOAfhKY) -1. https://eli.thegreenplace.net/2018/unification/ -1. http://boxbase.org/entries/2019/feb/11/dialogical-logic-programming/ -1. [Can logic programming execute as fast as imperative programming?](https://dl.acm.org/citation.cfm?id=128589) -1. https://synthese.wordpress.com/2010/08/21/prologs-death/ - -# Language - -1. [Curry: A Truly Integrated Functional Logic Language](https://www-ps.informatik.uni-kiel.de/currywiki/) -1. https://flix.github.io/ -1. http://logtalk.org/ -1. https://github.com/fnogatz/CHR.js -1. https://mercurylang.org/ -1. https://www.quora.com/What-are-examples-of-statically-typed-logic-programming-languages-ex-similar-to-Prolog -1. [Racklog: Prolog-Style Logic Programming](https://plt.eecs.northwestern.edu/snapshots/current/pdf-doc/racklog.pdf) -1. https://souffle-lang.github.io/ - -# Beyond logic programming - -1. https://github.com/Web-Prolog/swi-web-prolog - -# Constraint Logic Programming - -1. http://www.pathwayslms.com/swipltuts/clpfd/clpfd.html -1. https://stackabuse.com/constraint-programming-with-python-constraint/ - -# Constraint Handling Rules - -1. http://chrjs.net/ - diff --git a/documentation/research/paradigm/probabilistic_programming.md b/documentation/research/paradigm/probabilistic_programming.md deleted file mode 100644 index 8cfcc3ce9..000000000 --- a/documentation/research/paradigm/probabilistic_programming.md +++ /dev/null @@ -1,75 +0,0 @@ -# Library - -1. [Soss](https://github.com/cscherrer/Soss.jl) - -# Ranked Programming - -1. [Ranked Programming](https://github.com/tjitze/ranked-programming/blob/master/documentation/ranked_programming.pdf) -1. https://github.com/tjitze/ranked-programming - -# Inference - -1. [Gen: A general-purpose probabilistic programming system with programmable inference.](https://probcomp.github.io/Gen/) -1. [Probabilistic Programming with Programmable Inference](https://people.csail.mit.edu/rinard/paper/pldi18.pdf) -1. https://www.microsoft.com/en-us/research/blog/dowhy-a-library-for-causal-inference/ - -# Reference - -1. [An unorthodox path for implementing a probabilistic programming language](http://hyperparameter.space/blog/an-unorthodox-path-for-implementing-a-probabilistic-programming-language/) -1. [The Distribution Monad](http://blog.russelldmatt.com/2018/10/15/the-distribution-monad.html) -1. ["New programming constructs for probabilistic AI" by Marco Cusumano-Towner](https://www.youtube.com/watch?v=xNutxms6SH4) -1. [A tour of probabilistic programming language APIs](https://colcarroll.github.io/ppl-api/) -1. [Paradigms of Probabilistic Programming](https://www.youtube.com/watch?v=CmH1xxKRbiE) -1. [Anatomy of a Probabilistic Programming Framework](https://eigenfoo.xyz/prob-prog-frameworks/) -1. [Probabilistic Programming with monad‑bayes, Part 1: First Steps](https://www.tweag.io/posts/2019-09-20-monad-bayes-1.html) -1. [Probabilistic Programming with monad‑bayes, Part 2: Linear Regression](https://www.tweag.io/posts/2019-11-08-monad-bayes-2.html) -1. [FACTORIE](http://factorie.cs.umass.edu/) -1. [End-User Probabilistic Programming (DRAFT)](https://www.cs.uoregon.edu/research/summerschool/summer19/lecture_notes/DRAFT___Probabilistic_Programming_for_End_Users.pdf) -1. http://willcrichton.net/notes/probabilistic-programming-under-the-hood/ -1. [Ask HN: What companies are using probabilistic programming?](https://news.ycombinator.com/item?id=17220861) -1. https://www-forbes-com.cdn.ampproject.org/v/s/www.forbes.com/sites/quora/2018/05/18/even-the-most-advanced-computer-programmers-have-probably-never-heard-of-this-concept/amp/?amp_js_v=a1&_gsa=1#amp_tf=From%20%251%24s&share=https%3A%2F%2Fwww.forbes.com%2Fsites%2Fquora%2F2018%2F05%2F18%2Feven-the-most-advanced-computer-programmers-have-probably-never-heard-of-this-concept%2Famp%2F%23amp_tf%3DFrom%2520%25251%2524s&share=https%3A%2F%2Fwww.forbes.com%2Fsites%2Fquora%2F2018%2F05%2F18%2Feven-the-most-advanced-computer-programmers-have-probably-never-heard-of-this-concept%2F&share=https%3A%2F%2Fwww.forbes.com%2Fsites%2Fquora%2F2018%2F05%2F18%2Feven-the-most-advanced-computer-programmers-have-probably-never-heard-of-this-concept%2F -1. [Deep Probabilistic Programming Languages: A Qualitative Study](https://arxiv.org/abs/1804.06458) -1. [A Provably Correct Sampler for Probabilistic Programs](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/final.pdf) -1. [Practical Probabilistic Programming with Monads](http://mlg.eng.cam.ac.uk/pub/pdf/SciGhaGor15.pdf) -1. [Probabilistic Functional Programming in Haskell](https://web.engr.oregonstate.edu/~erwig/papers/PFP_JFP06.pdf) -1. [The Probability Monad](https://www.youtube.com/watch?v=qZ4O-1VYv4c) -1. https://www.chrisstucchio.com/blog/2016/probability_the_monad.html -1. http://dippl.org/ -1. [Deep Probabilistic Programming](https://arxiv.org/abs/1701.03757v1) -1. [Symbolic Conditioning of Arrays in Probabilistic Programs](http://homes.soic.indiana.edu/pravnar/disintegrate-arrays.pdf) -1. http://probabilistic-programming.org/wiki/Home -1. http://underscore.io/blog/posts/2016/04/21/probabilistic-programming.html -1. https://moalquraishi.wordpress.com/2015/03/29/the-state-of-probabilistic-programming/ -1. https://en.wikipedia.org/wiki/Probabilistic_programming_language -1. https://probmods.org/ -1. http://adriansampson.net/doc/ppl.html -1. http://blog.fastforwardlabs.com/2017/10/02/pp-bibliography.html -1. http://blog.fastforwardlabs.com/2017/01/30/the-algorithms-behind-probabilistic-programming.html -1. https://arxiv.org/abs/1701.03757 -1. [Typed functional probabilistic programming: ready for practical use?](https://www.youtube.com/watch?v=DGZXoi6ehwA) -1. [Generative probabilistic programming: applications and new ideas](https://www.youtube.com/watch?v=M_vG_6pq0XM) -1. [Probabilistic Programming for Programming Languages People](https://github.com/sampsyo/ppl-intro) -1. [Bayesian Methods for Hackers](https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers) -1. [An Introduction to Probabilistic Programming](https://arxiv.org/abs/1809.10756) -1. http://www.stormchecker.org/index.html -1. https://betanalpha.github.io/assets/case_studies/conditional_probability_theory.html -1. https://kaomorphism.com/2019/01/17/How-To-Predict-Any-Three-Events-More-Accurately.html -1. [Probabilistic Programming with Densities in SlicStan: Efficient, Flexible and Deterministic](https://www.youtube.com/watch?v=CXiCJ7M72Wc) - -# DSL - -1. [Embedded probabilistic domain-specific language Hakaru10 (discrete and continuous distributions, MCMC (MH) sampling)](http://okmij.org/ftp/kakuritu/Hakaru10/index.html) -1. https://github.com/p2t2/figaro -1. http://www.robots.ox.ac.uk/~fwood/anglican/ -1. [Probabilistic programming and meta-programming in Clojure - Vikash Mansinghka](https://www.youtube.com/watch?v=KLGwLkmh8gI) - -# Language - -1. [Bean Machine: A Declarative Probabilistic Programming Language For Efficient Programmable Inference](https://pgm2020.cs.aau.dk/wp-content/uploads/2020/09/tehrani20.pdf) -1. [Reactive Probabilistic Programming](https://arxiv.org/abs/1908.07563) -1. https://hakaru-dev.github.io/ -1. http://probcomp.csail.mit.edu/venture/ -1. https://github.com/tjitze/RankPL/ -1. http://turing.guru/ -1. https://eng.uber.com/pyro/ - diff --git a/documentation/research/parsing.md b/documentation/research/parsing.md deleted file mode 100644 index 1d5bac732..000000000 --- a/documentation/research/parsing.md +++ /dev/null @@ -1,5 +0,0 @@ -# Reference - -1. [Base64 encoding and decoding at almost the speed of a memory copy](https://arxiv.org/abs/1910.05109) -1. [Parsing XML at the Speed of Light](https://aosabook.org/en/posa/parsing-xml-at-the-speed-of-light.html) - diff --git a/documentation/research/programmability.md b/documentation/research/programmability.md deleted file mode 100644 index ae8af0013..000000000 --- a/documentation/research/programmability.md +++ /dev/null @@ -1,4 +0,0 @@ -# Exemplar - -1. [offerzen: Developer-driven banking, for a developer-driven world.](https://www.offerzen.com/community/investec/) - diff --git a/documentation/research/runners or comodels.md b/documentation/research/runners or comodels.md deleted file mode 100644 index 3073ff65f..000000000 --- a/documentation/research/runners or comodels.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. https://github.com/andrejbauer/coop - diff --git a/documentation/research/text_editor & ide.md b/documentation/research/text_editor & ide.md deleted file mode 100644 index 2240fac6c..000000000 --- a/documentation/research/text_editor & ide.md +++ /dev/null @@ -1,225 +0,0 @@ -# Residential programming - -1. [Residential Programming without Mutable State - Thomas Getgood](https://www.youtube.com/watch?v=Kgw9fblSOx4) - -# Good Ideas - -1. https://medium.com/@NikitaVoloboev/write-once-never-write-again-c2fa1f6c4e8 -1. [Inline: Efficient Source Code Editing and Manipulation with Code Portals](https://www.youtube.com/watch?v=NQ5h2Ibw6ck) -1. https://devclass.com/2019/02/15/atlassian-make-jira-invisible-target-developers-ides/ -1. http://lispm.de/genera-concepts -1. Hovering/selecting an input to a function inside a function-call should display the name of the input in the function declaration. This would help understand the purpose of the value while in the function call without needing Lux/the-language to have named inputs as a feature. -1. https://www.emacswiki.org/emacs/UndoTree -1. https://jameshfisher.com/2014/05/11/your-syntax-highlighter-is-wrong/ -1. https://medium.com/@evnbr/coding-in-color-3a6db2743a1e - -# Voice - -1. [Speaking in code: how to program by voice](https://www.nature.com/articles/d41586-018-05588-x) - -# Refactoring - -1. https://medium.com/zoosk-engineering/refactoring-at-scale-with-abstract-syntax-trees-a3f989ec8524 -1. https://about.sourcegraph.com/ - -# Visual programming - -1. https://github.com/ivanreese/visual-programming-codex -1. [Lambda Days 2018 - Piotr Moczurad - Visual-textual functional programming with Luna](https://www.youtube.com/watch?v=6xUOuzafmO0) -1. https://www.luna-lang.org/ -1. https://github.com/hoodiecrow/Tclook -1. https://blog.sourcerer.io/build-interactive-diagrams-with-storm-react-diagrams-f172ae26af9d -1. https://www.jointjs.com/opensource -1. https://github.com/jagenjo/litegraph.js -1. https://github.com/retejs/rete -1. http://mikehadlow.blogspot.com/2018/10/visual-programming-why-its-bad-idea.html -1. https://ncase.me/joy/ -1. https://www.jointjs.com/ -1. [Lambda World 2018 - Diagrammatic Execution Models for Functional Languages - Keynote](https://www.youtube.com/watch?v=sgmpVedCsNM) -1. http://joshuahhh.com/projects/pane/ -1. [PANE: Programming with visible data](https://www.youtube.com/watch?v=fIEcXAHy6bU) -1. https://blog.statebox.org/why-visual-programming-doesnt-suck-2c1ece2a414e -1. https://nodered.org/ - -# Reference - -1. [The Piece Table - the Unsung Hero of Your Text Editor](https://darrenburns.net/posts/piece-table/) -1. [Build Your Own Text Editor](https://viewsourcecode.org/snaptoken/kilo/) -1. [It’s 2019. Why don’t we have good code editors?](https://thoughts.thorlaksson.com/2019/09/27/its-2019-why-dont-we-have-good-code-editors/) -1. [Text Editing Hates You Too](https://lord.io/blog/2019/text-editing-hates-you-too/) -1. [Why ContentEditable is Terrible](https://medium.engineering/why-contenteditable-is-terrible-122d8a40e480) -1. [Broot: A better way to navigate directories](https://github.com/Canop/broot) -1. https://www.simplethread.com/editor-plugins-belong-in-lock-file/ -1. [How to Design an IDE-Friendly Language with Peter Gromov @donnerpeter](https://www.youtube.com/watch?v=lubc8udiP_8) -1. https://shaunlebron.github.io/parinfer/ -1. https://www.reddit.com/r/emacs/comments/6ztnj9/what_are_the_things_that_you_do_not_like_in_emacs/?st=j7kdafu2&sh=af9ca25d -1. http://xenodium.com/#emacs-utilities-for-your-os -1. https://techcrunch.com/2017/02/19/why-is-android-studio-still-such-a-gruesome-embarrassment/ -1. http://emacslife.com/ -1. http://tinyletter.com/Flowsheets/letters/flowsheets-visualizations -1. http://www.averylaird.com/programming/editor/2017/09/30/the-piece-table/ -1. [Gallery of Programmer Interfaces](https://docs.google.com/presentation/d/1MD-CgzODFWzdpnYXr8bEgysfDmb8PDV6iCAjH5JIvaI/preview?slide=id.g1da0625f1b_0_56) -1. https://spacevim.org/2017/02/11/use-vim-as-a-java-ide.html -1. https://github.com/p-e-w/envy -1. https://enotuniq.org/python_as_a_dsl.html -1. [Lambda World 2018 - What FP can learn from Smalltalk by Aditya Siram](https://www.youtube.com/watch?v=baxtyeFVn3w) -1. https://chris-martin.org/2017/loc - -# Syntax Highlighting - -1. [Syntax highlighting is backwards](https://www.benkuhn.net/syntax) -1. [Coding in color](https://medium.com/@evnbr/coding-in-color-3a6db2743a1e) -1. https://code.visualstudio.com/blogs/2017/02/08/syntax-highlighting-optimizations -1. https://github.com/alecthomas/chroma -1. https://www.crockford.com/contextcoloring.html - -# Music - -1. https://www.hooktheory.com/hookpad/app - -# Data-Structures - -1. [Data Structures for Text Sequences](https://www.cs.unm.edu/~crowley/papers/sds.pdf) - -# Shell - -1. https://masteringemacs.org/article/complete-guide-mastering-eshell -1. https://medium.com/readcomiccode/behold-z-the-unsung-jewel-that-rethinks-shell-navigation-dae262bb6bdc -1. https://gitlab.com/emacsomancer/equake -1. https://github.com/c-bata/go-prompt - -# Language Server Protocol - -1. https://tomassetti.me/language-server-dot-visual-studio/ -1. https://github.com/Microsoft/language-server-protocol/blob/master/README.md -1. https://www.ncameron.org/blog/what-the-rls-can-do/ - -# Semantic-oriented programming - -1. https://en.wikipedia.org/wiki/Semantic-oriented_programming -1. https://prezi.com/gp6u1jpgkxej/what-are-soplets/ -1. http://symade.tigris.org/ - -# Integrated Development Environment (IDE) - -1. [Theia 1.0 - Finally a Good Browser IDE](https://dev.to/svenefftinge/theia-1-0-finally-a-good-browser-ide-3ok0) -1. https://www.eclipse.org/che/ - -# Advanced AST/source-code manipulation tools - -1. https://caseywatts.com/2018/08/23/codemods.html -1. https://vimeo.com/189514610 -1. https://github.com/facebook/jscodeshift -1. http://astexplorer.net/ -1. https://github.com/avajs/ava-codemods - -# Extensibility - -1. [The Spoofax Language Workbench](https://metaborg.github.io/spoofax/) -1. [A Language Independent Task Engine for Incremental Name and Type Analysis](https://www.researchgate.net/publication/290110229_A_Language_Independent_Task_Engine_for_Incremental_Name_and_Type_Analysis) -1. [Extensible Type-Directed Editing](http://cattheory.com/extensibleTypeDirectedEditing.pdf) - -# Parsing - -1. [tree-sitter](http://tree-sitter.github.io/tree-sitter/) -1. [tree-sitter: An incremental parsing system for programming tools](https://github.com/tree-sitter/tree-sitter) -1. https://blog.github.com/2018-10-31-atoms-new-parsing-system/ -1. ["Tree-sitter - a new parsing system for programming tools" by Max Brunsfeld](https://www.youtube.com/watch?v=Jes3bD6P0To) - -# Notebook - -1. https://tiddlywiki.com/ - -# Extension - -1. https://github.com/Pext/Pext - -# Collaborative editing - -1. https://github.com/gsilvamartin/RTCode -1. https://hackernoon.com/building-conclave-a-decentralized-real-time-collaborative-text-editor-a6ab438fe79f -1. https://github.com/xi-editor/xi-editor/issues/1187 -1. [Chronofold: a data structure for versioned text](https://arxiv.org/abs/2002.09511) - -# Exemplar - -## General - -1. [Left](https://100r.co/site/left.html) -1. https://howl.io/ -1. [The Whole Code Catalog](https://futureofcoding.org/catalog/) -1. http://substance.io/ -1. https://www.querystorm.com/ -1. http://recursivedrawing.com/ -1. http://doc.cat-v.org/bell_labs/sam_lang_tutorial/sam_tut.pdf -1. https://github.com/typeintandem/tandem -1. https://github.com/atom/xray -1. http://strlen.com/treesheets/ -1. https://sekao.net/nightlight/ -1. http://cirru.org/ -1. http://www.sublimetext.com/ -1. https://atom.io/ -1. http://lighttable.com/ -1. https://www.visualstudio.com/vs/whatsnew/ -1. http://www.prototypingtools.co/ -1. https://nexttexteditor.com/ -1. https://medium.com/cirru-project/stack-editor-programming-by-functions-a961f1d9555c -1. https://github.com/Cirru/stack-editor -1. https://kclpure.kcl.ac.uk/portal/files/71018111/Frame_based_editing.pdf -1. http://reactide.io/ -1. http://jumpfm.org/ -1. https://isomorf.io/#!/ -1. http://granthika.co/ -1. https://portacle.github.io/ -1. https://quokkajs.com/ -1. https://github.com/jaredly/treed -1. https://github.com/raxod502/el-patch -1. http://www.jgrasp.org/tutorials200/jGRASP_00_Overview.pdf -1. http://codiad.com/ -1. https://github.com/sahilm/fuzzy -1. https://lively-next.org/ -1. http://www.expressionsofchange.org/ -1. https://github.com/onivim/oni -1. http://wiki.xxiivv.com/ronin -1. https://github.com/google/xi-editor -1. https://teletype.atom.io/ -1. https://github.com/martanne/vis -1. http://www.graspjs.com/ -1. http://kakoune.org/ -1. https://github.com/argimenes/standoff-properties-editor -1. https://www.conyedit.com/ -1. https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand -1. [YOW! Lambda Jam 2018 - Colin Fleming - Developing an IDE for Clojure code](https://www.youtube.com/watch?v=2sPYiGxU4kA) -1. https://github.com/shaunlebron/history-of-lisp-parens/blob/master/editors.md -1. https://www.leoeditor.com/ -1. https://storybook.js.org/ -1. https://grapesjs.com/ -1. https://two-wrongs.com/why-you-should-buy-into-the-emacs-platform -1. https://docs.slatejs.org/ -1. https://github.com/pel-daniel/mind-bicyles -1. https://github.com/metaseed/metaGo -1. https://github.com/argimenes/standoff-properties-editor -1. https://github.com/JeffreyBenjaminBrown/hode -1. https://tratt.net/laurie/blog/entries/an_editor_for_composed_programs.html -1. [Hjalfi makes smalltalk (in Javascript)](https://www.youtube.com/watch?v=JDunc6Cr7YQ) - -## Structured editing - -1. [Towards Tactic Metaprogramming in Haskell](https://reasonablypolymorphic.com/blog/towards-tactics/index.html) -1. https://github.com/Raathigesh/waypoint -1. [Going beyond regular expressions with structural code search](https://about.sourcegraph.com/blog/going-beyond-regular-expressions-with-structural-code-search) -1. [俺のlisp](https://github.com/illiichi/orenolisp) -1. [豆腐 (Tofu): meaningful code editing](https://gregoor.github.io/tofu/) -1. [Tiled Text](http://www.tiledtext.com/projects/tiledtext) -1. [Deuce: A Lightweight User Interface for Structured Editing](https://arxiv.org/abs/1707.00015) -1. ["Structured Editing for Elm* in Elm" by Ravi Chugh](https://www.youtube.com/watch?v=-TFL6E1uSHE) -1. [The TeXmacs user interface and structured text editing](https://www.youtube.com/watch?v=Sc55nOSN0kQ) - -## Tree editor - -1. http://justinpombrio.net/tree-editors/survey.html - -## Image editor - -1. https://www.ludigraphix.org/ - diff --git a/documentation/research/tool/Diff.md b/documentation/research/tool/Diff.md deleted file mode 100644 index 61bea55d8..000000000 --- a/documentation/research/tool/Diff.md +++ /dev/null @@ -1,4 +0,0 @@ -# Structural diffing - -1. [Autochrome - Structural diffs for Clojure source code](https://fazzone.github.io/autochrome.html) - diff --git a/documentation/research/tool/Notebook.md b/documentation/research/tool/Notebook.md deleted file mode 100644 index 7ec319d79..000000000 --- a/documentation/research/tool/Notebook.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. https://jupyter.org/ - diff --git a/documentation/research/tool/Search.md b/documentation/research/tool/Search.md deleted file mode 100644 index 323f9e8bb..000000000 --- a/documentation/research/tool/Search.md +++ /dev/null @@ -1,4 +0,0 @@ -# Semantic search - -1. https://github.com/returntocorp/semgrep - diff --git a/documentation/research/tool/build_system.md b/documentation/research/tool/build_system.md deleted file mode 100644 index eeeb571ce..000000000 --- a/documentation/research/tool/build_system.md +++ /dev/null @@ -1,65 +0,0 @@ -# Protocol - -1. [Build Server Protocol](https://build-server-protocol.github.io/) - -# Exemplar - -1. [Mill: A Build Tool based on Pure Functional Programming, Li Haoyi at Scala.Love 2020](https://www.youtube.com/watch?v=j6uThGxx-18) -1. [Mill: A Build Tool based on Pure Functional Programming, Li Haoyi at Scala.Love 2020](https://vimeo.com/409165552) -1. [Pier: Yet another Haskell build tool](https://www.youtube.com/watch?v=JmenfeDVi0w) -1. https://buckbuild.com/ -1. http://boot-clj.com/ -1. http://gulpjs.com/ -1. http://shakebuild.com/ -1. https://ninja-build.org/ -1. https://leiningen.org/ -1. https://github.com/janestreet/jenga -1. https://github.com/apenwarr/redo -1. https://getcook.org/ -1. https://www.python.org/dev/peps/pep-0517/ -1. https://github.com/juxt/mach -1. http://gittup.org/tup/ -1. https://github.com/apple/swift-llbuild -1. https://please.build/ -1. https://github.com/ocaml/dune -1. https://github.com/arrdem/katamari - -# Plugins - -1. https://github.com/sola-da/ConflictJS -1. https://bmuschko.com/blog/gradle-release-strategy/ - -# Packaging - -1. https://neurocline.github.io/papers/survey-of-programming-language-packaging-systems.html - -# Configuration - -1. https://hackernoon.com/configuration-files-suck-6daa9812f601 - -# Dependency - -1. https://github.com/bgard6977/depends - -# Reference - -1. [Falsehoods programmers believe about build systems](https://pozorvlak.livejournal.com/174763.html) -1. [Non-recursive Make Considered Harmful](https://ndmitchell.com/downloads/paper-non_recursive_make_considered_harmful-22_sep_2016.pdf) -1. https://www.microsoft.com/en-us/research/publication/build-systems-la-carte/ -1. [Build Systems à la Carte](https://www.youtube.com/watch?v=BQVT6wiwCxM) -1. https://medium.freecodecamp.com/how-google-builds-a-web-framework-5eeddd691dea#.1dcuob37h -1. https://www.b-list.org/weblog/2018/apr/25/lets-talk-about-packages/ -1. https://medium.com/npm-inc/announcing-npm-6-5d0b1799a905 -1. http://stackoverflow.com/questions/60764/how-should-i-load-jars-dynamically-at-runtime -1. https://github.com/rksm/flatn -1. https://manifest.fm/ -1. https://enotuniq.org/python_as_a_dsl.html -1. http://www.lihaoyi.com/post/SowhatswrongwithSBT.html -1. [Sean Larkin - Everything is a plugin!! Mastering webpack from the inside out.](https://www.youtube.com/watch?v=NHI_PhoykVU) -1. http://www.lihaoyi.com/post/BuildToolsasPureFunctionalPrograms.html -1. https://pozorvlak.livejournal.com/174763.html -1. https://www.cs.virginia.edu/~dww4s/articles/build_systems.html -1. https://ruudvanasseldonk.com/2018/09/03/build-system-insights -1. https://github.com/l3nz/say-cheez -1. https://clojurescript.org/news/2017-07-12-clojurescript-is-not-an-island-integrating-node-modules - diff --git a/documentation/research/tool/compiler.md b/documentation/research/tool/compiler.md deleted file mode 100644 index 1cfe0b5d6..000000000 --- a/documentation/research/tool/compiler.md +++ /dev/null @@ -1,4 +0,0 @@ -# Reference - -1. [Calculating Correct Compilers II: Return of the Register Machines](http://www.cs.nott.ac.uk/~pszgmh/ccc2.pdf) - diff --git a/documentation/research/transducer_stream_pipe.md b/documentation/research/transducer_stream_pipe.md deleted file mode 100644 index 5ba3f040a..000000000 --- a/documentation/research/transducer_stream_pipe.md +++ /dev/null @@ -1,28 +0,0 @@ -# Reference - -1. [zug](https://sinusoid.es/zug/) -1. https://dev.to/greencoder/build-your-own-transducer-and-impress-your-cat---part-1-mhp -1. https://functional.works-hub.com/learn/reducers-and-transducers-introductory-d0cff -1. http://beerendlauwers.be/posts/2015-12-09-transducers.html -1. https://clojure.org/reference/transducers -1. http://sickaf.xyz/2017/07/transducers -1. http://hypirion.com/musings/haskell-transducers -1. https://github.com/hyPiRion/haskell-transducers -1. https://github.com/cgrand/xforms -1. https://deque.blog/2017/07/28/implementing-clojure-like-transducers-in-idris-part-1/ -1. http://jlongster.com/Transducers.js--A-JavaScript-Library-for-Transformation-of-Data -1. https://labs.uswitch.com/transducers-from-the-ground-up-the-essence/amp/ -1. https://bendyworks.com/blog/transducers-clojures-next-big-idea -1. http://conscientiousprogrammer.com/blog/2014/08/07/understanding-cloure-transducers-through-types/ -1. [Lighting Talk - How to Write a Fast, Reducible Collection - Ghadi Shayban](https://www.youtube.com/watch?v=FjKnlzQfAPc) -1. [Lazy v. Yield: Incremental, Linear Pretty-printing](https://www.cs.indiana.edu/~sabry/papers/yield-pp.pdf) -1. https://labs.uswitch.com/transducers-from-the-ground-up-the-practice/ -1. [Continuations and Transducer Composition](http://matt.might.net/papers/might2006transducers.pdf) -1. https://deque.blog/2017/11/13/free-monads-from-basics-up-to-implementing-composable-and-effectful-stream-processing/ -1. https://www.tweag.io/posts/2018-06-21-linear-streams.html -1. [Common Lisp Study Group An Intro to SERIES](https://www.youtube.com/watch?v=uRLgZCV4bOM) -1. [Appendix A. Series](https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node347.html) -1. [YOW! Lambda Jam 2018 - Simon Belak - Transducing for fun and profit](https://www.youtube.com/watch?v=H0sSbTWxTsM) -1. https://nextjournal.com/zampino/fold -1. [Fusing Effectful Comprehensions*](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/10/fusing_effectful_comprehensions.pdf) - diff --git a/documentation/research/web_framework.md b/documentation/research/web_framework.md deleted file mode 100644 index 2e0e54977..000000000 --- a/documentation/research/web_framework.md +++ /dev/null @@ -1,158 +0,0 @@ -# Virtual DOM - -1. [Optimal Virtual DOM](https://blog.kabir.sh/posts/optimal-virtual-dom.html) - -# Input - -1. [High-performance input handling on the web](https://nolanlawson.com/2019/08/11/high-performance-input-handling-on-the-web/) - -# Reference - -1. [Line-tracking using plain CSS](https://bubblin.io/blog/line-tracking) -1. [Redux is half of a pattern (1/2)](https://dev.to/davidkpiano/redux-is-half-of-a-pattern-1-2-1hd7) -1. [Introducing Concurrent Mode (Experimental)](https://reactjs.org/docs/concurrent-mode-intro.html) -1. https://github.com/daybrush/scenejs -1. https://blog.ionicframework.com/announcing-capacitor-1-0/ -1. http://joneisen.me/talk-frelp-ui/#/ -1. http://meiosis.js.org/ -1. https://medium.com/samsung-internet-dev/disappearing-frameworks-ed921f411c38 -1. https://jasonhpriestley.com/flows -1. https://hackernoon.com/creating-a-new-programming-language-that-will-allow-anyone-to-make-software-7a8c73238dc2 -1. https://github.com/gmrchk/swup -1. https://www.brucelawson.co.uk/2018/the-practical-value-of-semantic-html/ -1. https://chanind.github.io/rails/2019/03/28/why-i-miss-rails.html -1. https://dockyard.com/blog/2018/12/12/phoenix-liveview-interactive-real-time-apps-no-need-to-write-javascript - -# Exemplar - -1. https://github.com/alpinejs/alpine -1. [Mint: The programming language for writing single page applications.](https://www.mint-lang.com/) -1. [root: A recursive UI resolver](https://github.com/den1k/root) -1. https://www.http4k.org/blog/meet_http4k/ -1. Django -1. Ruby On Rails -1. http://sailsjs.com/ -1. http://www.cerebraljs.com/ -1. http://www.christianalfoni.com/articles/2016_09_11_The-case-for-function-tree -1. https://www.infernojs.org/ -1. https://cycle.js.org/ -1. https://github.com/alixander/Stanchion -1. http://jooby.org/ -1. https://github.com/Day8/re-frame -1. https://reagent-project.github.io/ -1. https://fulcrologic.github.io/fulcro/ -1. https://www.siliconpublishing.com/blog/introducing-lotusjs -1. https://github.com/giapnguyen74/gstate -1. https://robots.thoughtbot.com/lucky-an-experimental-new-web-framework-by-thoughtbot -1. https://github.com/vuejs/vue -1. https://github.com/omcljs/om -1. http://fulcro.fulcrologic.com/index.html -1. https://github.com/vibora-io/vibora -1. https://david-peter.de/articles/flare/ -1. https://medium.com/@tirthbodawala/introducing-pawjs-a-pluggable-framework-caeef166409f -1. https://github.com/reclarejs/reclare -1. https://eng.uber.com/fusionjs/ -1. https://reactjs.org/docs/hooks-intro.html -1. https://medium.freecodecamp.org/the-virtual-dom-is-slow-meet-the-memoized-dom-bb19f546cc52 -1. http://kweb.io/ -1. https://medium.com/dailyjs/redux-without-reducers-reduxless-69afe76d9eeb -1. https://eugenkiss.github.io/7guis/ -1. https://yogalayout.com/ -1. http://www.expressionsofchange.org/reification-of-interaction/ -1. https://www.infoq.com/articles/no-more-mvc-frameworks -1. https://github.com/eugenkiss/7guis/wiki -1. https://unmanner.github.io/imaskjs/ -1. http://www.cssreflex.com/css-frameworks/ -1. https://layerjs.org/ -1. https://enactjs.com/ -1. https://frankchimero.com/writing/everything-easy-is-hard-again/ -1. https://medium.com/@eugenkiss/challenges-in-gui-programming-65d360466e3f -1. https://www.slideshare.net/lmatteis/are-statecharts-the-next-big-ui-paradigm -1. https://guide.elm-lang.org/architecture/ -1. https://skillsmatter.com/skillscasts/8717-arachne-building-a-framework-in-clojure#video -1. https://github.com/arachne-framework -1. https://github.com/duct-framework/duct -1. http://redux.js.org/ -1. https://hackernoon.com/transmission-tx-a-flux-alternative-fe0630eed2a3 -1. https://medium.com/groupon-eng/grox-the-art-of-the-state-b5223f48d696 -1. https://hackage.haskell.org/package/MFlow -1. https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/MFlowDSL -1. https://medium.com/gitconnected/react-component-patterns-ab1f09be2c82?ref=hn -1. https://www.lucidchart.com/techblog/2017/11/08/5-usage-ideas-for-angular-pipes/ -1. [David Khourshid - Infinitely Better UIs with Finite Automata](https://www.youtube.com/watch?v=VU1NKX6Qkxc) -1. https://www.silvestarbistrovic.from.hr/articles/classily-js-toggling-classes-more-classily/ -1. https://www.sitepoint.com/functional-programming-choo/ -1. https://m.alphasights.com/css-evolution-from-css-sass-bem-css-modules-to-styled-components-d4c1da3a659b#.ksank5elf -1. https://www.bassi.io/articles/2017/01/11/constraints-editing/ -1. https://github.com/threepointone/glamor -1. http://ijzerenhein.github.io/autolayout.js/ -1. https://github.com/CodeRocketCo/enhanced-rails-architecture -1. https://github.com/graphcool/graphcool -1. https://www.sitepen.com/blog/2017/08/17/state-of-modern-component-styling/ -1. https://blog.logrocket.com/advanced-vue-js-concepts-mixins-custom-directives-filters-transitions-and-state-management-ca6955905156 -1. https://underscore.io/blog/posts/2017/01/24/finch-functional-web-development.html -1. https://www.sitepoint.com/eqcss-a-javascript-plugin-to-write-element-queries/ -1. https://github.com/cognitect-labs/vase -1. http://donejs.com/ -1. https://github.com/stdlib/lib -1. https://www.hashicorp.com/blog/replacing-queues-with-nomad-dispatch.html -1. https://github.com/darkleaf/router -1. https://gist.github.com/tomhodgins/da7d8aa89d34b69e5c4120980e3945ef - -# Architecture - -1. https://jew.ski/raj/ -1. https://github.com/redux-saga/redux-saga - -# Platforms - -1. https://www.producthunt.com/posts/mason - -# State-management - -1. https://github.com/keajs/kea -1. https://github.com/isocroft/Radixx - -# Styling - -1. [Layout-isolated components](https://visly.app/blog/layout-isolated-components) -1. [Centering in CSS: A Complete Guide](https://css-tricks.com/centering-css-complete-guide/) -1. [Vertical Rhythm Reset](https://jhildenbiddle.github.io/vertical-rhythm-reset/) -1. [Cascading Scoped Style Sheets, aka CSSS, aka C3S](https://github.com/crislin2046/c3s) -1. [The importance of the CSS user-select property](https://www.malgol.com/the-importance-of-the-css-user-select-property/) -1. [Index fun](https://psuter.net/2019/07/07/z-index) -1. [Constraint layouts](https://blog.gtk.org/2019/07/02/constraint-layouts/) -1. https://every-layout.dev/ -1. https://github.com/diegohaz/reuse -1. https://wiki.csswg.org/ideas/mistakes -1. https://developer.mozilla.org/en-US/docs/Web/CSS/Layout_cookbook -1. http://www.tipue.com/blog/css-sticky/ -1. https://modalzmodalzmodalz.com/ -1. https://medium.com/@elad/new-css-logical-properties-bc6945311ce7 -1. https://css-tricks.com/browserlist-good-idea/ -1. http://tabulator.info/ -1. https://css-tricks.com/creating-non-rectangular-headers/ -1. https://github.com/callum-hart/immutable-styles -1. https://developers.google.com/web/updates/2019/02/constructable-stylesheets -1. https://nosir.github.io/cleave.js/ -1. https://blogs.igalia.com/mrego/2019/01/11/an-introduction-to-css-containment/ -1. https://medium.com/@devdevcharlie/things-nobody-ever-taught-me-about-css-5d16be8d5d0e -1. https://medium.freecodecamp.org/the-css-handbook-a-handy-guide-to-css-for-developers-b56695917d11 -1. https://css-tricks.com/look-ma-no-media-queries-responsive-layouts-using-css-grid/ - -# Design system - -1. https://ant.design/ - -# Rendering - -1. https://medium.com/@ryansolid/the-fastest-way-to-render-the-dom-e3b226b15ca3 -1. https://github.com/Famous/engine -1. https://redom.js.org/ -1. https://svelte.dev/blog/virtual-dom-is-pure-overhead - -# Database query - -1. http://slick.lightbend.com/docs/ -1. https://books.underscore.io/essential-slick/essential-slick-3.html - diff --git a/stdlib/source/lux/control/concatenative.lux b/stdlib/source/lux/control/concatenative.lux index 5f2b553d3..dabd82b7d 100644 --- a/stdlib/source/lux/control/concatenative.lux +++ b/stdlib/source/lux/control/concatenative.lux @@ -116,8 +116,8 @@ (syntax: #export (apply {arity (|> .nat (<>.filter (n.> 0)))}) (with-gensyms [g! g!func g!stack g!output] - (monad.do {@ meta.monad} - [g!inputs (|> (meta.gensym "input") (list.repeat arity) (monad.seq @))] + (monad.do {! meta.monad} + [g!inputs (|> (meta.gensym "input") (list.repeat arity) (monad.seq !))] (wrap (list (` (: (All [(~+ g!inputs) (~ g!output)] (-> (-> (~+ g!inputs) (~ g!output)) (=> [(~+ g!inputs)] [(~ g!output)]))) diff --git a/stdlib/source/lux/control/concurrency/process.lux b/stdlib/source/lux/control/concurrency/process.lux index 7a4c46856..5e1bf7c3c 100644 --- a/stdlib/source/lux/control/concurrency/process.lux +++ b/stdlib/source/lux/control/concurrency/process.lux @@ -146,7 +146,7 @@ (def: #export (run! _) (-> Any (IO Any)) - (do {@ io.monad} + (do {! io.monad} [processes (atom.read ..runner)] (case processes ## And... we're done! @@ -154,7 +154,7 @@ (wrap []) _ - (do @ + (do ! [#let [now (.nat ("lux io current-time")) [ready pending] (list.partition (function (_ process) (|> (get@ #creation process) @@ -163,8 +163,8 @@ processes)] swapped? (atom.compare-and-swap processes pending ..runner)] (if swapped? - (do @ - [_ (monad.map @ (get@ #action) ready)] + (do ! + [_ (monad.map ! (get@ #action) ready)] (run! [])) (error! (ex.construct ..cannot-continue-running-processes [])))) ))) diff --git a/stdlib/source/lux/control/function/memo.lux b/stdlib/source/lux/control/function/memo.lux index c03237cf8..324fae7d1 100644 --- a/stdlib/source/lux/control/function/memo.lux +++ b/stdlib/source/lux/control/function/memo.lux @@ -20,14 +20,14 @@ (Mixin i (State (Dictionary i o) o))) (function (_ delegate recur) (function (_ input) - (do {@ state.monad} + (do {! state.monad} [memory state.get] (case (dictionary.get input memory) (#.Some output) (wrap output) #.None - (do @ + (do ! [output (delegate input) _ (state.update (dictionary.put input output))] (wrap output))))))) diff --git a/stdlib/source/lux/control/security/capability.lux b/stdlib/source/lux/control/security/capability.lux index 485c1091c..e69493f69 100644 --- a/stdlib/source/lux/control/security/capability.lux +++ b/stdlib/source/lux/control/security/capability.lux @@ -46,10 +46,10 @@ {declaration reader.declaration} {annotations (<>.maybe reader.annotations)} {[forge input output] (.form ($_ <>.and .local-identifier .any .any))}) - (do {@ meta.monad} + (do {! meta.monad} [this-module meta.current-module-name #let [[name vars] declaration] - g!brand (:: @ map (|>> %.code code.text) + g!brand (:: ! map (|>> %.code code.text) (meta.gensym (format (%.name [this-module name])))) #let [capability (` (..Capability (.primitive (~ g!brand)) (~ input) (~ output)))]] (wrap (list (` (type: (~+ (writer.export export)) diff --git a/stdlib/source/lux/data/collection/list.lux b/stdlib/source/lux/data/collection/list.lux index 38a9bf63b..d35df1b53 100644 --- a/stdlib/source/lux/data/collection/list.lux +++ b/stdlib/source/lux/data/collection/list.lux @@ -581,13 +581,13 @@ (def: wrap (|>> (:: ..monad wrap) (:: monad wrap))) (def: (join MlMla) - (do {@ monad} + (do {! monad} [lMla MlMla ## TODO: Remove this version ASAP and use one below. lla (for {@.old (: (($ 0) (List (List ($ 1)))) - (monad.seq @ lMla))} - (monad.seq @ lMla))] + (monad.seq ! lMla))} + (monad.seq ! lMla))] (wrap (concat lla))))) (def: #export (lift monad) diff --git a/stdlib/source/lux/data/collection/stack.lux b/stdlib/source/lux/data/collection/stack.lux index 089398ca5..e9a7f8bf4 100644 --- a/stdlib/source/lux/data/collection/stack.lux +++ b/stdlib/source/lux/data/collection/stack.lux @@ -5,51 +5,61 @@ [functor (#+ Functor)]] [data [collection - ["//" list]]]]) + ["//" list]]] + [type + abstract]]) -(type: #export (Stack a) - (List a)) +(abstract: #export (Stack a) + (List a) -(def: #export empty - Stack - (list)) + (def: #export empty + Stack + (:abstraction (list))) -(def: #export size - (All [a] (-> (Stack a) Nat)) - //.size) + (def: #export size + (All [a] (-> (Stack a) Nat)) + (|>> :representation //.size)) -(def: #export empty? - (All [a] (-> (Stack a) Bit)) - //.empty?) + (def: #export empty? + (All [a] (-> (Stack a) Bit)) + (|>> :representation //.empty?)) -(def: #export (peek stack) - (All [a] (-> (Stack a) (Maybe a))) - (case stack - #.Nil - #.None - - (#.Cons value _) - (#.Some value))) - -(def: #export (pop stack) - (All [a] (-> (Stack a) (Maybe (Stack a)))) - (case stack - #.Nil - #.None + (def: #export (peek stack) + (All [a] (-> (Stack a) (Maybe a))) + (case (:representation stack) + #.Nil + #.None + + (#.Cons value _) + (#.Some value))) + + (def: #export (pop stack) + (All [a] (-> (Stack a) (Maybe [a (Stack a)]))) + (case (:representation stack) + #.Nil + #.None + + (#.Cons top stack') + (#.Some [top (:abstraction stack')]))) + + (def: #export (push value stack) + (All [a] (-> a (Stack a) (Stack a))) + (:abstraction (#.Cons value (:representation stack)))) + + (structure: #export (equivalence super) + (All [a] + (-> (Equivalence a) + (Equivalence (Stack a)))) + + (def: (= reference subject) + (:: (//.equivalence super) = (:representation reference) (:representation subject)))) + + (structure: #export functor + (Functor Stack) - (#.Cons _ stack') - (#.Some stack'))) - -(def: #export (push value stack) - (All [a] (-> a (Stack a) (Stack a))) - (#.Cons value stack)) - -(def: #export equivalence - (All [a] - (-> (Equivalence a) - (Equivalence (Stack a)))) - //.equivalence) - -(def: #export functor - (Functor Stack) - //.functor) + (def: (map f value) + (|> value + :representation + (:: //.functor map f) + :abstraction))) + ) diff --git a/stdlib/source/lux/data/collection/tree.lux b/stdlib/source/lux/data/collection/tree.lux index 612d8be49..aab50c4f3 100644 --- a/stdlib/source/lux/data/collection/tree.lux +++ b/stdlib/source/lux/data/collection/tree.lux @@ -43,14 +43,15 @@ <>.rec <>.some .record - (<>.and .any) - .tuple)) + (<>.and .any))) (syntax: #export (tree {root tree^}) {#.doc (doc "Tree literals." - (tree Int [+10 {+20 {} - +30 {} - +40 {}}]))} + (: (Tree Nat) + (tree 10 + {20 {} + 30 {} + 40 {}})))} (wrap (list (` (~ (loop [[value children] root] (` {#value (~ value) #children (list (~+ (list@map recur children)))}))))))) diff --git a/stdlib/source/lux/data/collection/tree/zipper.lux b/stdlib/source/lux/data/collection/tree/zipper.lux index d4b7ec4f6..a0b9eca9c 100644 --- a/stdlib/source/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/lux/data/collection/tree/zipper.lux @@ -9,15 +9,14 @@ [data ["." maybe ("#@." monad)] [collection - ["." list ("#@." functor fold monoid)] - ["." stack (#+ Stack)]]]] + ["." list ("#@." functor fold monoid)]]]] ["." // (#+ Tree) ("#@." functor)]) (type: #export (Zipper a) {#.doc "Tree zippers, for easy navigation and editing over trees."} {#parent (Maybe (Zipper a)) - #lefts (Stack (Tree a)) - #rights (Stack (Tree a)) + #lefts (List (Tree a)) + #rights (List (Tree a)) #node (Tree a)}) (structure: #export (equivalence ,equivalence) @@ -28,10 +27,10 @@ (and (:: (//.equivalence ,equivalence) = (get@ #node reference) (get@ #node sample)) - (:: (stack.equivalence (//.equivalence ,equivalence)) = + (:: (list.equivalence (//.equivalence ,equivalence)) = (get@ #lefts reference) (get@ #lefts sample)) - (:: (stack.equivalence (//.equivalence ,equivalence)) = + (:: (list.equivalence (//.equivalence ,equivalence)) = (get@ #rights reference) (get@ #rights sample)) (:: (maybe.equivalence (equivalence ,equivalence)) = @@ -42,8 +41,8 @@ (def: #export (zip tree) (All [a] (-> (Tree a) (Zipper a))) {#parent #.None - #lefts stack.empty - #rights stack.empty + #lefts #.Nil + #rights #.Nil #node tree}) (def: #export (unzip zipper) @@ -83,7 +82,7 @@ (#.Cons head tail) {#parent (#.Some zipper) - #lefts stack.empty + #lefts #.Nil #rights tail #node head})) @@ -203,8 +202,8 @@ (function (_ children) (list& (for {@.old (: (Tree ($ 0)) - (//.tree [value {}]))} - (//.tree [value {}])) + (//.tree value {}))} + (//.tree value {})) children)) zipper)) @@ -215,8 +214,8 @@ (list@compose children (list (for {@.old (: (Tree ($ 0)) - (//.tree [value {}]))} - (//.tree [value {}]))))) + (//.tree value {}))} + (//.tree value {}))))) zipper)) (def: #export (remove zipper) @@ -248,8 +247,8 @@ (update@ (function (_ side) (#.Cons (for {@.old (: (Tree ($ 0)) - (//.tree [value {}]))} - (//.tree [value {}])) + (//.tree value {}))} + (//.tree value {})) side)))))))] [insert-left #lefts] diff --git a/stdlib/source/lux/data/text/regex.lux b/stdlib/source/lux/data/text/regex.lux index 98d33258b..a71498055 100644 --- a/stdlib/source/lux/data/text/regex.lux +++ b/stdlib/source/lux/data/text/regex.lux @@ -83,10 +83,10 @@ (def: re-range^ (Parser Code) - (do {@ <>.monad} - [from (|> regex-char^ (:: @ map (|>> (//.nth 0) maybe.assume))) + (do {! <>.monad} + [from (|> regex-char^ (:: ! map (|>> (//.nth 0) maybe.assume))) _ (.this "-") - to (|> regex-char^ (:: @ map (|>> (//.nth 0) maybe.assume)))] + to (|> regex-char^ (:: ! map (|>> (//.nth 0) maybe.assume)))] (wrap (` (.range (~ (code.nat from)) (~ (code.nat to))))))) (def: re-char^ @@ -229,22 +229,22 @@ (def: (re-counted-quantified^ current-module) (-> Text (Parser Code)) - (do {@ <>.monad} + (do {! <>.monad} [base (re-simple^ current-module)] (.enclosed ["{" "}"] ($_ <>.either - (do @ + (do ! [[from to] (<>.and number^ (<>.after (.this ",") number^))] (wrap (` ((~! join-text^) (<>.between (~ (code.nat from)) (~ (code.nat to)) (~ base)))))) - (do @ + (do ! [limit (<>.after (.this ",") number^)] (wrap (` ((~! join-text^) (<>.at-most (~ (code.nat limit)) (~ base)))))) - (do @ + (do ! [limit (<>.before (.this ",") number^)] (wrap (` ((~! join-text^) (<>.at-least (~ (code.nat limit)) (~ base)))))) - (do @ + (do ! [limit number^] (wrap (` ((~! join-text^) (<>.exactly (~ (code.nat limit)) (~ base)))))))))) diff --git a/stdlib/source/lux/host.jvm.lux b/stdlib/source/lux/host.jvm.lux index b4260c691..87ec823d6 100644 --- a/stdlib/source/lux/host.jvm.lux +++ b/stdlib/source/lux/host.jvm.lux @@ -1166,9 +1166,9 @@ (type.class "java.lang.Object" (list))) (syntax: #export (class: - {#let [@ <>.monad]} + {#let [! <>.monad]} {im inheritance-modifier^} - {[full-class-name class-vars] (:: @ map parser.declaration ..declaration^)} + {[full-class-name class-vars] (:: ! map parser.declaration ..declaration^)} {super (<>.default $Object (class^ class-vars))} {interfaces (<>.default (list) @@ -1224,8 +1224,8 @@ [(~+ (list@map (method-def$ replacer super) methods))])))))) (syntax: #export (interface: - {#let [@ <>.monad]} - {[full-class-name class-vars] (:: @ map parser.declaration ..declaration^)} + {#let [! <>.monad]} + {[full-class-name class-vars] (:: ! map parser.declaration ..declaration^)} {supers (<>.default (list) (.tuple (<>.some (class^ class-vars))))} {annotations ..annotations^} @@ -1396,8 +1396,8 @@ (case member (^or (#ConstructorDecl [commons _]) (#MethodDecl [commons _])) (let [(^slots [#import-member-tvars #import-member-args]) commons] - (do {@ meta.monad} - [arg-inputs (monad.map @ + (do {! meta.monad} + [arg-inputs (monad.map ! (: (-> [Bit (Type Value)] (Meta [Bit Code])) (function (_ [maybe? _]) (with-gensyms [arg-name] @@ -1756,9 +1756,9 @@ (java/util/List::size [] my-list) java/lang/Character$UnicodeScript::LATIN )} - (do {@ meta.monad} + (do {! meta.monad} [kind (class-kind declaration) - =members (monad.map @ (member-import$ class-type-vars kind declaration) members)] + =members (monad.map ! (member-import$ class-type-vars kind declaration) members)] (wrap (list& (class-import$ declaration) (list@join =members))))) (syntax: #export (array {type (..type^ (list))} diff --git a/stdlib/source/lux/meta/annotation.lux b/stdlib/source/lux/meta/annotation.lux index fa412d6d0..ea47f6970 100644 --- a/stdlib/source/lux/meta/annotation.lux +++ b/stdlib/source/lux/meta/annotation.lux @@ -86,9 +86,9 @@ [(def: #export ( ann) (-> Annotation (List Text)) (maybe.default (list) - (do {@ maybe.monad} + (do {! maybe.monad} [args (..tuple (name-of ) ann)] - (monad.map @ ..parse-text args))))] + (monad.map ! ..parse-text args))))] [function-arguments #.func-args] [type-arguments #.type-args] diff --git a/stdlib/source/lux/time.lux b/stdlib/source/lux/time.lux index ecfb1edb1..18457f024 100644 --- a/stdlib/source/lux/time.lux +++ b/stdlib/source/lux/time.lux @@ -130,7 +130,7 @@ minute (to-millis duration.minute) second (to-millis duration.second) millis (to-millis duration.milli-second)] - (do {@ <>.monad} + (do {! <>.monad} [utc-hour ..parse-hour _ (.this ..separator) utc-minute ..parse-minute diff --git a/stdlib/source/lux/time/duration.lux b/stdlib/source/lux/time/duration.lux index 53312a487..f38b20ccd 100644 --- a/stdlib/source/lux/time/duration.lux +++ b/stdlib/source/lux/time/duration.lux @@ -155,17 +155,23 @@ (def: parser (Parser Duration) - (let [section (: (-> Text (Parser Nat)) - (function (_ suffix) - (|> (.many .decimal) (<>.codec nat.decimal) (<>.before (.this suffix)) (<>.default 0))))] + (let [section (: (-> Text Text (Parser Nat)) + (function (_ suffix false-suffix) + (|> (.many .decimal) + (<>.codec nat.decimal) + (<>.before (case false-suffix + "" (.this suffix) + _ (<>.after (<>.not (.this false-suffix)) + (.this suffix)))) + (<>.default 0))))] (do <>.monad [sign (<>.or (.this ..negative-sign) (.this ..positive-sign)) - days (section ..day-suffix) - hours (section hour-suffix) - minutes (section ..minute-suffix) - seconds (section ..second-suffix) - millis (section ..milli-second-suffix) + days (section ..day-suffix "") + hours (section hour-suffix "") + minutes (section ..minute-suffix ..milli-second-suffix) + seconds (section ..second-suffix "") + millis (section ..milli-second-suffix "") #let [span (|> ..empty (..merge (..scale-up days ..day)) (..merge (..scale-up hours ..hour)) diff --git a/stdlib/source/lux/time/instant.lux b/stdlib/source/lux/time/instant.lux index 5f044fa71..252fccc68 100644 --- a/stdlib/source/lux/time/instant.lux +++ b/stdlib/source/lux/time/instant.lux @@ -129,10 +129,10 @@ (def: parser (Parser Instant) - (do {@ <>.monad} - [days (:: @ map date.days date.parser) + (do {! <>.monad} + [days (:: ! map date.days date.parser) _ (.this ..date-suffix) - time (:: @ map //.to-millis //.parser) + time (:: ! map //.to-millis //.parser) _ (.this ..time-suffix)] (wrap (|> (if (i.< +0 days) (|> duration.day diff --git a/stdlib/source/lux/time/year.lux b/stdlib/source/lux/time/year.lux index 43e2181ab..3be07b2ca 100644 --- a/stdlib/source/lux/time/year.lux +++ b/stdlib/source/lux/time/year.lux @@ -109,7 +109,7 @@ (def: #export parser (Parser Year) - (do {@ <>.monad} + (do {! <>.monad} [sign (<>.or (.this "-") (wrap [])) digits (.many .decimal) raw-year (<>.codec i.decimal (wrap (text@compose "+" digits)))] diff --git a/stdlib/source/lux/tool/compiler/language/lux/generation.lux b/stdlib/source/lux/tool/compiler/language/lux/generation.lux index 8a6e0825d..64e66be2d 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/generation.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/generation.lux @@ -219,7 +219,7 @@ (def: #export (save! name code) (All [anchor expression directive] (-> Text directive (Operation anchor expression directive Any))) - (do {@ phase.monad} + (do {! phase.monad} [?buffer (extension.read (get@ #buffer))] (case ?buffer (#.Some buffer) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/case.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/case.lux index ab1cc08de..6d66678ac 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/case.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/case.lux @@ -230,7 +230,7 @@ (///////phase@wrap (_.define (..register register) ..peek-cursor)) (#/////synthesis.Bit-Fork when thenP elseP) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [then! (recur thenP) else! (.case elseP (#.Some elseP) @@ -247,9 +247,9 @@ then!)))) (#/////synthesis.I64-Fork cons) - (do {@ ///////phase.monad} - [clauses (monad.map @ (function (_ [match then]) - (do @ + (do {! ///////phase.monad} + [clauses (monad.map ! (function (_ [match then]) + (do ! [then! (recur then)] (wrap [(//runtime.i64//= (//primitive.i64 (.int match)) ..peek-cursor) @@ -259,9 +259,9 @@ (^template [ ] ( cons) - (do {@ ///////phase.monad} - [cases (monad.map @ (function (_ [match then]) - (:: @ map (|>> [(list ( match))]) (recur then))) + (do {! ///////phase.monad} + [cases (monad.map ! (function (_ [match then]) + (:: ! map (|>> [(list ( match))]) (recur then))) (#.Cons cons))] (wrap (_.switch ..peek-cursor cases diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/function.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/function.lux index 93b400c37..0f311d61b 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/function.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/function.lux @@ -30,9 +30,9 @@ (def: #export (apply generate archive [functionS argsS+]) (Generator (Application Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [functionO (generate archive functionS) - argsO+ (monad.map @ (generate archive) argsS+)] + argsO+ (monad.map ! (generate archive) argsS+)] (wrap (_.apply/* functionO argsO+)))) (def: (with-closure @self inits function-body) @@ -64,10 +64,10 @@ (def: #export (function statement expression archive [environment arity bodyS]) (-> Phase! (Generator (Abstraction Synthesis))) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [[function-name body!] (/////generation.with-new-context archive - (do @ - [scope (:: @ map ..@scope + (do ! + [scope (:: ! map ..@scope (/////generation.context archive))] (/////generation.with-anchor [1 scope] (statement expression archive bodyS)))) @@ -84,7 +84,7 @@ (_.define (..input post) (_.at (_.i32 (.int post)) @@arguments)))) initialize-self! (list.indices arity))] - environment (monad.map @ (expression archive) environment) + environment (monad.map ! (expression archive) environment) #let [[definition instantiation] (with-closure @self environment ($_ _.then (_.define @num-args (_.the "length" @@arguments)) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux index 05ac70a6a..f73decb82 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/runtime.lux @@ -85,8 +85,8 @@ (syntax: #export (with-vars {vars (s.tuple (p.some s.local-identifier))} body) - (do {@ macro.monad} - [ids (monad.seq @ (list.repeat (list.size vars) macro.count))] + (do {! macro.monad} + [ids (monad.seq ! (list.repeat (list.size vars) macro.count))] (wrap (list (` (let [(~+ (|> vars (list.zip/2 ids) (list@map (function (_ [id var]) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/structure.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/structure.lux index dee0aa051..acd36a5ba 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/structure.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/js/structure.lux @@ -23,8 +23,8 @@ (generate archive singletonS) _ - (do {@ ///////phase.monad} - [elemsT+ (monad.map @ (generate archive) elemsS+)] + (do {! ///////phase.monad} + [elemsT+ (monad.map ! (generate archive) elemsS+)] (wrap (_.array elemsT+))))) (def: #export (variant generate archive [lefts right? valueS]) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/lua/function.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/lua/function.lux index 0f440080f..8f9a4ce74 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/lua/function.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/lua/function.lux @@ -27,9 +27,9 @@ (def: #export (apply generate archive [functionS argsS+]) (Generator (Application Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [functionO (generate archive functionS) - argsO+ (monad.map @ (generate archive) argsS+)] + argsO+ (monad.map ! (generate archive) argsS+)] (wrap (_.apply/* argsO+ functionO)))) (def: #export capture @@ -45,8 +45,8 @@ (wrap (|> (_.var function-name) (_.apply/* inits)))) _ - (do {@ ///////phase.monad} - [@closure (:: @ map _.var (/////generation.gensym "closure")) + (do {! ///////phase.monad} + [@closure (:: ! map _.var (/////generation.gensym "closure")) #let [directive (_.function @closure (|> (list.enumeration inits) (list@map (|>> product.left ..capture))) @@ -62,15 +62,15 @@ (def: #export (function generate archive [environment arity bodyS]) (Generator (Abstraction Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [[function-name bodyO] (/////generation.with-new-context - (do @ - [function-name (:: @ map ///reference.artifact-name + (do ! + [function-name (:: ! map ///reference.artifact-name /////generation.context)] (/////generation.with-anchor (_.var function-name) (generate archive bodyS)))) closureO+ (: (Operation (List (Expression Any))) - (monad.map @ (:: //reference.system variable) environment)) + (monad.map ! (:: //reference.system variable) environment)) #let [function-name (///reference.artifact-name function-name) @curried (_.var "curried") arityO (|> arity .int _.int) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/lua/loop.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/lua/loop.lux index 957924e8f..f65883c4c 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/lua/loop.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/lua/loop.lux @@ -27,9 +27,9 @@ (def: #export (scope generate archive [start initsS+ bodyS]) (Generator (Scope Synthesis)) - (do {@ ///////phase.monad} - [@loop (:: @ map ..loop-name /////generation.next) - initsO+ (monad.map @ (generate archive) initsS+) + (do {! ///////phase.monad} + [@loop (:: ! map ..loop-name /////generation.next) + initsO+ (monad.map ! (generate archive) initsS+) bodyO (/////generation.with-anchor @loop (generate archive bodyS)) #let [directive (_.function @loop (|> initsS+ @@ -42,7 +42,7 @@ (def: #export (recur generate archive argsS+) (Generator (List Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [@scope /////generation.anchor - argsO+ (monad.map @ (generate archive) argsS+)] + argsO+ (monad.map ! (generate archive) argsS+)] (wrap (_.apply/* argsO+ @scope)))) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/case.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/case.lux index 34368c147..811ce3c93 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/case.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/case.lux @@ -216,13 +216,13 @@ (def: #export (case generate [valueS pathP]) (-> Phase [Synthesis Path] (Operation (Expression Any))) - (do {@ ////.monad} + (do {! ////.monad} [initG (generate valueS) pattern-matching! (pattern-matching generate pathP) @case (..gensym "case") #let [@caseG (_.global @case) @caseL (_.var @case)] - @init (:: @ map _.var (..gensym "init")) + @init (:: ! map _.var (..gensym "init")) #let [@dependencies+ (|> (case.storage pathP) (get@ #case.dependencies) set.to-list diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/function.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/function.lux index d03d4babc..58fb0a4b9 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/function.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/function.lux @@ -26,9 +26,9 @@ (def: #export (apply generate [functionS argsS+]) (-> Phase (Application Synthesis) (Operation (Expression Any))) - (do {@ ////.monad} + (do {! ////.monad} [functionG (generate functionS) - argsG+ (monad.map @ generate argsS+)] + argsG+ (monad.map ! generate argsS+)] (wrap (_.apply/* argsG+ functionG)))) (def: #export capture @@ -39,15 +39,15 @@ (def: #export (function generate [environment arity bodyS]) (-> Phase (Abstraction Synthesis) (Operation (Expression Any))) - (do {@ ////.monad} + (do {! ////.monad} [[function-name bodyG] (///.with-context - (do @ + (do ! [function-name ///.context] (///.with-anchor (_.var function-name) (generate bodyS)))) closureG+ (: (Operation (List Argument)) - (monad.map @ (|>> (:: //reference.system variable) - (:: @ map _.reference)) + (monad.map ! (|>> (:: //reference.system variable) + (:: ! map _.reference)) environment)) #let [@curried (_.var "curried") arityG (|> arity .int _.int) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/loop.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/loop.lux index 15734c737..000789484 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/loop.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/php/loop.lux @@ -22,11 +22,11 @@ (def: #export (scope generate [start initsS+ bodyS]) (-> Phase (Scope Synthesis) (Operation (Expression Any))) - (do {@ ////.monad} - [@loop (:: @ map (|>> %.nat (format "loop")) ///.next) + (do {! ////.monad} + [@loop (:: ! map (|>> %.nat (format "loop")) ///.next) #let [@loopG (_.global @loop) @loopL (_.var @loop)] - initsO+ (monad.map @ generate initsS+) + initsO+ (monad.map ! generate initsS+) bodyO (///.with-anchor @loopL (generate bodyS)) #let [directive ($_ _.then @@ -44,7 +44,7 @@ (def: #export (recur generate argsS+) (-> Phase (List Synthesis) (Operation (Expression Any))) - (do {@ ////.monad} + (do {! ////.monad} [@scope ///.anchor - argsO+ (monad.map @ generate argsS+)] + argsO+ (monad.map ! generate argsS+)] (wrap (_.apply/* argsO+ @scope)))) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/python/function.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/python/function.lux index 30f3f38fd..043941530 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/python/function.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/python/function.lux @@ -27,9 +27,9 @@ (def: #export (apply generate archive [functionS argsS+]) (Generator (Application Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [functionO (generate archive functionS) - argsO+ (monad.map @ (generate archive) argsS+)] + argsO+ (monad.map ! (generate archive) argsS+)] (wrap (_.apply/* functionO argsO+)))) (def: #export capture @@ -45,8 +45,8 @@ (wrap (_.apply/* (_.var function-name) inits))) _ - (do {@ ///////phase.monad} - [@closure (:: @ map _.var (/////generation.gensym "closure")) + (do {! ///////phase.monad} + [@closure (:: ! map _.var (/////generation.gensym "closure")) #let [directive (_.def @closure (|> (list.enumeration inits) (list@map (|>> product.left ..capture))) @@ -62,15 +62,15 @@ (def: #export (function generate archive [environment arity bodyS]) (Generator (Abstraction Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [[function-name bodyO] (/////generation.with-new-context - (do @ - [function-name (:: @ map ///reference.artifact-name + (do ! + [function-name (:: ! map ///reference.artifact-name /////generation.context)] (/////generation.with-anchor (_.var function-name) (generate archive bodyS)))) closureO+ (: (Operation (List (Expression Any))) - (monad.map @ (:: //reference.system variable) environment)) + (monad.map ! (:: //reference.system variable) environment)) #let [function-name (///reference.artifact-name function-name) @curried (_.var "curried") arityO (|> arity .int _.int) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/python/loop.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/python/loop.lux index 042cbba35..49fd86575 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/python/loop.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/python/loop.lux @@ -27,9 +27,9 @@ (def: #export (scope generate archive [start initsS+ bodyS]) (Generator (Scope Synthesis)) - (do {@ ///////phase.monad} - [@loop (:: @ map ..loop-name /////generation.next) - initsO+ (monad.map @ (generate archive) initsS+) + (do {! ///////phase.monad} + [@loop (:: ! map ..loop-name /////generation.next) + initsO+ (monad.map ! (generate archive) initsS+) bodyO (/////generation.with-anchor @loop (generate archive bodyS)) #let [directive (_.def @loop (|> initsS+ @@ -42,7 +42,7 @@ (def: #export (recur generate archive argsS+) (Generator (List Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [@scope /////generation.anchor - argsO+ (monad.map @ (generate archive) argsS+)] + argsO+ (monad.map ! (generate archive) argsS+)] (wrap (_.apply/* @scope argsO+)))) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux index 76a25d333..df8fccb33 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/ruby/function.lux @@ -27,9 +27,9 @@ (def: #export (apply generate archive [functionS argsS+]) (Generator (Application Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [functionO (generate archive functionS) - argsO+ (monad.map @ (generate archive) argsS+)] + argsO+ (monad.map ! (generate archive) argsS+)] (wrap (_.do "call" argsO+ functionO)))) (def: #export capture @@ -54,15 +54,15 @@ (def: #export (function generate archive [environment arity bodyS]) (Generator (Abstraction Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [[function-name bodyO] (/////generation.with-new-context - (do @ - [function-name (:: @ map ///reference.artifact-name + (do ! + [function-name (:: ! map ///reference.artifact-name /////generation.context)] (/////generation.with-anchor (_.local function-name) (generate archive bodyS)))) closureO+ (: (Operation (List (Expression Any))) - (monad.map @ (:: //reference.system variable) environment)) + (monad.map ! (:: //reference.system variable) environment)) #let [function-name (///reference.artifact-name function-name) @curried (_.local "curried") arityO (|> arity .int _.int) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/ruby/loop.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/ruby/loop.lux index 149e67c31..c9c68139c 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/ruby/loop.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/ruby/loop.lux @@ -27,9 +27,9 @@ (def: #export (scope generate archive [start initsS+ bodyS]) (Generator (Scope Synthesis)) - (do {@ ///////phase.monad} - [@loop (:: @ map ..loop-name /////generation.next) - initsO+ (monad.map @ (generate archive) initsS+) + (do {! ///////phase.monad} + [@loop (:: ! map ..loop-name /////generation.next) + initsO+ (monad.map ! (generate archive) initsS+) bodyO (/////generation.with-anchor @loop (generate archive bodyS))] (wrap (|> (_.return bodyO) @@ -41,7 +41,7 @@ (def: #export (recur generate archive argsS+) (Generator (List Synthesis)) - (do {@ ///////phase.monad} + (do {! ///////phase.monad} [@scope /////generation.anchor - argsO+ (monad.map @ (generate archive) argsS+)] + argsO+ (monad.map ! (generate archive) argsS+)] (wrap (_.apply/* argsO+ @scope)))) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux index a413a878a..034c72a19 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/case.lux @@ -164,8 +164,8 @@ (def: #export (case generate [valueS pathP]) (-> Phase [Synthesis Path] (Operation Computation)) - (do {@ ////.monad} + (do {! ////.monad} [valueO (generate valueS)] - (<| (:: @ map (_.let (list [@cursor (_.list/* (list valueO))] + (<| (:: ! map (_.let (list [@cursor (_.list/* (list valueO))] [@savepoint (_.list/* (list))]))) (pattern-matching generate pathP)))) diff --git a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux index d56ae6504..18a74a4a3 100644 --- a/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux +++ b/stdlib/source/lux/tool/compiler/language/lux/phase/generation/scheme/structure.lux @@ -22,8 +22,8 @@ (generate singletonS) _ - (do {@ ///.monad} - [elemsT+ (monad.map @ generate elemsS+)] + (do {! ///.monad} + [elemsT+ (monad.map ! generate elemsS+)] (wrap (_.vector/* elemsT+))))) (def: #export (variant generate [lefts right? valueS]) diff --git a/stdlib/source/lux/tool/compiler/meta/archive/artifact.lux b/stdlib/source/lux/tool/compiler/meta/archive/artifact.lux index 1619794d1..f34f72acd 100644 --- a/stdlib/source/lux/tool/compiler/meta/archive/artifact.lux +++ b/stdlib/source/lux/tool/compiler/meta/archive/artifact.lux @@ -124,15 +124,15 @@ (def: #export parser (Parser Registry) (let [category (: (Parser Category) - (do {@ <>.monad} + (do {! <>.monad} [tag .nat] (case tag - 0 (:: @ map (|>> #Anonymous) .any) - 1 (:: @ map (|>> #Definition) .text) - 2 (:: @ map (|>> #Analyser) .text) - 3 (:: @ map (|>> #Synthesizer) .text) - 4 (:: @ map (|>> #Generator) .text) - 5 (:: @ map (|>> #Directive) .text) + 0 (:: ! map (|>> #Anonymous) .any) + 1 (:: ! map (|>> #Definition) .text) + 2 (:: ! map (|>> #Analyser) .text) + 3 (:: ! map (|>> #Synthesizer) .text) + 4 (:: ! map (|>> #Generator) .text) + 5 (:: ! map (|>> #Directive) .text) _ (<>.fail (exception.construct ..invalid-category [tag])))))] (|> (.row/64 category) (:: <>.monad map (row@fold (function (_ artifact registry) diff --git a/stdlib/source/lux/tool/compiler/meta/packager/jvm.lux b/stdlib/source/lux/tool/compiler/meta/packager/jvm.lux index f4cf769eb..c807e5279 100644 --- a/stdlib/source/lux/tool/compiler/meta/packager/jvm.lux +++ b/stdlib/source/lux/tool/compiler/meta/packager/jvm.lux @@ -131,7 +131,7 @@ (def: #export (package monad file-system static archive program) (All [!] (Packager !)) - (do {@ (try.with monad)} + (do {! (try.with monad)} [cache (:share [!] {(Monad !) monad} @@ -152,7 +152,7 @@ (:: monad wrap)) #let [buffer (java/io/ByteArrayOutputStream::new (.int ..mebi-byte)) sink (java/util/jar/JarOutputStream::new buffer (..manifest program))] - sink (monad.fold @ (..write-module monad file-system static) sink order) + sink (monad.fold ! (..write-module monad file-system static) sink order) #let [_ (do-to sink (java/io/Flushable::flush) (java/io/Closeable::close))]] diff --git a/stdlib/source/lux/tool/compiler/meta/packager/script.lux b/stdlib/source/lux/tool/compiler/meta/packager/script.lux index bbbba4978..a80c28af1 100644 --- a/stdlib/source/lux/tool/compiler/meta/packager/script.lux +++ b/stdlib/source/lux/tool/compiler/meta/packager/script.lux @@ -72,7 +72,7 @@ (-> directive directive directive) (Packager !))) (function (package monad file-system static archive program) - (do {@ (try.with monad)} + (do {! (try.with monad)} [cache (!.use (:: file-system directory) [(get@ #static.target static)]) order (:: monad wrap (dependency.load-order $.key archive))] (|> order @@ -83,5 +83,5 @@ artifact.artifacts row.to-list (list@map (|>> (get@ #artifact.id))))])) - (monad.fold @ (..write-module monad file-system static sequence) header) - (:: @ map (|>> to-code encoding.to-utf8)))))) + (monad.fold ! (..write-module monad file-system static sequence) header) + (:: ! map (|>> to-code encoding.to-utf8)))))) diff --git a/stdlib/source/lux/type/abstract.lux b/stdlib/source/lux/type/abstract.lux index 0478b906e..639f58137 100644 --- a/stdlib/source/lux/type/abstract.lux +++ b/stdlib/source/lux/type/abstract.lux @@ -10,8 +10,7 @@ ["." name ("#@." codec)] ["." text ("#@." equivalence monoid)] [collection - ["." list ("#@." functor monoid)] - ["." stack (#+ Stack)]]] + ["." list ("#@." functor monoid)]]] ["." meta] [macro ["." code] @@ -21,6 +20,20 @@ ["csw" writer]]]] [type (#+ :cast)]]) +(type: Stack List) + +(def: peek + (All [a] (-> (Stack a) (Maybe a))) + list.head) + +(def: (push value stack) + (All [a] (-> a (Stack a) (Stack a))) + (#.Cons value stack)) + +(def: pop + (All [a] (-> (Stack a) (Maybe (Stack a)))) + list.tail) + (type: Scope {#name Text #type-vars (List Code) @@ -29,7 +42,7 @@ (def: scopes (Stack Scope) - stack.empty) + #.Nil) (template: (!peek ) (loop [entries ] @@ -71,7 +84,7 @@ current-scopes) #.None - (stack.peek current-scopes)) + (..peek current-scopes)) (#.Some scope) (#.Right [compiler scope]) @@ -102,12 +115,12 @@ (#.Right [exported? scopes-type scopes-anns - (stack.push scope (:coerce (Stack Scope) scopes-value))])))) + (..push scope (:coerce (Stack Scope) scopes-value))])))) (def: (push-scope [module-reference definition-reference] scope source) (-> Name Scope (List [Text Module]) (List [Text Module])) (!push source module-reference - (|> head (update@ #.definitions (push-scope-definition definition-reference scope))))) + (update@ #.definitions (push-scope-definition definition-reference scope) head))) (def: (push! scope) (-> Scope (Meta Any)) @@ -129,7 +142,7 @@ scopes-type scopes-anns (let [current-scopes (:coerce (Stack Scope) scopes-value)] - (case (stack.pop current-scopes) + (case (..pop current-scopes) (#.Some current-scopes') current-scopes' diff --git a/stdlib/source/lux/world/file.lux b/stdlib/source/lux/world/file.lux index 277a3018d..00b259c40 100644 --- a/stdlib/source/lux/world/file.lux +++ b/stdlib/source/lux/world/file.lux @@ -647,37 +647,43 @@ [(def: #export ( monad system path) (All [!] (-> (Monad !) (System !) Path (! (Try ( !))))) (do monad - [outcome (!.use (:: system ) path)] + [outcome (!.use (:: system ) path)] (case outcome (#try.Success file) (wrap (#try.Success file)) (#try.Failure error) (if (exception.match? error) - (!.use (:: system ) path) + (!.use (:: system ) path) (wrap (#try.Failure error))))))] - [get-file File create-file file ..cannot-create-file] - [get-directory Directory create-directory directory ..cannot-create-directory] + [get-file File create-file file ..cannot-find-file] + [get-directory Directory create-directory directory ..cannot-find-directory] + ) + +(template [ ] + [(def: #export ( monad system path) + (All [!] (-> (Monad !) (System !) Path (! Bit))) + (do monad + [?file (!.use (:: system ) path)] + (case ?file + (#try.Success file) + (wrap true) + + (#try.Failure _) + (wrap false))))] + + [file-exists? file] + [directory-exists? directory] ) (def: #export (exists? monad system path) (All [!] (-> (Monad !) (System !) Path (! Bit))) (do monad - [?file (!.use (:: system file) path)] - (case ?file - (#try.Success file) - (wrap true) - - (#try.Failure _) - (do monad - [?directory (!.use (:: system directory) path)] - (case ?directory - (#try.Success directory) - (wrap true) - - (#try.Failure _) - (wrap false)))))) + [verdict (..file-exists? monad system path)] + (if verdict + (wrap verdict) + (..directory-exists? monad system path)))) (type: Mock-File {#mock-last-modified Instant @@ -1118,7 +1124,7 @@ (do {! stm.monad} [|store| (stm.read store)] (case (..create-mock-directory! separator path |store|) - (#try.Success _) + (#try.Success |store|) (do ! [_ (stm.write |store| store)] (wrap (#try.Success (..mock-directory separator path store)))) diff --git a/stdlib/source/lux/world/net/http/query.lux b/stdlib/source/lux/world/net/http/query.lux index 05946c427..315872b00 100644 --- a/stdlib/source/lux/world/net/http/query.lux +++ b/stdlib/source/lux/world/net/http/query.lux @@ -20,21 +20,21 @@ (Parser Text) (p.rec (function (_ component) - (do {@ p.monad} + (do {! p.monad} [head (l.some (l.none-of "+%&;"))] ($_ p.either (p.after (p.either l.end (l.this "&")) (wrap head)) - (do @ + (do ! [_ (l.this "+") tail component] (wrap (format head " " tail))) - (do @ + (do ! [_ (l.this "%") code (|> (l.exactly 2 l.hexadecimal) (p.codec nat.hex) - (:: @ map text.from-code)) + (:: ! map text.from-code)) tail component] (wrap (format head code tail)))))))) @@ -44,14 +44,14 @@ (do p.monad [_ l.end] (wrap context)) - (do {@ p.monad} + (do {! p.monad} [key (l.some (l.none-of "=&;")) key (l.local key ..component)] - (p.either (do @ + (p.either (do ! [_ (l.this "=") value ..component] (form (dictionary.put key value context))) - (do @ + (do ! [_ ($_ p.or (l.one-of "&;") l.end)] diff --git a/stdlib/source/lux/world/shell.lux b/stdlib/source/lux/world/shell.lux index 90bdac6b1..f9f214562 100644 --- a/stdlib/source/lux/world/shell.lux +++ b/stdlib/source/lux/world/shell.lux @@ -153,12 +153,12 @@ (def: #export (execute environment command arguments) (-> Context Text (List Text) (IO (Try (Console IO)))) (`` (for {(~~ (static host.old)) - (do {@ (try.with io.monad)} - [windows? (:: @ map (|>> java/lang/String::toLowerCase ..windows?) + (do {! (try.with io.monad)} + [windows? (:: ! map (|>> java/lang/String::toLowerCase ..windows?) (java/lang/System::getProperty "os.name")) #let [builder (java/lang/ProcessBuilder::new (arguments-array (list& (sanitize-command windows? command) (list;map (sanitize-argument windows?) arguments))))] - environment (:: @ map (load-environment environment) + environment (:: ! map (load-environment environment) (java/lang/ProcessBuilder::environment builder)) process (java/lang/ProcessBuilder::start builder)] (process-console process))}))) diff --git a/stdlib/source/program/aedifex.lux b/stdlib/source/program/aedifex.lux index d8d855bd0..f3f222d90 100644 --- a/stdlib/source/program/aedifex.lux +++ b/stdlib/source/program/aedifex.lux @@ -42,23 +42,12 @@ ["#" resolution]] ["#." command ["#/." pom] + ["#/." install] ["#/." build] ["#/." test] ["#/." auto] ["#/." deploy]]]) -(def: (install! profile) - (-> /.Profile (Promise Any)) - (do promise.monad - [outcome (/local.install (file.async file.default) profile)] - (wrap (case outcome - (#try.Success _) - (log! "Successfully installed locally!") - - (#try.Failure error) - (log! (format "Could not install locally:" text.new-line - error)))))) - (def: (fetch-dependencies! profile) (-> /.Profile (Promise Any)) (do promise.monad @@ -95,7 +84,7 @@ (wrap [])) #/cli.Install - (exec (..install! profile) + (exec (/command/install.do! (file.async file.default) profile) (wrap [])) (#/cli.Deploy repository user password) diff --git a/stdlib/source/program/aedifex/command/install.lux b/stdlib/source/program/aedifex/command/install.lux new file mode 100644 index 000000000..818283cc5 --- /dev/null +++ b/stdlib/source/program/aedifex/command/install.lux @@ -0,0 +1,62 @@ +(.module: + [lux #* + [abstract + [monad (#+ do)]] + [control + ["." try (#+ Try)] + ["." exception] + [concurrency + ["." promise (#+ Promise)]] + [security + ["!" capability]]] + [data + [binary (#+ Binary)] + [text + ["%" format (#+ format)] + ["." encoding]] + [collection + ["." set]] + [format + ["." binary] + ["." tar] + ["." xml]]] + [world + ["." file (#+ Path File)]]] + [program + [compositor + ["." export]]] + ["." /// #_ + ["/" profile (#+ Profile)] + ["#." action (#+ Action)] + ["#." command (#+ Command)] + ["#." local] + ["#." pom] + ["#." artifact (#+ Artifact) + ["#/." extension]]]) + +(def: (save! system content file) + (-> (file.System Promise) Binary Path (Promise (Try Any))) + (do (try.with promise.monad) + [file (: (Promise (Try (File Promise))) + (file.get-file promise.monad system file))] + (!.use (:: file over-write) [content]))) + +(def: #export (do! system profile) + (-> (file.System Promise) (Command Any)) + (case (get@ #/.identity profile) + (#.Some identity) + (do ///action.monad + [package (export.library system (set.to-list (get@ #/.sources profile))) + repository (: (Promise (Try Path)) + (file.make-directories promise.monad system (///local.path system identity))) + #let [artifact-name (format repository (:: system separator) (///artifact.identity identity))] + _ (..save! system (binary.run tar.writer package) + (format artifact-name ///artifact/extension.lux-library)) + pom (:: promise.monad wrap (///pom.write profile)) + _ (..save! system (|> pom (:: xml.codec encode) encoding.to-utf8) + (format artifact-name ///artifact/extension.pom)) + #let [_ (log! "Successfully installed locally!")]] + (wrap [])) + + _ + (:: promise.monad wrap (exception.throw /.no-identity [])))) diff --git a/stdlib/source/program/aedifex/local.lux b/stdlib/source/program/aedifex/local.lux index 7a4cf070e..3c06f0222 100644 --- a/stdlib/source/program/aedifex/local.lux +++ b/stdlib/source/program/aedifex/local.lux @@ -58,24 +58,6 @@ (file.get-file promise.monad system file))] (!.use (:: file over-write) [content]))) -(def: #export (install system profile) - (-> (file.System Promise) Profile (Promise (Try Any))) - (case (get@ #/.identity profile) - (#.Some identity) - (do (try.with promise.monad) - [repository (: (Promise (Try Path)) - (file.make-directories promise.monad system (..path system identity))) - #let [artifact-name (format repository (:: system separator) (//artifact.identity identity))] - package (export.library system (set.to-list (get@ #/.sources profile))) - _ (..save! system (binary.run tar.writer package) - (format artifact-name //artifact/extension.lux-library)) - pom (:: promise.monad wrap (//pom.write profile))] - (..save! system (|> pom (:: xml.codec encode) encoding.to-utf8) - (format artifact-name //artifact/extension.pom))) - - _ - (:: promise.monad wrap (exception.throw /.no-identity [])))) - (def: #export (cache system [artifact type] package) (-> (file.System Promise) Dependency Package (Promise (Try Any))) (do (try.with promise.monad) diff --git a/stdlib/source/program/aedifex/shell.lux b/stdlib/source/program/aedifex/shell.lux index 5ef30cf91..0215c08da 100644 --- a/stdlib/source/program/aedifex/shell.lux +++ b/stdlib/source/program/aedifex/shell.lux @@ -44,17 +44,16 @@ (#static getRuntime [] #io java/lang/Runtime) (exec [java/lang/String #? [java/lang/String] java/io/File] #io #try java/lang/Process)) -(exception: #export (failure-to-execute-command {working-directory Text} {command Text} {error Text}) - (exception.report - ["Working Directory" (%.text working-directory)] - ["Command" (%.text command)] - ["Error" (%.text error)])) +(template [] + [(exception: #export ( {working-directory Text} {command Text} {error Text}) + (exception.report + ["Working directory" (%.text working-directory)] + ["Command" (%.text command)] + ["Error" (%.text error)]))] -(exception: #export (failure-during-command-execution {working-directory Text} {command Text} {error Text}) - (exception.report - ["Working Directory" (%.text working-directory)] - ["Command" (%.text command)] - ["Error" (%.text error)])) + [failure-to-execute-command] + [failure-during-command-execution] + ) (exception: #export (abnormal-exit {working-directory Text} {command Text} {code Int}) (exception.report diff --git a/stdlib/source/program/compositor/export.lux b/stdlib/source/program/compositor/export.lux index 468b1ef9d..00bdf6f19 100644 --- a/stdlib/source/program/compositor/export.lux +++ b/stdlib/source/program/compositor/export.lux @@ -62,9 +62,11 @@ (def: #export (export system [sources target]) (-> (file.System Promise) Export (Promise (Try Any))) - (let [package (format target (:: system separator) ..file)] - (do (try.with promise.monad) - [tar (..library system sources) - package (: (Promise (Try (file.File Promise))) - (file.get-file promise.monad system package))] - (!.use (:: package over-write) (binary.run tar.writer tar))))) + (do (try.with promise.monad) + [tar (..library system sources) + package (: (Promise (Try (file.File Promise))) + (file.get-file promise.monad system + (format target (:: system separator) ..file)))] + (|> tar + (binary.run tar.writer) + (!.use (:: package over-write))))) diff --git a/stdlib/source/test/aedifex.lux b/stdlib/source/test/aedifex.lux index c40939b47..dec078509 100644 --- a/stdlib/source/test/aedifex.lux +++ b/stdlib/source/test/aedifex.lux @@ -9,7 +9,8 @@ ["#." artifact] ["#." input] ["#." command #_ - ["#/." pom]] + ["#/." pom] + ["#/." install]] ["#." local] ["#." dependency] ["#." profile] @@ -25,6 +26,7 @@ /artifact.test /input.test /command/pom.test + /command/install.test /local.test /dependency.test /profile.test diff --git a/stdlib/source/test/aedifex/command/install.lux b/stdlib/source/test/aedifex/command/install.lux new file mode 100644 index 000000000..7f8a4557f --- /dev/null +++ b/stdlib/source/test/aedifex/command/install.lux @@ -0,0 +1,101 @@ +(.module: + [lux #* + ["_" test (#+ Test)] + [abstract + ["." monad (#+ do)]] + [control + ["." try (#+ Try) ("#@." functor)] + ["." exception] + [concurrency + ["." promise (#+ Promise)]] + [security + ["!" capability]]] + [data + ["." maybe] + ["." binary] + ["." text ("#@." equivalence) + ["%" format (#+ format)] + ["." encoding]] + [format + ["." xml]] + [collection + ["." set (#+ Set)]]] + [math + ["." random (#+ Random)]] + [world + ["." file (#+ Path File)]]] + [/// + ["@." profile]] + {#program + ["." / + ["//#" /// #_ + ["#" profile] + ["#." action] + ["#." pom] + ["#." local] + ["#." artifact + ["#/." extension]]]]}) + +(def: (make-sources! fs sources) + (-> (file.System Promise) (Set Path) (Promise (Try Any))) + (loop [sources (set.to-list sources)] + (case sources + #.Nil + (|> [] + (:: try.monad wrap) + (:: promise.monad wrap)) + + (#.Cons head tail) + (do (try.with promise.monad) + [_ (: (Promise (Try Path)) + (file.make-directories promise.monad fs head)) + _ (: (Promise (Try (File Promise))) + (file.get-file promise.monad fs (format head (:: fs separator) head ".lux")))] + (recur tail))))) + +(def: (execute! fs sample) + (-> (file.System Promise) ///.Profile (Promise (Try Any))) + (do ///action.monad + [_ (..make-sources! fs (get@ #///.sources sample)) + _ (: (Promise (Try Path)) + (file.make-directories promise.monad fs (///local.repository fs)))] + (/.do! fs sample))) + +(def: #export test + Test + (<| (_.covering /._) + (do random.monad + [sample @profile.random + #let [fs (file.mock (:: file.default separator))]] + (wrap (case (get@ #///.identity sample) + (#.Some identity) + (do {@ promise.monad} + [verdict (do ///action.monad + [_ (..execute! fs sample) + #let [artifact-path (format (///local.path fs identity) + (:: fs separator) + (///artifact.identity identity)) + library-path (format artifact-path ///artifact/extension.lux-library) + pom-path (format artifact-path ///artifact/extension.pom)] + + library-exists! (:: promise.monad map + exception.return + (file.file-exists? promise.monad fs library-path)) + pom-exists! (:: promise.monad map + exception.return + (file.file-exists? promise.monad fs pom-path))] + (wrap (and library-exists! + pom-exists!)))] + (_.claim [/.do!] + (try.default false verdict))) + + #.None + (do {@ promise.monad} + [outcome (..execute! fs sample)] + (_.claim [/.do!] + (case outcome + (#try.Success _) + false + + (#try.Failure error) + true)))))))) diff --git a/stdlib/source/test/lux/abstract/interval.lux b/stdlib/source/test/lux/abstract/interval.lux index dcfa85e73..7aea3a1c5 100644 --- a/stdlib/source/test/lux/abstract/interval.lux +++ b/stdlib/source/test/lux/abstract/interval.lux @@ -137,9 +137,9 @@ (def: location Test - (do {@ random.monad} + (do {! random.monad} [[l m r] (|> (random.set n.hash 3 random.nat) - (:: @ map (|>> set.to-list + (:: ! map (|>> set.to-list (list.sort n.<) (case> (^ (list b t1 t2)) [b t1 t2] @@ -159,9 +159,9 @@ (def: touch Test - (do {@ random.monad} + (do {! random.monad} [[b t1 t2] (|> (random.set n.hash 3 random.nat) - (:: @ map (|>> set.to-list + (:: ! map (|>> set.to-list (list.sort n.<) (case> (^ (list b t1 t2)) [b t1 t2] @@ -185,10 +185,10 @@ (def: nested Test - (do {@ random.monad} + (do {! random.monad} [some-interval ..interval [x0 x1 x2 x3] (|> (random.set n.hash 4 random.nat) - (:: @ map (|>> set.to-list + (:: ! map (|>> set.to-list (list.sort n.<) (case> (^ (list x0 x1 x2 x3)) [x0 x1 x2 x3] @@ -218,10 +218,10 @@ (def: overlap Test - (do {@ random.monad} + (do {! random.monad} [some-interval ..interval [x0 x1 x2 x3] (|> (random.set n.hash 4 random.nat) - (:: @ map (|>> set.to-list + (:: ! map (|>> set.to-list (list.sort n.<) (case> (^ (list x0 x1 x2 x3)) [x0 x1 x2 x3] diff --git a/stdlib/source/test/lux/abstract/predicate.lux b/stdlib/source/test/lux/abstract/predicate.lux index ab101ea76..cf7f4f074 100644 --- a/stdlib/source/test/lux/abstract/predicate.lux +++ b/stdlib/source/test/lux/abstract/predicate.lux @@ -31,7 +31,7 @@ (def: #export test Test (<| (_.covering /._) - (do {@ random.monad} + (do {! random.monad} [sample random.nat samples (random.list 10 random.nat) #let [equivalence (: (Equivalence (/.Predicate Nat)) @@ -46,7 +46,7 @@ (let [generator (: (Random (/.Predicate Nat)) (|> random.nat (random.filter (|>> (n.= 0) not)) - (:: @ map multiple?)))] + (:: ! map multiple?)))] ($_ _.and (_.with-cover [/.union] ($monoid.spec equivalence /.union generator)) diff --git a/stdlib/source/test/lux/control/continuation.lux b/stdlib/source/test/lux/control/continuation.lux index 0b0538745..99b56cfdc 100644 --- a/stdlib/source/test/lux/control/continuation.lux +++ b/stdlib/source/test/lux/control/continuation.lux @@ -48,10 +48,10 @@ (n.= sample (/.run (_@wrap sample)))) (_.cover [/.call/cc] (n.= (n.* 2 sample) - (/.run (do {@ /.monad} + (/.run (do {! /.monad} [value (/.call/cc (function (_ k) - (do @ + (do ! [temp (k sample)] ## If this code where to run, ## the output would be @@ -76,9 +76,9 @@ (_@wrap #.Nil) (#.Cons x xs') - (do {@ /.monad} + (do {! /.monad} [output (/.shift (function (_ k) - (do @ + (do ! [tail (k xs')] (wrap (#.Cons x tail)))))] (visit output)))))] diff --git a/stdlib/source/test/lux/control/parser/synthesis.lux b/stdlib/source/test/lux/control/parser/synthesis.lux index dc341a44f..4d6a359da 100644 --- a/stdlib/source/test/lux/control/parser/synthesis.lux +++ b/stdlib/source/test/lux/control/parser/synthesis.lux @@ -51,10 +51,10 @@ (def: random-environment (Random (Environment Synthesis)) - (do {@ random.monad} - [size (:: @ map (n.% 5) random.nat)] + (do {! random.monad} + [size (:: ! map (n.% 5) random.nat)] (|> ..random-variable - (:: @ map (|>> synthesis.variable)) + (:: ! map (|>> synthesis.variable)) (random.list size)))) (def: valid-frac @@ -65,7 +65,7 @@ Test (`` ($_ _.and (~~ (template [ ] - [(do {@ random.monad} + [(do {! random.monad} [expected dummy (|> (random.filter (|>> (:: = expected) not)))] ($_ _.and @@ -81,7 +81,7 @@ (exception.match? /.cannot-parse error))))))))] [/.bit /.bit! random.bit synthesis.bit bit.equivalence] - [/.i64 /.i64! (:: @ map .i64 random.nat) synthesis.i64 i64.equivalence] + [/.i64 /.i64! (:: ! map .i64 random.nat) synthesis.i64 i64.equivalence] [/.f64 /.f64! ..valid-frac synthesis.f64 frac.equivalence] [/.text /.text! (random.unicode 1) synthesis.text text.equivalence] [/.local /.local! random.nat synthesis.variable/local n.equivalence] @@ -93,9 +93,9 @@ (def: complex Test ($_ _.and - (do {@ random.monad} + (do {! random.monad} [expected-bit random.bit - expected-i64 (:: @ map .i64 random.nat) + expected-i64 (:: ! map .i64 random.nat) expected-f64 ..valid-frac expected-text (random.unicode 1)] (_.cover [/.tuple] @@ -113,7 +113,7 @@ (list (synthesis.text expected-text))) (!expect (^multi (#try.Failure error) (exception.match? /.cannot-parse error))))))) - (do {@ random.monad} + (do {! random.monad} [arity random.nat expected-environment ..random-environment expected-body (random.unicode 1)] @@ -140,8 +140,8 @@ (<| (_.covering /._) (_.with-cover [/.Parser]) ($_ _.and - (do {@ random.monad} - [expected (:: @ map (|>> synthesis.i64) random.nat)] + (do {! random.monad} + [expected (:: ! map (|>> synthesis.i64) random.nat)] (_.cover [/.run /.any] (|> (/.run /.any (list expected)) (!expect (^multi (#try.Success actual) @@ -150,22 +150,22 @@ (|> (/.run /.any (list)) (!expect (^multi (#try.Failure error) (exception.match? /.empty-input error))))) - (do {@ random.monad} - [expected (:: @ map (|>> synthesis.i64) random.nat)] + (do {! random.monad} + [expected (:: ! map (|>> synthesis.i64) random.nat)] (_.cover [/.unconsumed-input] (|> (/.run /.any (list expected expected)) (!expect (^multi (#try.Failure error) (exception.match? /.unconsumed-input error)))))) - (do {@ random.monad} - [dummy (:: @ map (|>> synthesis.i64) random.nat)] + (do {! random.monad} + [dummy (:: ! map (|>> synthesis.i64) random.nat)] (_.cover [/.end! /.expected-empty-input] (and (|> (/.run /.end! (list)) (!expect (#try.Success _))) (|> (/.run /.end! (list dummy)) (!expect (^multi (#try.Failure error) (exception.match? /.expected-empty-input error))))))) - (do {@ random.monad} - [dummy (:: @ map (|>> synthesis.i64) random.nat)] + (do {! random.monad} + [dummy (:: ! map (|>> synthesis.i64) random.nat)] (_.cover [/.end?] (and (|> (/.run /.end? (list)) (!expect (#try.Success #1))) diff --git a/stdlib/source/test/lux/control/pipe.lux b/stdlib/source/test/lux/control/pipe.lux index 1efc39cbc..247ae8be4 100644 --- a/stdlib/source/test/lux/control/pipe.lux +++ b/stdlib/source/test/lux/control/pipe.lux @@ -17,10 +17,10 @@ (def: #export test Test (<| (_.covering /._) - (do {@ random.monad} + (do {! random.monad} [sample random.nat] ($_ _.and - (do @ + (do ! [another random.nat] (_.cover [/.new>] (n.= (inc another) diff --git a/stdlib/source/test/lux/data/binary.lux b/stdlib/source/test/lux/data/binary.lux index c011df720..d3bd06b58 100644 --- a/stdlib/source/test/lux/data/binary.lux +++ b/stdlib/source/test/lux/data/binary.lux @@ -77,12 +77,12 @@ (def: #export test Test (<| (_.covering /._) - (do {@ random.monad} - [#let [gen-size (|> random.nat (:: @ map (|>> (n.% 100) (n.max 8))))] + (do {! random.monad} + [#let [gen-size (|> random.nat (:: ! map (|>> (n.% 100) (n.max 8))))] size gen-size sample (..random size) value random.nat - #let [gen-idx (|> random.nat (:: @ map (n.% size)))] + #let [gen-idx (|> random.nat (:: ! map (n.% size)))] [from to] (random.and gen-idx gen-idx) #let [[from to] [(n.min from to) (n.max from to)]]] (_.with-cover [/.Binary] diff --git a/stdlib/source/test/lux/data/collection/array.lux b/stdlib/source/test/lux/data/collection/array.lux index 4cd81db10..e09e502bc 100644 --- a/stdlib/source/test/lux/data/collection/array.lux +++ b/stdlib/source/test/lux/data/collection/array.lux @@ -35,7 +35,7 @@ Test (<| (_.covering /._) (_.with-cover [/.Array]) - (do {@ random.monad} + (do {! random.monad} [size ..bounded-size base random.nat shift random.nat @@ -109,8 +109,8 @@ _ false))) - (do @ - [occupancy (:: @ map (n.% (inc size)) random.nat)] + (do ! + [occupancy (:: ! map (n.% (inc size)) random.nat)] (_.cover [/.occupancy /.vacancy] (let [the-array (loop [output (: (Array Nat) (/.new size)) @@ -122,15 +122,15 @@ (and (n.= occupancy (/.occupancy the-array)) (n.= size (n.+ (/.occupancy the-array) (/.vacancy the-array))))))) - (do @ + (do ! [the-list (random.list size random.nat)] (_.cover [/.from-list /.to-list] (and (|> the-list /.from-list /.to-list (:: (list.equivalence n.equivalence) = the-list)) (|> the-array /.to-list /.from-list (:: (/.equivalence n.equivalence) = the-array))))) - (do @ - [amount (:: @ map (n.% (inc size)) random.nat)] + (do ! + [amount (:: ! map (n.% (inc size)) random.nat)] (_.cover [/.copy!] (let [copy (: (Array Nat) (/.new size))] @@ -150,7 +150,7 @@ (and (n.= (list.size evens) (/.occupancy the-array)) (n.= (list.size odds) (/.vacancy the-array)) (|> the-array /.to-list (:: (list.equivalence n.equivalence) = evens)))))) - (do @ + (do ! [#let [the-array (/.clone the-array) members (|> the-array /.to-list (set.from-list n.hash))] default (random.filter (function (_ value) diff --git a/stdlib/source/test/lux/data/collection/bits.lux b/stdlib/source/test/lux/data/collection/bits.lux index cadd2d26d..a31fec37c 100644 --- a/stdlib/source/test/lux/data/collection/bits.lux +++ b/stdlib/source/test/lux/data/collection/bits.lux @@ -22,12 +22,12 @@ (def: #export random (Random Bits) - (do {@ random.monad} - [size (:: @ map (n.% 1,000) random.nat)] + (do {! random.monad} + [size (:: ! map (n.% 1,000) random.nat)] (case size 0 (wrap /.empty) - _ (do {@ random.monad} - [idx (|> random.nat (:: @ map (n.% size)))] + _ (do {! random.monad} + [idx (|> random.nat (:: ! map (n.% size)))] (wrap (/.set idx /.empty)))))) (def: #export test @@ -47,9 +47,9 @@ (_.cover [/.empty] (/.empty? /.empty)) - (do {@ random.monad} - [size (:: @ map (|>> (n.% 1,000) inc) random.nat) - idx (:: @ map (n.% size) random.nat) + (do {! random.monad} + [size (:: ! map (|>> (n.% 1,000) inc) random.nat) + idx (:: ! map (n.% size) random.nat) sample ..random] ($_ _.and (_.cover [/.get /.set] diff --git a/stdlib/source/test/lux/data/collection/dictionary/ordered.lux b/stdlib/source/test/lux/data/collection/dictionary/ordered.lux index f45f1d0d4..e396dd81a 100644 --- a/stdlib/source/test/lux/data/collection/dictionary/ordered.lux +++ b/stdlib/source/test/lux/data/collection/dictionary/ordered.lux @@ -40,8 +40,8 @@ (def: #export test Test (<| (_.context (%.name (name-of /.Dictionary))) - (do {@ r.monad} - [size (|> r.nat (:: @ map (n.% 100))) + (do {! r.monad} + [size (|> r.nat (:: ! map (n.% 100))) keys (r.set n.hash size r.nat) values (r.set n.hash size r.nat) extra-key (|> r.nat (r.filter (|>> (set.member? keys) not))) diff --git a/stdlib/source/test/lux/data/collection/list.lux b/stdlib/source/test/lux/data/collection/list.lux index 92cec10e8..a81de6c24 100644 --- a/stdlib/source/test/lux/data/collection/list.lux +++ b/stdlib/source/test/lux/data/collection/list.lux @@ -39,11 +39,11 @@ (def: random (Random (List Nat)) - (do {@ random.monad} + (do {! random.monad} [size ..bounded-size] (|> random.nat (random.set n.hash size) - (:: @ map set.to-list)))) + (:: ! map set.to-list)))) (def: signatures Test @@ -61,7 +61,7 @@ (_.with-cover [/.monad] ($monad.spec /@wrap /.equivalence /.monad)) - (do {@ random.monad} + (do {! random.monad} [parameter random.nat subject random.nat] (let [lift (/.lift io.monad) @@ -81,10 +81,10 @@ (def: whole Test - (do {@ random.monad} + (do {! random.monad} [size ..bounded-size #let [(^open "/@.") (/.equivalence n.equivalence)] - sample (:: @ map set.to-list (random.set n.hash size random.nat))] + sample (:: ! map set.to-list (random.set n.hash size random.nat))] ($_ _.and (_.cover [/.size] (n.= size (/.size sample))) @@ -127,7 +127,7 @@ Test (let [(^open "/@.") (/.equivalence n.equivalence) (^open "/@.") /.functor] - (do {@ random.monad} + (do {! random.monad} [sample ..random #let [size (/.size sample)]] ($_ _.and @@ -176,11 +176,11 @@ Test (let [(^open "/@.") (/.equivalence n.equivalence) (^open "/@.") /.monoid] - (do {@ random.monad} + (do {! random.monad} [sample ..random #let [size (/.size sample)] - idx (:: @ map (n.% size) random.nat) - chunk-size (:: @ map (|>> (n.% size) inc) random.nat)] + idx (:: ! map (n.% size) random.nat) + chunk-size (:: ! map (|>> (n.% size) inc) random.nat)] ($_ _.and (_.cover [/.filter] (let [positives (/.filter n.even? sample) @@ -223,7 +223,7 @@ (def: member Test (let [(^open "/@.") (/.equivalence n.equivalence)] - (do {@ random.monad} + (do {! random.monad} [sample ..random] (`` ($_ _.and (_.cover [/.member?] @@ -270,7 +270,7 @@ +/3 (: (-> Nat Nat Nat Nat) (function (_ left mid right) ($_ n.+ left mid right)))] - (do {@ random.monad} + (do {! random.monad} [sample/0 ..random sample/1 ..random sample/2 ..random] @@ -352,7 +352,7 @@ (if (n.even? value) (#.Some (:: n.decimal encode value)) #.None)))] - (do {@ random.monad} + (do {! random.monad} [sample ..random] ($_ _.and (_.cover [/.one] @@ -390,7 +390,7 @@ (_.with-cover [.List]) (let [(^open "/@.") (/.equivalence n.equivalence) (^open "/@.") /.functor] - (do {@ random.monad} + (do {! random.monad} [sample ..random separator random.nat] ($_ _.and diff --git a/stdlib/source/test/lux/data/collection/queue.lux b/stdlib/source/test/lux/data/collection/queue.lux index f646fd82a..9cc7c4500 100644 --- a/stdlib/source/test/lux/data/collection/queue.lux +++ b/stdlib/source/test/lux/data/collection/queue.lux @@ -28,8 +28,8 @@ Test (<| (_.covering /._) (_.with-cover [/.Queue]) - (do {@ random.monad} - [size (:: @ map (n.% 100) random.nat) + (do {! random.monad} + [size (:: ! map (n.% 100) random.nat) members (random.set n.hash size random.nat) non-member (random.filter (|>> (set.member? members) not) random.nat) diff --git a/stdlib/source/test/lux/data/collection/queue/priority.lux b/stdlib/source/test/lux/data/collection/queue/priority.lux index 7f9b42046..555214148 100644 --- a/stdlib/source/test/lux/data/collection/queue/priority.lux +++ b/stdlib/source/test/lux/data/collection/queue/priority.lux @@ -15,10 +15,10 @@ (def: #export (queue size) (-> Nat (Random (Queue Nat))) - (do {@ r.monad} + (do {! r.monad} [inputs (r.list size r.nat)] - (monad.fold @ (function (_ head tail) - (do @ + (monad.fold ! (function (_ head tail) + (do ! [priority r.nat] (wrap (/.push priority head tail)))) /.empty @@ -27,8 +27,8 @@ (def: #export test Test (<| (_.context (%.name (name-of /.Queue))) - (do {@ r.monad} - [size (|> r.nat (:: @ map (n.% 100))) + (do {! r.monad} + [size (|> r.nat (:: ! map (n.% 100))) sample (..queue size) non-member-priority r.nat non-member (|> r.nat (r.filter (|>> (/.member? n.equivalence sample) not)))] diff --git a/stdlib/source/test/lux/data/collection/row.lux b/stdlib/source/test/lux/data/collection/row.lux index e096c9085..716b03168 100644 --- a/stdlib/source/test/lux/data/collection/row.lux +++ b/stdlib/source/test/lux/data/collection/row.lux @@ -28,8 +28,8 @@ (def: signatures Test - (do {@ random.monad} - [size (:: @ map (n.% 100) random.nat)] + (do {! random.monad} + [size (:: ! map (n.% 100) random.nat)] ($_ _.and (_.with-cover [/.equivalence] ($equivalence.spec (/.equivalence n.equivalence) (random.row size random.nat))) @@ -47,8 +47,8 @@ (def: whole Test - (do {@ random.monad} - [size (:: @ map (n.% 100) random.nat) + (do {! random.monad} + [size (:: ! map (n.% 100) random.nat) sample (random.set n.hash size random.nat) #let [sample (|> sample set.to-list /.from-list)] #let [(^open "/@.") (/.equivalence n.equivalence)]] @@ -80,11 +80,11 @@ (def: index-based Test - (do {@ random.monad} - [size (:: @ map (|>> (n.% 100) inc) random.nat)] + (do {! random.monad} + [size (:: ! map (|>> (n.% 100) inc) random.nat)] ($_ _.and - (do @ - [good-index (|> random.nat (:: @ map (n.% size))) + (do ! + [good-index (|> random.nat (:: ! map (n.% size))) #let [bad-index (n.+ size good-index)] sample (random.set n.hash size random.nat) non-member (random.filter (|>> (set.member? sample) not) @@ -133,21 +133,21 @@ Test (<| (_.covering /._) (_.with-cover [/.Row]) - (do {@ random.monad} - [size (:: @ map (|>> (n.% 100) inc) random.nat)] + (do {! random.monad} + [size (:: ! map (|>> (n.% 100) inc) random.nat)] ($_ _.and ..signatures ..whole ..index-based - (do @ + (do ! [sample (random.set n.hash size random.nat) non-member (random.filter (|>> (set.member? sample) not) random.nat) #let [sample (|> sample set.to-list /.from-list)] #let [(^open "/@.") (/.equivalence n.equivalence)]] ($_ _.and - (do @ + (do ! [value/0 random.nat value/1 random.nat value/2 random.nat] diff --git a/stdlib/source/test/lux/data/collection/sequence.lux b/stdlib/source/test/lux/data/collection/sequence.lux index 3cd41c4b2..ad1dd0448 100644 --- a/stdlib/source/test/lux/data/collection/sequence.lux +++ b/stdlib/source/test/lux/data/collection/sequence.lux @@ -36,11 +36,11 @@ (<| (_.covering /._) (_.with-cover [/.Sequence]) (let [(^open "list@.") (list.equivalence n.equivalence)]) - (do {@ random.monad} + (do {! random.monad} [repeated random.nat - index (:: @ map (n.% 100) random.nat) - size (:: @ map (|>> (n.% 10) inc) random.nat) - offset (:: @ map (n.% 100) random.nat) + index (:: ! map (n.% 100) random.nat) + size (:: ! map (|>> (n.% 10) inc) random.nat) + offset (:: ! map (n.% 100) random.nat) cycle-start random.nat cycle-next (random.list size random.nat)] ($_ _.and diff --git a/stdlib/source/test/lux/data/collection/set/ordered.lux b/stdlib/source/test/lux/data/collection/set/ordered.lux index 867fa4308..335eb0226 100644 --- a/stdlib/source/test/lux/data/collection/set/ordered.lux +++ b/stdlib/source/test/lux/data/collection/set/ordered.lux @@ -46,11 +46,11 @@ ($_ _.and ($equivalence.spec /.equivalence (..set n.order r.nat size)) )) - (do {@ r.monad} + (do {! r.monad} [sizeL gen-nat sizeR gen-nat - listL (|> (r.set n.hash sizeL gen-nat) (:: @ map //.to-list)) - listR (|> (r.set n.hash sizeR gen-nat) (:: @ map //.to-list)) + listL (|> (r.set n.hash sizeL gen-nat) (:: ! map //.to-list)) + listR (|> (r.set n.hash sizeR gen-nat) (:: ! map //.to-list)) #let [(^open "/@.") /.equivalence setL (/.from-list n.order listL) setR (/.from-list n.order listR) diff --git a/stdlib/source/test/lux/data/collection/stack.lux b/stdlib/source/test/lux/data/collection/stack.lux index a8a2ceeeb..80b7fce63 100644 --- a/stdlib/source/test/lux/data/collection/stack.lux +++ b/stdlib/source/test/lux/data/collection/stack.lux @@ -1,6 +1,5 @@ (.module: [lux #* - ["%" data/text/format (#+ format)] ["_" test (#+ Test)] [abstract [monad (#+ do)] @@ -10,10 +9,11 @@ ["$." functor (#+ Injection)]]}] [data ["." maybe] + ["." bit ("#@." equivalence)] [number ["n" nat]]] [math - ["r" random]]] + ["." random]]] {1 ["." /]}) @@ -21,48 +21,49 @@ (Injection /.Stack) (/.push value /.empty)) -(def: gen-nat - (r.Random Nat) - (|> r.nat - (:: r.monad map (n.% 100)))) - (def: #export test Test - (<| (_.context (%.name (name-of /._))) - (do r.monad - [size gen-nat - sample (r.stack size gen-nat) - new-top gen-nat] + (<| (_.covering /._) + (_.with-cover [/.Stack]) + (do random.monad + [size (:: random.monad map (n.% 100) random.nat) + sample (random.stack size random.nat) + expected-top random.nat] ($_ _.and - ($equivalence.spec (/.equivalence n.equivalence) (r.stack size r.nat)) - ($functor.spec ..injection /.equivalence /.functor) + (_.with-cover [/.equivalence] + ($equivalence.spec (/.equivalence n.equivalence) (random.stack size random.nat))) + (_.with-cover [/.functor] + ($functor.spec ..injection /.equivalence /.functor)) - (_.test (%.name (name-of /.size)) - (n.= size (/.size sample))) - (_.test (%.name (name-of /.peek)) - (case (/.peek sample) - #.None (/.empty? sample) - (#.Some _) (not (/.empty? sample)))) - (_.test (%.name (name-of /.pop)) - (case (/.size sample) - 0 (case (/.pop sample) - #.None - (/.empty? sample) - - (#.Some _) - false) - expected (case (/.pop sample) - (#.Some sample') - (and (n.= (dec expected) (/.size sample')) - (not (/.empty? sample))) - - #.None - false))) - (_.test (%.name (name-of /.push)) - (and (is? sample - (|> sample (/.push new-top) /.pop maybe.assume)) - (n.= (inc (/.size sample)) - (/.size (/.push new-top sample))) - (|> (/.push new-top sample) /.peek maybe.assume - (is? new-top)))) + (_.cover [/.size] + (n.= size (/.size sample))) + (_.cover [/.empty?] + (bit@= (n.= 0 (/.size sample)) + (/.empty? sample))) + (_.cover [/.empty] + (/.empty? /.empty)) + (_.cover [/.peek] + (case (/.peek sample) + #.None + (/.empty? sample) + + (#.Some _) + (not (/.empty? sample)))) + (_.cover [/.pop] + (case (/.pop sample) + #.None + (/.empty? sample) + + (#.Some [top remaining]) + (:: (/.equivalence n.equivalence) = + sample + (/.push top remaining)))) + (_.cover [/.push] + (case (/.pop (/.push expected-top sample)) + (#.Some [actual-top actual-sample]) + (and (is? expected-top actual-top) + (is? sample actual-sample)) + + #.None + false)) )))) diff --git a/stdlib/source/test/lux/data/collection/tree.lux b/stdlib/source/test/lux/data/collection/tree.lux index 37dd216b2..8ba66ef02 100644 --- a/stdlib/source/test/lux/data/collection/tree.lux +++ b/stdlib/source/test/lux/data/collection/tree.lux @@ -48,14 +48,14 @@ (def: #export test Test (<| (_.context (%.name (name-of /.Tree))) - (do {@ r.monad} - [size (:: @ map (|>> (n.% 100) (n.+ 1)) r.nat)] + (do {! r.monad} + [size (:: ! map (|>> (n.% 100) (n.+ 1)) r.nat)] ($_ _.and ($equivalence.spec (/.equivalence n.equivalence) (..tree size r.nat)) ($fold.spec /.leaf /.equivalence /.fold) ($functor.spec /.leaf /.equivalence /.functor) - (do @ + (do ! [sample (..tree size r.nat)] (_.test "Can flatten a tree to get all the nodes as a flat tree." (n.= size diff --git a/stdlib/source/test/lux/data/collection/tree/zipper.lux b/stdlib/source/test/lux/data/collection/tree/zipper.lux index 74fda6cc1..7354eafed 100644 --- a/stdlib/source/test/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/test/lux/data/collection/tree/zipper.lux @@ -23,8 +23,8 @@ (def: #export test Test (<| (_.context (%.name (name-of /.Zipper))) - (do {@ r.monad} - [size (:: @ map (|>> (n.% 90) (n.+ 10)) r.nat) + (do {! r.monad} + [size (:: ! map (|>> (n.% 90) (n.+ 10)) r.nat) sample (//.tree size r.nat) mid-val r.nat new-val r.nat @@ -48,7 +48,7 @@ (|> child /.start (is? zipper) not))) (and (/.leaf? zipper) (|> zipper (/.prepend-child new-val) /.branch?))))) - (do @ + (do ! [branch-value r.nat #let [zipper (|> (/.zip (tree.branch branch-value (list (tree.leaf mid-val)))) (/.prepend-child pre-val) @@ -60,7 +60,7 @@ (|> zipper /.down /.right /.value (is? mid-val)) (and (|> zipper /.down /.right /.right /.value (is? post-val)) (|> zipper /.down /.rightmost /.value (is? post-val)))))) - (do @ + (do ! [branch-value r.nat #let [zipper (/.zip (tree.branch branch-value (list (tree.leaf mid-val))))]] (_.test "Can insert children around a node (unless it's start)." diff --git a/stdlib/source/test/lux/data/color.lux b/stdlib/source/test/lux/data/color.lux index 388b49d93..ca84d8b07 100644 --- a/stdlib/source/test/lux/data/color.lux +++ b/stdlib/source/test/lux/data/color.lux @@ -125,16 +125,16 @@ (def: palette Test (_.with-cover [/.Spread /.Palette] - (do {@ random.monad} - [eH (:: @ map (|>> f.abs (f.% +0.9) (f.+ +0.05)) + (do {! random.monad} + [eH (:: ! map (|>> f.abs (f.% +0.9) (f.+ +0.05)) random.safe-frac) #let [eS +0.5] - variations (:: @ map (|>> (n.% 3) (n.+ 2)) random.nat) + variations (:: ! map (|>> (n.% 3) (n.+ 2)) random.nat) #let [max-spread (f./ (|> variations inc .int int.frac) +1.0) min-spread (f./ +2.0 max-spread) spread-space (f.- min-spread max-spread)] - spread (:: @ map (|>> f.abs (f.% spread-space) (f.+ min-spread)) + spread (:: ! map (|>> f.abs (f.% spread-space) (f.+ min-spread)) random.safe-frac)] (`` ($_ _.and (~~ (template [ ] @@ -175,7 +175,7 @@ Test (<| (_.covering /._) (_.with-cover [/.Color]) - (do {@ random.monad} + (do {! random.monad} [expected ..color] ($_ _.and (_.with-cover [/.equivalence] diff --git a/stdlib/source/test/lux/data/number/complex.lux b/stdlib/source/test/lux/data/number/complex.lux index 330361792..091814105 100644 --- a/stdlib/source/test/lux/data/number/complex.lux +++ b/stdlib/source/test/lux/data/number/complex.lux @@ -34,8 +34,8 @@ (def: dimension (Random Frac) - (do {@ r.monad} - [factor (|> r.nat (:: @ map (|>> (n.% 1000) (n.max 1)))) + (do {! r.monad} + [factor (|> r.nat (:: ! map (|>> (n.% 1000) (n.max 1)))) measure (|> r.safe-frac (r.filter (f.> +0.0)))] (wrap (f.* (|> factor .int int.frac) measure)))) @@ -159,8 +159,8 @@ (def: trigonometry Test - (do {@ r.monad} - [angle (|> ..complex (:: @ map (|>> (update@ #/.real (f.% +1.0)) + (do {! r.monad} + [angle (|> ..complex (:: ! map (|>> (update@ #/.real (f.% +1.0)) (update@ #/.imaginary (f.% +1.0)))))] ($_ _.and (_.test "Arc-sine is the inverse of sine." @@ -183,9 +183,9 @@ (def: root Test - (do {@ r.monad} + (do {! r.monad} [sample ..complex - degree (|> r.nat (:: @ map (|>> (n.max 1) (n.% 5))))] + degree (|> r.nat (:: ! map (|>> (n.max 1) (n.% 5))))] (_.test "Can calculate the N roots for any complex number." (|> sample (/.roots degree) diff --git a/stdlib/source/test/lux/data/number/i16.lux b/stdlib/source/test/lux/data/number/i16.lux index a00a26e9e..edfadf62d 100644 --- a/stdlib/source/test/lux/data/number/i16.lux +++ b/stdlib/source/test/lux/data/number/i16.lux @@ -28,8 +28,8 @@ (def: #export test Test (<| (_.context (name.module (name-of /._))) - (do {@ r.monad} - [expected (:: @ map (|>> (//i64.and ..mask) (: I64)) r.i64)] + (do {! r.monad} + [expected (:: ! map (|>> (//i64.and ..mask) (: I64)) r.i64)] ($_ _.and ($equivalence.spec /.equivalence ..i16) diff --git a/stdlib/source/test/lux/data/number/i32.lux b/stdlib/source/test/lux/data/number/i32.lux index d126e5b03..f5d32ba21 100644 --- a/stdlib/source/test/lux/data/number/i32.lux +++ b/stdlib/source/test/lux/data/number/i32.lux @@ -28,8 +28,8 @@ (def: #export test Test (<| (_.context (name.module (name-of /._))) - (do {@ r.monad} - [expected (:: @ map (|>> (//i64.and ..mask) (: I64)) r.i64)] + (do {! r.monad} + [expected (:: ! map (|>> (//i64.and ..mask) (: I64)) r.i64)] ($_ _.and ($equivalence.spec /.equivalence ..i32) diff --git a/stdlib/source/test/lux/data/number/i64.lux b/stdlib/source/test/lux/data/number/i64.lux index 592b5fe41..6834f6276 100644 --- a/stdlib/source/test/lux/data/number/i64.lux +++ b/stdlib/source/test/lux/data/number/i64.lux @@ -22,9 +22,9 @@ (def: #export test Test (<| (_.context (name.module (name-of /._))) - (do {@ r.monad} + (do {! r.monad} [pattern r.nat - idx (:: @ map (//nat.% /.width) r.nat)] + idx (:: ! map (//nat.% /.width) r.nat)] ($_ _.and ($equivalence.spec /.equivalence r.i64) ($monoid.spec //nat.equivalence /.disjunction r.nat) diff --git a/stdlib/source/test/lux/data/number/i8.lux b/stdlib/source/test/lux/data/number/i8.lux index aac5f063a..53b196e41 100644 --- a/stdlib/source/test/lux/data/number/i8.lux +++ b/stdlib/source/test/lux/data/number/i8.lux @@ -28,8 +28,8 @@ (def: #export test Test (<| (_.context (name.module (name-of /._))) - (do {@ r.monad} - [expected (:: @ map (|>> (//i64.and ..mask) (: I64)) r.i64)] + (do {! r.monad} + [expected (:: ! map (|>> (//i64.and ..mask) (: I64)) r.i64)] ($_ _.and ($equivalence.spec /.equivalence ..i8) diff --git a/stdlib/source/test/lux/host.old.lux b/stdlib/source/test/lux/host.old.lux index 457caee6a..e0f2a3757 100644 --- a/stdlib/source/test/lux/host.old.lux +++ b/stdlib/source/test/lux/host.old.lux @@ -117,9 +117,9 @@ (def: arrays Test - (do {@ r.monad} - [size (|> r.nat (:: @ map (|>> (n.% 100) (n.max 1)))) - idx (|> r.nat (:: @ map (n.% size))) + (do {! r.monad} + [size (|> r.nat (:: ! map (|>> (n.% 100) (n.max 1)))) + idx (|> r.nat (:: ! map (n.% size))) value r.int] ($_ _.and (_.test "Can create arrays of some length." diff --git a/stdlib/source/test/lux/macro/poly/equivalence.lux b/stdlib/source/test/lux/macro/poly/equivalence.lux index 985da657c..1790c0111 100644 --- a/stdlib/source/test/lux/macro/poly/equivalence.lux +++ b/stdlib/source/test/lux/macro/poly/equivalence.lux @@ -50,9 +50,9 @@ (def: gen-record (Random Record) - (do {@ random.monad} - [size (:: @ map (n.% 2) random.nat) - #let [gen-int (|> random.int (:: @ map (|>> i.abs (i.% +1,000,000))))]] + (do {! random.monad} + [size (:: ! map (n.% 2) random.nat) + #let [gen-int (|> random.int (:: ! map (|>> i.abs (i.% +1,000,000))))]] ($_ random.and random.bit gen-int diff --git a/stdlib/source/test/lux/macro/poly/json.lux b/stdlib/source/test/lux/macro/poly/json.lux index 8be02dc27..f052cdf0f 100644 --- a/stdlib/source/test/lux/macro/poly/json.lux +++ b/stdlib/source/test/lux/macro/poly/json.lux @@ -89,8 +89,8 @@ (def: gen-record (Random Record) - (do {@ random.monad} - [size (:: @ map (n.% 2) random.nat)] + (do {! random.monad} + [size (:: ! map (n.% 2) random.nat)] ($_ random.and random.bit random.safe-frac diff --git a/stdlib/source/test/lux/macro/template.lux b/stdlib/source/test/lux/macro/template.lux index 6e90ac1bb..8dff75251 100644 --- a/stdlib/source/test/lux/macro/template.lux +++ b/stdlib/source/test/lux/macro/template.lux @@ -16,7 +16,7 @@ (def: #export test Test (<| (_.covering /._) - (do {@ random.monad} + (do {! random.monad} [left random.nat mid random.nat right random.nat] diff --git a/stdlib/source/test/lux/meta.lux b/stdlib/source/test/lux/meta.lux index 18bc370c2..4ade3f2f8 100644 --- a/stdlib/source/test/lux/meta.lux +++ b/stdlib/source/test/lux/meta.lux @@ -227,12 +227,12 @@ Test (<| (_.covering /._) ($_ _.and - (do {@ random.monad} + (do {! random.monad} [target (random.ascii/upper-alpha 1) version (random.ascii/upper-alpha 1) source-code (random.ascii/upper-alpha 1) expected-current-module (random.ascii/upper-alpha 1) - expected-type (:: @ map (function (_ name) + expected-type (:: ! map (function (_ name) (#.Primitive name (list))) (random.ascii/upper-alpha 1)) expected-seed random.nat diff --git a/stdlib/source/test/lux/time/duration.lux b/stdlib/source/test/lux/time/duration.lux index 5900f1958..7d40750a5 100644 --- a/stdlib/source/test/lux/time/duration.lux +++ b/stdlib/source/test/lux/time/duration.lux @@ -36,10 +36,10 @@ [millis random.int] (_.test "Can convert from/to milliseconds." (|> millis /.from-millis /.to-millis (i.= millis)))) - (do {@ random.monad} - [sample (|> duration (:: @ map (/.frame /.day))) + (do {! random.monad} + [sample (|> duration (:: ! map (/.frame /.day))) frame duration - factor (|> random.nat (:: @ map (|>> (n.% 10) (n.max 1)))) + factor (|> random.nat (:: ! map (|>> (n.% 10) (n.max 1)))) #let [(^open "/@.") /.order]] ($_ _.and (_.test "Can scale a duration." diff --git a/stdlib/source/test/lux/type.lux b/stdlib/source/test/lux/type.lux index eef749d8f..fca611825 100644 --- a/stdlib/source/test/lux/type.lux +++ b/stdlib/source/test/lux/type.lux @@ -22,8 +22,8 @@ (def: short (r.Random Text) - (do {@ r.monad} - [size (|> r.nat (:: @ map (n.% 10)))] + (do {! r.monad} + [size (|> r.nat (:: ! map (n.% 10)))] (r.unicode size))) (def: name @@ -83,8 +83,8 @@ (:: /.equivalence = (/.un-name base) (/.un-name aliased)))))) - (do {@ r.monad} - [size (|> r.nat (:: @ map (n.% 3))) + (do {! r.monad} + [size (|> r.nat (:: ! map (n.% 3))) members (|> ..type (r.filter (function (_ type) (case type @@ -94,7 +94,7 @@ _ #1))) (list.repeat size) - (M.seq @)) + (M.seq !)) #let [(^open "/@.") /.equivalence (^open "list@.") (list.equivalence /.equivalence)]] (`` ($_ _.and @@ -109,9 +109,9 @@ ["tuple" /.tuple /.flatten-tuple Any] )) ))) - (do {@ r.monad} - [size (|> r.nat (:: @ map (n.% 3))) - members (M.seq @ (list.repeat size ..type)) + (do {! r.monad} + [size (|> r.nat (:: ! map (n.% 3))) + members (M.seq ! (list.repeat size ..type)) extra (|> ..type (r.filter (function (_ type) (case type @@ -132,8 +132,8 @@ (let [[tfunc tparams] (|> extra (/.application members) /.flatten-application)] (n.= (list.size members) (list.size tparams)))) )) - (do {@ r.monad} - [size (|> r.nat (:: @ map (n.% 3))) + (do {! r.monad} + [size (|> r.nat (:: ! map (n.% 3))) extra (|> ..type (r.filter (function (_ type) (case type diff --git a/stdlib/source/test/lux/type/check.lux b/stdlib/source/test/lux/type/check.lux index 5a0942252..d4bf9ed8e 100644 --- a/stdlib/source/test/lux/type/check.lux +++ b/stdlib/source/test/lux/type/check.lux @@ -81,11 +81,11 @@ (def: (build-ring num-connections) (-> Nat (/.Check [[Nat Type] (List [Nat Type]) [Nat Type]])) - (do {@ /.monad} + (do {! /.monad} [[head-id head-type] /.var - ids+types (monad.seq @ (list.repeat num-connections /.var)) - [tail-id tail-type] (monad.fold @ (function (_ [tail-id tail-type] [_head-id _head-type]) - (do @ + ids+types (monad.seq ! (list.repeat num-connections /.var)) + [tail-id tail-type] (monad.fold ! (function (_ [tail-id tail-type] [_head-id _head-type]) + (do ! [_ (/.check head-type tail-type)] (wrap [tail-id tail-type]))) [head-id head-type] @@ -188,8 +188,8 @@ _ (/.check var Nothing)] (/.check .Bit var)))) ) - (do {@ r.monad} - [num-connections (|> r.nat (:: @ map (n.% 100))) + (do {! r.monad} + [num-connections (|> r.nat (:: ! map (n.% 100))) boundT (|> ..type (r.filter (|>> (case> (#.Var _) #0 _ #1)))) pick-pcg (r.and r.nat r.nat)] ($_ _.and @@ -209,14 +209,14 @@ expected-size? same-vars?)))))) (_.test "When a var in a ring is bound, all the ring is bound." - (type-checks? (do {@ /.monad} + (type-checks? (do {! /.monad} [[[head-id headT] ids+types tailT] (build-ring num-connections) #let [ids (list@map product.left ids+types)] _ (/.check headT boundT) head-bound (/.read head-id) - tail-bound (monad.map @ /.read ids) + tail-bound (monad.map ! /.read ids) headR (/.ring head-id) - tailR+ (monad.map @ /.ring ids)] + tailR+ (monad.map ! /.ring ids)] (let [rings-were-erased? (and (set.empty? headR) (list.every? set.empty? tailR+)) same-types? (list.every? (type@= boundT) (list& (maybe.default headT head-bound) diff --git a/stdlib/source/test/lux/type/implicit.lux b/stdlib/source/test/lux/type/implicit.lux index 7c55a0d6f..4cdb9009f 100644 --- a/stdlib/source/test/lux/type/implicit.lux +++ b/stdlib/source/test/lux/type/implicit.lux @@ -21,8 +21,8 @@ (def: #export test Test (<| (_.context (%.name (name-of /._))) - (do {@ random.monad} - [#let [digit (:: @ map (n.% 10) random.nat)] + (do {! random.monad} + [#let [digit (:: ! map (n.% 10) random.nat)] left digit right digit #let [start (n.min left right) diff --git a/stdlib/source/test/lux/world/file.lux b/stdlib/source/test/lux/world/file.lux index a1146fe56..55cfe94bc 100644 --- a/stdlib/source/test/lux/world/file.lux +++ b/stdlib/source/test/lux/world/file.lux @@ -68,11 +68,11 @@ (def: #export test Test (<| (_.context (%.name (name-of /._))) - (do {@ r.monad} - [file-size (|> r.nat (:: @ map (|>> (n.% 100) (n.max 10)))) + (do {! r.monad} + [file-size (|> r.nat (:: ! map (|>> (n.% 100) (n.max 10)))) dataL (_binary.random file-size) dataR (_binary.random file-size) - new-modified (|> r.int (:: @ map (|>> i.abs + new-modified (|> r.int (:: ! map (|>> i.abs (i.% +10,000,000,000,000) truncate-millis duration.from-millis -- cgit v1.2.3