Software Development Papers
Classical Papers
- Leslie Lamport, 1978 Time, Clocks, and the Ordering of Events in a Distributed System
- Ken Thomson, 1984 Reflections on Trusting Trust
- James Hamilton, 2007 On Designing and Deploying Internet-Scale Services
API Design
- Joshua Bloch, 2006 How to design a good API and why it matters
Cryptography
- Whitfield Diffie and Martin E. Hellman, 1976 New Directions in Cryptography
- EPC342-08 - Guidelines on cryptographic algorithms usage and key management
- rev. 13 in 2024
- contains recommendations on algorithms and key sizes
- Alex Biryukov, Daniel Dinu, and Dmitry Khovratovich Argon2: the memory-hard function for password hashing and other applications
- winner of the Password Hashing Competition in 2015
- GitHub repository
- European Union Agency for Cybersecurity (ENISA) Pseudonymisation techniques and best practices
- EU advices on how personal data should be handled
- Jim Waldo, 2019 A Hitchhiker’s Guide to the Blockchain Universe
- Thomas Wu, 2002 SRP-6: Improvements and Refinements to the Secure Remote Password Prototol
Streaming Algorithms
- Robert Morris, 1977 Counting large numbers of events in small registers - approximate counting, the math in the paper is explained in
- Ted Dunning, 2019 Computing Extremely Accurate Quantiles Using t-digest
- algorithm for computing percentiles with very little space
- https://github.com/tdunning/t-digest
Distributed Systems
- Waldo, J., Wyant, G., Wollrath, A. & Kendall, S., 1994 A Note on Distributed Computing
- Saltzer, J.H., Reed, D.P. & Clark, D.D., 1981 End-to-End Arguments in System Design
Memory Models and Synchronization
Quantum Computing
- Assessing the Quantum-Computing Landscape (Communications of the ACM, October 2022, Vol. 65 No. 10, Pages 57-65) Overview article of the state of Quantum Computing in 2022.
- currently most advanced quantum computers has less than 100 qubits. A general purpose computer would require approximately one million qubits to be useful. That is at least a decade away.
- the different cloud computing platforms are beginning to offer access to quantum computers - one of these is AWS Braket. Most of these are programmed using tools based on Python.