diff --git a/Naming-Conventions/NAMING-RESOURCES.md b/Naming-Conventions/NAMING-RESOURCES.md index da726e0e..aed8d5fd 100644 --- a/Naming-Conventions/NAMING-RESOURCES.md +++ b/Naming-Conventions/NAMING-RESOURCES.md @@ -2,7 +2,9 @@ ## Introduction -This document outlines the standard naming conventions for resources that are susceptible to be accessed or manipulated via the command-line interface (CLI). The aim is to improve code readability, ease of use, and collaborative work. +This document outlines the standard naming conventions for resources that are +susceptible to be accessed or manipulated via the command-line interface (CLI). +The aim is to improve code readability, ease of use, and collaborative work. ## Naming guidelines @@ -23,25 +25,32 @@ This document outlines the standard naming conventions for resources that are su ### Environment variables -- **Convention**: Start with the uppercase repository name, followed by the actual variable name, separating words with underscores. +- **Convention**: Start with the uppercase repository name, followed by the + actual variable name, separating words with underscores. - **Example**: `PROJECT_NAME_MY_ENV_VAR` ### Azure resource groups -- **Convention**: Start with `rg-` followed by the name in lowercase, separating words with dashes. +- **Convention**: Start with `rg-` followed by the name in lowercase, separating + words with dashes. - **Example**: `rg-resource-group` ### Azure resources -- **Convention**: Use lowercase and separate words with dashes. Include the project name and type of resource. -- **Example**: `$(PROJECT_NAME)-storage-account`. So for `PROJECT_NAME=nachet`, use `nachet-storage-account`. +- **Convention**: Use lowercase and separate words with dashes. Include the + project name and type of resource. +- **Example**: `$(PROJECT_NAME)-storage-account`. So for `PROJECT_NAME=nachet`, + use `nachet-storage-account`. ### SQL Files -- **Convention**: Use prefix with date format YYYY-mm-dd followed by a description of the script. +- **Convention**: Use prefix with date format YYYY-mm-dd followed by a + description of the script. - **Example**: `2023-09-24-description-of-script.sql` ## Notes -- These naming conventions should be followed for all new resources that can be accessed or manipulated via CLI. -- Existing resources that do not conform to these conventions should be refactored to match them. +- These naming conventions should be followed for all new resources that can be + accessed or manipulated via CLI. +- Existing resources that do not conform to these conventions should be + refactored to match them. diff --git a/README.md b/README.md index c08c2372..c7f37720 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,6 @@ developers closely associated with our projects. * [Architecture Decision Records](./adr/index.md)** - A list of all our ADRs. -* [Development Environment Setup - Guide](./Development-Environment-Setup-Guide/DEV-ENV-SETUP.md)** - A guide to - setting up a development environment with Dev Containers. - * [Development Environment Setup Guide](./Development-Environment-Setup-Guide/DEV-ENV-SETUP.md)** - A guide to setting up a development environment with Dev Containers. @@ -43,9 +39,20 @@ developers closely associated with our projects. approach to seamlessly integrate environment variables into your development workflow. ---- +* [Tools and guide for developers](./Tooling/Tooling.md) - List of documentation + and guides for utilizing applications in accordance with the AI Lab standards. + +* [Why Open Source + development](./Technology-and-the-government-of-Canada/Why-Open-Source-development.md) +\- A document explaining why AI Lab uses open-source technology. + +* [Using Generative AI: High-Level + Guidance](./Technology-and-the-government-of-Canada/Generative-AI-Guidance.md) +\- A document guiding the use of generative AI in government operations. + + --- We hope you find the Developer Relative Documentation helpful and engaging. If -you have any questions or need assistance, please reach out to the Ai-CFIA team. +you have any questions or need assistance, please reach out to the AI-CFIA team. Happy developing! diff --git a/TRAINING.md b/TRAINING.md index 0ccb825c..9c25913e 100644 --- a/TRAINING.md +++ b/TRAINING.md @@ -96,6 +96,8 @@ * [GoC IT security risk management ITSG-33](https://www.cyber.gc.ca/en/guidance/it-security-risk-management-lifecycle-approach-itsg-33) (~15 min) + * [DevOps roadmap](https://roadmap.sh/devops) + * Backend * [Build an AI web app by using Python and Flask](https://learn.microsoft.com/en-us/training/modules/python-flask-build-ai-web-app/) diff --git a/Technology-and-the-government-of-Canada/Generative-AI-Guidance.md b/Technology-and-the-government-of-Canada/Generative-AI-Guidance.md new file mode 100644 index 00000000..12098394 --- /dev/null +++ b/Technology-and-the-government-of-Canada/Generative-AI-Guidance.md @@ -0,0 +1,48 @@ +# Using Generative AI: High-Level Guidance + +## Overview + +Generative AI, such as ChatGPT and DALL-E, utilizes advanced algorithms to +autonomously create content. It offers vast potential for enhancing government +operations. However, its use is not universally applicable and should be +restricted to instances where risks can be effectively managed, balancing +potential benefits with responsible use. Generative AI encompasses technologies +that can: + +* Write and edit documents and emails +* Assist with coding tasks, such as debugging and generating templates +* Summarize information +* Aid in brainstorming sessions +* Conduct research and translation +* Facilitate learning +* Provide support to clients by answering questions and troubleshooting + +## Challenges and Concerns + +* Ethical, legal, and security considerations are paramount when deploying + generative AI. Issues range from biased or inaccurate outputs to breaches of + privacy and security protocols. +* Vigilance against potential misuse by threat actors is necessary to safeguard + institutional integrity, with adherence to the Canadian Center for + Cybersecurity’s guidelines. +* Generative AI must be used in compliance with strict privacy, security, + intellectual property, and human rights regulations. +* Overreliance on AI can impede critical human judgment and skills, alongside + environmental implications. +* Utmost caution is essential when integrating generative AI into + decision-making processes to avoid undermining procedural fairness and + accountability. + +## Recommended Approach + +* Begin with a Privacy Impact Assessment to gauge privacy concerns. Ensure + protection of sensitive data and comprehension of the legal ramifications of + AI outputs. +* Follow "FASTER" principles for responsible AI usage, and consult the ethical + decision-making guide when evaluating AI tools, emphasizing their role as + aides rather than replacements for employees. +* Tackle risks related to privacy, bias, and intellectual property diligently. +* Engage with legal, privacy, and security experts to address these issues and + validate AI's alignment with user and organizational requirements. +* Use AI as a support mechanism; avoid delegating tasks to AI in areas lacking + in-house expertise to maintain skill integrity within the organization. diff --git a/Technology-and-the-government-of-Canada/Why-Open-Source-development.md b/Technology-and-the-government-of-Canada/Why-Open-Source-development.md new file mode 100644 index 00000000..d7a70230 --- /dev/null +++ b/Technology-and-the-government-of-Canada/Why-Open-Source-development.md @@ -0,0 +1,119 @@ +# Why Open Source development at the CFIA AI Lab + +## Summary + +There are several reasons why a government agency artificial intelligence lab +should develop their projects openly as open-source development: + +1. Transparency: Open-source development provides transparency and + accountability, allowing citizens to understand how their tax dollars are + being spent. +1. Collaboration: Open-source development encourages collaboration and + knowledge-sharing, which can lead to faster and more efficient development. +1. Innovation: By making their projects open-source, government agencies can + leverage the collective intelligence of the community to identify and address + potential issues, resulting in more innovative and effective solutions. +1. Security: Open-source development allows for peer review and auditing, which + can improve the security and quality of the software. +1. Cost-effectiveness: By leveraging the open-source community, government + agencies can reduce the cost of development and maintenance, as well as avoid + vendor lock-in. + +Overall, open-source development can help government agencies create better, +more secure, and more cost-effective AI solutions that benefit both the +government and the public. + +## What are the reasons not to? + +There are some potential reasons why a government agency artificial intelligence +lab may choose not to develop their projects openly as open-source development: + +1. Security concerns: If the project involves sensitive information or national + security, making it open-source could potentially expose vulnerabilities to + bad actors. +1. Resource constraints: Developing a project openly as open-source development + requires significant time and resources to manage the community + contributions, which may not be feasible for government agencies with limited + resources. +1. Lack of expertise: Government agencies may not have the necessary expertise + to manage an open-source development community, which could lead to quality + control issues and delays in development. +1. Political considerations: There may be political considerations that make it + difficult for a government agency to release a project as open-source, such + as concerns about government overreach or criticism from industry + stakeholders. + +Overall, whether or not a government agency chooses to develop their projects +openly as open-source development depends on a variety of factors, including the +nature of the project, the agency's resources and capabilities, and the +political climate. + +## How do we mitigate risks while keeping the benefits + +1. Security concerns: The agency can make the project publicly available, but + limit access to sensitive information to authorized personnel. Additionally, + the agency can conduct internal security audits and testing to identify and + mitigate potential vulnerabilities. +1. Resource constraints: The agency can leverage existing open-source + communities or partner with other organizations to help manage the + development community. +1. Lack of expertise: The agency can hire or contract with experts in + open-source development to help manage the community contributions and ensure + quality control. +1. Political considerations: The agency can engage in public outreach and + education to build support for the project and address any concerns or + criticisms. + +Overall, by addressing these concerns and taking appropriate measures, a +government agency can still benefit from the advantages of open-source +development while mitigating any potential risks. + +## Specifics to our situation + +### Dependency to Open Source + +We already depend heavily on open source tools with open development and +user-contributed work, whether it is [Visual Studio +Code](https://github.com/microsoft/vscode), [Bicep configuration +files](https://github.com/Azure/bicep), [Jupyter +notebooks](https://github.com/jupyter), +[OpenSSL](https://github.com/openssl/openssl), +[Git](https://github.com/git/git). + +### Tooling + +GitHub, the Open Source platform of choice, is owned by Microsoft, our technology +partner and is the premier platform for open source development. + +### Alpha deployment: [alpha.canada.ca](https://alpha.canada.ca/en/index.html) + +As part of the Government of Canada’s commitment to experimentation, this web +domain hosts experimental and prototype websites and services. These websites +and services are continually evolving “alpha” products that are still in +development and are not ready for full public use. This domain collects ongoing +experiments in one place, to make it easier for the government to collaborate +and share its experiments. They are publicly available in the spirit of working +in the open. + +To be deployed on [alpha.canada.ca](https://alpha.canada.ca/en/index.html), a +web application or service needs to meet the following criteria: + +* hosted on public cloud infrastructure +* open source on a publicly-visible repository +* automatically deployable via git operations +* use HTTPS +* actively developed within the past four months + +### Complying with Government of Canada Digital Standards + +[Digital +Standards](https://www.canada.ca/en/government/system/digital-government/government-canada-digital-standards.html) +require us to do development in the open. + +* "Share evidence, research and decision-making openly. Make all non-sensitive + data, information, and new code developed in delivery of services open to the + outside world for sharing and reuse under an open license." +* "Collaborating widely allows us to learn lessons from others to minimize + mistakes and reduce rework by identifying and sharing existing solutions. The + problems that government solves are often unique, though they are not unique + among governments." diff --git a/Tooling/Apps/GitHub/GitHub-Copilot.md b/Tooling/Apps/GitHub/GitHub-Copilot.md new file mode 100644 index 00000000..40be5d10 --- /dev/null +++ b/Tooling/Apps/GitHub/GitHub-Copilot.md @@ -0,0 +1,68 @@ +# GitHub Copilot + +## Full-time employees - Requesting GitHub Copilot Access + +Email to get a license. + +## Interns - Requesting GitHub Copilot Access + +1. Log in to your GitHub account. + +1. Ensure that your university email is linked to your account + [here](https://github.com/settings/emails). If not, add it and follow the + steps to verify it. + +1. Then, visit the [GitHub Education](https://education.github.com/pack) student +pack page and click on "Sign up for Student Developer Pack" if you don't already +have it. Get student benefits as Individuals. +![alt text](images/developer.png) +![alt text](images/individuals.png) +1. Fill out the request form with the required information. Make sure to use +your student email address and have a valid document or a picture of your student +card to send in the verification section. +![alt text](images/proof.png) + +1. Submit your request. Once your request is submitted, you will need to wait + for confirmation from GitHub to access GitHub Copilot. Time may vary, so be + patient. + +--- + +## Installing GitHub Copilot in VS Code + +Once you get the confirmation that your request has been approved, follow these +steps : + +1. Open VS Code on your computer or a Codespace in GitHub. + +1. Go to the "Extensions". Shortcut is `Ctrl+Shift+X`. + +1. Search for "GitHub Copilot" in the search bar. +![alt text](images/extensions.png) + +1. Install the extension by clicking the "Install" button. + +1. Restart VS Code to activate GitHub Copilot. You may need to log in with your + GitHub account if not already done. Follow the instructions to set up GitHub + Copilot. + +--- + +## Using GitHub Copilot + +If you start typing code in your file, GitHub Copilot will automatically +generate code suggestions as you type. Use suggestions by pressing `Tab` to +accept them. If a suggestion is not accurate, you can modify it before +accepting. + +There is also a chat section that is similar to ChatGPT. + +![alt text](images/chat.png) + +## Tips for Effective Use + +- **Code Review:** Always check the code generated by GitHub Copilot to ensure + its accuracy and security. + +- **Continuous Learning:** Use GitHub Copilot as a learning tool by examining + generated suggestions to understand new concepts and best practices. diff --git a/Tooling/Apps/GitHub/GitHub.md b/Tooling/Apps/GitHub/GitHub.md new file mode 100644 index 00000000..a8f1af5c --- /dev/null +++ b/Tooling/Apps/GitHub/GitHub.md @@ -0,0 +1,104 @@ +# GitHub + +## Executive summary + +AI Lab is adopting an Open Source, Open Data, Open Model approach and GitHub is the +best platform to create collaboration with our internal and external partners to +develop new products that have wide applicability and are deployable +cross-cloud. + +These applications are developed and tested with publically available data (such +as the information published on our public website). + +AI Lab GitHub repositories are all public and licensed under the MIT licenses. + +GitHub provides generous free resources for open source projects, allowing us to +stick to their [GitHub free for organizations +plan](https://docs.github.com/en/get-started/learning-about-github/githubs-plans#github-free-for-organizations) + +- Including 3,000 GitHub Actions minutes per month of Continuous Integration / +Continuous Deployment resources. + +## Why GitHub? + +- [ADR-004: Open Source + Development](https://github.com/ai-cfia/dev-rel-docs/blob/main/adr/004-open-source-development.md) +- [ADR-007: Selecting GitHub as Code Hosting + Platform](https://github.com/ai-cfia/dev-rel-docs/blob/redat97/issue51/adr/007-code-hosting-platform.md) + +## Benefits + +- [Automated code security and + analysis](https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security) + - One of the highest risks is pulling in a compromised external library into + our infrastructure + - This is not exclusive risk to GitHub; it's quite possible that a dependency + installed in an app internally could pull in a compromised external + dependency + - GitHub code scanning also integrates with [Azure DevOps + itself](https://learn.microsoft.com/en-us/azure/devops/repos/security/configure-github-advanced-security-features?view=azure-devops&tabs=yaml) +- [GitHub Actions](https://docs.github.com/en/actions): rich library of + automated workflows, including AI bot reviews. + - [Our GitHub workflows](https://github.com/ai-cfia/github-workflows/) + - Already deploying to Google GCP (free credits), preparing to deploy to a + free credits account on Azure +- [GitHub Codespaces](https://docs.github.com/en/codespaces/overview): + development in a web browser in the cloud using the same Visual Studio Code + environment we find on the desktop. + - This allows our collaborators (most of whom are interns) to quick ramp up + start developing, reducing the time to contribute from days to hours. +- [GitHub Copilot](https://github.com/features/copilot): AI-supported code + writing improving developer productivity 10x to 100x + +## GitHub and Security + +- Multifactor authentication is required for all organization members +- Dependabot (dependency scanning and repos) has been enabled on all repos + +## Audit based on Cloud Guard Rails + +[GC Cloud Guardrails GitHub repository](https://github.com/canada-ca/cloud-guardrails) + +### 01 Protect root / global admins account + +### 02 Management of administrative privileges + +### 03 Cloud console access + +### 04 Enterprise monitoring accounts + +### 05 Data location + +### 06 Protection of data-at-rest + +### 07 Protection of data-in-transit + +### 08 Segment and separate + +### 09 Network security services + +### 10 Cyber defense services + +### 11 Logging and monitoring + +### 12 Configuration of cloud marketplaces + +## Deployment + +Steps: + +- Our ongoing open source products are being deployed to GCP +- Deploy to Azure free account +- Deploy to our Azure Sandbox (through artifact registry) +- Deploy to Azure + +## Infrastructure-as-code + +- [Infrastructure as code (IaC) as key to truly secure infrastructure + #143](https://github.com/canada-ca/cloud-guardrails/issues/143) + +## Integration steps + +1. Billing + +1. Deployment from GitHub to our Sandbox (and Artifacts registry) diff --git a/Tooling/Apps/GitHub/Github-Codespaces.md b/Tooling/Apps/GitHub/Github-Codespaces.md new file mode 100644 index 00000000..ec79f0d4 --- /dev/null +++ b/Tooling/Apps/GitHub/Github-Codespaces.md @@ -0,0 +1,66 @@ +# GitHub Codespaces + +## What is Codespaces + +GitHub Codespaces is a cloud-based development environment that uses a container +to provide you with common languages, tools, and utilities for development. You +can add plugins and extensions within a Codespace to personalize your experience +in Visual Studio Code (VSC). + +When you want to use a Codespace, go on the branch you want to open : + +![alt text](images/ai-lab.png) + +Then, click on code and open a new Codespace if it's the first time you open the +branch or open the already existing one if you already worked on it before ! + +![alt text](images/branch.png) + +## Why we use Codespaces + +### Easier install + +Instead of requiring local administrative access and installing software +locally, we open up on the cloud. + +### Less security risks + +Because no software is installed locally, and every code base is containerized by +default, this creates a faster. + +### Limitations from local network + +Note that firewall at work blocks outgoing port 5432 (PostgreSQL). A ticket is +opened with security to unblock the port to our sandbox and also provide +instructions to connect through VPN for our dev and prod environment. + +For now, the workaround is to connect through GitHub Codespaces which is outside +our firewall, so the connection works. + +To learn more about Codespaces, you can read up on the [GitHub documentation on +Codespaces](https://github.com/features/codespaces) + +## Secrets management + +To connect to external services such as the database, you need passwords and API +keys. Typically, locally we'd create an ```.env``` environment but in +Codespaces, you need to use secrets. You can refer to the [GitHub documentation +on +secrets](https://docs.github.com/en/codespaces/managing-your-codespaces/managing-secrets-for-your-codespaces#adding-a-secret) + +This procedure is exactly how to do it, you can read the rest of the page if you +want to know more. + +To know which values you are supposed to put inside these secrets, you need +to go on [Azure portal](https://portal.azure.com/#home) and go to "all +resources" then find "ailabpostgres" and click on it. + +You then need to click on connect and follow the connection details. + +Another explanation for the secrets in use are available on the [developer page +within the ailab-db +repository](https://github.com/ai-cfia/ailab-db/blob/main/DEVELOPER.md) + +Note that you can manage secrets directly from within your Codespaces: + +![alt text](images/command.png) diff --git a/Tooling/Apps/GitHub/Managing-GitHub-Projects.md b/Tooling/Apps/GitHub/Managing-GitHub-Projects.md new file mode 100644 index 00000000..4c91cc56 --- /dev/null +++ b/Tooling/Apps/GitHub/Managing-GitHub-Projects.md @@ -0,0 +1,67 @@ +# Managing GitHub Projects + +This guide intends to help in creating and managing GitHub projects in a way +that's clear and understandable for our team, managers, and clients. It focuses +on ensuring tasks are visible and prioritized, leading to organized and +efficient project management. It extends this +[guideline](https://github.com/ai-cfia/.github/blob/main/profile/CONTRIBUTING.md#working-with-github-projects). + +## Setting Up a GitHub Project + +For setting up a new project, follow the instructions provided in the GitHub +documentation: [Creating a Project +Board](https://docs.github.com/en/issues/organizing-your-work-with-project-boards/managing-project-boards/creating-a-project-board#creating-an-organization-wide-classic-project). +Typically, your supervisor or manager will handle the creation of new projects. + +## Managing Issues and Tasks + +This section details how we handle issues and tasks within our GitHub projects. + +### Project Views + +A project should include all related issues from connected repositories. +Ideally, it should not track PRs. + +- The default view should be a table sorted by priority, showing issues marked + as 'Todo' or 'In Progress' (filter: `status:Todo,"In Progress"`). It should + show relevant issues that give a good idea of project's status. +- A second table view serves as our backlog, filtering out tasks marked as + 'Todo', 'In Progress', or 'Done' (filter: `-status:Todo,"In Progress",Done`). +- We also maintain at least one board view for status tracking and a Roadmap + view for temporal tracking. + +Views can be customized as needed. + +For more insights, watch these videos: + +- [Plan and Track Projects Close to Your Code + #DemoDays](https://www.youtube.com/watch?v=SI1ra-XHWHM) +- [Learn How to Use Project Roadmaps - GitHub + Checkout](https://www.youtube.com/watch?v=D80u__nYYWw) + +### Creating Issues + +Create issues directly from the GitHub projects, preferably in the backlog view. +A good starting point is the GitHub guide [About +Issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues). +Follow our internal guidelines for creating an issue, available +[here](https://github.com/ai-cfia/.github/blob/main/profile/CONTRIBUTING.md#filing-an-issueticket). + +### Prioritizing Issues + +We should prioritize issues at least weekly and maintain clean boards. In the +priority table view, adjust issue order by dragging rows. It's possible to group +items by milestones while keeping priority order within each group. + +### Labeling Issues + +- **Creating Labels:** Usually, use existing labels. If an important one is + missing, consult your supervisor or manager before creating it. +- **Using Labels:** Key labels include 'user-visible' for tasks directly + impacting users (urgent) and 'good first issue' for simpler tasks suitable for + new interns. Use other labels sparingly. + +--- + +Based on comments from the team meeting "Issues and Projects cleaning up" on +Friday 2023-12-08. diff --git a/Tooling/Apps/GitHub/images/ai-lab.png b/Tooling/Apps/GitHub/images/ai-lab.png new file mode 100644 index 00000000..02ef8773 Binary files /dev/null and b/Tooling/Apps/GitHub/images/ai-lab.png differ diff --git a/Tooling/Apps/GitHub/images/branch.png b/Tooling/Apps/GitHub/images/branch.png new file mode 100644 index 00000000..5148a2f3 Binary files /dev/null and b/Tooling/Apps/GitHub/images/branch.png differ diff --git a/Tooling/Apps/GitHub/images/chat.png b/Tooling/Apps/GitHub/images/chat.png new file mode 100644 index 00000000..680e335f Binary files /dev/null and b/Tooling/Apps/GitHub/images/chat.png differ diff --git a/Tooling/Apps/GitHub/images/command.png b/Tooling/Apps/GitHub/images/command.png new file mode 100644 index 00000000..003a7512 Binary files /dev/null and b/Tooling/Apps/GitHub/images/command.png differ diff --git a/Tooling/Apps/GitHub/images/developer.png b/Tooling/Apps/GitHub/images/developer.png new file mode 100644 index 00000000..7e50408a Binary files /dev/null and b/Tooling/Apps/GitHub/images/developer.png differ diff --git a/Tooling/Apps/GitHub/images/extensions.png b/Tooling/Apps/GitHub/images/extensions.png new file mode 100644 index 00000000..41c42589 Binary files /dev/null and b/Tooling/Apps/GitHub/images/extensions.png differ diff --git a/Tooling/Apps/GitHub/images/individuals.png b/Tooling/Apps/GitHub/images/individuals.png new file mode 100644 index 00000000..ecbcc207 Binary files /dev/null and b/Tooling/Apps/GitHub/images/individuals.png differ diff --git a/Tooling/Apps/GitHub/images/proof.png b/Tooling/Apps/GitHub/images/proof.png new file mode 100644 index 00000000..b1ff6508 Binary files /dev/null and b/Tooling/Apps/GitHub/images/proof.png differ diff --git a/Tooling/Apps/SQL/PostgreSQL-Command-Line.md b/Tooling/Apps/SQL/PostgreSQL-Command-Line.md new file mode 100644 index 00000000..8e43addd --- /dev/null +++ b/Tooling/Apps/SQL/PostgreSQL-Command-Line.md @@ -0,0 +1,50 @@ +# PostgreSQL Commands + +## Introduction + +PostgreSQL, also known as Postgres, is a free and open-source relational +database management system emphasizing extensibility and SQL compliance. The +commands described below are used to connect to a database, set search paths, +and execute SQL files. + +## Commands + +### Connect to a database + +```shell +psql -U username -d database_name +``` + +This command is used to connect to a specific PostgreSQL database. Replace +`username` with your user name and `database_name` with the name of the database +you want to connect to. + +### Set search path and execute SQL file + +```shell +PGOPTIONS=--search_path=schema_name psql -U username -d database_name -a -f 2023-11-28-create-histogram.sql +``` + +This command sets the search path to a specific schema and executes an SQL file. +Replace `schema_name` with the name of your schema, `username` with your +username, `database_name` with the name of your database, and replace +`2023-11-28-create-histogram.sql` with your SQL file name. + +### Execute SQL file and output to CSV + +```shell +psql -U username -d database_name \ + -a --csv \ + -f 2023-11-30-select-chunk-score.sql \ + -o result.html +``` + +This command executes an SQL file and outputs the result to a CSV file. Replace +`username` with your username, `database_name` with the name of your database, +`2023-11-30-select-chunk-score.sql` with your SQL file name, and `result.html` +with the name of the output file. + +## Conclusion + +These commands provide a way to interact with PostgreSQL databases, execute SQL +files and manage the output format of the results. diff --git a/Tooling/Apps/Visual-Studio-Code/Extensions.md b/Tooling/Apps/Visual-Studio-Code/Extensions.md new file mode 100644 index 00000000..e89e67fc --- /dev/null +++ b/Tooling/Apps/Visual-Studio-Code/Extensions.md @@ -0,0 +1,88 @@ +# List of Visual Studio Code extensions + +## ShellCheck + +### Extension: timonwong.shellcheck + +![alt text](images/shell.png) + +ShellCheck is a tool that gives warnings and suggestions for bash/sh shell +scripts. + +### Configuration and usage + +Refer to: + +## Black Formatter + +### Extension: ms-python.black-formatter + +![alt text](images/black.png) + +On save (i.e. `Ctrl+S`), it automatically formats your python code to make sure +it adheres to a consistent style. This makes the codebase more uniform and +readable. + +### Configuration + +Refer to: + + +## Extension: ms-python.python + +![alt text](images/python.png) + +## Extension: ms-vscode-remote.vscode-remote-extensionpack + +![alt text](images/remote.png) + +## Configuration and Usage + +Refer to [Development Environment +Setup](https://github.com/ai-cfia/dev-rel-docs/blob/main/Development-Environment-Setup-Guide/DEV-ENV-SETUP.md#dev-containers-in-vs-code). + +## Extension: GitHub.vscode-pull-request-github + +![alt text](images/pull.png) + +Note: +> Before doing this, make sure to open the command palette (Ctrl + Shift + P) +> and typing `settings` and choose the JSON option. In the setting add +> `"githubIssues.issueBranchTitle": +> "issue-${issueNumber}-${sanitizedLowercaseIssueTitle}"` to your setting. This +> will name the branch according to your issue title. + +### Create an issue + +Click on the + button in the Issues section. + +![alt text](images/issue.png) + +Fill in the information and submit the issue by pressing the checkmark button in +the top right corner. + +![alt text](images/tabs.png) + +Make sure to follow the [Issue Management +Guidelines](https://github.com/ai-cfia/.github/blob/455ac25f02250a7ea36d77b1737b606338035171/profile/CONTRIBUTING.md). + +### Create a Pull Request + +Click on the + button in the Pull Requests section. + +![alt text](images/pull-tab.png) + +Fill in the information and press `Create`. + +![alt text](images/create.png) + +Don't forget to follow the [Issue Management +Guidelines](https://github.com/ai-cfia/.github/blob/455ac25f02250a7ea36d77b1737b606338035171/profile/CONTRIBUTING.md). + +## Extension: charliermarsh.ruff + +![alt text](images/ruff.png) + +Example + +![alt text](images/code.png) diff --git a/Tooling/Apps/Visual-Studio-Code/Installation.md b/Tooling/Apps/Visual-Studio-Code/Installation.md new file mode 100644 index 00000000..ef091578 --- /dev/null +++ b/Tooling/Apps/Visual-Studio-Code/Installation.md @@ -0,0 +1,42 @@ +# Visual Studio Code Installation + +## IDE and basics installs + +* [GitHub + Codespaces](../GitHub/Github-Codespaces.md): + Visual Studio Code in your browser - recommended +* Visual Studio Code local + install: Deprecated ⚠️ + +## VS Code Extensions to install + +1. [Remote Development + Extension](Extensions.md) +2. [Python + Extension](Extensions.md) +3. [GitHub Pull Requests and + Issues](Extensions.md) +4. [Ruff](Extensions.md) +5. [Black + Formatter](Extensions.md) + +## VS Code Settings + +If you're working on an existing project, its [Dev +Container](https://containers.dev/) should already have configured within the +rest of the necessary extensions. Look inside the `devcontainer.json` file in +the `customizations` section. Otherwise, create an issue in your project to add +them. Refer to [this +guide](https://github.com/ai-cfia/dev-rel-docs/blob/main/Development-Environment-Setup-Guide/DEV-ENV-SETUP.md#dev-containers-in-vs-code) +for the necessary extensions. + +If you're creating a new project, follow [this +guide](https://github.com/ai-cfia/dev-rel-docs/blob/main/Development-Environment-Setup-Guide/DEV-ENV-SETUP.md#dev-containers-in-vs-code) +for details about what extensions to include in your Dev Container configuration +and more. + +## Configuration + +see example +[settings.json](https://github.com/ai-cfia/.github/blob/main/.vscode/settings.json) +on our GitHub organization diff --git a/Tooling/Apps/Visual-Studio-Code/Troubleshooting.md b/Tooling/Apps/Visual-Studio-Code/Troubleshooting.md new file mode 100644 index 00000000..10e488f5 --- /dev/null +++ b/Tooling/Apps/Visual-Studio-Code/Troubleshooting.md @@ -0,0 +1,46 @@ +# Troubleshooting Visual Studio Code + +## Steps to troubleshoot local config on Visual studio + +The reason for using DevContainers is explained here: + +Your Open Source Project Needs a devcontainer - Here's Why (aaron-powell.com) + +- Consistency: As mentioned above, the biggest benefit of using dev containers + is that they allow you to consistently reproduce your development environment. + This means that you can be confident that your code will run the same way on + any computer, regardless of the underlying operating system or installed + software. +- Collaboration: Dev containers make it easy for teams to collaborate on + projects. Instead of each team member needing to set up their own development + environment, everyone can use the same dev container. This ensures that + everyone is working in the same environment, which can help to prevent + conflicts and ensure that everyone is on the same page. +- Portability: Because dev containers are self-contained, they can be easily + moved from one computer to another. This makes it easy to work on your project + on multiple computers or to share your development environment with others. +- Isolation: Dev containers provide isolation, which means they won’t interfere + with any other software or processes running on your computer. This can help + to prevent conflicts, compatibility issues, or even damage, and it ensures + that your development environment is clean and stable. + +![alt text](images/dev.png) + +In the terminal, run the following command: +`./install-postgresl-client-15.sh` + +Once the downloads are complete, run the following command: `code .` + +This will open up new VS code window + +Then find Command Palette (or Ctrl+Shift+p) + +![alt text](images/command.png) + +Then find this is the search bar + +![alt text](images/bar.png) + +Finally confirm this is shown in the bottom left corner of VS code + +![alt text](images/dev.png) diff --git a/Tooling/Apps/Visual-Studio-Code/Unit-Tests.md b/Tooling/Apps/Visual-Studio-Code/Unit-Tests.md new file mode 100644 index 00000000..54dbd221 --- /dev/null +++ b/Tooling/Apps/Visual-Studio-Code/Unit-Tests.md @@ -0,0 +1,45 @@ +# Writing and Running Unit Tests with Visual Studio Code + +## Why Write Unit Tests? + +- **Ensure Code Quality:** Unit tests help maintain code quality by verifying + that each unit of code function correctly. + +- **Detect Bugs Early:** Writing tests allows catching and fixing bugs early in the + development process, reducing issues in the future. + +- **Facilitate Refactoring:** When changes are made to code, unit tests act as a + safety net, helping to ensure that existing functionality still works after + modifications. + +## How to Write and Run Unit Tests in Python using VS Code + +In the process of creating code, it is a good practice to organize testing by +associating **one test file with a specific functionality**. This approach helps +maintain clarity and ensures that each test file corresponds to a distinct +feature or functionality within the codebase. When dealing with multiple +functionalities contained in a single file, it is advisable to create a +dedicated test file for that specific code file. + +Tests are typically focused on small functions, avoiding interactions with +databases or external dependencies. This allows for efficient and isolated +testing of individual units, ensuring that each function performs as expected in +isolation. The test file is intricately linked to the corresponding code file, +forming a cohesive unit where changes or updates in the code are reflected and +validated through the associated tests. This practice contributes to a +systematic and organized testing strategy, facilitating the identification and +resolution of issues specific to each functionality. + +To get started on testing your project in Visual Studio Code, click on the +following icon on the left: + +![alt text](images/icon.png) + +Then, click on "Configure Python Tests", select unittest and the test folder of +your project. It is usually named "tests". + +![alt text](images/testing.png) + +If your tests require connecting to a database or an API, you should include the +`SetUp(self)` and `TearDown(self)` functions as they will be called before and +after each test. diff --git a/Tooling/Apps/Visual-Studio-Code/images/bar.png b/Tooling/Apps/Visual-Studio-Code/images/bar.png new file mode 100644 index 00000000..00b2356c Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/bar.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/black.png b/Tooling/Apps/Visual-Studio-Code/images/black.png new file mode 100644 index 00000000..cbd37851 Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/black.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/code.png b/Tooling/Apps/Visual-Studio-Code/images/code.png new file mode 100644 index 00000000..f5949a90 Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/code.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/command.png b/Tooling/Apps/Visual-Studio-Code/images/command.png new file mode 100644 index 00000000..ab2b587c Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/command.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/create.png b/Tooling/Apps/Visual-Studio-Code/images/create.png new file mode 100644 index 00000000..4d56397c Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/create.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/dev.png b/Tooling/Apps/Visual-Studio-Code/images/dev.png new file mode 100644 index 00000000..8aff26ae Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/dev.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/icon.png b/Tooling/Apps/Visual-Studio-Code/images/icon.png new file mode 100644 index 00000000..8fa01a6e Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/icon.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/issue.png b/Tooling/Apps/Visual-Studio-Code/images/issue.png new file mode 100644 index 00000000..c531013d Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/issue.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/pull-tab.png b/Tooling/Apps/Visual-Studio-Code/images/pull-tab.png new file mode 100644 index 00000000..69d5ddeb Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/pull-tab.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/pull.png b/Tooling/Apps/Visual-Studio-Code/images/pull.png new file mode 100644 index 00000000..c6c8990a Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/pull.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/python.png b/Tooling/Apps/Visual-Studio-Code/images/python.png new file mode 100644 index 00000000..0cfa9dd4 Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/python.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/remote.png b/Tooling/Apps/Visual-Studio-Code/images/remote.png new file mode 100644 index 00000000..d707d591 Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/remote.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/ruff.png b/Tooling/Apps/Visual-Studio-Code/images/ruff.png new file mode 100644 index 00000000..12cb178a Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/ruff.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/shell.png b/Tooling/Apps/Visual-Studio-Code/images/shell.png new file mode 100644 index 00000000..7ee0986b Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/shell.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/tabs.png b/Tooling/Apps/Visual-Studio-Code/images/tabs.png new file mode 100644 index 00000000..f3586a12 Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/tabs.png differ diff --git a/Tooling/Apps/Visual-Studio-Code/images/testing.png b/Tooling/Apps/Visual-Studio-Code/images/testing.png new file mode 100644 index 00000000..2327d88a Binary files /dev/null and b/Tooling/Apps/Visual-Studio-Code/images/testing.png differ diff --git a/Tooling/Core-concepts/Environment-variables.md b/Tooling/Core-concepts/Environment-variables.md new file mode 100644 index 00000000..78ad003d --- /dev/null +++ b/Tooling/Core-concepts/Environment-variables.md @@ -0,0 +1,56 @@ +# Environment variables + +_This page will serve as a knowledge base with the purpose of developing our +understanding of core programming concepts._ + +Environment variables are key-value pairs that are external to the application, +and they can be used to configure and manage settings and behaviors without +altering the application code. They are often used to store sensitive +information, such as API keys and passwords, or to define settings that can vary +between development, testing, and production environments. + +## Accessing and Setting Environment Variables + +* **In Code**: Programming languages provide mechanisms to access environment +variables. For example, in Python, the OS module is commonly used: + +```python +import os +value = os.environ.get('VARIABLE_NAME') +``` + +* **In Shell**: They can be accessed and set directly in the shell. In Unix or +Linux based systems, you can use commands like: + +```sh +export VARIABLE_NAME=value +echo $VARIABLE_NAME +``` + +* **Environment Files**: Alternatively, environment variables can be declared in +environment files (e.g., .env), which can be loaded into the application at +runtime (using the `python-dotenv` library for instance). + +* **In Dockerfile**: You can set environment variables in your Dockerfile using +the `ENV` instruction. This sets the variable for the container and any +applications running within it. + +```Dockerfile +FROM python:3.11 + +ENV MY_VARIABLE=my_value + +CMD ["my_application"] +``` + +## Summary + +Environment variables are akin to the settings and configurations of an +operating system, providing a mechanism to store data that influences the +behavior of applications and the system. Much like how an OS retains user +preferences and system configurations even after a reboot, environment variables +allow applications to remember configurations and settings, eliminating the need +to set them up every time the application runs. They serve as persistent storage +for configurations, ensuring that applications can access the required settings +and operate correctly in different environments without manual intervention each +time. diff --git a/Tooling/Diagrams/Canva.md b/Tooling/Diagrams/Canva.md new file mode 100644 index 00000000..c617c112 --- /dev/null +++ b/Tooling/Diagrams/Canva.md @@ -0,0 +1,88 @@ +# Canva + +## Considerations + +Each diagram should display the following information: + +* Title +* Date of creation +* Agency Logo +* Author's agency email: +* AI Lab email: + +To prevent having to look for diagrams in the case where we would need to edit +one, use [this Canva +Whiteboard](https://www.canva.com/design/DAFzCw9SgCY/dhjzUTbgNl29QOJIqOXEOA/edit?ui=eyJHIjp7fX0) +and add your new diagram as a new page. + +--- + +### Step 1: Duplicate Diagram Template + +![alt text](images/duplicate.png) + +* Right-click the template and duplicate it + +### Step 2: Create your Diagram + +Whiteboards have no size limit, take space you need. When you export your +diagram, it will crop automatically. **Ensure your new diagram follows this same +layout.** +![alt text](images/graph.png) + +### Step 3: Export your Diagram + +* File → Download + +--- + +### Tips + +#### Creating an empty shape + +* Select "Elements" from the side menu + +![alt text](images/elements.png) + +* Select "See all" in the Shapes category +* Select the shape you need +* On the canvas, select the shape that was added +* Click on "Color" + +![alt text](images/color.png) + +* Select "No color" + +![alt text](images/nocolor.png) + +* Click on "Border style" + +![alt text](images/border.png) + +* Apply desired border style +* Change color as desired + +![alt text](images/border_color.png) + +* Double-click in the shape to add text directly + +#### Adding curved arrows between elements + +![alt text](images/element1.png) + +* Select "Elements" from the side menu +* From the Shapes category, select the arrow shape you need +* Connect the arrow to the elements + +![alt text](images/arrow.png) + +* Select the arrow +* Select "Line type" + +![alt text](images/line.png) + +* Select "Elbowed" + +![alt text](images/elbowed.png) + +* You can also change the color, the style, and the line start/end diff --git a/Tooling/Diagrams/Creating-diagrams.md b/Tooling/Diagrams/Creating-diagrams.md new file mode 100644 index 00000000..4f18e454 --- /dev/null +++ b/Tooling/Diagrams/Creating-diagrams.md @@ -0,0 +1,16 @@ +# Creating Diagrams + +## Considerations + +Each diagram should display the following information: + +* A title for the diagram +* Date of creation +* Agency Logo +* AI Lab personal email: +* AI Lab email: + +The information should be at the bottom of the diagram, and should not be too +big to not overwhelm the data. Put the title at the top. + +_Example :_ ![alt text](images/diagram.png) diff --git a/Tooling/Diagrams/Mermaid-Diagrams.md b/Tooling/Diagrams/Mermaid-Diagrams.md new file mode 100644 index 00000000..5cd62d56 --- /dev/null +++ b/Tooling/Diagrams/Mermaid-Diagrams.md @@ -0,0 +1,107 @@ +# Mermaid Diagrams + +[GitHub doc](https://mermaid.js.org/intro/) [Azure +doc](https://learn.microsoft.com/en-us/azure/devops/project/wiki/markdown-guidance?view=azure-devops#add-mermaid-diagrams-to-a-wiki-page) + +## Introduction to Mermaid + +>"Mermaid is a JavaScript based diagramming and charting tool that uses +Markdown-inspired text definitions and a renderer to create and modify complex +diagrams. The main purpose of Mermaid is to help documentation catch up with +development." (Mermaid Doc, 2024) + +In short, mermaid help developer create diagram to document their work. Mermaid +is also integrated into Azure DevOps and GitHub. Using Mermaid can help +developer to document their issues easily without having to create a diagram on +another platform first. Mermaid supports a wide variety of diagram such as: + +* sequence diagram +* flowchart +* class diagram +* state diagram +* and much more + +## How to use Mermaid + +In VS Code (or Codespace) you will need to install these extensions: + +* Mermaid Preview +* Markdown Preview Mermaid Support +* Mermaid Markdown Syntax Highlighting + +Here's a few examples of how to create a mermaid diagram: + +### Flowchart diagram + +From left to right + +```markdown + :::mermaid + graph LR; + A[Hard edge] -->|link text| B(Round edge) --> C{Decision} + C --> |One| D[Result one] + C --> |Two| E[Result two] + ::: +``` + +:::mermaid +graph LR; + A[Hard edge] -->|Link text| B(Round edge) --> C{Decision} + C -->|One| D[Result one] + C -->|Two| E[Result two] +::: + +From top to bottom + +```markdwon + :::mermaid + graph TD; + A[Top]-->B[Down] + ::: +``` + +:::mermaid + graph TD; + A[Top]-->B[Down] +::: +Even if display is similar, GitHub support another syntax. + +```markdwon + mermaid + Flowchart TD; + Top --> Down +``` + +_The mermaid code need to be encapsulated in _**```**_ citation._ + +### Sequence diagram + +```markdown + :::mermaid + sequenceDiagram + Christie->>Josh: Hello Josh, how are you? + Josh-->>Christie: Great! + Christie->>Josh: See you later! + ::: +``` + +:::mermaid + sequenceDiagram + Christie->>Josh: Hello Josh, how are you? + Josh-->>Christie: Great! + Christie->>Josh: See you later! +::: + +Again this syntax will result in a similar display on GitHub : + +```markdwon +mermaid + sequenceDiagram + Alice->>John: Hello John, how are you? + John-->>Alice: Great! + Alice-)John: See you later! +``` + +The mermaid code need to be encapsulated in _**```**_ citation. + +For more features on mermaid, visit the doc. [:point_up:](#mermaid-diagrams) diff --git a/Tooling/Diagrams/PlantUML.md b/Tooling/Diagrams/PlantUML.md new file mode 100644 index 00000000..033dd4f2 --- /dev/null +++ b/Tooling/Diagrams/PlantUML.md @@ -0,0 +1,27 @@ +# PlantUML for Diagramming + +## What is PlantUML? + +[PlantUML](http://plantuml.com/) is a tool for generating diagrams from plain +text language, focusing on UML diagram types like sequence, use case, class, +activity, component, state, and object diagrams. + +## Key Features + +- **Integration with Visual Studio Code:** Easy integration through [this + extension](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml). +- **Version Control Friendly:** Text-based diagrams are ideal for tracking + changes in version control systems. + +## Installation + +Install PlantUML from the [official site](http://plantuml.com/starting) or use +it [online](http://www.plantuml.com/plantuml/uml). For VS Code integration, +install the PlantUML extension from the [Visual Studio +Marketplace](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml). + +## Usage + +Create and visualize diagrams online. Here's a basic sequence diagram example: + +[Plantuml example](https://www.plantuml.com/plantuml/uml/SoWkIImgAStDuNBCoKnELT2rKt3AJx9Iy4ZDoSa7CNKKClBB5HABKXKgyqljkO0Y2hf0HM3LLWgU2ecv2ccPUQaw2YKPYNdPnOfS3gbvAK3p0000) diff --git a/Tooling/Diagrams/StarUML.md b/Tooling/Diagrams/StarUML.md new file mode 100644 index 00000000..7b795be4 --- /dev/null +++ b/Tooling/Diagrams/StarUML.md @@ -0,0 +1,24 @@ +# StarUML + +StarUML is a software for modeling that allows you to easily create UML +diagrams, entity-relationship, data flow diagrams, flowcharts, or mind-maps. + +StarUML V1 is open source. However, it's no more maintained and cannot be +supported. Later versions, present 2 versions : "in evaluation mode, there will +be watermarks in the exported diagram images. There is no time limit for +evaluation, but it is only allowed for evaluation purpose. If you want to use +for other purposes including educational, personal, or commercial purpose, you +need to purchase licenses." + +## Can we use StarUML ? + +We **can't** use StarUML at the agency, please look into other options available +described in other wiki pages. + +## References + + + + + + diff --git a/Tooling/Diagrams/images/arrow.png b/Tooling/Diagrams/images/arrow.png new file mode 100644 index 00000000..1a1442ab Binary files /dev/null and b/Tooling/Diagrams/images/arrow.png differ diff --git a/Tooling/Diagrams/images/border.png b/Tooling/Diagrams/images/border.png new file mode 100644 index 00000000..fa751c58 Binary files /dev/null and b/Tooling/Diagrams/images/border.png differ diff --git a/Tooling/Diagrams/images/border_color.png b/Tooling/Diagrams/images/border_color.png new file mode 100644 index 00000000..1237e6d1 Binary files /dev/null and b/Tooling/Diagrams/images/border_color.png differ diff --git a/Tooling/Diagrams/images/color.png b/Tooling/Diagrams/images/color.png new file mode 100644 index 00000000..1f16e76f Binary files /dev/null and b/Tooling/Diagrams/images/color.png differ diff --git a/Tooling/Diagrams/images/diagram.png b/Tooling/Diagrams/images/diagram.png new file mode 100644 index 00000000..ac9f7b30 Binary files /dev/null and b/Tooling/Diagrams/images/diagram.png differ diff --git a/Tooling/Diagrams/images/duplicate.png b/Tooling/Diagrams/images/duplicate.png new file mode 100644 index 00000000..c74acd29 Binary files /dev/null and b/Tooling/Diagrams/images/duplicate.png differ diff --git a/Tooling/Diagrams/images/elbowed.png b/Tooling/Diagrams/images/elbowed.png new file mode 100644 index 00000000..827be2f6 Binary files /dev/null and b/Tooling/Diagrams/images/elbowed.png differ diff --git a/Tooling/Diagrams/images/element1.png b/Tooling/Diagrams/images/element1.png new file mode 100644 index 00000000..c63a1a76 Binary files /dev/null and b/Tooling/Diagrams/images/element1.png differ diff --git a/Tooling/Diagrams/images/elements.png b/Tooling/Diagrams/images/elements.png new file mode 100644 index 00000000..26fd1313 Binary files /dev/null and b/Tooling/Diagrams/images/elements.png differ diff --git a/Tooling/Diagrams/images/graph.png b/Tooling/Diagrams/images/graph.png new file mode 100644 index 00000000..42cd6564 Binary files /dev/null and b/Tooling/Diagrams/images/graph.png differ diff --git a/Tooling/Diagrams/images/line.png b/Tooling/Diagrams/images/line.png new file mode 100644 index 00000000..488e9218 Binary files /dev/null and b/Tooling/Diagrams/images/line.png differ diff --git a/Tooling/Diagrams/images/nocolor.png b/Tooling/Diagrams/images/nocolor.png new file mode 100644 index 00000000..755b6209 Binary files /dev/null and b/Tooling/Diagrams/images/nocolor.png differ diff --git a/Tooling/Tooling.md b/Tooling/Tooling.md new file mode 100644 index 00000000..5486927f --- /dev/null +++ b/Tooling/Tooling.md @@ -0,0 +1,49 @@ +# Tooling + +Overview document providing information on various tools and their usage within +the AI Lab. + +## Apps + +- **GitHub** + - [GitHub-Copilot](./Apps/GitHub/GitHub-Copilot.md): Information about GitHub + Copilot usage. + - [GitHub](./Apps/GitHub/GitHub.md): Guidelines for using GitHub. + - [Github-Codespaces](./Apps/GitHub/Github-Codespaces.md): Instructions for + GitHub Codespaces. + - [Managing-GitHub-Projects](./Apps/GitHub/Managing-GitHub-Projects.md): + Documentation on managing GitHub projects. + +- **SQL** + - [PostgreSQL-Command-Line](./Apps/SQL/PostgreSQL-Command-Line.md): + Instructions for utilizing PostgreSQL command line. + +- **Visual-Studio-Code** + - [Extensions](./Apps/Visual-Studio-Code/Extensions.md): Guidance on Visual + Studio Code extensions. + - [Installation](./Apps/Visual-Studio-Code/Installation.md): Steps for + installing Visual Studio Code. + - [Troubleshooting](./Apps/Visual-Studio-Code/Troubleshooting.md): Solutions + for troubleshooting issues in Visual Studio Code. + - [Unit-Tests](./Apps/Visual-Studio-Code/Unit-Tests.md): Documentation on + unit tests in Visual Studio Code. + +## Core-concepts + +- [Environment-variables](./Core-concepts/Environment-variables.md): Explanation + of environment variables and their role. + +## Diagrams + +- [Canva](./Diagrams/Canva.md): Instructions for using Canva to create diagrams. +- [Creating-diagrams](./Diagrams/Creating-diagrams.md): General guidelines for + creating diagrams. +- [Mermaid-Diagrams](./Diagrams/Mermaid-Diagrams.md): Information about creating + diagrams using Mermaid. +- [PlantUML](./Diagrams/PlantUML.md): Documentation on creating diagrams with + PlantUML. +- [StarUML](./Diagrams/StarUML.md): Instructions for using StarUML. + +## Images repositories + +Various images related to GitHub usage (e.g., logos, icons).