Your environment
(In descending order of restrictiveness)Categories of development tools
NeoVim
Sublime Text
VsCode
Spyder
NeoVim
Sublime Text
VsCode
Spyder
Honorable mentions (that I have no experience in)
My recommendations
Why I changed setup: inefficiencies i could not fix / friction
Regardless of choice: master your editor!
If you know touch-typing and want to take it to the next level, maybe try vim-shortcuts in your editor
As long as the editor does not get in your way / slows you down
And YOU keep evolving / improving!
Your environment
(In descending order of restrictiveness)Categories of development tools
Let's look at some examples of each tool type
Language Server Protocol (LSP) is an open protocol for communication between source code editors and language servers that provide "language intelligence tools".
So it is a Language Server that parses your code and sends the result to a Language Client (your editor)
This allows for things like:
This allows for things like:
This allows for things like:
This allows for things like:
Recommended Language Server setup
VsCode setup
NeoVim setup
Example setup in handouts
Static code analysis tool used to flag programming errors, bugs, stylistic errors and suspicious constructs. Language servers and Linters usually go hand in hand.
This allows for things like:
This allows for things like:
Recommended python linter: flake8
setup.cfg
or
.flake8
[flake8]
ignore = D203,E251,E126,E226,W504,W503,W605
max-line-length = 100
exclude = src/pyant/__pycache__,src/pyant/__init__.py,src/pyant/**/__init__.py
flake8 does not support pyproject.toml yet :(
Static code analyzers: Clang or mypy
Python type annotation
def fib(n):
a, b = 0, 1
while a < n:
yield a
a, b = b, a+b
def fib(n: int) -> Iterator[int]:
a, b = 0, 1
while a < n:
yield a
a, b = b, a+b
mypy then checks everything is typed correctly
Automatically format code according to a standard
(usually the same standard that the Linter is using)
This allows for things like:
This allows for things like:
Compare:
Compare:
Highlights your code with color and font styling for faster parsing by humans!
Compare:
def true_to_mean(nu, e, degrees=False):
'''Transforms true anomaly to mean anomaly.
Parameters
----------
nu : numpy.ndarray or float
True anomaly.
e : numpy.ndarray or float
Eccentricity of ellipse (e<1), parabola (e==1) or hyperbola (e>1).
degrees : bool
If true degrees are used, else all angles are given in radians
Returns
-------
numpy.ndarray or float
Mean anomaly.
'''
if degrees:
_nu = np.radians(nu)
else:
_nu = nu
E = true_to_eccentric(_nu, e, degrees=False)
M = eccentric_to_mean(E, e, degrees=False)
if degrees:
M = np.degrees(M)
return M
def true_to_mean(nu, e, degrees=False):
'''Transforms true anomaly to mean anomaly.
Parameters
----------
nu : numpy.ndarray or float
True anomaly.
e : numpy.ndarray or float
Eccentricity of ellipse (e<1), parabola (e==1) or hyperbola (e>1).
degrees : bool
If true degrees are used, else all angles are given in radians
Returns
-------
numpy.ndarray or float
Mean anomaly.
'''
if degrees:
_nu = np.radians(nu)
else:
_nu = nu
E = true_to_eccentric(_nu, e, degrees=False)
M = eccentric_to_mean(E, e, degrees=False)
if degrees:
M = np.degrees(M)
return M
Recommended NeoVim highlighter: treesitter
Most editors have highlighting built-in (picking a color theme is fun!)
It is not just fun: sometimes its vital!
These allow for inserting pre-defined code quickly.
Sources for snippets can be: The LSP (code hints), a spell-checker/buffer (for plain text), a snippet library (for common boiler-plate), etc.
This allows for things like:
This allows for things like:
This allows for things like:
A Debug Adapter Protocol allows debuggers to talk to the editor or debugger interface.
This allows for things like:
This allows for things like:
This allows for things like:
Jerod Santo on Changelog & Friends - Episode #81 podcast, 2025-02-18
I think we waste way too much time customizing, tweaking, filling, changing our programming environments [more] than we need to. I think you can get 80% of the way there with 20% of the effort, and then knock it off and get some work done. ... And I used to customize to the hilt.
I personally think that by customizing you
But when you learned enough: stop and just code
Example setups and homework
Let's check out the handout above!