HIGHLY EXPERIMENTAL AND IN ACTIVE DEVELOPEMENT: USE AT YOUR OWN RISK
Datalog, git-style data archival, pathom, and other related ideas for Elixir.
Assume the following:
- undocumented
- untested
- unfinished
- not intended for production use
More akin to a scratchpad or and incubator for ideas.
All of these setup steps were tested on MacOS 11.2.1 on 2/23/2021
To start your Phoenix server:
- Install Git: https://git-scm.com/downloads (unnecessary if using Gitpod)
- Install Visual Studio Code: https://code.visualstudio.com/Download (unnecessary if using Gitpod)
- Setup Development Environment (see options below, local, devcontainer, gitpod)
- Install dependencies with
mix deps.get
- Start database:
docker-compose up -d db
(unnecessary if using devcontainer) - Create and migrate your database with
mix do ecto.create, ecto.setup
- Install Node.js dependencies with
cd assets && npm install && cd ..
- Start Phoenix endpoint with
iex -S mix phx.server
Now you can visit localhost:4000
from your browser.
Ready to run in production? Please check our deployment guides.
- Install Elixir
mix do local.hex --force, local.rebar --force
mix archive.install hex phx_new
- Clone Repo:
git clone git@github.com:naramore/highstorm.git
- Open Project in VSCode
- Install all Recommended VSCode Extensions when prompted
NOTE: if you have issues with ElixirLS losing connection, add more memory to Docker
- Install Docker
- Clone Repo:
git clone git@github.com:naramore/highstorm.git
- Open Project in VSCode
- Create environment file:
echo "EARTHLY_GLOBAL_RUNPATH=${HOME}/.earthly" > .env
- Install Remote - Containers Extension
- Click the Remote "Quick Access" status bar item (green, bottom-left corner) and select:
Remote-Containers: Reopen in Container
, or select theReopen in Container
when prompted by VSCode. - Wait for container to build and load...
- https://gitpod.io#https://github.com/naramore/highstorm
- login to GitHub account
- wait for the dev environment to build / load...
Install Docker and earthly.dev
- Run analyses:
earthly +analyses
- Run tests:
earthly +test
- meddle (interceptors)
- oath (data contracts/specifications)
- entry (
Access
shortcuts) - stream_data_utils
- investigate? whatyouhide/stream_data#97
- utilities: functions, datetimes, shrinking
- stateful: fsm, statem, component, cluster, dynamic_cluster
- targetted: target, sa
- misc: suite, symbolic, temporal, mocking, grammar
- diff (
List.myers_difference/3
-ish for all data)- types:
String
->String.myers_difference/2
List
->List.myers_difference/3
MapSet
->{a_only, b_only, both}
(treat elements atomically)Tuple
->List.myers_difference/3
Map
-> ???Keyword
-> similar toMap
, but ordered?- Improper List ->
{proper_myers_difference, improper_diff}
- Struct ->
{struct, map_only_a, map_only_b, map_both}
- Any -> ???
- Others? ->
Range
,Date.Range
,Date
,Time
, (other time related structs),
- types:
- annex (git)
- delve (pathom)
- basis (datalog)
- ivy (ETS + datalog)
- dtabs (see https://twitter.github.io/finagle/guide/Names.html)
- datafy + nav + REBL
- digraph_ui (i.e. phoenix liveview for
:digraph
display) - delve inspect (i.e. phoenix liveview UI similar to GraphIQL, GraphQLPlayground, or pathom_viz)