Don't be a smartass and create a layer of lang on top of a lang and think that you improved it. It introduces complexity.

The grammar of syntax should be simple, and each symbol should ideally have one and only one meaning. It should never be context dependent. Syntax should be free-flow of sequence of symbols so it can be automatically formatted.

Don't f￼ck with whitespace like Python and Haskell. Using whitespace for code block makes the semantics of whitespace symbols extremely complicated.

If you like whitespace indentation for readability, proper solution is to create a layer of format language (For example, HTML) instead, like in Mathematica. (For example, When in a special reader or editor, you have headers, sub-headers, inclusion of images or illustrations, audio, and expressions can be renders as “2-dimensional” math expression.)

The brackets ()[]{} and other matching pairs 【】〈〉「」 etc are the most important classes of symbols in syntax. They have the property of demarcation at the syntax level. That is, you do not need complex parser or implicit operator precedence rule to know how the code is nested.

Don't f￼ck with symbols. Don't replace && || by and or. Or replacing {} by begin end (Ruby commit this idiocy) and think you improved readability. Math uses symbols for a reason. If you can, incorporate Unicode symbols in your lang.

Don't be a smartass and start to use complex things such as the idiotic lisp macros, or Python's “List Comprehension”, or “closures”. The perl idiots are the group that loves to diddle code at syntax level (For example, the one-liner f￼ck). Stick with basic code, and even avoid idioms.
[see Why Idioms Are Bad]
Use these only when the it is natural in the language and really appropriate. Most of time you probably should leave your code verbose.