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
- Performance & Performance Testing for Webapps
- Ops: Monitoring
- Clojure - links to libs, resources etc.
- Code Conventions (Java)
- Compiled “Must Watch/Read” Resources - JS, functional JS, …
- Better Work - creating more effective organizations with happier people and customers
Disable: usermod —expiredate 1 <login>
Re-enable: usermod —expiredate 2099-01-01 <login>
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.