This commit is contained in:
Correl Roush 2021-03-10 19:15:23 -05:00
parent cf47f3b27a
commit 8352f8f233
7 changed files with 40 additions and 2 deletions

View file

@ -0,0 +1,3 @@
#+title: Software Architecture
The application of design principles to [[file:20200723095845-software_development.org][Software Development]].

View file

@ -0,0 +1,13 @@
#+title: Side Effects
In [[file:20200723095845-software_development.org][Software Development]], the effects of running a function or bit of code
outside of its local environment. Examples include reaching out over the network
to talk to a database, reading or writing a file on disk, or printing some
output. This contrasts with [[file:20210310183956-purity.org][Purity]], where such effects are not allowed.
Effectful code has implicit, rather than explicit, state. This is to say, the
behavior of the code may differ not based solely on its explicit inputs, but
also values at a higher level of scope, the stability of the network, or the
current contents of a file. They may also impact external state, which can make
them difficult to reason about and sensitive to the order in which statements
are executed.

View file

@ -0,0 +1 @@
#+title: Purity

View file

@ -0,0 +1,6 @@
#+title: Isolating effectful code to the top layer of your application
A principle in [[file:20210310182044-software_architecture.org][Software Architecture]] of separating [[file:20210310182256-side_effects.org][effectful]] code from [[file:20210310183956-purity.org][pure]]
application logic in applications such that effects occur in the "top layer"
(closest to the application's entry code) and kept separate from pure business
logic applied to and fed through effectful code.

View file

@ -0,0 +1,10 @@
#+title: PyVideo.org · The Clean Architecture in Python
#+roam_key: https://pyvideo.org/pyohio-2014/the-clean-architecture-in-python.html
Brandon Rhodes talk on [[file:20210310182044-software_architecture.org][Software Architecture]] discusses [[file:20210310184749-isolating_effectful_code_to_the_top_layer_of_your_application.org][Isolating effectful code
to the top layer of your application]] in Python.
In doing so, he demonstrates that it is easier to build fast, comprehensive unit
tests of pure functions, thereby minimizing potentially fragile integration
tests. The resulting top-level function reminds me of the high level pipeline
demonstrated in [[file:railway_oriented_programming_f_for_fun_and_profit.org][Railway Oriented Programming | F# for fun and profit]].

View file

@ -0,0 +1,5 @@
#+title: Railway Oriented Programming | F# for fun and profit
#+roam_key: https://fsharpforfunandprofit.com/rop/
A talk on [[file:20210310182044-software_architecture.org][Software Architecture]] by Scott Wlaschin on cleanly pipelining
functions with success and failure cases using monadic binding.

View file

@ -33,7 +33,7 @@
\AfterEndEnvironment{quote}{\end{snugshade}}
#+END_EXPORT
* Travel
* Travel :noexport:
** Flight
- Record Locator :: WHIBQL
@ -103,7 +103,7 @@
AWeber
#+END_SRC
* Ticket :ATTACH:
* Ticket :noexport:ATTACH:
:PROPERTIES:
:Attachments: strange-loop-2018-ticket-6DTV-1.pdf
:ID: 44AAE8B1-99BF-4F20-A1DE-8BB031861A13