/* ~~NOTOC~~ */ ====== Tools, Workflow and Resources for Effective Development ====== **Live Online Workshop for [[https://ulsa.edu.ni/|ULSA]] and [[http://hsrw.eu/|HSRW]] by Harley Lara - 2022-10-06** Workshop details: * **Topic**: Tools, workflow and resources for effective development * **Description**: Hardware and/or Software project development can be a long and complex process, but with the right set of tools everything can be faster and more efficient from the developer's point of view. This workshop is based on providing tools for developers to have a seamless process, producing quality software and hardware. In collaboration with [[https://ulsa.edu.ni/|ULSA]] Nicaragua and the [[https://www.hochschule-rhein-waal.de/en/faculties/communication-and-environment/laboratories/eo-lab|EOLab]] of the [[https://www.hochschule-rhein-waal.de|HSRW]]. * **Date**: 06 October 2022 * **Time**: from 16:00 to 18:00 (CEST) * **Location**: IoT Lab, room 02 02 510 HSRW. Zoom meeting for ULSA. * **Instructor**: Harley Lara * **Contact**: harley-nelsonlara-alonsohsrworg ---- ===== Demo Scripts Used in the Workshop ===== Download all the files here: {{ :capacity_building:workshops:example_files.zip |example_files.zip}} * ''bash-hello.sh'': Print message in the terminal * ''tmux-fzf.sh'': fuzzy search over a group of specified directories * ''bash-software.sh'': Basic bash script to install a set of packages * ''ansible-software.yml'': Basic playbook to install a set of packages * ''bash-software-tags'': Minimal and basic tag implementation to emulate ansible tags using bash script ===== bash Demo ===== #!/bin/bash echo "hello bash scripting" ===== tmux Demo ===== #!/bin/bash # Used the next line to set the list of directories DIRECTORIES="~/ ~/Documents ~/Desktop" # Uncommend the next line if you are using a external file # for track the list of directories # DIRECTORIES=$(cat ~/EXTERNAL-FILE | tr "\n" " ") # Note about the external file # Format of the file: # ~/ # ~/Documents # ~/Desktop # One directory per line if [[ $# -eq 1 ]]; then SELECTED=$1 && [[ "$SELECTED" == '.' ]] && SELECTED="$PWD" else SELECTED=$(find $DIRECTORIES -mindepth 1 -maxdepth 1 -type d | fzf) fi if [[ -z $SELECTED ]]; then exit 0 fi SELECTED_NAME=$(basename "$SELECTED" | tr . _) SELECTED_NAME=${SELECTED_NAME:0:8} if [[ -n $TMUX ]]; then # inside tmux tmux switch-client -t "$SELECTED_NAME" || \ tmux new-session -ds "$SELECTED_NAME" -c "$SELECTED" && \ tmux switch-client -t "$SELECTED_NAME" elif [[ -z $TMUX ]]; then # outside tmux tmux new-session -s "$SELECTED_NAME" -c "$SELECTED" || \ tmux attach -t "$SELECTED_NAME" fi ===== apt - Linux Software Package Manager ===== #!/bin/bash sudo apt update && \ apt-get install -y \ build-essential \ cmake \ pkg-config \ libpthread-stubs0-dev sudo apt install -y \ curl \ htop \ python3-pip ===== Encryption and Decryption with Ansible ===== Encryption: $> ansible-vault encrypt FILE_NAME Decryption: $> ansible-vault decrypt FILE_NAME ===== Full list of software in the presentation ===== //Note 1: if the platform is not specified as Windows, Linux or MacOS, consider the software mentioned as Cross-platform (available on all).// //Note 2: Linux and MacOS are Unix-based operating systems// * **Shells (For Unix-based OS)**: * [[https://www.gnu.org/software/bash/|Bash]] (RECOMMENDED) * [[https://www.gnu.org/software/bash/|Fish]] * [[http://kornshell.com/|Ksh]] * [[https://zsh.sourceforge.io/|Zsh]] * **Terminal Emulators** (matter of personal choice): * [[https://konsole.kde.org/|Konsole]] (for Linux): Default in KDE’s desktop environment * [[https://sw.kovidgoyal.net/kitty/|kitty]]: GPU based terminal emulator * [[https://alacritty.org/|Alacritty]]: GPU based terminal emulator * [[https://gnome-terminator.org/|Terminator]] (for Linux): Terminal and terminal multiplexer * [[https://www.putty.org/|PuTTY]] (for Windows): Mainly ssh, serial and telnet connection * [[https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701|Windows Terminal]] (for Windows): "Terminal application for users of command-line tools and shells like Command Prompt, PowerShell, and WSL" (not installed by default) * Find more [[https://en.wikipedia.org/wiki/List_of_terminal_emulators|here]] * **Terminal Multiplexers** (for Unix-based OS): * [[https://gnome-terminator.org/|Terminator]]: (Requires a graphical environment to run) * [[https://www.gnu.org/software/screen/|Screen]]: Installed by default in many Linux distributions * [[https://github.com/tmux/tmux/wiki|Tmux]]: "It lets you switch easily between several programs in one terminal" (RECOMMENDED) * Article [[https://arcolinux.com/everthing-you-need-to-know-about-tmux-servers-and-sessions/| How does Tmux works]] * [[https://acloudguru.com/blog/engineering/tmux-cheat-sheet|Tmux Cheatsheet]] * **Automation**: * [[https://www.ansible.com/|Ansible]]: "Ansible is a suite of software tools that enables infrastructure as code." * Shortcuts and Macros * [[https://www.autohotkey.com/|AutoHotkey]] (for Windows): "The ultimate automation scripting language for Windows." * [[https://github.com/autokey/autokey|AutoKey]] (for Linux): "A desktop automation utility for Linux and X11." * [[https://setapp.com/apps/bettertouchtool|BetterTouchTools]] (for MacOS) * **Tiling Window Managers**: * [[https://i3wm.org/|i3]] (for Linux) * [[https://github.com/fuhsjr00/bug.n|bug.n]] (for Windows) * [[https://ianyh.com/amethyst/|Amethyst]] (for MacOS) * More about tiling window managers [[https://en.wikipedia.org/wiki/Tiling_window_manager|here]] * **Lightweight Markup Languages**: * [[https://www.markdownguide.org/|Markdown]] and flavors * [[https://www.mediawiki.org/wiki/Help:Formatting|MediaWiki]] * [[https://www.dokuwiki.org/wiki:syntax|DokuWiki]] * [[https://docutils.sourceforge.io/rst.html|reStructuredText]] * [[https://asciidoc.org/|AsciiDoc]] * Others options [[https://en.wikipedia.org/wiki/Lightweight_markup_language|here]] * **Hosting Docs**: * Markdown file in git repositories * Personal Wikis: DokuWiki, MediaWiki ... * SSGs (Static Site Generator): * [[https://pages.github.com/|Github Pages]] * [[https://docs.gitlab.com/ee/user/project/pages/|Gitlab Pages]] * **Diagrams**: * [[https://mermaid-js.github.io/mermaid/#/|Mermaid]] markdown extension for text-based diagrams. * [[https://app.diagrams.net/|Draw.io]] graph drawing software * **Screenshots**: * [[https://flameshot.org/|Flameshot]] "powerful, yet simple to use open-source screenshot software" {{pdfjs 500px>:capacity_building:workshops:tooling-slides-harley-lara.pdf?75}}