Tooling was another extremely important part of the project. The philosophy was to use tools that increase development speed without too much abstraction. The reasons for the lack of abstraction is for a better understand of the inner workings of the app and to learn as much about the project as possible. This section gives a short overview of the tools used to create the project.
Sublime Text and an IDE-less environment
At the risk of sounding highly pretentious, I enjoy the pureness of using a simple, plain-text editor (with syntax highlighting). The lighting quick Sublime Text works beautifully and stays out of the way allowing the code to take the forefront instead of the plethora of tools, popups and windows that clutter an IDE. All of the code for the project was written in
iTerm2 Command Line
Everything about this project can be built and run solely from the command line. As the developer of this project, this was an absolutely necessity for streamlining development, distribution and deployment. A good interface usd for the command line was iTerm2, an open source terminal environment. Some of the more useful commands for the project:
||Deploy the application.|
||Start the development server with live reloading.|
||Start the python server.|
||Run all API tests for the server.|
||Perform complex HTTP queries against the server.|
||Open an SQL query interface to the database.|
||Commit code into the version control.|
Dash & Documentation
⌘+⇧+Spacewould bring up an interface to access all the docsets for the libraries and frameworks used in the project. It saved, with a confident estimation, about 40% of the would-be time spent looking through documentation for the project. This tool was necessary.
Node.js and npm
npm run-scripts interface.
Virtualenv and managing Python's dependencies
Python has a problem with dependencies and its package management system,
pip. Unlike how npm works, each dependency is installed in a global location for every Python project. As a consequence, it makes for a painful experience trying to install different versions of the same dependency. For this exact reason, Virtualenv was created. Virtualenv allows you to install dependencies on a project basis where they no longer clash with versions.
Chrome and Dev Tools
Babel is imperative to the project and will not function without it.
SASS is another transpiler that converts the SASS language, a superset of CSS, to normal CSS. It's a language extension that makes writing it much simpler. SASS implements some very useful, time saving features. All of the CSS in the project is written this way.
|Static import system||
Other tools which proved extremely useful:
psql- PostgreSQL's SQL query interface.
py.test- Py.Test test runner tool. See Testing chapter.