Learn to Use Programming Tools
There is software designed to help you develop software. If you are writing programs, then you do need them.
- Topic: Integrated Development Environment (IDE)
- Git
- Topic: Good Practices: Code, Test, Documentation [support not ready yet]
- Topic: (Neo)Vim
Topic: Integrated Development Environment (IDE)
- You write scripts and code.
- Writing code is tedious:
- Syntax: special characters, missing parentheses, long variable names.
- Refactoring: change without breaking, run to test, wait! forgot a semicolon..
- The 90's are over: you deserve state-of-the-art tooling.
- IDEs are software to help you write code. They have become very sophisticated:
- The edition experience you deserve:
- Automatic enclosers.
- Automatic comment/uncomment lines/blocks.
- Select valid expressions.
- Move lines/blocks around up/down.
- Vertical/multiple edition.
- Record Macros.
- Customise shortcuts: make it your own.
- ...
- The Language Server Protocol (LSP) and the features you deserve:
- Syntactic coloring: make your code easy to parse.
- Linting: highlight errors before you even run the code.
- Autoformat: stop messing with whitespace/tabs by hand.
- Code actions:
- Rename identifiers.
- Errors quickfix.
- Extract variables.
- Extract functions.
- ...
- The integration you deserve:
- Invoke intepreter/compiler directly from your editor.
- Pass lines/blocks to your interpreter.
- The Debug Adapter Protocol (DAP): inspect your program execution live.
Git
Topic: 1 Git from Scratch
- You write scripts and code.
- You have already made deep copies of your files and folders before modifying any of your programs because you were worried about breaking anything.
- Introduction.
- Configure the software.
- Produce commits.
- Publish your project on a shared repo (Github/Gitlab).
- Branches and good practices.
Topic: 2 Collaborate with Git
Prerequisites (either):
- You are not the only person writing code in your project.
- You are, but you want to evolve parallel versions of your project.
- You want to contribute to shared or open-source projects.
- Clone.
- Fetch/Push to/from the same shared repo.
- Git conflicts and what they really mean.
- Merge/Rebase.
- Good practices.
Topic: Good Practices: Code, Test, Documentation [support not ready yet]
- You write scripts and code.
- Someone (including yourself) has already broken something when modifying your programs.
- Someone (including yourself) has a hard time understanding your own programs.
- Code is power:
- Power is danger.
- Examples of dangerous broken code.
- Automated tests: guard against breakage.
- Testing requires courage:
- Code and tests are not only read by machines.
- Example cryptic code.
- Documentation is wisdom:
- Bug definition: a bug is ill-defined without a specification.
- You are human, speak to humans.
- The various types of documentation:
- For users:
- Context: why using it, what to use it for.
- Guide: how to use it.
- Status: what's the project situation now.
- For developers:
- Implementation report: how does it work.
- Technical details: why these choices, advantages/limitations.
- For both: specifications: what does it do:
- Informal.
- Formal.
- For users:
- Documentation supports:
- README.md
- Docstrings.
- Comments.
- Tests.
- Identifiers names.
- Code style.
- If you loose all but documentation remains, you can rebuild everything easily.
Topic: (Neo)Vim
- You write scripts and code.
- You are confident with your keyboard.
- You like keyboard mappings / shortcuts / macros / automations, anything that speeds up your workflow.
- You are willing to spend weeks (no kidding) learning / configuring a very sophisticated piece of software, just so it fits your exact needs and eventually bring you closer to coding at the ultimate speed of thought.
- Introduction to vim/neovim.
- First steps with
:vimtutor
/:Tutor
. - Disable
<left>/<right>/<up>/<down>
: focus on your home row. - Practice. Practice. Practice.
- Config file:
- Custom mappings.
- "Metamaps" to easily add/modify mappings.
- Start crafting your own home.
- Navigate files.
- First steps with
- Vimscript/lua.
- Extensions.
- Developing with vim/neovim: at least all IDE features should become a breeze.