The existence of a null value isn't a billion dollar mistake. The issue is when static type systems allow null anywhere.
Even some dynamic languages don't have a null value. For example, some lisps only have the empty list, which they use as a null-like value by convention.
miniblog.
Related Posts
Are there examples of IDE services deliberately leveraging elaborate type systems?
I'm struggling to think of what a richer type system enables in the IDE space. The existence of void* in C, interface{} in Go, or a lack of generics, doesn't seem to have limited possibilities.
Emacs is full of specialised commands that you don't need right now, but knowing their existence will help later. Eg `C-x C-t' or `C-x C-x'.