#1 - Compare as many SW tool options as possible
There are many tools and it depends on what you want to achieve. Here are the tools I used for my Fab Academy projects, the context and the rationale. In general, my intent was to use as much open-source tools as possible and to stay as far as I could from Windows OS and from proprietary SW. Before Fab Academy, I was Linux-aware, now I am Linux... fan
- Week 2 - project management. I used tools to build the simple but modern web site your are currently viewing. The mandate was to make with the constraint that it would not require server-side programming. The following tools were involved:
- Bracket: a source code editor with a primary focus on web development.[5] Created by Adobe Systems, it is free and open-source software licensed under the MIT License, and is currently maintained on GitHub by Adobe and other open-sourced developers.
- HTML: the standard markup language for creating Web pages. HTML stands for Hyper Text Markup Language. HTML describes the structure of Web pages using markup. HTML elements are the building blocks of HTML pages. HTML elements are represented by tags.
- Bootstrap: an open source toolkit for developing with HTML, CSS, and JS. Quickly prototype your ideas or build your entire app with our Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful plugins built on jQuery.
- Git: a distributed version-control system for tracking changes in source code during software development.[8] It is designed for coordinating work among programmers, but it can be used to track changes in any set of files.
- GitLab: a single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security. I used GitLab extensively for source control as all other students but it was really helpfull to manage my workload and deliverables in a Kanban board (more than 300 cards currently)
- Week 3 - computer aided design. I used InkScape to make a tabbed box and I discovered InkScape extensions, written in Python. The following tools were involved:
- Inkscape: a free and open-source vector graphics editor. This software can be used to create or edit vector graphics such as illustrations, diagrams, line arts, charts, logos and complex paintings.
- Inkscape extension, like the Tabbed Box Maker
- Python: to modify the code of the Tabbed Box Maker extension with specific requirements for my final project
- Week 5 - electronic production. To make my first board alive, I needed firmware, i.e low level on board programmingThe following tools were involved:
- AVR-GCC: a compiler that takes C language high level code and creates a binary source which can be uploaded into an AVR micro controller.:
- C langage: a general-purpose, imperative computer programming language
- Week 11 and 12 - Input/output devices. I leveraged Arduino IDE and libraries to drive a RFID targ reader, a BLE interface and a OLED screenThe following tools were involved:
- Arduino IDE: a cross-platform application (for Windows, macOS, Linux) that is written in the programming language Java.
- The MFRC522 library written by Miguel Balboa to support RFID card readers
- The Acrobotic SSD1306 library that support multiple OLEd screens
- A few other libraries to communicate over SPI, I2C and UART
- A firmware developped for the SKB369 (BLE ) board
- Week 17 - interface and application programming. I used Python to colelct data over UART and to display a graphThe following tools were involved:
- Python: an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991
- Eclipse IDE: an integrated development environment (IDE) used in computer programming, and is the most widely used Java IDE. It supports Python over an extension (PyDev)
- An Arduino library named DFRobot_SHT20 to support a temperature/humidity sensor
- matplotlib: a Python library used to create nice charts
- Final project - the gateway part The following tools were involved:
- Raspbian: a Debian-based computer operating system for Raspberry Pi
- Mosquitto: a MQTT broker, to route messages between my device and a gateway running on a Raspberry
- Paho-MQTT: a Python library implementing MQTT
- MariaDB: a community-developed, commercially supported fork of the MySQL relational database management system (RDBMS)
- The MsSql connector for Python
- BlueZ: the Official Linux Bluetooth protocol stack
- gatt: Generic Attribute Profile, a data exchange protocol in Bluetooth LE
- Node.js: an open-source, cross-platform JavaScript run-time environment that executes JavaScript code outside of a browser
- DBeaver: a database design tool
- (in progress) Angular: to design a web interface
- Other tools to manage images, content and videos The following tools were involved: