Skip to content

Things I've learned while open-sourcing. Experience from the trenches.

License

Notifications You must be signed in to change notification settings

theodesp/things-I-learned-while-opensourcing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

things-I-learned-while-opensourcing

Things I've learned while open-sourcing. Experience from the trenches.

Getting started

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.

Contributing

If you like this project and you would like to share your valuable knowledge you can clone/for the project and Submit a PR.

Licence

MIT © Theo Despoudis

About

Things I've learned while open-sourcing. Experience from the trenches.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published