The COOP team plays a role in technology survey at CERFACS. As such, it selects many resources everyday to guide new code developments, as well as code maintenance and refactoring. The following is a list of useful links for this purpose.
General coding best practices
- Refactoring Guru: learn to recognize some classical code smells.
- Keep a changelog
- How to write a git commit message
- A cool approach to simplifying git.
- Modifying nested objects in an elegant way.
- “Fooling the masses with performance results on parallel computers”. A collection of HPC performances dirty tricks from Georg Hager’s blog. “Log scale is your friend”, “Emphasize the interesting part of your work” and “Boast massive speedups with accelerators!” are strangely familiar.
Writing
- Zinsser’s “On writing well” : a reference on the craft of writing. As programming is also a writing discipline, you will be surprised how many concepts apply to the craft of programming.
- Nicolas Perez-Nieves new way to read papers. An experiment of augmented experience when reading academical papers.
- How to write an article introduction, a shared slideshow helping beginners (or not) to start their papers.
Visualization
- From data do viz, a perfect way to pick the right graph for the right data.
- Online book “Fundamentals of datavisualisation”, the Claus O Wilke definitive reference on the do’s and don’t when you need to show some data.
- Paul Tol’s notes essential read on choosing the right color scheme for your figures, adapted even to color-blind people.
Developer services
- analysis-tools, a list of popular tools to analyse codebases (all languages, really…)
- An online compiler to complile and run several languages (c, fortran, python, cuba, rust, etc…) on several architectures (x86, powerPC, ARM64, etc…). Help you to understand what compiler does behind the scene
- infer schema online: infer a complete schema from any nested data.
- understand json-schema elements : a complete SCHEMA reference.
- regexp101 : online regular expression. The ultimate tool to test, understand, refine your regular expressions.
- Free resources for developers. An extensive list of many web based services for a large range of purposes: code quality, machine learning, image edition, conversion, etc…
- A very short UNIX primer to get the most basic UNIX commands. But if you learn by doing, you will probably love this interactive online UNIX tutorial which can be run in the browser of any computer.
- JAWWS The introduction to Journal of Actually Well Written Science. A nice reading and a potential journal, maybe?
Python
- A good online Python tutorial excellent both for beginners and for a little more advanced users.
- A blog about everything but coding when getting started with Python.
- PEP8: a nice readable version of the actual official spec. Learn about Pylint to know what to change in your code, or black if you want a tool to do the formatting for you.
- Awesome python: an up-to-date and curated list of python modules. You’re bound to found one (or rather several) that fit your use case.
- Python patterns guide, where one learns that even though some design patterns are unnecessary in Python, some are still very useful.
- Python anti-patterns: teaches you to recognize nasty code and so smart patterns can spring to your mind.
- Hitchhiker’s Guide to Python: excellent ideas to structure your Python project, control your dev environment, ship your code, and more. Written by Python legend Kenneth Reitz.
- From Python to Numpy: a (very) comprehensive guide to Numpy.
- Scipy lecture notes: everything you need to know to use Scipy. Additional goodies about debugging and profiling are nice. -modeling and simulation in Python, a Jupyter book with a lot of examples of simulations.
Inspiration
- Explorable explanations and ncase showcase interesting ways to teach non-intuitive topics. Get the gist of natural segregation and the evolution of Trust in half an hour.
- Peter Norvig’s homepage: the Director of research at Google must have a couple of interesting insights…
- Dropbox’s How to communicate effectively and The Basecamp Guide to Internal Communication will give you a lot of ideas for efficient team communication, especially for remote work.
- 5 ways open source software companies make money . This explain how open-source is not philantropy.