Things I've learned while open-sourcing. Experience from the trenches.
This project is a collection of valuable knowledge topics I've accumulated while contributing to opensource projects. I've laid down a table for each project I've contribute and made some useful remarks.
- Checking if a file is binary is not a trivial job. One has to perform a series of heuristic checks to see if a file is considered binary. See link
- Python has a libary called chardet that detects with a certain probability the encoding of a file.
- In general if a file containes a high ratio or non printable chars or some certain null bytes it is considered binary but not all the times.
- Inversion of control is more than having a map of keys and objects. Often you need more customization.
- Inversify.js has a really good project structure for Typescript apps.
- Reflect-Metadata Can be used to add additional meta properties to parameters or classes
- Decorators can be usefull for adding metadata properties in a seemless way.
- Its important to have a good PULL_REQUEST_TEMPLATE, CONTRIBUTING and ISSUE_TEMPLATE to our projects.
- Appveyor is really cool CI for Windows.
- Click is as really cool package for creating beautiful command line interfaces.
- Jinja Templates has really cool features for debugging and sandboxing.
- pytest is the defacto testing framework for python.
- Pytest with --cov reporting does not work well with PyCharm.
- You can pass a custom environmnent to Popen
- Windows accepts only strings for env variables. Use os.pathsep to enable crossplatform separators.
- rg is a command line tool similar to grep and silver searcher
- SIGRTMIN Signals are not defined for MacOS
- twine Is a tool to help you interact with PyPi
- flushdb redis command clears all keys of a database. This command never fails.
- In old python runtimes
assertIsNotNone
is not defined unicode
command is not defined for python3
- Angular 1.5+ versions introduced Lifecycle Hooks and Components Link. so its really easy to write clean angular code that resembles React Components.
- ES6 in Angular 1 is not so bad. We can leverage the power of Mobx to have a very scalable applications without having to learn another framework.
- Node Gyp Can be used to write native applications in C/C++ and reference them in Node. The only problem is that Node C++ Documendation is not very good.
- Kyt Is a very versatile foundation for building webpack apps. Its one of the easiest tools to use.
- Futures are one of the best alternatives to Promises See why as they are composable and cancelable.
If you like this project and you would like to share your valuable knowledge you can clone/for the project and Submit a PR.
MIT © Theo Despoudis