Fun Stuff · Mathematics · Programming · Project Management

Tech Book List

Almost everyone has an official list of favourite technical books. This now includes me: Here is mine! I hope that you will find something that you also want to read.
.


Kanban
Successful Evolutionary Change for Your Technology Business

Are you overladen and often have to switch between projects and tasks? Do you want to visualize and limit work-in-progress? Or work in a Kaizen culture of continuous and incremental improvement?
.
This book is a good introduction to Kanban. It’s a fun and enjoyable read, but most examples are for larger organizations.

.


.

Seven Databases in Seven Weeks
A Guide to Modern Databases and the NoSQL Movement

This book represents a unique fast-moving deep dive into modern databases of all kinds, from relational to document and graph.
.
PostgreSQL, Riak, HBase, MongoDB, CouchDB, Neo4J, Redis and The CAP Theorem

.


.

The Deadline
A Novel About Project Management

A super entertaining story about a project management experiment. Yes, you will learn something, while having a ton of fun!

.


.

Conceptual Mathematics
A First Introduction to Categories

If you like Functional Programming Languages (like Haskell) and you want to understand their foundations in mathematics, then at some point you’ll want to study Category Theory.
.
This book starts as a very easy read and continuously gets more challenging as you uncover the magical world of categories and conceptual mathematics. Greatly recommended. Also see: my blogpost.

.


.

Programming Ruby 1.9
The Pragmatic Programmers’ Guide

Programming Ruby by Dave Thomas

The goal of Ruby is to make programmers happy. Do you want to be happy while coding? Then you should learn Ruby.
.
This book will give you a great starting point that explores the basic but also some deeper concepts of Ruby. You will be enlightened. Also see: my blogpost.

.


.

Thinking about Android Epistemology
(No, not those smart phones; but maybe.. some day?)

A series of enjoyable and not-too-much-technical essays. You will be confronted with questions of epistemology (the study of knowledge) and philosophy of minds so very different from ours (and yet so equal) – artificial machines.

.


.

GUI Bloopers 2.0
Common User Interface Design Don’ts and Dos

Did you ever build a piece of software with a graphical interface? Was it perfect? Are you sure? Please read this book now. It’s also very fun.

.


.

Learn You a Haskell for Great Good!
A Beginner’s Guide

This hilarious book (just look at what the sun has to say at the website!) teaches you functional programming fundamentals from the ground up to mastering functors, applicative functions, monoids, and even the dreaded monads. Those won’t scare you any more, but will be your best friends afterwards.
.
The e-book is free. Also see: my blogpost.

.


.

Haskell Road to Logic, Maths and Programming
(Warning: complex – hard work required!)

This book is an in-depth introduction into the mathematics that lie behind functional programming languages and computer science.
.
Don’t be fooled – this won’t teach you Haskell. It is best to learn the tool – Haskell – first, before starting this complex but beginner-friendly book.

.


.

Clean Code
A Handbook of Agile Software Craftsmanship


‘Programmers who satisfy themselves with merely working code are behaving unprofessionally. .. Bad code rots and ferments, becoming an inexorable weight that drags the team down.’

Mandatory reading for aspiring professional developers. Be warned that this is a very opinionated book and it exclusively uses Java – but with the right set of scepticism you will be able to pick many life-long lessons.
.
Please-please don’t be one of those that don’t care about the quality of their code. Please! I beg you.

.


.

Domain Driven Design
Tackling Complexity in the Heart of Software

This book will teach you how to design robust and maintainable application for complex problem domains.
.
Heureka! You will add many useful items to your object-oriented-design tool belt.

.


.

Gödel, Escher, Bach
An Eternal Golden Braid

‘Hofstadter’s Law: It always takes longer than you expect, even when you take into account Hofstadter’s Law.’

A magnificent journey about K. Gödel‘s Incompleteness Theorem, M. C. Escher‘s self-referential worlds, J. S. Bach‘s mathematical music, formal systems, the self, the meaning of meaning, cognition, ant colonies, and indeed very strange loops.

.


.

Learn You Some Erlang for Great Good!
A Beginner’s Guide

Similar to Learn You a Haskell for Great Good! but for Erlang.
.
Erlang and the Open Telecom Platform are different, useful and a fun learning experience. Hey, Prolog-style syntax. But as always: Don’t drink too much Kool-Aid! Also take a look at Elixir.

.
:edit: Added Learn You Some Erlang for Great Good!

Advertisements
Fun Stuff · Mathematics

Category Theory Cheat Post

After learning Haskell I finally decided to jump the train and start learning Category Theory with the help of the book Conceptual Mathematics – A first introduction to categories. I greatly encourage you to do the same, especially if you are a self-taught programmer.

The following is a simple cheat sheet that is meant to help me (and maybe you?) remember all those new words and constructs. Please poke me if you find any errors or have an improvement suggestion.


Basics

Associative

The order of operator application does not matter.
a * (b * c) = (a * b) *c

.

Commutative

The order of the operands does not matter.
a * b = b * a

.

Idempotent [idem + potence = (same + power)]

The endomorphism A\xrightarrow{e}A is idempotent under composition if e \circ e = e

.

Involution

The automorphism A\xrightarrow{\theta}A is an involution of A if \theta \circ \theta = 1_A

.


Category

What makes a Category?
– Objects
– Morphisms (maps)
– For each object in A an identity map 1_A  must exist.
– For each pair of maps A\xrightarrow{f}B and B\xrightarrow{g}C a composite map A\xrightarrow{g \circ f}C must exist.

– Composition \circ must follow the identity and associative laws:

1_B\circ f = f

f\circ 1_A = f

a\circ (b\circ c) = (a\circ b)\circ c

.


Morphisms

Monomorphism (injective) [monos = one]


– distinctive
It maps distinct objects onto distinct objects. The codomain is at least as large as the domain.
x \not= y\implies f(x) \not= f(y)

– left cancellative
f\circ g_1 = f\circ g_2\implies g_1=g_2 with Z\xrightarrow{g_1, g_2} A\xrightarrow{f} B

.

Split Monomorphism

A monomorphism A\xrightarrow{f}B which has a left inverse B\xrightarrow{r}A for which r\circ f = 1_A, i.e. a retraction.
A\xrightarrow{f}B\xrightarrow{r} A

.

Epimorphism (surjective) [epis = against]


– covering
All objects of the codomain are hit at least once. The domain is at least as large as the codomain.
\forall b\in B\exists a\in A (f(a)=b)

– right cancellative
h_1\circ f = h_2\circ f\implies h_1=h_2 with A\xrightarrow{f} B\xrightarrow{h_1, h_2} C

.

Split Epimorphism

An epimorphism A\xrightarrow{f}B which has a right inverse B\xrightarrow{s} A for which f\circ s = 1_B, i.e. a section.
B\xrightarrow{s}A\xrightarrow{f}B

.

Isomorphism (bijective) [isos = equal]

– is a monomorphism and epimorphism
A\cong B domain and codomain have the ‘same size’
– distinctive
– invertible
A\xrightarrow{f}B\xrightarrow{f^{-1}}A with f\circ f^{-1} = 1_B and f^{-1}\circ f = 1_A

.

Automorphism [auto = self]

– is an isomorphism A\xrightarrow{f}A
– also called permutation

.

Homomorphism [homos = same]

– structure preserving map
– if (G, *) and (H, *') are groups, then f is a homomorphism if f(g * h) = f(g) *' f(h)

.

Endomorphism [endos = inside]

– is a homomorphism A\xrightarrow{f}A

.

Constant map

\exists b\in B \forall a \in A(f(a) = b)
A map A\xrightarrow{f}B is called constant if all elements of A are send onto the same element of B.

.


Division of maps

Determination or extension

A\xrightarrow{f}B\xrightarrow{g?}C\xleftarrow{h = g\circ f}A
If it has a solution g, we say h is ‘determined by’ f or h ‘depends only on’ f.

.

Retraction

Special case of the determination problem A\xrightarrow{f}B\xrightarrow{r?}A\xleftarrow{1_A}A in which h = 1_A and r\circ f = 1_A
– is an epimorphism
– left inverse of f

.

Choice or lifting

A\xrightarrow{f?}B\xrightarrow{g}C\xleftarrow{h = g\circ f}A

.

Section

Special case of the choice problem B\xrightarrow{s?}A\xrightarrow{f}B\xleftarrow{1_B}B in which h = 1_B and f\circ s = 1_B
– is a monomorphism
– right inverse of f

.