I didn't get the thing with nulls either. Maybe it's a Java thing. I vaguely remember such issues with Java since there are so many pointers and object allocations. If you forget just one, there's a null pointer exception waiting to happen. I suppose the lack of explicit pointer syntax might also help / make it worse since you may think about your variables as values and not as pointers.
It doesn't happen in C++ as much since you use heap allocated values more often and perhaps pay more attention to dynamic allocation, when it happens. I have accidentally created null pointers of course but it really isn't a major concern.
in Python, it's even less of an issue even though it should supposedly be a bigger issue since any pointer can point to any value, not just nulls. My guess is that the ease of writing unit tests more than makes up for whatever is lost from not having static type checking. Static type checking can't detect accidental nulls anyway but unit tests can.
Having said that, yes, I do hate nulls and I try to avoid them as often as I can. An empty string or empty list is often a better "empty" value than a null pointer.
Maybe avoiding Java and replacing nulls by empty values is enough to not consider them a menace.