duncanvr / arnold Goto Github PK
View Code? Open in Web Editor NEWA Recurring Neat Occasion Likelihood Decider
A Recurring Neat Occasion Likelihood Decider
Seeing that I'm the only one with +/- 16 hours a day to program, I will take on me the responsibility to create the first implementation.
To stay true to the original intent of the application, I will build it using Clojure for the backend-end, Datomic as database and ClojureScript as front-end. This will ensure that the project will be completely over-engineered and never to be completed.
I leave all design-documents, documentation and architectural decisions to be written by people with actual CS degrees, and to be completely ignored by me.
Also I recommend changing the application name to the:
Clojure Language Amazing Recurrent Known Scheduled Occasion Notifier, or CLARKSON for short.
Love,
Dzjon
Let's start thinking about what ARNOLD should actually do. Below is my vision, but feel free to comment or question any assumptions I made.
The problem ARNOLD is trying to solve is to make regular meetings happen more regularly. The reason this doesn't happen right now is that with reduced availability of every member, these meetings actually started requiring planning. A mundane task that is best left to computers.
For ARNOLD to calculate the optimal meeting dates, it requires some input:
Because some days are more preferable than others (e.g. weekends are more suitable than week days), I suppose the availability should not be a simple boolean, but should be able to represent preference.
The availability should obviously be provided by the users through one of the clients.
Then at a set interval ARNOLD calculates the next date for a meeting and asks each member to confirm the date. If everyone accepts the date, then everything is OK and beer, stories and Arnold movies will be enjoyed. If someone rejects the date, ARNOLD calculates the next best date. If ARNOLD is incapable of calculating a date because not all criteria are met, a failure notification will be sent to each member and the meeting will be postponed to the next period.
Any suggestions, additions, etc.?
Seeing that this will be a multi-user application, I'd opt for a client-server architecture. This has the added benefit that we can write/replace both sides separately and play around with different approaches.
A simple RESTful service using JSON messages should do the trick for the server side. A client implementation could be done as a website or console application, or perhaps even a mobile app if someone is feeling generous.
Given the premise from the readme, that backwards and forwards compatibility should be part of the design criteria, I'd suggest versioning the APIs from the start. I'm not entirely sure how to best incorporate that with the statelessness of the REST principles though; any thoughts?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.