diff --git a/docs/1on1s.html b/docs/1on1s.html deleted file mode 100644 index 70e32c0e..00000000 --- a/docs/1on1s.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - 1on1s - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1on1s

Performance

    -
  1. What was your biggest highlight or proudest achievement in the past 6 months?
  2. -
  3. What were the main objectives that you wanted to accomplish?
  4. -
  5. Do you feel recognised for your good work?
  6. -
  7. Do you feel like you are using your strengths to their best abilities in your role?
  8. -
  9. Is there anything you’ve worked on that you don’t like doing?
  10. -
  11. How do you feel about communication within the team? Are there any areas or processes you think can be improved on?
  12. -

Roadblocks and challenges

    -
  1. What was your greatest challenge or concern in the past 6 months?
  2. -
  3. Do you think it was resolved to your satisfaction, or can more be done?
  4. -
  5. What did you learn from overcoming the challenge(s)?
  6. -
  7. Do you feel like you have enough resources to support you in your role?
  8. -
  9. Do you anticipate any upcoming challenges in the next 6 months?
  10. -

Happiness

    -
  1. What is your current Happiness Score between 0-10, and why?
  2. -
  3. Is there anything that is making you feel frustrated or upset in your role?
  4. -
  5. How has your work/life balance been, and are you seeking any additional support in this area?
  6. -

Learning and development

    -
  1. Is there anything you’d like to work on that you’re not currently doing?
  2. -
  3. What’s one new skill you’d like to improve on over the next 6 months?
  4. -
  5. Are you satisfied with the current upskill opportunities provided, or do you have a specific course in mind that’s not currently available to you?
  6. -

Management

    -
  1. What can I do as your manager to support you in achieving your goals?
  2. -
  3. Do you think I’ve been responsive and helpful enough to your questions and requests?
  4. -
  5. Do you like my management style? If not, what management style do you think you would best respond to?
  6. -

Moving forward

    -
  1. What are your goals for the rest of the year?
  2. -
  3. How can we measure the success of those goals?
  4. -
  5. Let’s plan out three key action steps we can focus on for the rest of the year.
  6. -
  7. Is there anything else that you’d like to discuss
  8. -
\ No newline at end of file diff --git a/docs/ai.html b/docs/ai.html deleted file mode 100644 index dfe6a5d5..00000000 --- a/docs/ai.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - AI - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/angular-cli.html b/docs/angular-cli.html deleted file mode 100644 index effcc6df..00000000 --- a/docs/angular-cli.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - Angular CLI - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Angular CLI
    -
  • -
    -

    Warning
    -The latest NodeJS version is recommended

    -
    -
  • -
  • -
      -
    1. Run npm install -g @angular/cli@13.3.10 or npm install -g @angular/cli@latest
    2. -
    3. Run ng --version
    4. -
    -
  • -
\ No newline at end of file diff --git a/docs/angular.html b/docs/angular.html deleted file mode 100644 index 6d8d2402..00000000 --- a/docs/angular.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - Angular - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Training

Introduction to Angular: Codelab | Video

Tools

    -
  1. Angular CLI
  2. -
  3. Install Angular Language Service for VS Code code --install-extension angular.ng-template
  4. -

Create a new Angular App

    -
  1. Run ng new NewApp.UI --strict false
  2. -
  3. Would you like to add Angular routing? Yes
  4. -
  5. Which stylesheet format would you like to use? CSS
  6. -
  7. Navigate to the NewApp.UI folder
  8. -
  9. Run ng serve (Angular Development Server)
  10. -

Build.bat File Example

cd C:\Dev\AngularApp1
-call npm ci
-call ng build
-
-cd C:\Dev\AngularApp2
-call npm ci
-call ng build
-

Running locally

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module.

Build

Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the -prod flag for a production build.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor.

Install Dependencies

Run npm install

By default, it will install all modules listed as dependencies in the package.json file.

https://docs.npmjs.com/cli/v6/commands/npm-install

Generate Library

https://angular.io/guide/creating-libraries

    -
  1. ng new my-workspace --no-create-application
  2. -
  3. cd my-workspace
  4. -
  5. ng generate library my-lib
  6. -

Generate Component

https://angular.io/tutorial/toh-pt3

ng generate component user-card

https://github.com/leandromonaco/Workbench/commit/b50ce6b655b6f1747ee6d313955eef228584cf6d

WindowsTerminal_Rd9hoeuAXP

Documentation

\ No newline at end of file diff --git a/docs/architecture.html b/docs/architecture.html deleted file mode 100644 index 3ec68d80..00000000 --- a/docs/architecture.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - Architecture - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/asp.net.html b/docs/asp.net.html deleted file mode 100644 index bf7bcf21..00000000 --- a/docs/asp.net.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - ASP.NET - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/azure.html b/docs/azure.html deleted file mode 100644 index ea0bc2d3..00000000 --- a/docs/azure.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - Azure - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Azure
    -
  • -

    Tools

    -
  • -

winget install -e --id Microsoft.AzureCLI

\ No newline at end of file diff --git a/docs/batch-file.html b/docs/batch-file.html deleted file mode 100644 index e68341c6..00000000 --- a/docs/batch-file.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - Batch File - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Batch File

Example with Angular CLI

    -
  • -
  • AngularParallelBuild.bat
  • -
  • -
    start AngularBuild.bat C:\Dev\App1
    -start AngularBuild.bat C:\Dev\App2
    -start AngularBuild.bat C:\Dev\App3
    -start AngularBuild.bat C:\Dev\App3
    -
    -
  • -
  • -
  • AngularBuild.bat
  • -
  • -
    cd %1  
    -ECHO Removing node_modules folder  
    -RMDIR /s /q node_modules  
    -ECHO Building Angular App  
    -call npm cache clean -f  
    -call npm install  
    -call npm ci  
    -call ng build  
    -ECHO Build Finished  
    -
    -
  • -
\ No newline at end of file diff --git a/docs/bookmarks.html b/docs/bookmarks.html deleted file mode 100644 index 48e289e2..00000000 --- a/docs/bookmarks.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - bookmarks - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bookmarks

News

2021

Learning

Agile

Monorepo

Performance

Project Management

Security

Developer Productivity

Certifications

Code Reviews

Code Quality

Deployment

Documentation and Knowledge Sharing

Architecture

Management

Feedback

Incident Management

People Management

Time Management

Turnover

\ No newline at end of file diff --git a/docs/books.html b/docs/books.html deleted file mode 100644 index 8e310357..00000000 --- a/docs/books.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - Books - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/career.html b/docs/career.html deleted file mode 100644 index c142a323..00000000 --- a/docs/career.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - Career - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/cli.html b/docs/cli.html deleted file mode 100644 index 2a5921e4..00000000 --- a/docs/cli.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - CLI - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Documentation

Package

Code Example

var userIdArgument = new Option<Guid>(name: "--userId", description: "User ID", getDefaultValue: () => Guid.Empty);
-var passwordArgument = new Option<string>("--password", "New Password");
-
-var rootCommand = new RootCommand();
-rootCommand.Add(userIdArgument);
-rootCommand.Add(passwordArgument);
-
-Action<Guid, string> ConsoleAppRunner = (userIdValue, passwordValue) =>
-{
-    ConsoleAppHelper.ResetPassword(userIdValue, passwordValue);
-    Console.ReadLine();
-};
-
-rootCommand.SetHandler(ConsoleAppRunner, userIdArgument, passwordArgument);
-
-await rootCommand.InvokeAsync(args);
-

Publish CLI Tool

TBA

\ No newline at end of file diff --git a/docs/coaching.html b/docs/coaching.html deleted file mode 100644 index 294c4450..00000000 --- a/docs/coaching.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - Coaching - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/coding-exercise.html b/docs/coding-exercise.html deleted file mode 100644 index 90f0c407..00000000 --- a/docs/coding-exercise.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - coding-exercise - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Objective

Assess your natural approach to coding and engineering best practices.

Pre-Requisites

    -
  1. Test the API Authentication.
  2. -
  3. Run the Code with your favorite IDE.
  4. -

Process

    -
  1. Refactor the code following SOLID principles.
  2. -
  3. Test the code.
  4. -
  5. Make the code production-ready.
  6. -

Code

public class Program
-{
-    static void Main(string[] args)
-    {
-        Task.Run(async () =>
-        {
-            //Get Repositories
-            await GetDetails("https://dev.azure.com/AcmeInc/ff86f2fb-5c3a-49e2-a677-c9b95d6baaef/_apis/tfvc/branches?includeParent=1&includeChildren=1&includeDeleted=1&includeLinks=1&api-version=6.0");
-            //Get Commits
-            await GetDetails("https://dev.azure.com/AcmeInc/ff86f2fb-5c3a-49e2-a677-c9b95d6baaef/_apis/git/repositories/4563efa9-da5d-4f54-b609-18db14479f48/commits?api-version=6.0");
-            //Get Pull Requests
-            await GetDetails("https://dev.azure.com/AcmeInc/ff86f2fb-5c3a-49e2-a677-c9b95d6baaef/_apis/git/repositories/4563efa9-da5d-4f54-b609-18db14479f48/pullrequests?searchCriteria.status=completed||searchCriteria.status=open?api-version=5.1");
-        }).Wait();
-    }
-
-
-    public static async Task GetDetails(string url)
-    {
-        try
-        {
-            var personalaccesstoken = "bGVtb25hY29AYWxsaWFuei1hc3Npc3RhbmNlLmNvbS5hdTpuZXczZ3ludmRpdWJpdno0djNoc2E1enpqMmF3ZGtvbzQ3ZnZxMzZ4aWJxb2x5Y203NnNx";
-
-            using (HttpClient client = new HttpClient())
-            {
-                client.DefaultRequestHeaders.Accept.Add(
-                    new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
-
-                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", personalaccesstoken);
-
-                using (HttpResponseMessage response = await client.GetAsync(url))
-                {
-                    response.EnsureSuccessStatusCode();
-
-                    var resultJson = await response.Content.ReadAsStringAsync();
-                    Console.WriteLine(resultJson);
-                }
-            }
-        }
-        catch (Exception ex)
-        {
-            Console.WriteLine(ex.ToString());
-        }
-    }
-}
-

API Authentication

Documentation

\ No newline at end of file diff --git a/docs/community-of-practice.html b/docs/community-of-practice.html deleted file mode 100644 index 89c2f30a..00000000 --- a/docs/community-of-practice.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - Community Of Practice - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Community Of Practice

Communities of practice are groups of people who share a concern or a
-passion for something they do and learn how to do it better as they
-interact regularly.

Three characteristics are crucial:

    -
  • Domain
  • -
  • Community
  • -
  • Practice
  • -

The domain. A community of practice is not
-merely a club of friends or a network of connections between people. It
-has an identity defined by a shared domain of interest. Membership
-therefore implies a commitment to the domain, and therefore a shared
-competence that distinguishes members from other people. (You could
-belong to the same network as someone and never know it.) The domain is
-not necessarily something recognized as “expertise” outside the
-community. A youth gang may have developed all sorts of ways of dealing
-with their domain: surviving on the street and maintaining some kind of
-identity they can live with. They value their collective competence and
-learn from each other, even though few people outside the group may
-value or even recognize their expertise.

The community. In pursuing their interest in
-their domain, members engage in joint activities and discussions, help
-each other, and share information. They build relationships that enable
-them to learn from each other; they care about their standing with each
-other. A website in itself is not a community of practice. Having the
-same job or the same title does not make for a community of practice
-unless members interact and learn together. The claims processors in a
-large insurance company or students in American high schools may have
-much in common, yet unless they interact and learn together, they do not
-form a community of practice. But members of a community of practice do
-not necessarily work together on a daily basis. The Impressionists, for
-instance, used to meet in cafes and studios to discuss the style of
-painting they were inventing together. These interactions were essential
-to making them a community of practice even though they often painted
-alone.

The practice. A community of practice is not
-merely a community of interest–people who like certain kinds of movies,
-for instance. Members of a community of practice are practitioners. They
-develop a shared repertoire of resources: experiences, stories, tools,
-ways of addressing recurring problems—in short a shared practice. This
-takes time and sustained interaction. A good conversation with a
-stranger on an airplane may give you all sorts of interesting insights,
-but it does not in itself make for a community of practice. The
-development of a shared practice may be more or less self-conscious. The
-“windshield wipers” engineers at an auto manufacturer make a concerted
-effort to collect and document the tricks and lessons they have learned
-into a knowledge base. By contrast, nurses who meet regularly for lunch
-in a hospital cafeteria may not realize that their lunch discussions are
-one of their main sources of knowledge about how to care for patients.
-Still, in the course of all these conversations, they have developed a
-set of stories and cases that have become a shared repertoire for their
-practice.

It is the combination of these three elements that constitutes
-a community of practice. And it is by developing these three elements
-in parallel that one cultivates such a community.

"../../assets/image_1672704213276_0.png" is not created yet. Click to create.

Sources

\ No newline at end of file diff --git a/docs/conferences.html b/docs/conferences.html deleted file mode 100644 index fdd03c29..00000000 --- a/docs/conferences.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - Conferences - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Conferences
\ No newline at end of file diff --git a/docs/configuration.html b/docs/configuration.html deleted file mode 100644 index 48d9d1ba..00000000 --- a/docs/configuration.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - Configuration - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Configuration

Packages

Implementation

Singleton

using Microsoft.Extensions.Configuration;
-
-public static class ConfigurationManager
-{
-    private static IConfigurationRoot _configuration;
-    public static IConfigurationRoot Configuration
-    {
-        get
-        {
-            if (_configuration == null)
-            {
-                _configuration = new ConfigurationBuilder()
-                                        .SetBasePath(AppContext.BaseDirectory)
-                                        .AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true)
-                                        .AddEnvironmentVariables("AppId:")
-                                        .AddUserSecrets("3490e6ac-9364-432d-9bfb-7c37692752cb")
-                                        .Build();
-            }
-            return _configuration;
-        }
-    }
-}
-

Usage

ConfigurationManager.Configuration["SomeConfig"]

Code Sample

.NET Console App

 var configuration = new ConfigurationBuilder()
-                                        .SetBasePath(AppContext.BaseDirectory)
-                                        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
-                                        .Build();
-

ASP.NET

private static ConfigurationManager GetConfiguration(ConfigurationManager configurationManager)
-{
-    configurationManager
-                 .SetBasePath(AppContext.BaseDirectory)
-                 .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
-                 .AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true)
-                 .AddEnvironmentVariables("AppPrefix:")
-                 .Build();
-
-    return configurationManager;
-}
-

Add Configuration File to csproj

<ItemGroup>
-    <None Update="appsettings.json">
-        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
-</ItemGroup>
-

Cross-Platform Support

The : separator doesn't work with environment variable hierarchical keys on all platforms. __, the double underscore, is supported by all platforms.

- - - - - - - - - - -
:warning: WARNING
AppPrefix:ModuleConfiguration:Infrastructure:Redis:Port would need to be translated to AppPrefix__ModuleConfiguration__Infrastructure__Redis__Port

Set Environment Variable

- - - - - - - - - - -
:warning: WARNING
When creating/removing Environment Variables, Visual Studio MUST be restarted to pick up the changes.
    -
  • setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ValidIssuer "SOME VALUE" /M
  • -
  • setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ClientId "SOME VALUE" /M
  • -
  • setx ASPNETCORE_ENVIRONMENT "Development" /M or setx ASPNETCORE_ENVIRONMENT "Staging" /M or setx ASPNETCORE_ENVIRONMENT "Production" /M
  • -

Safe storage of app secrets in development

    -
  1. Add a reference to the Microsoft.Extensions.Configuration.UserSecrets package
  2. -
  3. Navigate to your .NET project folder
  4. -
  5. Run dotnet user-secrets init (one-off per project)
  6. -
  7. Run dotnet user-secrets set "Segment:WriteKey" "some-write-key"
  8. -
  9. Read the value in your application
  10. -
var configuration = new ConfigurationBuilder().AddUserSecrets("[ID obtained from step 3]").Build();
-var value = configuration["Segment:SomeConfig"];
-

Values are stored on C:\Users\<username>\AppData\Roaming\Microsoft\UserSecrets

Read more on ASP.NET Core Official Documentation

Documentation

Troubleshooting

    -
  • Issue: ASP.NET Core: AddEnvironmentVariables doesn't load variables
  • -
  • Cause: You probably just declared your Environment Variables hence Visual Studio does not see them.
  • -
  • Resolution: Restart your Visual Studio.
  • -
\ No newline at end of file diff --git a/docs/contents.html b/docs/contents.html deleted file mode 100644 index 28a5eb9c..00000000 --- a/docs/contents.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - contents - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
contents
    -
  • -
\ No newline at end of file diff --git a/docs/continous-learning.html b/docs/continous-learning.html deleted file mode 100644 index 94127d6c..00000000 --- a/docs/continous-learning.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - Continous Learning - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Continous Learning

This a list of ideas to make learning a part the routine.
-

"../../assets/image_1672704712173_0.png" is not created yet. Click to create.

Career Roadmap

Redis

Communities

Hackatons

Code Katas

Azure

Soft Skills

Training

Project Management

AWS

Books

Blog Posts

Kubernetes 101: Pods, Nodes, Containers, and Clusters

Videos

TBA

Training

General

Cloud

Backend

Frontend

\ No newline at end of file diff --git a/docs/continuous-improvement.html b/docs/continuous-improvement.html deleted file mode 100644 index 1b71fd7d..00000000 --- a/docs/continuous-improvement.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - Continuous Improvement - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/css.html b/docs/css.html deleted file mode 100644 index a00cd91d..00000000 --- a/docs/css.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - CSS - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/cve.html b/docs/cve.html deleted file mode 100644 index 13f369e0..00000000 --- a/docs/cve.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - CVE - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/devcontainers.html b/docs/devcontainers.html deleted file mode 100644 index f7fc0f64..00000000 --- a/docs/devcontainers.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - DevContainers - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
  • -
      -
    1. Check if Docker is installed by running docker version
    2. -
    -
  • -
  • -
      -
    1. Install VSCode and its extensions
    2. -
    -
  • -
  • -
    winget install -e --id Microsoft.VisualStudioCode  
    -code --install-extension ms-vscode-remote.remote-containers  
    -code --install-extension ms-python.python
    -
    -
  • -
  • -
      -
    1. Click
      "../assets/image_1667341230993_0.png" is not created yet. Click to create.
      located at the bottom left of the screen
    2. -
    3. Search for "Add Dev Container Configuration Files" and follow the steps
    4. -
    5. Once the setup is finished, the following 2 files will appear
    6. -
    -
  • -
  • -
  • -
      -
    1. Click
      "../assets/image_1667341230993_0.png" is not created yet. Click to create.
      and write "Reopen in container"
    2. -
    3. VSCode will restart and you will see this
      "../assets/image_1667430653209_0.png" is not created yet. Click to create.
    4. -
    -
  • -

Training

\ No newline at end of file diff --git a/docs/development-environment-setup.html b/docs/development-environment-setup.html deleted file mode 100644 index baadb9d6..00000000 --- a/docs/development-environment-setup.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - Development Environment Setup - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Development Environment Setup

Essentials

| :memo: | TODO: Migrate this to Winget Configuration |

Tools

    -
  1. Windows
  2. -
  3. WinGet
  4. -
  5. VSCode
  6. -
  7. Windows Terminal
  8. -
  9. Docker Desktop
  10. -
  11. Git
  12. -
  13. NodeJS
  14. -
  15. Angular CLI
  16. -
  17. .NET
  18. -
  19. Visual Studio
  20. -
  21. Sql Server
  22. -
  23. SSL Certificate
  24. -
  25. IIS
  26. -
  27. Host File
  28. -
  29. Redis
  30. -
  31. AWS
  32. -
  33. Azure
  34. -

Browsers

winget install -e --id Microsoft.Edge.Dev
-winget install -e --id BraveSoftware.BraveBrowser
-winget install -e --id Microsoft.Edge
-winget install -e --id Google.Chrome.Dev
-winget install -e --id Mozilla.Firefox.DeveloperEdition
-winget install -e --id Opera.Opera
-

Dev Tools

https://learn.microsoft.com/en-nz/azure/developer/dev-tunnels/
-winget install -e --id Microsoft.NuGet
-winget install -e --id Postman.Postman
-winget install -e --id Docker.DockerDesktop
-winget install -e --id Datalust.Seq
-winget install -e --id Microsoft.DeploymentToolkit
-winget install -e --id Microsoft.webpicmd
-winget install --name RedisInsight
-winget install -e --id Microsoft.PowerAutomateDesktop
-winget install -e --id Gauge.Gauge
-

Development Utilities

dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
-winget install -e --id Dapr.CLI --silent
-winget install -e --id Microsoft.RemoteDesktopClient
-winget install -e --id ScooterSoftware.BeyondCompare4
-winget install -e --id LINQPad.LINQPad.7
-winget install -e --id Microsoft.XMLNotepad
-winget install -e --id Notepad++.Notepad++
-winget install -e --id WinMerge.WinMerge
-winget install -e --name Sysinternals
-winget install -e --id Microsoft.WindowsTerminal
-winget install -e --id Telerik.Fiddler.Everywhere
-winget install -e --id WiresharkFoundation.Wireshark
-winget install -e --id=Amazon.NoSQLWorkbench 
-winget install DevToys
-

Misc

winget install "Files App"
-winget install -e --id 7zip.7zip
-winget install -e --id Microsoft.PowerToys
-winget install -e --id VideoLAN.VLC
-winget install -e --id ShareX.ShareX
-winget install -e --id Grammarly.ForOffice
-winget install -e --id Grammarly.ForWindows
-winget install -e --id OBSProject.OBSStudio
-winget install -e --id JGraph.Draw
-winget install -e --id GIMP.GIMP
-winget install -e --id JAMSoftware.TreeSize.Free
-winget install -e --id Logseq.Logseq
-winget install -e --id Twilio.Authy
-
\ No newline at end of file diff --git a/docs/development/devcontainers.html b/docs/development/devcontainers.html new file mode 100644 index 00000000..11c1e905 --- /dev/null +++ b/docs/development/devcontainers.html @@ -0,0 +1,83 @@ + + + + DevContainers + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DevContainers
    +
  • +
      +
    1. Check if Docker is installed by running docker version
    2. +
    +
  • +
  • +
      +
    1. Install VSCode and its extensions
    2. +
    +
  • +
  • +
    winget install -e --id Microsoft.VisualStudioCode  
    +code --install-extension ms-vscode-remote.remote-containers  
    +code --install-extension ms-python.python
    +
    +
  • +
  • +
      +
    1. Click
      "../assets/image_1667341230993_0.png" is not created yet. Click to create.
      located at the bottom left of the screen
    2. +
    3. Search for "Add Dev Container Configuration Files" and follow the steps
    4. +
    5. Once the setup is finished, the following 2 files will appear
    6. +
    +
  • +
  • +
  • +
      +
    1. Click
      "../assets/image_1667341230993_0.png" is not created yet. Click to create.
      and write "Reopen in container"
    2. +
    3. VSCode will restart and you will see this
      "../assets/image_1667430653209_0.png" is not created yet. Click to create.
    4. +
    +
  • +

Training

\ No newline at end of file diff --git a/docs/development/developer-productivity.html b/docs/development/developer-productivity.html new file mode 100644 index 00000000..238ea1ad --- /dev/null +++ b/docs/development/developer-productivity.html @@ -0,0 +1,51 @@ + + + + Developer Productivity + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/development/development-environment-setup.html b/docs/development/development-environment-setup.html new file mode 100644 index 00000000..5078ecb5 --- /dev/null +++ b/docs/development/development-environment-setup.html @@ -0,0 +1,116 @@ + + + + Development Environment Setup + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Development Environment Setup

Essentials

Using a WinGet Configuration file, you can consolidate manual machine setup and project onboarding to a single command that is reliable and repeatable.

| :memo: | TODO: Migrate this to Winget Configuration |

Tools

    +
  1. Windows
  2. +
  3. WinGet
  4. +
  5. VSCode
  6. +
  7. Windows Terminal
  8. +
  9. Docker Desktop
  10. +
  11. Tools/Git
  12. +
  13. Install multiple NodeJS Versions
  14. +
  15. Angular
  16. +
  17. .NET
  18. +
  19. Visual Studio
  20. +
  21. Sql Server
  22. +
  23. Create Self-Signed Certificate
  24. +
  25. Create IIS Websites
  26. +
  27. Change host file on Windows
  28. +
  29. Redis
  30. +
  31. AWS
  32. +
  33. Azure
  34. +

Browsers

winget install -e --id Microsoft.Edge.Dev
+winget install -e --id BraveSoftware.BraveBrowser
+winget install -e --id Microsoft.Edge
+winget install -e --id Google.Chrome.Dev
+winget install -e --id Mozilla.Firefox.DeveloperEdition
+winget install -e --id Opera.Opera
+

Dev Tools

https://learn.microsoft.com/en-nz/azure/developer/dev-tunnels/
+winget install -e --id Microsoft.NuGet
+winget install -e --id Postman.Postman
+winget install -e --id Docker.DockerDesktop
+winget install -e --id Datalust.Seq
+winget install -e --id Microsoft.DeploymentToolkit
+winget install -e --id Microsoft.webpicmd
+winget install --name RedisInsight
+winget install -e --id Microsoft.PowerAutomateDesktop
+winget install -e --id Gauge.Gauge
+

Development Utilities

dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
+winget install -e --id Dapr.CLI --silent
+winget install -e --id Microsoft.RemoteDesktopClient
+winget install -e --id ScooterSoftware.BeyondCompare4
+winget install -e --id LINQPad.LINQPad.7
+winget install -e --id Microsoft.XMLNotepad
+winget install -e --id Notepad++.Notepad++
+winget install -e --id WinMerge.WinMerge
+winget install -e --name Sysinternals
+winget install -e --id Microsoft.WindowsTerminal
+winget install -e --id Telerik.Fiddler.Everywhere
+winget install -e --id WiresharkFoundation.Wireshark
+winget install -e --id=Amazon.NoSQLWorkbench 
+winget install DevToys
+

Misc

winget install "Files App"
+winget install -e --id 7zip.7zip
+winget install -e --id Microsoft.PowerToys
+winget install -e --id VideoLAN.VLC
+winget install -e --id ShareX.ShareX
+winget install -e --id Grammarly.ForOffice
+winget install -e --id Grammarly.ForWindows
+winget install -e --id OBSProject.OBSStudio
+winget install -e --id JGraph.Draw
+winget install -e --id GIMP.GIMP
+winget install -e --id JAMSoftware.TreeSize.Free
+winget install -e --id Logseq.Logseq
+winget install -e --id Twilio.Authy
+
\ No newline at end of file diff --git a/docs/devops/observability.html b/docs/devops/observability.html new file mode 100644 index 00000000..31cc024d --- /dev/null +++ b/docs/devops/observability.html @@ -0,0 +1,49 @@ + + + + Observability + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Prerequisites

Perpetually free New Relic account, 100 GB/month of free data ingest, 1 free full access user, unlimited free basic users

Reference Material

\ No newline at end of file diff --git a/docs/diagramsascode.html b/docs/diagramsascode.html deleted file mode 100644 index 28c3b8ab..00000000 --- a/docs/diagramsascode.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - DiagramsAsCode - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Sequence Diagram

Syntax Documentation

ClassAClassBMethod1()response1Method2()response2ClassAClassB
\ No newline at end of file diff --git a/docs/docker-desktop.html b/docs/docker-desktop.html deleted file mode 100644 index 6b9427a4..00000000 --- a/docs/docker-desktop.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - Docker Desktop - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Docker Desktop

Intro

Docker Desktop for Windows provides a development environment for building, shipping, and running dockerized apps. By enabling the WSL 2 based engine, you can run both Linux and Windows containers in Docker Desktop on the same machine.

Configuration

-

Warning
-This process requires reboot

-
    -
  1. Ensure Hyper-V has been enabled
  2. -
  3. Run winget install -e --id Docker.DockerDesktop
  4. -
  5. Click Settings
  6. -
  7. Tick the “Start Docker Desktop when you log in“ option
  8. -
  9. Run systeminfo | find "System Type" to check if your system is x64 (if so, download wsl_update_x64.msi)
  10. -
  11. Run wsl --set-default-version 2
  12. -
  13. Run wsl --install -d Ubuntu
  14. -
  15. Create a default UNIX user account
  16. -

WSL Process

image

Configure WSL2

    -
  1. Run wsl --shutdown
  2. -
  3. Run notepad "$env:USERPROFILE/.wslconfig"
  4. -
[wsl2]
-memory=5GB   
-processors=1 
-

See all configuration options

Build and Run a Container

    -
  1. Navigate to the folder where the Dockerfile is stored
  2. -
  3. Run docker build -t angular-container:1.0 .
  4. -
  5. Search ImageID by running docker images
  6. -
  7. Run docker run -p 80:80 469b3a773ed7
  8. -

Running Docker Windows and Linux Containers Simultaneously

Dockerfile example

FROM node:lts as node
-
-RUN npm install -g @angular/cli
-
-WORKDIR /usr/src/app
-COPY src/TeamHub.UI/ ./my-app/
-
-WORKDIR /usr/src/app/my-app
-RUN npm install
-RUN npm run build
-
-FROM nginx:alpine
-COPY --from=node /usr/src/app/my-app/dist/team-hub.ui /usr/share/nginx/html
-

Images

docker pull jagregory/cognito-local:latest
-docker pull localstack/localstack:latest
-docker pull amazon/dynamodb-local:latest
-docker pull redis:latest
-docker pull mcr.microsoft.com/mssql/server:2022-latest
-docker pull datalust/seq:latest
-docker pull motoserver/moto:latest
-docker pull jijiechen/papercut:latest
-

Commands

    -
  • Display containers' resource usage statistics docker stats --all --no-stream
  • -
  • Stop running containers docker kill $(docker ps -q)
  • -
  • Remove all containers docker rm $(docker ps -a -q)
  • -
  • Remove all images docker rmi $(docker images -q)
  • -

Security

https://docs.docker.com/scout/

Documentation

\ No newline at end of file diff --git a/docs/docker.html b/docs/docker.html deleted file mode 100644 index 7ff2e5cf..00000000 --- a/docs/docker.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - Docker - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Docker

Installation

Build and Run a Container

    -
  1. Navigate to the folder where the Dockerfile is stored
  2. -
  3. Run docker build -t angular-container:1.0 .
  4. -
  5. Search ImageID by running docker images
  6. -
  7. Run docker run -p 80:80 469b3a773ed7
  8. -

Images

Commands

    -
  • Display containers' resource usage statistics docker stats --all --no-stream
  • -
  • Stop running containers docker kill $(docker ps -q)
  • -
  • Remove all containers docker rm $(docker ps -a -q)
  • -
  • Remove all images docker rmi $(docker images -q)
  • -
    -
  • -

    Security

    -:PROPERTIES:
    -:heading: 2
    -:END:
  • -

https://docs.docker.com/scout/

\ No newline at end of file diff --git a/docs/documentation.html b/docs/documentation.html deleted file mode 100644 index e2628229..00000000 --- a/docs/documentation.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/documentation/diagramsascode.html b/docs/documentation/diagramsascode.html new file mode 100644 index 00000000..5fe0baf4 --- /dev/null +++ b/docs/documentation/diagramsascode.html @@ -0,0 +1,46 @@ + + + + DiagramsAsCode + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Sequence Diagram

Syntax Documentation

ClassAClassBMethod1()response1Method2()response2ClassAClassB
\ No newline at end of file diff --git a/docs/documentation/documentation.html b/docs/documentation/documentation.html new file mode 100644 index 00000000..5c851516 --- /dev/null +++ b/docs/documentation/documentation.html @@ -0,0 +1,56 @@ + + + + Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/dotnet-list-package.html b/docs/dotnet-list-package.html deleted file mode 100644 index 0f53c7b7..00000000 --- a/docs/dotnet-list-package.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - dotnet list package - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
  • -

    dotnet list package command in the .NET Core CLI tools to fetch installed packages for a given solution or project. Use it like so from the Windows command line:

    -

    dotnet list "C:\Source\MySolution\MySolution.sln" package

    -

    It works on both .NET Framework and .NET Core projects.

    -

    Note: For this command to work, the solution must use the new NuGet PackageReference format for referencing NuGet packages.

    -

    Migration is as easy as right-clicking packages.config, and clicking Migrate packages.config to PackageReference..., then restoring packages by building the solution.

    -
  • -

Parameters

\ No newline at end of file diff --git a/docs/dotnet/asp.net.html b/docs/dotnet/asp.net.html new file mode 100644 index 00000000..6386ea99 --- /dev/null +++ b/docs/dotnet/asp.net.html @@ -0,0 +1,52 @@ + + + + ASP.NET + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/dotnet/cli/dotnet-list-package.html b/docs/dotnet/cli/dotnet-list-package.html new file mode 100644 index 00000000..6f18b6c3 --- /dev/null +++ b/docs/dotnet/cli/dotnet-list-package.html @@ -0,0 +1,57 @@ + + + + dotnet list package + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
  • +

    dotnet list package command in the .NET Core CLI tools to fetch installed packages for a given solution or project. Use it like so from the Windows command line:

    +

    dotnet list "C:\Source\MySolution\MySolution.sln" package

    +

    It works on both .NET Framework and .NET Core projects.

    +

    Note: For this command to work, the solution must use the new NuGet PackageReference format for referencing NuGet packages.

    +

    Migration is as easy as right-clicking packages.config, and clicking Migrate packages.config to PackageReference..., then restoring packages by building the solution.

    +
  • +

Parameters

\ No newline at end of file diff --git a/docs/dotnet/cli/dotnet-monitor.html b/docs/dotnet/cli/dotnet-monitor.html new file mode 100644 index 00000000..548450bf --- /dev/null +++ b/docs/dotnet/cli/dotnet-monitor.html @@ -0,0 +1,48 @@ + + + + dotnet monitor + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/dotnet/configuration.html b/docs/dotnet/configuration.html new file mode 100644 index 00000000..fb01d855 --- /dev/null +++ b/docs/dotnet/configuration.html @@ -0,0 +1,136 @@ + + + + Configuration + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Configuration

Packages

Implementation

Singleton

using Microsoft.Extensions.Configuration;
+
+public static class ConfigurationManager
+{
+    private static IConfigurationRoot _configuration;
+    public static IConfigurationRoot Configuration
+    {
+        get
+        {
+            if (_configuration == null)
+            {
+                _configuration = new ConfigurationBuilder()
+                                        .SetBasePath(AppContext.BaseDirectory)
+                                        .AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true)
+                                        .AddEnvironmentVariables("AppId:")
+                                        .AddUserSecrets("3490e6ac-9364-432d-9bfb-7c37692752cb")
+                                        .Build();
+            }
+            return _configuration;
+        }
+    }
+}
+

Usage

ConfigurationManager.Configuration["SomeConfig"]

Code Sample

.NET Console App

 var configuration = new ConfigurationBuilder()
+                                        .SetBasePath(AppContext.BaseDirectory)
+                                        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
+                                        .Build();
+

ASP.NET

private static ConfigurationManager GetConfiguration(ConfigurationManager configurationManager)
+{
+    configurationManager
+                 .SetBasePath(AppContext.BaseDirectory)
+                 .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
+                 .AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true)
+                 .AddEnvironmentVariables("AppPrefix:")
+                 .Build();
+
+    return configurationManager;
+}
+

Add Configuration File to csproj

<ItemGroup>
+    <None Update="appsettings.json">
+        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+</ItemGroup>
+

Cross-Platform Support

The : separator doesn't work with environment variable hierarchical keys on all platforms. __, the double underscore, is supported by all platforms.

+ + + + + + + + + + +
:warning: WARNING
AppPrefix:ModuleConfiguration:Infrastructure:Redis:Port would need to be translated to AppPrefix__ModuleConfiguration__Infrastructure__Redis__Port

Set Environment Variable

+ + + + + + + + + + +
:warning: WARNING
When creating/removing Environment Variables, Visual Studio MUST be restarted to pick up the changes.
    +
  • setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ValidIssuer "SOME VALUE" /M
  • +
  • setx Lambda__ModuleConfiguration__Infrastructure__Cognito__ClientId "SOME VALUE" /M
  • +
  • setx ASPNETCORE_ENVIRONMENT "Development" /M or setx ASPNETCORE_ENVIRONMENT "Staging" /M or setx ASPNETCORE_ENVIRONMENT "Production" /M
  • +

Safe storage of app secrets in development

    +
  1. Add a reference to the Microsoft.Extensions.Configuration.UserSecrets package
  2. +
  3. Navigate to your .NET project folder
  4. +
  5. Run dotnet user-secrets init (one-off per project)
  6. +
  7. Run dotnet user-secrets set "Segment:WriteKey" "some-write-key"
  8. +
  9. Read the value in your application
  10. +
var configuration = new ConfigurationBuilder().AddUserSecrets("[ID obtained from step 3]").Build();
+var value = configuration["Segment:SomeConfig"];
+

Values are stored on C:\Users\<username>\AppData\Roaming\Microsoft\UserSecrets

Read more on ASP.NET Core Official Documentation

Documentation

Troubleshooting

    +
  • Issue: ASP.NET Core: AddEnvironmentVariables doesn't load variables
  • +
  • Cause: You probably just declared your Environment Variables hence Visual Studio does not see them.
  • +
  • Resolution: Restart your Visual Studio.
  • +
\ No newline at end of file diff --git a/docs/dotnet/csharp.html b/docs/dotnet/csharp.html new file mode 100644 index 00000000..f63ac73e --- /dev/null +++ b/docs/dotnet/csharp.html @@ -0,0 +1,46 @@ + + + + CSharp + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/dotnet/deployment.html b/docs/dotnet/deployment.html new file mode 100644 index 00000000..37860ccf --- /dev/null +++ b/docs/dotnet/deployment.html @@ -0,0 +1,48 @@ + + + + Deployment + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/dotnet/entityframework.html b/docs/dotnet/entityframework.html new file mode 100644 index 00000000..48c57757 --- /dev/null +++ b/docs/dotnet/entityframework.html @@ -0,0 +1,75 @@ + + + + EntityFramework + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EntityFramework

EF CLI

Commands

    +
  • Install: dotnet tool install --global dotnet-ef
  • +
  • Update: dotnet tool update --global dotnet-ef
  • +

Create/Update Model (Database First)

    +
  1. .csproj file must reference the following nuget packages: +
      +
    • Microsoft.EntityFrameworkCore.Design
    • +
    • Microsoft.EntityFrameworkCore.SqlServer
    • +
    +
  2. +
  3. Navigate to the folder where you want to store the model
  4. +
  5. Update EF Model Classes dotnet ef dbcontext scaffold "Server=localhost;Database=DbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Database -f --project C:\Dev\Something.csproj
  6. +

Connection String

Search for DbContext.cs class

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+{
+    var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
+    optionsBuilder.UseSqlServer(connectionString);
+}
+

Logging

This will allow us to see the SQL Queries being executed

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+{
+    var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
+    optionsBuilder.LogTo(Console.Write, LogLevel.Trace)
+                  .EnableSensitiveDataLogging()
+                  .EnableDetailedErrors()
+                  .UseSqlServer(connectionString);
+}
+
\ No newline at end of file diff --git a/docs/dotnet/libraries/identityserver.html b/docs/dotnet/libraries/identityserver.html new file mode 100644 index 00000000..4444ee67 --- /dev/null +++ b/docs/dotnet/libraries/identityserver.html @@ -0,0 +1,54 @@ + + + + IdentityServer + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/dotnet/libraries/microsoft.featuremanagement.html b/docs/dotnet/libraries/microsoft.featuremanagement.html new file mode 100644 index 00000000..f76e8cb1 --- /dev/null +++ b/docs/dotnet/libraries/microsoft.featuremanagement.html @@ -0,0 +1,83 @@ + + + + Microsoft.FeatureManagement + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Objective

To implement a Feature Management solution that allows us to change application behaviour without changing code.

AWS AppConfig

AWS AppConfig is a capability of AWS Systems Manager, to create, manage, and quickly deploy application configurations. A configuration is a collection of settings that influence the behavior of the application.

The Amazon.Extensions.Configuration.SystemsManager simplifies using AWS AppConfig as a source for configuration information for .NET applications.

Microsoft.FeatureManagement

Microsoft.FeatureManagement provides standardized APIs for enabling feature flags within applications. This library secures a consistent experience when developing applications that use patterns such as beta access, rollout, dark deployments, and more.

Configuration Sample

"FeatureFlags": {
+        "featureA": false,
+        "featureB": true,
+        "featureC": false,
+        "featureD": {
+            "EnabledFor": [
+                {
+                    "Name": "Microsoft.Targeting",
+                    "Parameters": {
+                        "Audience": {
+                            "Users": [
+                                "{tenantId}:{userId}",
+                                "{tenantId}:{userId2}"
+                            ],
+                            "Groups": [
+                                {
+                                    "Name": "{tenantId}",
+                                    "RolloutPercentage": 0
+                                },
+                                {
+
+                                    "Name": "{tenantId2}",
+                                    "RolloutPercentage": 50
+                                },
+                                {
+
+                                    "Name": "{tenantId3}",
+                                    "RolloutPercentage": 100
+                                }
+                            ],
+                            "DefaultRolloutPercentage": 0
+                        }
+                    }
+                }
+            ]
+        }
+    }
+
\ No newline at end of file diff --git a/docs/dotnet/libraries/nukebuild.html b/docs/dotnet/libraries/nukebuild.html new file mode 100644 index 00000000..d9679b6d --- /dev/null +++ b/docs/dotnet/libraries/nukebuild.html @@ -0,0 +1,72 @@ + + + + NukeBuild + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Nuke Build Setup

Installation

https://nuke.build/docs/getting-started/installation/

    +
  1. Run dotnet tool install Nuke.GlobalTool --global
  2. +
  3. Run nuke :setup
  4. +

image

    +
  • +

    Documentation

    +
  • +
  • +

    Cli-tools Support

    +
  • +
  • +

    See Example

    +
  • +
  • +

    Run dotnet run --plan from build folder to see Execution Plan

    +
  • +
  • +

    Run dotnet run --Param1 "value" --Param2 "value" --Param3 "value"

    +
  • +

Notes:

    +
  1. Install nbgv .NET Core CLI tool
  2. +
  3. Add nuget.config file next to your sln file (requires VS restart)
  4. +
  5. Create build folder under your application and copy the files from PipelineTemplate
  6. +
  7. Update Solution Name in the .nuke/parameters.json file
  8. +
  9. Create the version.json file under each component that must be versioned (required for GitVersioning to calculate the semantic version number)
  10. +
  11. Create deployment_list.json file (required for the pipeline to know which components should be packed for deployment)
  12. +

https://github.com/OctopusDeploy/OctoVersion

\ No newline at end of file diff --git a/docs/dotnet/libraries/playwright.html b/docs/dotnet/libraries/playwright.html new file mode 100644 index 00000000..ce6c5563 --- /dev/null +++ b/docs/dotnet/libraries/playwright.html @@ -0,0 +1,55 @@ + + + + Playwright + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Quick Start Guide

    +
  1. Add Microsoft.Playwright package to the .NET application
  2. +
  3. Compile the application in Debug mode
  4. +
  5. Record the steps by running pwsh bin\Debug\net6.0\playwright.ps1 codegen wikipedia.org
  6. +
  7. Copy the steps into the .NET Application
  8. +

Resources

\ No newline at end of file diff --git a/docs/dotnet/libraries/wiremocknet.html b/docs/dotnet/libraries/wiremocknet.html new file mode 100644 index 00000000..5b9000bc --- /dev/null +++ b/docs/dotnet/libraries/wiremocknet.html @@ -0,0 +1,53 @@ + + + + WireMockNet + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/dotnet/libraries/yarp.html b/docs/dotnet/libraries/yarp.html new file mode 100644 index 00000000..1516f8d5 --- /dev/null +++ b/docs/dotnet/libraries/yarp.html @@ -0,0 +1,48 @@ + + + + YARP + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/dotnet/minimalapi.html b/docs/dotnet/minimalapi.html new file mode 100644 index 00000000..2c61404f --- /dev/null +++ b/docs/dotnet/minimalapi.html @@ -0,0 +1,49 @@ + + + + MinimalAPI + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/effective-meetings.html b/docs/effective-meetings.html deleted file mode 100644 index 5541ffd2..00000000 --- a/docs/effective-meetings.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - Effective Meetings - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/email-templates.html b/docs/email-templates.html deleted file mode 100644 index 6551f9e2..00000000 --- a/docs/email-templates.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - Email Templates - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Email Templates
    -
  • -

    Onboarding Templates

    -
  • -
  • -
  • -

    Before Starting

    -
  • -
  • -

    Hi [new team member],

    -
  • -
  • -

    I wanted to take a moment to welcome you to our team and to confirm your start date of Monday. We are glad to have you on board and we hope that you will find this to be a positive and productive experience.

    -
  • -
  • -

    I am confident that your skills and experience will be a valuable addition to our group, and I look forward to working with you. If you have any questions or concerns leading up to your start date, please don't hesitate to reach out. I am here to help make your transition as smooth as possible.

    -
  • -
  • -

    Best,
    -[Your Name]

    -
  • -
  • -
  • -

    Day 1

    -
  • -
  • -

    Hi [new team member],

    -

    Welcome to your first day on the team! I'm excited to have you here and I'm looking forward to getting to know you better.

    -

    To help you get started, here are a few things you'll need to know:

    -
  • -
  • -

    Your computer login is [username] and your temporary password is [password]. Please make sure to change your password as soon as you can.

    -
  • -
  • -

    Our team typically starts the day at 9:00 AM, with a stand-up meeting at 9:30 AM. This is a short meeting where everyone shares what they're working on for the day.

    -
  • -
  • -

    Your team leader is [team leader name] and they will be your primary point of contact. Feel free to reach out to them with any questions you have.

    -
  • -
  • -

    We have a slack channel for the team where we communicate throughout the day. Make sure to join and introduce yourself to the team!

    -
  • -
  • -

    I have put together an onboarding plan for your first few weeks with us to help you get up to speed.

    -
  • -
  • -
  • -

    Again, welcome to the team! I'm looking forward to working with you.

    -

    Best,
    -[Your Name]

    -
  • -
  • -
  • -

    Introducing a new team member

    -
  • -
  • -
  • -

    Hi team,

    -
  • -
  • -

    I am excited to introduce [new team member] who will be joining us on the team! [New team member] brings with them a wealth of experience in [industry/area of expertise] and I have no doubt that they will be a valuable asset to our group.

    -
  • -
  • -

    Please join me in welcoming [new team member] to the team. I know that they are looking forward to getting to know everyone and getting started on their new role.

    -
  • -
  • -

    Best,
    -[Your Name]

    -
  • -
  • -
  • -

    Starting a Community Of Practice

    -
  • -
  • -
  • -

    Dear [Colleagues],

    -

    I hope this email finds you well. I wanted to reach out to you about an idea I have been thinking about for a while - starting a community of practice (CoP) centered around [focus of CoP].

    -

    I believe that this CoP has the potential to bring together a group of individuals who are passionate about [focus of CoP] and provide a space for us to share our knowledge and experiences, collaborate on projects, and support each other in our professional development.

    -

    I envision the CoP meeting [frequency] and hosting events or activities that facilitate learning and collaboration. Some potential benefits of participating in the CoP include:

    -
  • -
  • -

    Staying up-to-date on the latest developments in [focus of CoP]

    -
  • -
  • -

    Connecting with like-minded professionals

    -
  • -
  • -

    Sharing best practices and ideas

    -
  • -
  • -

    Collaborating on projects and initiatives

    -
  • -
  • -

    Providing support and guidance to one another

    -

    I would love to hear your thoughts on this idea and whether you might be interested in joining the CoP. Please let me know if you have any questions or if there is anything else I can provide to help convince you of the value of this opportunity.

    -

    Thank you for considering this request.

    -

    Best,
    -[Your Name]

    -
  • -
  • -
  • -

    CoP Invite

    -
  • -
  • -
  • -

    Dear [CoP Members],

    -

    I hope this email finds you well. I am writing to invite you to the next meeting of our community of practice (CoP) focused on [focus of CoP].

    -

    The meeting will take place on [date] at [time] and will be held via [online platform or in-person location]. The agenda for the meeting is as follows:

    -
  • -
  • -

    [Agenda item 1]

    -
  • -
  • -

    [Agenda item 2]

    -
  • -
  • -

    [Agenda item 3]

    -
  • -
  • -

    [etc.]

    -

    I encourage you to come prepared to share any updates, ideas, or successes related to [focus of CoP] and to actively participate in the discussion.

    -

    I look forward to seeing you at the meeting and continuing to collaborate as a community.

    -

    Best,
    -[Your Name]

    -
  • -
\ No newline at end of file diff --git a/docs/email-templates/knowledge-sharing.html b/docs/email-templates/knowledge-sharing.html new file mode 100644 index 00000000..0bb807a2 --- /dev/null +++ b/docs/email-templates/knowledge-sharing.html @@ -0,0 +1,69 @@ + + + + Knowledge Sharing + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Email 1 (2 weeks prior to launch)

Hi team,

I’m excited to share that we’re giving each of you access to Stack Overflow for Teams, a secure and private place for you to share and find knowledge related to our technology and company. Instead of getting pinged through chat or email for information causing distractions, we’ll be able to work more asynchronously by storing our team knowledge in one central location for any of us to access at any time.

To help you get familiar, you can watch the following short videos:

How to ask and answer a question

How to write an Article

How to create a Collection

You can also check out this user guide on how to use Stack Overflow for Teams.

We’ll be releasing this company-wide on ___ so be on the lookout for an invite!

In the meantime, start thinking about the most common questions you get asked - we’ll be asking you to transfer that knowledge into our brand new Stack Overflow for Team when we launch. More to come about this exciting addition to our tools tech stack!

Please let me know if you have any questions.

Email 2 (1 week prior to launch)

Hi there,

As I’ve mentioned, we’re counting down the days to launch for Stack Overflow for Teams, and I’m asking you to take 30 minutes between now and then to gather some of the most frequently asked questions that you hear on chat or in email and jot them down. These questions might sound like:

How do I find...?

What is the process for…?

Who is responsible for... ?

Does anyone know about…?

Does anyone know where…?

When we launch next week, I’ll be asking you to share those questions - and the answers in our Team to get us started.

Thanks!

Email 3 (Launch Day)

Hi there,

Each of you should have just received an invite to Stack Overflow for Teams / Each of you now has access to our own Stack Overflow for Teams.

As requested, please take some time today to ask and answer a question. Here’s how to do that:

Start a new question draft
+
+Use the question as the title
+
+Draft the question in total in the body
+
+Click “Answer my own question” at the bottom of the page
+
+Include your answer
+
+Hit save
+

What if my question has already been asked/answered?

When you type your question in the title bar, you will see if any other related questions have been asked. If you notice this, click on the question that is populated and check to see if it has been answered. If not, please do so! Notice that you could add more context? Go ahead and add that!

What if I don’t know of any common questions?

There are bound to be at least a few questions that our chat channels or you personally get asked on a somewhat regular basis. Check back through your chat and email messages if you’re struggling to come up with something.

What else can I do within Teams?

Have a question that you don’t know the answer to? Write it up, and let’s get you some answers!
+
+Upvote good questions and answers and use emojis to show your enthusiasm. 
+
+Create an Article. Longer-form content like project documentation, how-to guides, etc. can live in our Team, too - just copy and paste something that you already know exists, and everyone else will be able to access it.
+

Email 4 (2 days post-launch)

Hi team,

Congrats! We’ve managed to ask _ questions, provide ___ answers, and write ____ Articles. This is just the beginning - and we’re already off to a great start!

What can you do next to make sure that our knowledge community thrives?

Make sure that you are asking questions in our Team.
+
+Follow and create tags to stay on top of new information.
+
+When you see someone asking questions in Slack/Microsoft Teams, use the integration to suggest that they ask the question in our Team instead.
+
+Continue to transport documents into Articles.
+

I’ll continue to keep you all updated on how our Team is growing on a regular basis, and in the meantime, if you have any questions, please feel free to contact me.

Thank you!

\ No newline at end of file diff --git a/docs/email-templates/onboarding.html b/docs/email-templates/onboarding.html new file mode 100644 index 00000000..40e09aad --- /dev/null +++ b/docs/email-templates/onboarding.html @@ -0,0 +1,171 @@ + + + + Onboarding + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Onboarding
    +
  • +

    Management/Onboarding Templates

    +
  • +
  • +
  • +

    Before Starting

    +
  • +
  • +

    Hi [new team member],

    +
  • +
  • +

    I wanted to take a moment to welcome you to our team and to confirm your start date of Monday. We are glad to have you on board and we hope that you will find this to be a positive and productive experience.

    +
  • +
  • +

    I am confident that your skills and experience will be a valuable addition to our group, and I look forward to working with you. If you have any questions or concerns leading up to your start date, please don't hesitate to reach out. I am here to help make your transition as smooth as possible.

    +
  • +
  • +

    Best,
    +[Your Name]

    +
  • +
  • +
  • +

    Day 1

    +
  • +
  • +

    Hi [new team member],

    +

    Welcome to your first day on the team! I'm excited to have you here and I'm looking forward to getting to know you better.

    +

    To help you get started, here are a few things you'll need to know:

    +
  • +
  • +

    Your computer login is [username] and your temporary password is [password]. Please make sure to change your password as soon as you can.

    +
  • +
  • +

    Our team typically starts the day at 9:00 AM, with a stand-up meeting at 9:30 AM. This is a short meeting where everyone shares what they're working on for the day.

    +
  • +
  • +

    Your team leader is [team leader name] and they will be your primary point of contact. Feel free to reach out to them with any questions you have.

    +
  • +
  • +

    We have a slack channel for the team where we communicate throughout the day. Make sure to join and introduce yourself to the team!

    +
  • +
  • +

    I have put together an onboarding plan for your first few weeks with us to help you get up to speed.

    +
  • +
  • +
  • +

    Again, welcome to the team! I'm looking forward to working with you.

    +

    Best,
    +[Your Name]

    +
  • +
  • +
  • +

    Introducing a new team member

    +
  • +
  • +
  • +

    Hi team,

    +
  • +
  • +

    I am excited to introduce [new team member] who will be joining us on the team! [New team member] brings with them a wealth of experience in [industry/area of expertise] and I have no doubt that they will be a valuable asset to our group.

    +
  • +
  • +

    Please join me in welcoming [new team member] to the team. I know that they are looking forward to getting to know everyone and getting started on their new role.

    +
  • +
  • +

    Best,
    +[Your Name]

    +
  • +
  • +
  • +

    Starting a Community Of Practice

    +
  • +
  • +
  • +

    Dear [Colleagues],

    +

    I hope this email finds you well. I wanted to reach out to you about an idea I have been thinking about for a while - starting a community of practice (CoP) centered around [focus of CoP].

    +

    I believe that this CoP has the potential to bring together a group of individuals who are passionate about [focus of CoP] and provide a space for us to share our knowledge and experiences, collaborate on projects, and support each other in our professional development.

    +

    I envision the CoP meeting [frequency] and hosting events or activities that facilitate learning and collaboration. Some potential benefits of participating in the CoP include:

    +
  • +
  • +

    Staying up-to-date on the latest developments in [focus of CoP]

    +
  • +
  • +

    Connecting with like-minded professionals

    +
  • +
  • +

    Sharing best practices and ideas

    +
  • +
  • +

    Collaborating on projects and initiatives

    +
  • +
  • +

    Providing support and guidance to one another

    +

    I would love to hear your thoughts on this idea and whether you might be interested in joining the CoP. Please let me know if you have any questions or if there is anything else I can provide to help convince you of the value of this opportunity.

    +

    Thank you for considering this request.

    +

    Best,
    +[Your Name]

    +
  • +
  • +
  • +

    CoP Invite

    +
  • +
  • +
  • +

    Dear [CoP Members],

    +

    I hope this email finds you well. I am writing to invite you to the next meeting of our community of practice (CoP) focused on [focus of CoP].

    +

    The meeting will take place on [date] at [time] and will be held via [online platform or in-person location]. The agenda for the meeting is as follows:

    +
  • +
  • +

    [Agenda item 1]

    +
  • +
  • +

    [Agenda item 2]

    +
  • +
  • +

    [Agenda item 3]

    +
  • +
  • +

    [etc.]

    +

    I encourage you to come prepared to share any updates, ideas, or successes related to [focus of CoP] and to actively participate in the discussion.

    +

    I look forward to seeing you at the meeting and continuing to collaborate as a community.

    +

    Best,
    +[Your Name]

    +
  • +
\ No newline at end of file diff --git a/docs/entityframework.html b/docs/entityframework.html deleted file mode 100644 index 68826a60..00000000 --- a/docs/entityframework.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - EntityFramework - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EntityFramework

EF CLI

Commands

    -
  • Install: dotnet tool install --global dotnet-ef
  • -
  • Update: dotnet tool update --global dotnet-ef
  • -

Create/Update Model (Database First)

    -
  1. .csproj file must reference the following nuget packages: -
      -
    • Microsoft.EntityFrameworkCore.Design
    • -
    • Microsoft.EntityFrameworkCore.SqlServer
    • -
    -
  2. -
  3. Navigate to the folder where you want to store the model
  4. -
  5. Update EF Model Classes dotnet ef dbcontext scaffold "Server=localhost;Database=DbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Database -f --project C:\Dev\Something.csproj
  6. -

Connection String

Search for DbContext.cs class

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
-{
-    var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
-    optionsBuilder.UseSqlServer(connectionString);
-}
-

Logging

This will allow us to see the SQL Queries being executed

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
-{
-    var connectionString = "Persist Security Info=False;User ID=*****;Password=*****;Initial Catalog=AdventureWorks;Server=MySqlServer";
-    optionsBuilder.LogTo(Console.Write, LogLevel.Trace)
-                  .EnableSensitiveDataLogging()
-                  .EnableDetailedErrors()
-                  .UseSqlServer(connectionString);
-}
-
\ No newline at end of file diff --git a/docs/featureflags.html b/docs/featureflags.html deleted file mode 100644 index 095d21d6..00000000 --- a/docs/featureflags.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - FeatureFlags - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Objective

To implement a Feature Management solution that allows us to change application behaviour without changing code.

AWS AppConfig

AWS AppConfig is a capability of AWS Systems Manager, to create, manage, and quickly deploy application configurations. A configuration is a collection of settings that influence the behavior of the application.

The Amazon.Extensions.Configuration.SystemsManager simplifies using AWS AppConfig as a source for configuration information for .NET applications.

Microsoft.FeatureManagement

Microsoft.FeatureManagement provides standardized APIs for enabling feature flags within applications. This library secures a consistent experience when developing applications that use patterns such as beta access, rollout, dark deployments, and more.

Configuration Sample

"FeatureFlags": {
-        "featureA": false,
-        "featureB": true,
-        "featureC": false,
-        "featureD": {
-            "EnabledFor": [
-                {
-                    "Name": "Microsoft.Targeting",
-                    "Parameters": {
-                        "Audience": {
-                            "Users": [
-                                "{tenantId}:{userId}",
-                                "{tenantId}:{userId2}"
-                            ],
-                            "Groups": [
-                                {
-                                    "Name": "{tenantId}",
-                                    "RolloutPercentage": 0
-                                },
-                                {
-
-                                    "Name": "{tenantId2}",
-                                    "RolloutPercentage": 50
-                                },
-                                {
-
-                                    "Name": "{tenantId3}",
-                                    "RolloutPercentage": 100
-                                }
-                            ],
-                            "DefaultRolloutPercentage": 0
-                        }
-                    }
-                }
-            ]
-        }
-    }
-
\ No newline at end of file diff --git a/docs/frontend.html b/docs/frontend.html deleted file mode 100644 index 68e8ded8..00000000 --- a/docs/frontend.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - Frontend - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/frontend/angular.html b/docs/frontend/angular.html new file mode 100644 index 00000000..5cf88fa7 --- /dev/null +++ b/docs/frontend/angular.html @@ -0,0 +1,113 @@ + + + + Angular + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Training

Introduction to Angular: Codelab | Video

Tools

    +
  1. Angular
  2. +
  3. Install Angular Language Service for VS Code code --install-extension angular.ng-template
  4. +

Create a new Angular App

    +
  1. Run ng new NewApp.UI --strict false
  2. +
  3. Would you like to add Angular routing? Yes
  4. +
  5. Which stylesheet format would you like to use? CSS
  6. +
  7. Navigate to the NewApp.UI folder
  8. +
  9. Run ng serve (Angular Development Server)
  10. +

+## Development server
+
+Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
+
+## Code scaffolding
+
+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
+
+## Build
+
+Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
+
+## Running unit tests
+
+Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
+
+## Running end-to-end tests
+
+Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
+
+## Install Dependencies
+
+Run ```npm install```
+
+By default, it will install all modules listed as dependencies in the ```package.json``` file.
+
+https://docs.npmjs.com/cli/v6/commands/npm-install
+
+## Generate Library
+
+https://angular.io/guide/creating-libraries
+
+1. ng new my-workspace --no-create-application
+2. cd my-workspace
+3. ng generate library my-lib
+
+## Generate Component
+
+https://angular.io/tutorial/toh-pt3
+
+```ng generate component user-card```
+
+https://github.com/leandromonaco/Workbench/commit/b50ce6b655b6f1747ee6d313955eef228584cf6d
+
+![WindowsTerminal_Rd9hoeuAXP](https://user-images.githubusercontent.com/5598150/168176658-34820f94-c3c4-4c77-a934-add63b8720aa.gif)
+
+## Documentation
+
+- [NPM CLI Commands](https://docs.npmjs.com/cli/v8/commands)
+- [Angular CLI Commands](https://angular.io/cli/)
+
+## Angular CLI
+
+  > The latest [[Install multiple NodeJS Versions]] version is recommended
+  
+  1. Run `npm install -g @angular/cli@13.3.10` or `npm install -g @angular/cli@latest`
+  2. Run `ng --version`
+
\ No newline at end of file diff --git a/docs/frontend/css.html b/docs/frontend/css.html new file mode 100644 index 00000000..3f42134a --- /dev/null +++ b/docs/frontend/css.html @@ -0,0 +1,46 @@ + + + + CSS + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/frontend/index.html b/docs/frontend/index.html new file mode 100644 index 00000000..58d9c097 --- /dev/null +++ b/docs/frontend/index.html @@ -0,0 +1,52 @@ + + + + Index + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/git.html b/docs/git.html deleted file mode 100644 index af08de99..00000000 --- a/docs/git.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - Git - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Git

Tools

    -
  • winget install -e --id Git.Git
  • -
  • winget install -e --id GitHub.GitHubDesktop
  • -
  • winget install -e --id GitHub.cli
  • -
  • winget install -e --id GitHub.GitLFS
  • -
  • winget install -e --id Microsoft.Git
  • -
  • winget install -e --id Microsoft.VFSforGit
  • -
  • winget install -e --id Microsoft.GitCredentialManagerCore
  • -
  • winget install -e --id Atlassian.Sourcetree
  • -
  • winget install -e --id TortoiseGit.TortoiseGit
  • -

Git Credentials Manager

GitHub Repo

Commands

Clean Repository

git clean -fdx is a command used in Git to remove untracked files and directories from the working tree.

    -
  • -f flag stands for "force", which allows the command to execute without prompting the user for confirmation.
  • -
  • -d flag is used to also remove untracked directories.
  • -
  • -x flag is used to also remove ignored files.
  • -

Git Clone with Submodules

git clone git@github.com:leandromonaco/leandromonaco.github.io.git C:\Dev\Repo --recurse-submodules

Basic Git Commands

git checkout main
-git fetch
-git pull
-git branch branch_name
-git checkout branch_name
-git push --set-upstream origin branch_name
---Make code changes, stage and commit them
-git push
-

Reset author for ALL commits

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='new@email'; GIT_COMMITTER_NAME='Newname'; GIT_COMMITTER_EMAIL='new@email';" HEAD
-git push --force --tags origin 'refs/heads/main'
-

Change last commit message

    -
  1. Run git commit --amend -m "New and correct message"
  2. -

Delete the most recent commit

without destroying the work you've done: git reset --soft HEAD~1
-destroying the work you've done: git reset --hard HEAD~1

Fix .gitignore issues

    -
  1. Run git rm -r --cached . to unstage and remove the path to your files from the Git index.
  2. -
  3. Execute git add . to re-add all your files back (only the correct files will be updated).
  4. -
  5. Execute git commit -m ".gitignore is now working" to commit all your files back into the Git index.
  6. -

Configuration

Read All Configuration

git config --local -l
-git config --global -l
-

Read specific values

git config --global user.name
-git config --global user.email
-

Make sure that local git config does not override the global configuration

git config --local user.name
-git config --local user.email
-

Change values

git config --global user.name [username]
-git config --global user.email [email address]
-

Removing sensitive data from a repository

Example

    -
  1. winget install -e --id Oracle.JavaRuntimeEnvironment
  2. -
  3. java -jar bfg.jar --delete-folders ReleasePlanning
  4. -
  5. git push --force
  6. -
    -
  • if dealing with protected commits add --no-blob-protection parameter
  • -

Troubleshooting

set GIT_TRACE=1
-set GIT_CURL_VERBOSE=1
-
\ No newline at end of file diff --git a/docs/goals.html b/docs/goals.html deleted file mode 100644 index 383a086c..00000000 --- a/docs/goals.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - Goals - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Objectives

OKRs

Definition

OKR stands for Objectives and Key Results. OKRs help break up big, audacious missions into actionable goals and milestones.

    -
  • Objectives (The “What”): An objective is what you want to do. It describes our mission-supporting goal.
  • -
  • Key Results (The “How”): Objectives must be paired with a roadmap that will help you know whether or not you’re on the path to meeting your goals.
  • -

Resources

\ No newline at end of file diff --git a/docs/goals/continous-learning.html b/docs/goals/continous-learning.html new file mode 100644 index 00000000..f48391a0 --- /dev/null +++ b/docs/goals/continous-learning.html @@ -0,0 +1,250 @@ + + + + Continous Learning + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Continous Learning

This a list of ideas to make learning a part the routine.
+

"../../assets/image_1672704712173_0.png" is not created yet. Click to create.

Career Roadmap

Redis

Communities

Hackatons

Code Katas

Azure

Soft Skills

Training

Project Management

AWS

Continous Learning

Blog Posts

Kubernetes 101: Pods, Nodes, Containers, and Clusters

Videos

TBA

Training

General

Cloud

Backend

Frontend

Cloud

    +
  1. Badges & Training - .NET on AWS
  2. +
  3. Microsoft Learn
  4. +
  5. AWS Learning Badges
  6. +
  7. AWS Educate
  8. +

Frontend

    +
  1. HTML: Mozilla | Google
  2. +
  3. CSS: Mozilla | Google
  4. +
  5. Javascript
  6. +
  7. TypeScript
  8. +
  9. Angular
  10. +

Misc

    +
  1. https://university.atlassian.com
  2. +
  3. Project Management
  4. +
  5. Agile
  6. +
  7. Git
  8. +
  9. Git Hooks
  10. +
  11. Redis for .NET Developers
  12. +
  13. SQL
  14. +

Books

Books suggested by the community

Paperback

Online

\ No newline at end of file diff --git a/docs/goals/continuous-improvement.html b/docs/goals/continuous-improvement.html new file mode 100644 index 00000000..6b4f70e8 --- /dev/null +++ b/docs/goals/continuous-improvement.html @@ -0,0 +1,130 @@ + + + + Continuous Improvement + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/goals/knowledge-sharing.html b/docs/goals/knowledge-sharing.html new file mode 100644 index 00000000..1259b0c1 --- /dev/null +++ b/docs/goals/knowledge-sharing.html @@ -0,0 +1,167 @@ + + + + Knowledge Sharing + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Knowledge Sharing

What

Share knowledge

Why

Sharing knowledge is crucial for software development teams to be successful in delivering high-quality software, improving team collaboration and efficiency, and staying up-to-date with new trends and technologies.

    +
  • Collaboration: Software development is rarely a solitary activity. Teamwork and collaboration are critical to the success of any software project. Sharing knowledge allows team members to work together more effectively and to leverage each other's strengths.
  • +
  • Efficiency: Sharing knowledge allows developers to avoid reinventing the wheel. They can build on the work of others, reuse code, and avoid common mistakes, which can save time and resources.
  • +
  • Quality: Sharing knowledge can help improve the quality of software. Developers can share best practices, techniques, and tools that can help ensure that software is well-designed, secure, and reliable.
  • +
  • Continuous Learning: The field of software development is constantly evolving. Sharing knowledge helps developers stay up-to-date with the latest developments, trends, and technologies. It also helps them learn from each other's experiences and mistakes.
  • +

Examples

How

    +
  • Document infrastructure, architecture, technical analysis and designs.
  • +
  • Provide how-to guides, tutorials, and runbooks.
  • +
  • Establish guidelines for contributors and code reviews.
  • +
  • Create and update documentation regularly.
  • +
  • Consolidate conflicting information in documentation.
  • +

Presentation Agenda

I. Introduction

    +
  • +

    Purpose of the presentation

    +
  • +
  • +

    Overview of knowledge sharing in software development

    +

    II. The Importance of Knowledge Sharing

    +
  • +
  • +

    Benefits of knowledge sharing for the team and organization

    +

    III. Strategies for Knowledge Sharing

    +
  • +
  • +

    Best practices for knowledge sharing

    +
  • +
  • +

    Examples of successful knowledge sharing practices

    +

    IV. Overcoming Challenges to Knowledge Sharing

    +
  • +
  • +

    Common challenges to knowledge sharing

    +
  • +
  • +

    Solutions for overcoming these challenges

    +

    V. Documenting Knowledge

    +
  • +
  • +

    Importance of documenting knowledge

    +
  • +
  • +

    Types of knowledge that should be documented

    +

    VI. Collaborative Learning

    +
  • +
  • +

    Benefits of collaborative learning

    +
  • +
  • +

    Ways to encourage collaborative learning

    +

    VII. Knowledge Sharing Tools

    +
  • +
  • +

    Tools that can be used for knowledge sharing

    +
  • +
  • +

    Examples of how these tools can be used effectively

    +

    VIII. Conclusion

    +
  • +
  • +

    Summary of key points

    +
  • +
  • +

    Importance of knowledge sharing in software development

    +
  • +
  • +

    Call to action for implementing knowledge sharing practices

    +

    IX. Questions and Answers

    +
  • +
  • +

    Open floor for questions and discussion

    +

    X. Closing

    +
  • +
  • +

    Final thoughts

    +
  • +
  • +

    Thank audience for their time and attention

    +
  • +

Documentation and Knowledge Sharing

\ No newline at end of file diff --git a/docs/goals/quality.html b/docs/goals/quality.html new file mode 100644 index 00000000..659b67e4 --- /dev/null +++ b/docs/goals/quality.html @@ -0,0 +1,114 @@ + + + + Quality + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Goal-Oriented Ideas

Code Reviews

Code Quality

\ No newline at end of file diff --git a/docs/google-calendar-api.html b/docs/google-calendar-api.html deleted file mode 100644 index 67680698..00000000 --- a/docs/google-calendar-api.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - Google Calendar API - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/hackerone.html b/docs/hackerone.html deleted file mode 100644 index 3a5b3550..00000000 --- a/docs/hackerone.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - HackerOne - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/health-monitor.html b/docs/health-monitor.html deleted file mode 100644 index 9816ffd7..00000000 --- a/docs/health-monitor.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - Health Monitor - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Health Monitor

Employee

    -
  • I know what is expected of me at work.
  • -
  • I have the materials and equipment I need to do my work right.
  • -
  • At work, I have the opportunity to do what I do best every day.
  • -
  • In the last seven days, I have received recognition or praise for doing good work.
  • -
  • My supervisor, or someone at work, seems to care about me as a person.
  • -
  • There is someone at work who encourages my development.
  • -
  • At work, my opinions seem to count.
  • -
  • The mission or purpose of my company makes me feel my job is important.
  • -
  • My associates or fellow employees are committed to doing quality work.
  • -
  • I have a best friend at work.
  • -
  • In the last six months, someone at work has talked to me about my progress.
  • -
  • This last year, I have had opportunities at work to learn and grow.
  • -

Developer Velocity

https://developervelocityassessment.com/

Manager

    -
  • I would recommend my manager to others.
  • -
  • My manager assigns stretch opportunities to help me develop in my career.
  • -
  • My manager communicates clear goals for our team.
  • -
  • My manager gives me actionable feedback on a regular basis.
  • -
  • My manager provides the autonomy I need to do my job (i.e., does not "micro-manage" by getting involved in details that should be handled at other levels).
  • -
  • My manager consistently shows consideration for me as a person.
  • -
  • My manager keeps the team focused on priorities, even when it’s difficult (e.g., declining or deprioritizing other projects).
  • -
  • My manager regularly shares relevant information from their manager and senior leadership.
  • -
  • My manager has had a meaningful discussion with me about my career development in the past six months.
  • -
  • My manager has the technical expertise (e.g., technical judgment in Tech, selling in Sales, accounting in Finance) required to effectively manage me.
  • -
  • The actions of my manager show they value the perspective I bring to the team, even if it is different from their own.
  • -
  • My manager makes tough decisions effectively (e.g., decisions involving multiple teams, competing priorities).
  • -
  • My manager effectively collaborates across boundaries (e.g., team, organizational).
  • -
  • What would you recommend your manager keep doing?
  • -
  • What would you have your manager change?
  • -

Psychological Safety

    -
  • If you make a mistake on this team, it is often held against you.
  • -
  • Members of this team are able to bring up problems and tough issues.
  • -
  • People on this team sometimes reject others for being different.
  • -
  • It is safe to take a risk on this team.
  • -
  • It is difficult to ask other members of this team for help.
  • -
  • No one on this team would deliberately act in a way that undermines my efforts.
  • -
  • Working with members of this team, my unique skills and talents are valued and utilized.
  • -

Stress

We’ve all been working under a lot of stress this past year. I wanted to gauge how the team is feeling, and see if there’s anything I can do to help mitigate feelings of burnout. Please answer these questions and send your responses back to me before the end of the day tomorrow. Feel free to provide more context in any of your answers. And please be honest — the goal here is for me to find out how you’re really doing, not to punish anyone for feeling unproductive or overwhelmed. Everything you say will be kept confidential.

Over the past week…

    -
  • How overwhelmed did you feel, on a scale of 1 to 5? (1 is lowest, 5 is highest)
  • -
  • How many days did you work later than you should?
  • -
  • How many days did you answer emails after hours?
  • -
  • How effective did you feel, on a scale of 1 to 5?
  • -
  • How productive did you feel, on a scale of 1 to 5?
  • -
  • How much fun did you have, on a scale of 1 to 5?
  • -

Service Team

Team leadership

    -
  • There is a team lead who is responsible for team performance, communication and process ownership.
  • -
  • The team lead actively monitors work, identifies and successfully advocates improvements in process, and communicates opportunities both inside and outside of the team.
  • -

Balanced team

    -
  • The team has the right specialist skills and experience.
  • -
  • The team is empowered to make decisions and escalate where appropriate.
  • -
  • The team share stories, collaborate on tricky problems and share lessons learned.
  • -
  • Individual service excellence is recognized.
  • -
  • Team schedules and rosters are set and agreed with an even distribution of work across the team.
  • -
  • There is a smooth onboarding process for new team members.
  • -

Service mandate

    -
  • The services offered by the team are defined and documented. The scope of the team’s work is clear.
  • -
  • Ownership and accountabilities for individuals and leads are defined.
  • -
  • The service mandate has been communicated and agreed by key stakeholders, with agreed-upon success metrics that are well-defined and actively monitored.
  • -

Service levels

    -
  • Service levels for all areas of the teams’ service mandate are defined, agreed and visible to key stakeholders, including customers.
  • -
  • All service levels are current, applicable and there is queue management, categorization, prioritization & escalation in place to meet SLAs.
  • -
  • The team operates at a good velocity with recognized consequences for not meeting SLAs.
  • -

Customer centricity

    -
  • You understand what your customers need and have the necessary information about the customer to resolve their issues.
  • -
  • You are skilled at understanding, empathizing and resolving requests with an effective customer feedback loop in place which drives improvements to build trust and
    -improve your service offering.
  • -
  • Your service offering balances quality with velocity.
  • -
  • Customers can self serve and your team has a mechanism or cycle in place to detect, correct and prevent problem management.
  • -

Tools and processes

    -
  • The team has the necessary tool set that is well designed and optimized towards delivering the services offered by your team.
  • -
  • Processes are well documented, and have defined workflows and owners.
  • -
  • There is a well defined and followed hand-over process to operationalize new services and handle rootcause analysis.
  • -

Effective partnership

    -
  • Your vendors and partners are known, key contracts are documented and there is a trusting relationship(s) in place.
  • -
  • There are established operational level agreements (OLAs) for down-level teams and partners.
  • -
  • Partner contracts are current and their OLAs allow your team to uphold your commitments and retain ownership of the customer request.
  • -

Reporting and analytics

    -
  • You are capturing feedback and your performance reporting is available, visible and helping your team improve established service levels.
  • -
  • KPIs are realistic, focused on the correct metrics and you are meeting your KPIs.
  • -
  • Your cost to serve is known and a focus area for the team to improve on.
  • -
\ No newline at end of file diff --git a/docs/high-performing-teams.html b/docs/high-performing-teams.html deleted file mode 100644 index 8c897ac2..00000000 --- a/docs/high-performing-teams.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - High Performing Teams - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
High Performing Teams
    -
  • "../assets/image_1667451270542_0.png" is not created yet. Click to create.
  • -
\ No newline at end of file diff --git a/docs/hiring.html b/docs/hiring.html deleted file mode 100644 index fbeade6c..00000000 --- a/docs/hiring.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - Hiring - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/host-file.html b/docs/host-file.html deleted file mode 100644 index 859d3fae..00000000 --- a/docs/host-file.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - Host File - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Change host file on Windows


-$HostFile = 'C:\Windows\System32\drivers\etc\hosts'
-
-# Create a backup copy of the Hosts file
-$dateFormat = (Get-Date).ToString('dd-MM-yyyy hh-mm-ss')
-$FileCopy = $HostFile + '.' + $dateFormat  + '.copy'
-Copy-Item $HostFile -Destination $FileCopy
-
-$Bindings = Get-IISSiteBinding "websitename.com"
-
-# Get the contents of the Hosts file
-$File = Get-Content $HostFile
-
-# write the Entries to hosts file, if it doesn't exist.
-foreach ($Binding in $Bindings) 
-{
-$HostFileEntry = $Binding.bindingInformation
-$HostFileEntry = $HostFileEntry -replace "\*:443:", ""
-
-Write-Host "Checking existing HOST file entries for $HostFileEntry..."
-
-#Set a Flag
-$EntryExists = $false
-
-if ($File -contains "127.0.0.1 `t $HostFileEntry") 
-{
-  Write-Host "Host File Entry for $HostFileEntry already exists."
-  $EntryExists = $true
-}
-#Add Entry to Host File
-if (!$EntryExists) 
-{
-  Write-host "Adding Host File Entry for $HostFileEntry"
-  Add-content -path $HostFile -value "127.0.0.1 `t $HostFileEntry"
-}
-}
-
-
\ No newline at end of file diff --git a/docs/how-to/batch-file.html b/docs/how-to/batch-file.html new file mode 100644 index 00000000..10af3ee2 --- /dev/null +++ b/docs/how-to/batch-file.html @@ -0,0 +1,65 @@ + + + + Batch File + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Batch File
+

# Command-line reference A-Z

+

Example with Angular

    +
  • AngularParallelBuild.bat
  • +
  start AngularBuild.bat C:\Dev\App1
+  start AngularBuild.bat C:\Dev\App2
+  start AngularBuild.bat C:\Dev\App3
+  start AngularBuild.bat C:\Dev\App3
+
    +
  • AngularBuild.bat
  • +
  cd %1  
+  ECHO Removing node_modules folder  
+  RMDIR /s /q node_modules  
+  ECHO Building Angular App  
+  call npm cache clean -f  
+  call npm install  
+  call npm ci  
+  call ng build  
+  ECHO Build Finished  
+
\ No newline at end of file diff --git a/docs/how-to/change-host-file-on-windows.html b/docs/how-to/change-host-file-on-windows.html new file mode 100644 index 00000000..1affc305 --- /dev/null +++ b/docs/how-to/change-host-file-on-windows.html @@ -0,0 +1,83 @@ + + + + Change host file on Windows + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Change host file on Windows

+$HostFile = 'C:\Windows\System32\drivers\etc\hosts'
+
+# Create a backup copy of the Hosts file
+$dateFormat = (Get-Date).ToString('dd-MM-yyyy hh-mm-ss')
+$FileCopy = $HostFile + '.' + $dateFormat  + '.copy'
+Copy-Item $HostFile -Destination $FileCopy
+
+$Bindings = Get-IISSiteBinding "websitename.com"
+
+# Get the contents of the Hosts file
+$File = Get-Content $HostFile
+
+# write the Entries to hosts file, if it doesn't exist.
+foreach ($Binding in $Bindings) 
+{
+$HostFileEntry = $Binding.bindingInformation
+$HostFileEntry = $HostFileEntry -replace "\*:443:", ""
+
+Write-Host "Checking existing HOST file entries for $HostFileEntry..."
+
+#Set a Flag
+$EntryExists = $false
+
+if ($File -contains "127.0.0.1 `t $HostFileEntry") 
+{
+  Write-Host "Host File Entry for $HostFileEntry already exists."
+  $EntryExists = $true
+}
+#Add Entry to Host File
+if (!$EntryExists) 
+{
+  Write-host "Adding Host File Entry for $HostFileEntry"
+  Add-content -path $HostFile -value "127.0.0.1 `t $HostFileEntry"
+}
+}
+
+
\ No newline at end of file diff --git a/docs/how-to/cli.html b/docs/how-to/cli.html new file mode 100644 index 00000000..6e60240d --- /dev/null +++ b/docs/how-to/cli.html @@ -0,0 +1,66 @@ + + + + CLI + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Documentation

Package

Code Example

var userIdArgument = new Option<Guid>(name: "--userId", description: "User ID", getDefaultValue: () => Guid.Empty);
+var passwordArgument = new Option<string>("--password", "New Password");
+
+var rootCommand = new RootCommand();
+rootCommand.Add(userIdArgument);
+rootCommand.Add(passwordArgument);
+
+Action<Guid, string> ConsoleAppRunner = (userIdValue, passwordValue) =>
+{
+    ConsoleAppHelper.ResetPassword(userIdValue, passwordValue);
+    Console.ReadLine();
+};
+
+rootCommand.SetHandler(ConsoleAppRunner, userIdArgument, passwordArgument);
+
+await rootCommand.InvokeAsync(args);
+

Publish CLI Tool

TBA

\ No newline at end of file diff --git a/docs/how-to/create-iis-websites.html b/docs/how-to/create-iis-websites.html new file mode 100644 index 00000000..2182140b --- /dev/null +++ b/docs/how-to/create-iis-websites.html @@ -0,0 +1,52 @@ + + + + Create IIS Websites + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create IIS Websites
+

Powershell 7+ is required

+
    +
  1. Run Install-Module -Name IISAdministration -Scope AllUsers -AllowClobber
  2. +
  3. Run New-IISSite -Name 'website_name' -PhysicalPath 'C:\Inetpub\wwwroot' -BindingInformation "*:443:hostname1.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
  4. +
  5. Run New-IISSiteBinding -Name "website_name" -BindingInformation "*:443:hostname2.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
  6. +
\ No newline at end of file diff --git a/docs/how-to/create-self-signed-certificate.html b/docs/how-to/create-self-signed-certificate.html new file mode 100644 index 00000000..84b45de8 --- /dev/null +++ b/docs/how-to/create-self-signed-certificate.html @@ -0,0 +1,134 @@ + + + + Create Self-Signed Certificate + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Create Self-Signed Certificate
+

Note
+This process requires WSL2 and Ubuntu. Read here for installation steps.

+
    +
  1. Open a command prompt window
  2. +
  3. Run ubuntu
  4. +
  5. Create certificate.cnf
  6. +
[req]
+default_bits= 2048
+default_keyfile= keyfile.pem
+distinguished_name= req_distinguished_name
+attributes= req_attributes
+prompt= no
+output_password= mypass
+req_extensions= v3_req
+
+[v3_req]
+basicConstraints= CA:FALSE
+keyUsage= nonRepudiation, digitalSignature, keyEncipherment
+subjectAltName = @alt_names
+
+[alt_names]
+DNS.1   = local.company.dev
+DNS.2   = support.company.dev
+DNS.3   = test.company.dev
+DNS.4   = automation.company.dev
+
+[req_distinguished_name ]
+C= AU
+ST= QLD
+L= Brisbane
+O= company Local
+OU= Technology
+CN= *.company.dev
+emailAddress=leandro@company.com
+
+[req_attributes]
+challengePassword= C0mp4ny
+
    +
  1. openssl req -new -newkey rsa:2048 -nodes -keyout ca.key -out ca.csr -config certificate.cnf
  2. +
  3. openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr -config certificate.cnf
  4. +
  5. openssl req -x509 -new -key ca.key -out ca.crt -days 36500 -config certificate.cnf
  6. +
  7. openssl x509 -req -days 36500 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -extensions v3_req -extfile certificate.cnf
  8. +
  9. openssl verify -CAfile ca.crt -verify_hostname local.company.dev server.crt
  10. +

PFX Export

Required to be visible on IIS, which needs a private key associated to the certificate.

    +
  1. openssl pkcs12 -export -out ca.pfx -inkey ca.key -in ca.crt -passout pass:C0mp4ny
  2. +
  3. openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -passout pass:C0mp4ny
  4. +

Import into Windows Certificate Store

    +
  1. Import-PfxCertificate -FilePath C:\Dev\SSL\ca.pfx -Password (ConvertTo-SecureString -String 'C0mp4ny' -AsPlainText -Force) -CertStoreLocation Cert:\LocalMachine\Root
  2. +
  3. Import-PfxCertificate -FilePath C:\Dev\SSL\server.pfx -Password (ConvertTo-SecureString -String 'C0mp4ny' -AsPlainText -Force) -CertStoreLocation Cert:\LocalMachine\My
  4. +

Firefox

Trust the Certificate Authority on #Firefox: Settings -> Privacy & Security -> View Certificates -> Authorities -> import ca.crt

Configure Certificate in ASP.NET

Configure Certificate in Angular

Manage Certificate Private keys

    +
  1. Go to Windows -> type "run" -> mmc
  2. +
  3. Once the mmc window is up -> Add Snap-in -> Add certificate -> Local Computer
  4. +
  5. Go to Personal -> Certificate -> Select the certificate
  6. +
  7. Right Click Certificate -> All tasks -> Manage Private keys
  8. +

Notes:

    +
  • Private key must be exportable when installing the certificate
  • +
  • In Windows 10 1809, it seems that the Manage Private Keys option is available only to certificates in the Personal store. The workaround is to drag and drop the certificate there, add permissions as needed and drag it back to where you need it.
  • +

Documentation

How HTTPS Works

Difference between CRT and PFX files

A .crt (or .cer or .cert) file usually contains a single X.509 encoded digital certificate, which is what is typically used for SSL/TLS encryption on websites. A .pfx (personal exchange format) file, on the other hand, is a password-protected data file that contains a private key, public key, and typically a chain of digital certificates. The main difference between the two is that a .pfx file contains both the private key and the public key, while a .crt file contains only the public key. Additionally, a .pfx file can include multiple certificates, while a .crt file typically only contains one.

Notes

    +
  • CRT file does not contain the private key
  • +
  • KEY file contains the private key
  • +
  • PFX file contains the private key, but it's protected by a password (eg. C0mp4ny)
  • +

Using CloudFlare as CA

    +
  1. Go to https://dash.cloudflare.com
  2. +
  3. Create a Website
  4. +
  5. Run Ubuntu
  6. +
  7. Run openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
  8. +
  9. When prompted Common Name, make sure you use a wildcard address *.mydomain.dev
  10. +
  11. Run ls and check if server.csr is listed
  12. +
  13. Run cat server.csr
  14. +
  15. Copy the CSR content
  16. +
  17. Go to CloudFare -> Website -> SSL/TLS -> Origin Server -> Create Certificate
  18. +
  19. Select "Use my private key and CSR"
  20. +
  21. Copy content from step 8
  22. +
  23. Click Create
  24. +
  25. Select PEM Format
  26. +
  27. Copy content into a notepad and save as newsslcertificate.crt
  28. +
  29. Generate PFX openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -passout pass:P4ssW0rd
  30. +
\ No newline at end of file diff --git a/docs/how-to/docker.html b/docs/how-to/docker.html new file mode 100644 index 00000000..c74812bd --- /dev/null +++ b/docs/how-to/docker.html @@ -0,0 +1,103 @@ + + + + Docker + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Docker

Installation

Build and Run a Container

    +
  1. Navigate to the folder where the Dockerfile is stored
  2. +
  3. Run docker build -t angular-container:1.0 .
  4. +
  5. Search ImageID by running docker images
  6. +
  7. Run docker run -p 80:80 469b3a773ed7
  8. +

Images

Commands

    +
  • Display containers' resource usage statistics docker stats --all --no-stream
  • +
  • Stop running containers docker kill $(docker ps -q)
  • +
  • Remove all containers docker rm $(docker ps -a -q)
  • +
  • Remove all images docker rmi $(docker images -q)
  • +
    +
  • +

    Security

    +:PROPERTIES:
    +:heading: 2
    +:END:
  • +

https://docs.docker.com/scout/

\ No newline at end of file diff --git a/docs/how-to/git.html b/docs/how-to/git.html new file mode 100644 index 00000000..c3cfc256 --- /dev/null +++ b/docs/how-to/git.html @@ -0,0 +1,86 @@ + + + + Git + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Git

Clean Repository

git clean -fdx is a command used in Git to remove untracked files and directories from the working tree.

    +
  • -f flag stands for "force", which allows the command to execute without prompting the user for confirmation.
  • +
  • -d flag is used to also remove untracked directories.
  • +
  • -x flag is used to also remove ignored files.
  • +

Git Clone with Submodules

git clone git@github.com:leandromonaco/leandromonaco.github.io.git C:\Dev\Repo --recurse-submodules

Basic Git Commands

git checkout main
+git fetch
+git pull
+git branch branch_name
+git checkout branch_name
+git push --set-upstream origin branch_name
+--Make code changes, stage and commit them
+git push
+

Reset author for ALL commits

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='new@email'; GIT_COMMITTER_NAME='Newname'; GIT_COMMITTER_EMAIL='new@email';" HEAD
+git push --force --tags origin 'refs/heads/main'
+

Change last commit message

Run git commit --amend -m "New and correct message"

Delete the most recent commit

without destroying the work you've done: git reset --soft HEAD~1
+destroying the work you've done: git reset --hard HEAD~1

Fix .gitignore issues

    +
  1. Run git rm -r --cached . to unstage and remove the path to your files from the Git index.
  2. +
  3. Execute git add . to re-add all your files back (only the correct files will be updated).
  4. +
  5. Execute git commit -m ".gitignore is now working" to commit all your files back into the Git index.
  6. +

Configuration

Read All Configuration

git config --local -l
+git config --global -l
+

Read specific values

git config --global user.name
+git config --global user.email
+

Make sure that local git config does not override the global configuration

git config --local user.name
+git config --local user.email
+

Change values

git config --global user.name [username]
+git config --global user.email [email address]
+

Removing sensitive data from a repository

Example

    +
  1. winget install -e --id Oracle.JavaRuntimeEnvironment
  2. +
  3. java -jar bfg.jar --delete-folders ReleasePlanning
  4. +
  5. git push --force
  6. +
    +
  • if dealing with protected commits add --no-blob-protection parameter
  • +
  • +

Troubleshooting

set GIT_TRACE=1
+set GIT_CURL_VERBOSE=1
+
\ No newline at end of file diff --git a/docs/how-to/google-calendar-api.html b/docs/how-to/google-calendar-api.html new file mode 100644 index 00000000..9d423260 --- /dev/null +++ b/docs/how-to/google-calendar-api.html @@ -0,0 +1,58 @@ + + + + Google Calendar API + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/docs/how-to/install-multiple-nodejs-versions.html b/docs/how-to/install-multiple-nodejs-versions.html new file mode 100644 index 00000000..a5aa08b4 --- /dev/null +++ b/docs/how-to/install-multiple-nodejs-versions.html @@ -0,0 +1,55 @@ + + + + Install multiple NodeJS Versions + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Install multiple NodeJS Versions
+

Warning
+Each time a new NodeJS version is installed, tools like Angular must be re-installed.

+
    +
  1. winget install -e --id CoreyButler.NVMforWindows
  2. +
  3. Restart Windows Terminal
  4. +
  5. Execute nvm --version to verify if your installation
  6. +
  7. Execute nvm install latest
  8. +
  9. Execute nvm use latest
  10. +

NVM Commands: nvm help

\ No newline at end of file diff --git a/docs/how-to/measure-method-elapsed-time-with-csharp.html b/docs/how-to/measure-method-elapsed-time-with-csharp.html new file mode 100644 index 00000000..28742a5a --- /dev/null +++ b/docs/how-to/measure-method-elapsed-time-with-csharp.html @@ -0,0 +1,73 @@ + + + + Measure Method Elapsed Time with CSharp + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Measure Method Elapsed Time with CSharp

Class

using System;
+using System.Diagnostics;
+
+[AttributeUsage(AttributeTargets.Method)]
+public class StopWatchAttribute: Attribute
+{
+    public virtual void OnEntry()
+    {
+        Stopwatch stopwatch = new Stopwatch();
+        stopwatch.Start();
+
+        AppDomain.CurrentDomain.ProcessExit += (sender, args) =>
+        {
+            stopwatch.Stop();
+            Console.WriteLine($"Elapsed Time: {stopwatch.ElapsedMilliseconds} ms");
+        };
+    }
+}
+

How to use it

public class MyClass
+{
+    [StopWatch]
+    public static void MyMethod()
+    {
+        // Code to be measured.
+        System.Threading.Thread.Sleep(500);
+    }
+}
+
\ No newline at end of file diff --git a/docs/how-to/technical-support.html b/docs/how-to/technical-support.html new file mode 100644 index 00000000..24fe5fb0 --- /dev/null +++ b/docs/how-to/technical-support.html @@ -0,0 +1,61 @@ + + + + Technical Support + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Share Secrets

https://onetimesecret.com/

Quick Assist

Give the security code to the person you’re helping and tell them to follow these steps:

    +
  1. Open the Start menu go to Windows Accessories -> Quick Assist or type Quick Assist in the search bar and select the Quick Assist app to launch it.
  2. +
  3. Accept the privacy policy, if prompted.
  4. +
  5. Enter the code provided in Code from assistant and click Share screen.
  6. +
  7. Verify that the person trying to help you is who you expected and accept the request.
  8. +
  9. Wait for your devices to connect.
  10. +

Problem Step Recorder (PSR)

    +
  1. Click on your Windows Start search menu
  2. +
  3. Type “PSR” and then click on psr.exe in the search results.
  4. +
  5. Open the application
  6. +
  7. Start the recording from the login page until you reach the page where you can see the error message/problem occurred.
  8. +
  9. Once you reach the last page, ensure your home page before you stop the recording to ensure that you have captured the last page where we encountered the error message.
  10. +
  11. In the Save As dialog box, type a name for the file, and then click Save. Then it will be created as a zip file. Please send the zip file attached to this email
    +You may look online for more suitable steps for your computer if the above steps will not work.
    +Please let me know if you need any further assistance, I would be happy to help and assist further.
  12. +
\ No newline at end of file diff --git a/docs/identityserver.html b/docs/identityserver.html deleted file mode 100644 index 360cbcd6..00000000 --- a/docs/identityserver.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - IdentityServer - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ No newline at end of file diff --git a/docs/iis.html b/docs/iis.html deleted file mode 100644 index 03309005..00000000 --- a/docs/iis.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - IIS - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IIS

Create IIS Websites

-

Powershell 7+ is required

-
    -
  1. Run Install-Module -Name IISAdministration -Scope AllUsers -AllowClobber
  2. -
  3. Run New-IISSite -Name 'website_name' -PhysicalPath 'C:\Inetpub\wwwroot' -BindingInformation "*:443:hostname1.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
  4. -
  5. Run New-IISSiteBinding -Name "website_name" -BindingInformation "*:443:hostname2.com" -Protocol https -SslFlag "Sni" -CertificateThumbPrint "[Insert Thumbprint]" -CertStoreLocation "Cert:\LocalMachine\My" -Force
  6. -
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index d6611031..99247b0c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -20,7 +20,7 @@ -
Index

Welcome to my Digital Knowledge Garden 🌱

"The more I learn, the more I realize how much I don't know" -Aristotle

This project was inspired by this blog post

Toolkit

    +
    Index

    Welcome to my Digital Knowledge Garden 🌱

    "The more I learn, the more I realize how much I don't know" -Aristotle

    This project was inspired by this blog post

    Toolkit

    Sources

      diff --git a/docs/infer%23.html b/docs/infer%23.html deleted file mode 100644 index a8cca13c..00000000 --- a/docs/infer%23.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - Infer%23 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Infer%23

      Getting started with Infer

      With Infer# v1.4 you can identify Security and Performance issues with a single click, all in VS2022 and VSCode. First, make sure that Windows Subsystem for Linux (WSL) is properly installed. Then, download and install the InferSharp extension from the Visual Studio or Visual Studio Code marketplaces. In this article, we’ll show the VS experience, which is mimicked in VS Code. You can also use Infer# directly in WSL and Docker.

      The extension adds an Infer# Analysis menu item to the Tools menu. The first time it’s selected, it will complete setup by downloading and installing the Infer# custom WSL distro from Github.

        -
      • "../assets/image_1667865010674_0.png" is not created yet. Click to create.
      • -
      • -

      Analyze your code

      After waiting for setup to complete, selecting the Infer# Analysis menu item again will prompt you to provide a directory tree (defaulting to the solution directory, if it exists) containing the DLLs and PDBs you want to analyze. Your selection is automatically saved for future runs in the .infersharpconfig file created in your project directory. The analysis will then run, displaying the warnings in the Error List pane. Additionally, information about the analysis steps is shown in a pane on the right side of the editor, with clickable links to the relevant lines of code.

        -
      • "../assets/image_1667865053544_0.png" is not created yet. Click to create.
      • -

      References

      \ No newline at end of file diff --git a/docs/interview.html b/docs/interview.html deleted file mode 100644 index 91798106..00000000 --- a/docs/interview.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - Interview - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      \ No newline at end of file diff --git a/docs/jwt.html b/docs/jwt.html deleted file mode 100644 index 58b6bb9e..00000000 --- a/docs/jwt.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - JWT - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        -
      • -

        A JWT is a set of claims (JSON property–value pairs) that together make up a JSON object.

        -

        It consists of three parts:

        -
          -
        1. Header: Consists of two properties: { "alg": "HS256", "typ": "JWT" }. alg is the algorithm that is used to encrypt the JWT.
        2. -
        3. Payload: This is where the data to be sent is stored; this data is stored as JSON property–value pairs.
        4. -
        5. Signature: This is created by encrypting, with the algorithm specified in the header:
          -(i) the base64Url-encoded header,
          -(ii) base64Url-encoded payload
          -(iii) a secret (or a private key)
        6. -
        -

        Format: {header}.{payload}.{signature}

        -

        https://openid.net/specs/draft-jones-json-web-token-07.html#ExampleJWT

        -
      • -

      Encryption

      Symmetric key and asymmetric keys

      A JWT can be encrypted using either a symmetric key (shared secret) or asymmetric keys (the private key of a private–public pair).

        -
      1. Symmetric key: Both encryption (JWT signing) and verification are done with the symmetric key—also known as the shared secret.
      2. -
      3. Asymmetric keys: The encryption (JWT signing) is done with the private key, and verification is done with the public key.
      4. -
      \ No newline at end of file diff --git a/docs/knowledge-sharing.html b/docs/knowledge-sharing.html deleted file mode 100644 index 804fc2ec..00000000 --- a/docs/knowledge-sharing.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - Knowledge Sharing - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Knowledge Sharing

      What

      Share knowledge

      Why

      Sharing knowledge is crucial for software development teams to be successful in delivering high-quality software, improving team collaboration and efficiency, and staying up-to-date with new trends and technologies.

        -
      • Collaboration: Software development is rarely a solitary activity. Teamwork and collaboration are critical to the success of any software project. Sharing knowledge allows team members to work together more effectively and to leverage each other's strengths.
      • -
      • Efficiency: Sharing knowledge allows developers to avoid reinventing the wheel. They can build on the work of others, reuse code, and avoid common mistakes, which can save time and resources.
      • -
      • Quality: Sharing knowledge can help improve the quality of software. Developers can share best practices, techniques, and tools that can help ensure that software is well-designed, secure, and reliable.
      • -
      • Continuous Learning: The field of software development is constantly evolving. Sharing knowledge helps developers stay up-to-date with the latest developments, trends, and technologies. It also helps them learn from each other's experiences and mistakes.
      • -

      Examples

      How

        -
      • Document infrastructure, architecture, technical analysis and designs.
      • -
      • Provide how-to guides, tutorials, and runbooks.
      • -
      • Establish guidelines for contributors and code reviews.
      • -
      • Create and update documentation regularly.
      • -
      • Consolidate conflicting information in documentation.
      • -

      Presentation Agenda

      I. Introduction

        -
      • -

        Purpose of the presentation

        -
      • -
      • -

        Overview of knowledge sharing in software development

        -

        II. The Importance of Knowledge Sharing

        -
      • -
      • -

        Benefits of knowledge sharing for the team and organization

        -

        III. Strategies for Knowledge Sharing

        -
      • -
      • -

        Best practices for knowledge sharing

        -
      • -
      • -

        Examples of successful knowledge sharing practices

        -

        IV. Overcoming Challenges to Knowledge Sharing

        -
      • -
      • -

        Common challenges to knowledge sharing

        -
      • -
      • -

        Solutions for overcoming these challenges

        -

        V. Documenting Knowledge

        -
      • -
      • -

        Importance of documenting knowledge

        -
      • -
      • -

        Types of knowledge that should be documented

        -

        VI. Collaborative Learning

        -
      • -
      • -

        Benefits of collaborative learning

        -
      • -
      • -

        Ways to encourage collaborative learning

        -

        VII. Knowledge Sharing Tools

        -
      • -
      • -

        Tools that can be used for knowledge sharing

        -
      • -
      • -

        Examples of how these tools can be used effectively

        -

        VIII. Conclusion

        -
      • -
      • -

        Summary of key points

        -
      • -
      • -

        Importance of knowledge sharing in software development

        -
      • -
      • -

        Call to action for implementing knowledge sharing practices

        -

        IX. Questions and Answers

        -
      • -
      • -

        Open floor for questions and discussion

        -

        X. Closing

        -
      • -
      • -

        Final thoughts

        -
      • -
      • -

        Thank audience for their time and attention

        -
      • -
      \ No newline at end of file diff --git a/docs/leadership.html b/docs/leadership.html deleted file mode 100644 index 4871fa44..00000000 --- a/docs/leadership.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - Leadership - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/management.html b/docs/management.html deleted file mode 100644 index 14a924b1..00000000 --- a/docs/management.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - Management - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/management/1on1s.html b/docs/management/1on1s.html index e88c4deb..2b815a96 100644 --- a/docs/management/1on1s.html +++ b/docs/management/1on1s.html @@ -20,7 +20,7 @@ -
      1on1s

      Performance

        +
        1on1s

        Performance

        1. What was your biggest highlight or proudest achievement in the past 6 months?
        2. What were the main objectives that you wanted to accomplish?
        3. Do you feel recognised for your good work?
        4. diff --git a/docs/management/career.html b/docs/management/career.html index 7e9fbb3b..1b1552f8 100644 --- a/docs/management/career.html +++ b/docs/management/career.html @@ -20,7 +20,7 @@ -
          Career
            +
            Career
            • Staff Software Engineer Responsibilities
            • Staff Software Engineer Responsibilities – Align With Authority
            • Staff Engineer: Leadership beyond the management track
            • diff --git a/docs/management/change-management.html b/docs/management/change-management.html new file mode 100644 index 00000000..e36ecdde --- /dev/null +++ b/docs/management/change-management.html @@ -0,0 +1,58 @@ + + + + Change Management + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              Change Management

              ADKAR Model

              The ADKAR model is an outcome-oriented change management method that aims to limit resistance to organizational change. It is based on five building blocks that bring about successful change, and each letter in the ADKAR acronym represents a different step in the change management process. The five steps are:

                +
              1. Awareness: This involves understanding the need for change and becoming aware of the implications of not changing. Leaders need to create awareness of the need for change among people who will be impacted by it.
              2. +
              3. Desire: Once people are aware of the need for change, they need to be motivated to make it happen. Leaders need to create a desire for change in individuals by explaining why it is essential and what benefits it will bring.
              4. +
              5. Knowledge: In this step, people need to be provided with the right information and knowledge about the change that is happening. Leaders should provide training and instruction to individuals on how to make the change happen.
              6. +
              7. Ability: Individuals need to possess the skills and resources necessary to make the change happen. Leaders need to provide the necessary resources and support to ensure that individuals can execute the change.
              8. +
              9. Reinforcement: In the final step, individuals need to be supported in maintaining the change. Leaders should continue to provide reinforcement to ensure that the change sticks and becomes a permanent part of the organization.
              10. +

              The ADKAR model is a widely used framework for managing organizational change. It provides a structured approach to change management that helps to minimize resistance and create a successful transition.

              What is the CLARC framework?

              The CLARC framework is a change management model that helps people managers navigate change effectively. CLARC stands for:

                +
              • C: Communicate clearly
              • +
              • L: Lead with empathy
              • +
              • A: Align to the vision
              • +
              • R: Respect the individual
              • +
              • C: Create momentum
              • +

              This framework is based on the ADKAR model, which describes the stages an individual goes through during change: Awareness, Desire, Knowledge, Ability, Reinforcement. By fulfilling each of the CLARC roles, people managers can have a positive impact on an individual's journey through each stage of the ADKAR mode.

              \ No newline at end of file diff --git a/docs/management/coaching.html b/docs/management/coaching.html index 85c7dabe..58011093 100644 --- a/docs/management/coaching.html +++ b/docs/management/coaching.html @@ -20,7 +20,7 @@ -
              Coaching
                +