Persistent computer-related notes that are still under development.
Development Books - the most influential books about software development I’ve read
Learning Programming - resources
Unit Testing Toolbox (for Java) - collection of links to libraries, tools, concepts
Clojure - links to libs, resources etc.
Compiled “Must Watch/Read” Resources - JS, functional JS, …
Better Work - creating more effective organizations with happier people and customers
See the tools page for Git, Vim etc. notes
Common enterprise problems: database access, remote procedure invocation, transactions, authentication, directory services, auditing, integration of multiple services, authorization (roles, groups of roles, …), LDAP, etc.
Not for write-heavy apps, i.e. apps with >= 1MB/s sustained write throughput (even 1TB/year is perhaps not a best fit) - Essentially serializable writes (shardable via multiple transactors)
Note: Performance of the back-end storage doesn’t matter so much - hot data cached on peers, most of the rest can be hold by a memcached cluster in front of the storage
A top for Datomic with a single transactor is perhaps around billion rows??
Great at answering question about past, what-if, audit trail
Good performance at joins for all in local (peer) memory, multiple pears can hold in memory quite different “hot data” for diff. use cases x monholitic DB
Classical RDBMs and languages based on constraints from 70s that no more true (expensive memory and storage, dedicated machines) - Datomic explores what we would design if we broke those constraints
Flexible: contrary to doc stores, here “documents” are assembled at query time ⇒ no need to decide ahead of time; schema can evolve much more freely
Programmable: everything is data (commands, queries, tx info) ⇒ easy to generate, combine, use
Consistency etc. - can use server-side functions to do multi-updates etc.