jakub holý

building the right thing, building it right, fast


Persistent computer-related notes that are still under development.

Most important/active pages

Index of pages

Development Wiki

Tiny notes


Lock user account

Disable: usermod —expiredate 1 <login>

Re-enable: usermod —expiredate 2099-01-01 <login>


See the tools page for Git, Vim etc. notes

Java Development

What is “enterprise”?

Common enterprise problems: database access, remote procedure invocation, transactions, authentication, directory services, auditing, integration of multiple services, authorization (roles, groups of roles, …), LDAP, etc.

Source code & JavaDoc search sites

Clojure & Ecosystem


  • 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.