

I don’t remember being that impressed with HTDP but it’s been a while and I didn’t look much. I’d say read SICP first in either case.
The Java thing sounds totally uninteresting and if your next language after Lisp isn’t a a mainstream one, I’d say try Haskell.
Regarding math: it can help but it’s not that important for pure programming. If you’re good at languages and writing, that’s helpful in the same way. If you’re good at music, that is at least a helpful mindset.


Java isn’t exactly hard, and it’s not particularly fundamental. It’s just bureaucratic, and Python will be both more enjoyable and more useful. Java was trendy in the 1990s and lingers on because so much Java code is still around. If your goal is to use a serious type system (Lisp and Python don’t have that), Haskell will be far more enlightening than Java. If you want to use the JVM for some reason, Clojure (a Lisp dialect that run in it) might interest you.
For low level fundamentals, you want assembly language! That gives you almost no assistance and you have to do EVERYTHING yourself, organizing the program in your own head. For old fashioned imperative programming with lots of organizational assistance, try Ada.
You will probably have to learn C at some point, but save it for later when it will be easier for you to spot the weaknesses.