Tools Installation Hack

Objective: Understand the basics of setting up a development environment and the tools required.

Shell Commands

  • wsl: Opens a WSL instance
  • cd: Change directory
  • git: Run git commands like pull or push
  • apt: Install, delete, or upgrade apt packages
  • brew: Similar to apt but mainly for Mac

Version Control

  • How are the files from GitHub placed on your local machine? How do you navigate to those files?
    • Files from GitHub are placed on your local machine by cloning the repository using a git clone command, which creates a local copy in a specified directory. You can navigate to these files using your file explorer or terminal.
  • How are the files updated in GitHub? How do you navigate to those files?
    • Files are updated in GitHub by making changes locally, committing them with a git commit command, and pushing them back to GitHub using git push. Navigate to these files by accessing your local repository directory.
  • How would you update your template of the portfolio_2025 repository? How would you make it more applicable to your specific course?
  • To update the portfolio_2025 repository template, you would customize the content by modifying the HTML, CSS, and JavaScript files to align with your course. This might involve adding course-specific information, links, or styling relevant to your subject matter.

Localhost vs. Deployed Server

  • Put into words the difference between viewing GitHub Pages running on your localhost machine versus running on a deployed server.
    • Viewing GitHub Pages on your localhost means you’re accessing the website from your local machine, which is typically used for testing and development. Only you can see it at the localhost URL, and others cannot access it. Viewing it on a deployed server like GitHub Pages makes the site publicly accessible, allowing anyone with the URL to view it.
    • What is the localhost URL for your project? Can anyone else see what you see?
      • The localhost URL is http://localhost:4000 or http://127.0.0.1:4000. No, others cannot see what you see at this URL since it’s only accessible from your local machine.
    • What is the GitHub Pages URL for your project? Can anyone else see what you see?
      • The GitHub Pages URL for your project is typically kinetekenergy.github.io/studentCSA/. Yes, anyone with this URL can see the content hosted there, as it’s publicly accessible.

DNS and GitHub Pages

  • DNS is the address manager for the internet. Reflect on the following questions:
    • Is there a domain on your GitHub Pages?
      • Yes, there is a domain on GitHub Pages, typically under the github.io domain, like kinetekenergy.github.io/studentCSA/.
    • Is the URL for your GitHub Pages different from your neighbors’ URLs? Did you change the URL? If so, when?
      • Yes, the URL for your GitHub Pages is different from your neighbors’ URLs because it’s based on your GitHub username and repository name. You can change the URL by configuring a custom domain in the repository settings. This is usually done when you want a personalized or professional domain name, and the change occurs when you set up the custom domain.

Tools Verification Hacks

Objective: Verify that the tools installed are working correctly, and each student can demonstrate an understanding of basic usage.

Verify Installation

It is important that you resolve tool issues immediately. These are the foundations for 24 weeks for CSSE and 36 weeks for CSP and CSA.

  • Check Tool Functionality: Ensure the tools installed in Tools Setup are working correctly using the provided scripts and outputs.
  • Run Basic Commands: Execute basic commands for each tool from the terminal (e.g., git --version, ruby --version, python --version, etc.).
  • Document Issues and Resolutions: Record any issues encountered and the strategies and verifications you performed to resolve them.

Prepare for Pair Showcase (Tool Verification)

Develop a student view to verify tool installation with the Teacher. You and your pair should share the same validation procedures, but each individual needs to show those procedures running on their personal hardware environment.

  • Verification Discussion: Be prepared to discuss outputs from shell scripts during verification.
  • Comment Code Cells: Add comments to code cells to remember and discuss how these verifications work.
  • Live Reviews: Live reviews are subject to Teacher opinion unless you show indisputable command through vocabulary and technical accuracy.

GitHub Usage with VSCode

During the tools and installation process, you are expected to become familiar with VSCode to GitHub operations. By the end of this project, it is expected that you will have a minimum of 5 significant commits.

Perform Basic Operations with GitHub Integration in VSCode

Use GitHub with VSCode frequently. Lots of small, iterative commits are recommended.

  • Commit: Save changes to your local repository.
  • VSCode Sync (Push): Upload your local commits to the remote repository on GitHub.
  • Pull: Download changes from the remote repository to your local repository.

Prepare for Pair Showcase (GitHub)

Prepare a 1-minute summary on GitHub Usage. This should focus on GitLens VSCode extension and an interactive overview of the pair’s history.

  • Show Commits: Display the history of changes made to the repository using GitLens->Commits.
  • Show Contributors: Highlight the individuals who have contributed to the repository using GitLens->Contributors.

Brief Definitions

  • Git: A distributed version control system that allows multiple developers to work on a project simultaneously without overwriting each other’s changes.
  • GitLens: A powerful extension for VSCode that provides insights into Git repositories. It helps visualize code authorship, track changes, and understand the history and evolution of a codebase.

By completing these tasks, you will ensure that your development environment is correctly set up and that you are proficient in using essential tools and GitHub integration.

Tool Play with JavaScript

Objective: Use your tools installation to learn JavaScript, create dynamic web content, and understand that there are many ways to solve the same problem (coding styles).

JavaScript Ideation

Using ideas and hints from the Tool Play lesson, start the ideation process in Jupyter Notebooks to define your future index.md home page.

Ideation in the course starts in Jupyter Notebooks. Follow these steps:

  1. Create an HTML File: Start with an HTML file that includes a container element.
  2. Enhance with CSS: Use CSS to style your HTML elements.
  3. Modify with JavaScript: Use JavaScript to dynamically modify content within the HTML container.

Vocabulary Note: Modifying an HTML container is often referred to as modifying the DOM (Document Object Model). The term “DOM” will be used frequently in the course and is associated with the “document.” prefix used in commands like document.createElement.

Update index.md Home Page

Transition from ideation to designing your own home pages. As you work with your pair, you should learn similar coding styles, but your end product should be unique.

  1. Integrate JavaScript: Incorporate your JavaScript code into your GitHub Pages project.
  2. Verify Display: Ensure that the dynamic content is displayed correctly on both localhost and the deployed server.
  3. Document Challenges: Blog about any challenges faced and how you overcame them.

Prepare a 2-Minute Summary on Your index.md

  1. Demo the Pages: Show the live pages on both localhost and the deployed server.
  2. Show the Code: Walk through the JavaScript code that modifies the DOM.
  3. Jupyter Ideation Process: Explain the ideation process documented in your Jupyter Notebooks.
  4. Coding Style Question: Be prepared to answer the question, “How could you use another coding style to change your loop?” For example, if you used a for loop, explain how you could use forEach or another iteration method.

By completing these “Hacks,” you will gain a deeper understanding of the tools and processes involved in setting up and managing a development environment, verifying tool installations, and applying JavaScript to create dynamic web content.


Prepare a 2-minute summary on your Home Page coding accomplishments.


Computers and Terminals

A brief overview of Terminal and Linux is a step on your way to becoming a Linux expert. When a computer boots up, a kernel (MacOS, Windows, Linux) is started. This kernel is the core of the operating system and manages hardware resources. Above the kernel, various applications run, including the shell and terminal, which allow users to interact with the system using a basic set of commands provided by the kernel.

Typically, casual users interact with the system through a Desktop User Interface (UI) that is started by the computer’s boot-up processes. However, to interact directly with the shell, users can run a “terminal” application through the Desktop UI. Additionally, VS Code provides the ability to activate a “terminal” within its editing environment, making it convenient for developers to execute commands without leaving the code editor.

In this next phase, we will use a Jupyter notebook to perform Linux commands through a terminal. The Jupyter notebook is an application that runs above the kernel, providing an interactive environment for writing and executing code, including shell commands. This setup allows us to seamlessly integrate code execution, data analysis, and documentation in one place, enhancing our productivity and learning experience.

Setup a Personal GitHub Pages Project

You will be making a personal copy of the course repository. Be sure to have a GitHub account!!!

  • Use the Green “Use this Template” button on the portfolio_2025 repository page to set up your personal GitHub Pages repository.
  • Create a new repository.
  • Fill in the dialog and select the Repository Name to be under your GitHub ID ownership.

  • After this is complete, use the Green “Code” button on the newly created repository page to capture your “Project Repo” name.

In the next few code cells, we will run a bash (shell) script to pull a GitHub project.

Shell Script and Variables

We will ultimately run a bash (shell) script to pull a GitHub project. This next script simply sets up the necessary environment variables to tell the script the location of repository from GitHub and where to copy the output.

For now, focus on each line that begins with export. These are shell variables. Each line has a name (after the keyword export) and a value (after the equal sign).

Here is a full description:

  • Creates a temporary file /tmp/variables.sh to store environment variables.
  • Sets the project_dir variable to your home directory with a subdirectory named nighthawk. You can change nighthawk to a different name to test your git clone.
  • Sets the project variable to a subdirectory within project_dir named portfolio_2025. You can change portfolio_2025 to the name of your project.
  • Sets the project_repo variable to the URL of the GitHub repository. Change this to the project you created from the portfolio_2025 template.

By running this script, you will prepare your environment for cloning and working on your GitHub project. This is an essential step in setting up your development environment and ensuring that all dependencies are correctly configured.

%%script bash

# Dependency Variables, set to match your project directories

cat <<EOF > /tmp/variables.sh
export project_dir=$HOME/nighthawk  # change nighthawk to different name to test your git clone
export project=\$project_dir/portfolio_2025  # change portfolio_2025 to name of project from git clone
export project_repo="https://github.com/nighthawkcoders/portfolio_2025.git"  # change to project you created from portfolio_2025 template 
EOF

Describing the Outputs of the Variables

The next script will extract the saved variables and display their values. Here is a description of the commands:

  • The source command loads the variables that we saved in the /tmp/variables.sh file in the previous code cell.
  • The echo commands display the contents of the named variables:
    • project_dir: The directory where your project is located.
    • project: The specific project directory within project_dir.
    • project_repo: The URL of the GitHub repository.

By running this script, you can verify that the environment variables are correctly set in your development environment. If they don’t match up, go back to the previous code cell and make the necessary corrections.

%%script bash

# Extract saved variables
source /tmp/variables.sh

# Output shown title and value variables
echo "Project dir: $project_dir"
echo "Project: $project"
echo "Repo: $project_repo"

Project Setup and Analysis with Bash Scripts

The bash scripts that follow automate what was done in the Tools Installation procedures with regards to cloning a GitHub project. Doing this in a script fashion adds the following benefits:

  • After completing these steps, we will have notes on how to set up and verify a project.
  • By reviewing these commands, you will start to learn the basics of Linux.
  • By setting up these code cells, you will be learning how to develop automated scripts using Shell programming.
  • You will learn that pretty much anything we type on a computer can be automated through the use of variables and a coding language.

    Pull Code

Pull code from GitHub to your machine. This is a bash script, a sequence of commands, that will create a project directory and add the “project” from GitHub to the vscode directory. There is conditional logic to make sure that the clone only happens if it does not (!) exist. Here are some key elements in this code:

  • cd command (change directory), remember this from the terminal session.
  • if statements (conditional statements, called selection statements by College Board), code inside only happens if the condition is met.

Run the script two times and you will see that the output changes. In the second run, the files exist and it impact the flow of the code.

%%script bash

# Extract saved variables
source /tmp/variables.sh

echo "Using conditional statement to create a project directory and project"

cd ~    # start in home directory

# Conditional block to make a project directory
if [ ! -d $project_dir ]
then 
    echo "Directory $project_dir does not exist... making directory $project_dir"
    mkdir -p $project_dir
fi
echo "Directory $project_dir exists." 

# Conditional block to git clone a project from project_repo
if [ ! -d $project ]
then
    echo "Directory $project does not exist... cloning $project_repo"
    cd $project_dir
    git clone $project_repo
    cd ~
fi
echo "Directory $project exists."

Look at Files in GitHub Project

All computers contain files and directories. The clone brought more files from the cloud to your machine. Review the bash shell script, observe the commands that show and interact with files and directories. These were used during setup.

  • ls lists computer files in Unix and Unix-like operating systems.
  • cd offers a way to navigate and change the working directory.
  • pwd prints the working directory.
  • echo is used to display a line of text/string that is passed as an argument.
%%script bash

# Extract saved variables
source /tmp/variables.sh

echo "Navigate to project, then navigate to area wwhere files were cloned"
cd $project
pwd

echo ""
echo "list top level or root of files with project pulled from github"
ls

Look at File List with Hidden and Long Attributes

Most Linux commands have options to enhance behavior. The enhanced listing below shows permission bits, owner of the file, size, and date.

Some useful ls flags:

  • -a: List all files including hidden files.
  • -l: List in long format.
  • -h: Human-readable file sizes.
  • -t: Sort by modification time.
  • -R: Reverse the order of the sort.

ls reference

%%script bash

# Extract saved variables
source /tmp/variables.sh

echo "Navigate to project, then navigate to area wwhere files were cloned"
cd $project
pwd

echo ""
echo "list all files in long format"
ls -al   # all files -a (hidden) in -l long listing
%%script bash

# Extract saved variables
source /tmp/variables.sh

echo "Look for posts"
export posts=$project/_posts  # _posts inside project
cd $posts  # this should exist per fastpages
pwd  # present working directory
ls -lR  # list posts recursively
%%script bash

# Extract saved variables
source /tmp/variables.sh

echo "Look for notebooks"
export notebooks=$project/_notebooks  # _notebooks is inside project
cd $notebooks   # this should exist per fastpages
pwd  # present working directory
ls -lR  # list notebooks recursively
%%script bash

# Extract saved variables
source /tmp/variables.sh

echo "Look for images, print working directory, list files"
cd $project/images  # this should exist per fastpages
pwd
ls -lR

Look inside a Markdown File

“cat” reads data from the file and gives its content as output

%%script bash

# Extract saved variables
source /tmp/variables.sh

echo "Navigate to project, then navigate to area wwhere files were cloned"

cd $project
echo "show the contents of README.md"
echo ""

cat README.md  # show contents of file, in this case markdown
echo ""
echo "end of README.md"

Env, Git, and GitHub

Env(ironment) is used to capture things like the path to the Code or Home directory. Git and GitHub are not only used to exchange code between individuals but are also often used to exchange code through servers, in our case for website deployment. All tools we use have behind-the-scenes relationships with the system they run on (MacOS, Windows, Linux) or a relationship with servers to which they are connected (e.g., GitHub). There is an “env” command in bash. There are environment files and setting files (e.g., .git/config) for Git. They both use a key/value concept.

  • env shows settings for your shell.
  • git clone sets up a directory of files.
  • cd $project allows the user to move inside that directory of files.
  • .git is a hidden directory that is used by Git to establish a relationship between the machine and the Git server on GitHub.
%%script bash

# This command has no dependencies

echo "Show the shell environment variables, key on left of equal value on right"
echo ""

env
%%script bash

# Extract saved variables
source /tmp/variables.sh

cd $project

echo ""
echo "show the secrets of .git config file"
cd .git
ls -l config

echo ""
echo "look at config file"
cat config

Advanced Shell project

This example was requested by a student (Jun Lim, CSA). The request was to make a Jupyter file using bash; I adapted the request to markdown. This type of thought will have great extrapolation to coding and possibilities of using Lists, Arrays, or APIs to build user interfaces. JavaScript is a language where building HTML is very common.

To get more interesting output from the terminal, this will require using something like mdless (https://github.com/ttscoff/mdless). This enables seeing markdown in rendered format.

Output of the example is much nicer in “Jupyter”

This is starting the process of documentation.

%%script bash

# This example has an error in VSCode; it runs best on Jupyter
cd /tmp

file="sample.md"
if [ -f "$file" ]; then
    rm $file
fi

# Create a markdown file using tee and here document (<<EOF)
tee -a $file >/dev/null <<EOF
# Show Generated Markdown
This introductory paragraph and this line and the title above are generated using tee with the standard input (<<) redirection operator.
- This bulleted element is still part of the tee body.
EOF

# Append additional lines to the markdown file using echo and redirection (>>)
echo "- This bulleted element and lines below are generated using echo with standard output (>>) redirection operator." >> $file
echo "- The list definition, as is, is using space to separate lines. Thus the use of commas and hyphens in output." >> $file

# Define an array of actions and their descriptions
actions=("ls,list-directory" "cd,change-directory" "pwd,present-working-directory" "if-then-fi,test-condition" "env,bash-environment-variables" "cat,view-file-contents" "tee,write-to-output" "echo,display-content-of-string" "echo_text_>\$file,write-content-to-file" "echo_text_>>\$file,append-content-to-file")

# Loop through the actions array and append each action to the markdown file
for action in ${actions[@]}; do
  action=${action//-/ }  # Convert dash to space
  action=${action//,/: } # Convert comma to colon
  action=${action//_text_/ \"sample text\" } # Convert _text_ to "sample text", note escape character \ to avoid "" having meaning
  echo "    - ${action//-/ }" >> $file  # Append action to file
done

echo ""
echo "File listing and status"
ls -l $file # List file details
wc $file   # Show word count
mdless $file  # Render markdown from terminal (requires mdless installation)

rm $file  # Clean up temporary file

Display Shell commands help using man

The previous example used a markdown file to store a list of actions and their descriptions. This example uses the man command to generate a markdown file with descriptions of the commands. The markdown file is then displayed using mdless.

In coding, we should try to get data from the content creators instead of creating it on our own. This approach has several benefits:

  • Accuracy: Descriptions from man pages are authoritative and accurate, as they come directly from the documentation provided by the command’s developers.
  • Consistency: Automatically generating descriptions ensures consistency in formatting and terminology.
  • Efficiency: It saves time and effort, especially when dealing with a large number of commands.
  • Up-to-date Information: man pages are regularly updated with the latest information, ensuring that the descriptions are current.
%%script bash

# This example has an error in VSCode; it runs best on Jupyter
cd /tmp

file="sample.md"
if [ -f "$file" ]; then
    rm $file
fi

# Set locale to C to avoid locale-related errors
export LC_ALL=C

# Create a markdown file using tee and here document (<<EOF)
tee -a $file >/dev/null <<EOF
# Show Generated Markdown
This introductory paragraph and this line and the title above are generated using tee with the standard input (<<) redirection operator.
- This bulleted element is still part of the tee body.
EOF

# Append additional lines to the markdown file using echo and redirection (>>)
echo "- This bulleted element and lines below are generated using echo with standard output (>>) redirection operator." >> $file
echo "- The list definition, as is, is using space to separate lines. Thus the use of commas and hyphens in output." >> $file

# Define an array of commands
commands=("ls" "cat" "tail" "pwd" "env" "grep" "awk" "sed" "curl" "wget")

# Loop through the commands array and append each command description to the markdown file
for cmd in ${commands[@]}; do
  description=$(man $cmd | col -b | awk '/^NAME/{getline; print}')
  echo "    - $description" >> $file
done

echo ""
echo "File listing and status"
ls -l $file # List file details
wc $file   # Show word count
mdless $file  # Render markdown from terminal (requires mdless installation)

rm $file  # Clean up temporary file

Script to do it all:

#!/bin/bash

# Dependency Variables, set to match your project directories

# ENVIRONMENT VARIABLES
cat <<EOF > /tmp/variables.sh
export project_dir=$HOME/nighthawk  # change nighthawk to different name to test your git clone
export project=\$project_dir/portfolio_2025  # change portfolio_2025 to name of project from git clone
export project_repo="https://github.com/nighthawkcoders/portfolio_2025.git"  # change to project you created from portfolio_2025 template 
EOF

# Extract saved variables
source /tmp/variables.sh

# DISPLAY ENVIRONMENT VARIABLES
# Output shown title and value variables
echo "Project dir: $project_dir"
echo "Project: $project"
echo "Repo: $project_repo"

# CREATE YOUR PROJECT DIRECTORY
# Extract saved variables
source /tmp/variables.sh

echo "Using conditional statement to create a project directory and project"

cd ~    # start in home directory

# Conditional block to make a project directory
if [ ! -d $project_dir ]
then 
    echo "Directory $project_dir does not exist... making directory $project_dir"
    mkdir -p $project_dir
fi
echo "Directory $project_dir exists." 

# Conditional block to git clone a project from project_repo
if [ ! -d $project ]
then
    echo "Directory $project does not exist... cloning $project_repo"
    cd $project_dir
    git clone $project_repo
    cd ~
fi
echo "Directory $project exists."

# Extract saved variables
source /tmp/variables.sh

echo "Navigate to project, then navigate to area wwhere files were cloned"
cd $project
pwd

echo ""
echo "list top level or root of files with project pulled from github"
ls

# Extract saved variables
source /tmp/variables.sh

echo "Navigate to project, then navigate to area wwhere files were cloned"
cd $project
pwd

echo ""
echo "list all files in long format"
ls -al   # all files -a (hidden) in -l long listing

# Extract saved variables
source /tmp/variables.sh

# SHOW POSTS AND NOTEBOOKS AND IMAGES AND README
echo "Look for posts"
export posts=$project/_posts  # _posts inside project
cd $posts  # this should exist per fastpages
pwd  # present working directory
ls -lR  # list posts recursively

# Extract saved variables
source /tmp/variables.sh

echo "Look for notebooks"
export notebooks=$project/_notebooks  # _notebooks is inside project
cd $notebooks   # this should exist per fastpages
pwd  # present working directory
ls -lR  # list notebooks recursively

# Extract saved variables
source /tmp/variables.sh

echo "Look for images, print working directory, list files"
cd $project/images  # this should exist per fastpages
pwd
ls -lR

# Extract saved variables
source /tmp/variables.sh

echo "Navigate to project, then navigate to area wwhere files were cloned"

cd $project
echo "show the contents of README.md"
echo ""

cat README.md  # show contents of file, in this case markdown
echo ""
echo "end of README.md"

# SECRETS, CONFIG FILES, AND ENV
# This command has no dependencies

echo "Show the shell environment variables, key on left of equal value on right"
echo ""

env

# Extract saved variables
source /tmp/variables.sh

cd $project

echo ""
echo "show the secrets of .git config file"
cd .git
ls -l config

echo ""
echo "look at config file"
cat config


# MAKE A MARKDOWN FILE

# This example has an error in VSCode; it runs best on Jupyter
cd /tmp

file="sample.md"
if [ -f "$file" ]; then
    rm $file
fi

# Create a markdown file using tee and here document (<<EOF)
tee -a $file >/dev/null <<EOF
# Show Generated Markdown
This introductory paragraph and this line and the title above are generated using tee with the standard input (<<) redirection operator.
- This bulleted element is still part of the tee body.
EOF

# Append additional lines to the markdown file using echo and redirection (>>)
echo "- This bulleted element and lines below are generated using echo with standard output (>>) redirection operator." >> $file
echo "- The list definition, as is, is using space to separate lines. Thus the use of commas and hyphens in output." >> $file

# Define an array of actions and their descriptions
actions=("ls,list-directory" "cd,change-directory" "pwd,present-working-directory" "if-then-fi,test-condition" "env,bash-environment-variables" "cat,view-file-contents" "tee,write-to-output" "echo,display-content-of-string" "echo_text_>\$file,write-content-to-file" "echo_text_>>\$file,append-content-to-file")

# Loop through the actions array and append each action to the markdown file
for action in ${actions[@]}; do
  action=${action//-/ }  # Convert dash to space
  action=${action//,/: } # Convert comma to colon
  action=${action//_text_/ \"sample text\" } # Convert _text_ to "sample text", note escape character \ to avoid "" having meaning
  echo "    - ${action//-/ }" >> $file  # Append action to file
done

echo ""
echo "File listing and status"
ls -l $file # List file details
wc $file   # Show word count
mdless $file  # Render markdown from terminal (requires mdless installation)

rm $file  # Clean up temporary 

# SHELL COMMANDS USING MAN

# This example has an error in VSCode; it runs best on Jupyter
cd /tmp

file="sample.md"
if [ -f "$file" ]; then
    rm $file
fi

# Set locale to C to avoid locale-related errors
export LC_ALL=C

# Create a markdown file using tee and here document (<<EOF)
tee -a $file >/dev/null <<EOF
# Show Generated Markdown
This introductory paragraph and this line and the title above are generated using tee with the standard input (<<) redirection operator.
- This bulleted element is still part of the tee body.
EOF

# Append additional lines to the markdown file using echo and redirection (>>)
echo "- This bulleted element and lines below are generated using echo with standard output (>>) redirection operator." >> $file
echo "- The list definition, as is, is using space to separate lines. Thus the use of commas and hyphens in output." >> $file

# Define an array of commands
commands=("ls" "cat" "tail" "pwd" "env" "grep" "awk" "sed" "curl" "wget")

# Loop through the commands array and append each command description to the markdown file
for cmd in ${commands[@]}; do
  description=$(man $cmd | col -b | awk '/^NAME/{getline; print}')
  echo "    - $description" >> $file
done

echo ""
echo "File listing and status"
ls -l $file # List file details
wc $file   # Show word count
mdless $file  # Render markdown from terminal (requires mdless installation)

rm $file  # Clean up temporary file

Script results:

Project dir: /home/administrator/nighthawk
Project: /home/administrator/nighthawk/portfolio_2025
Repo: https://github.com/nighthawkcoders/portfolio_2025.git
Using conditional statement to create a project directory and project
Directory /home/administrator/nighthawk exists.
Directory /home/administrator/nighthawk/portfolio_2025 exists.
Navigate to project, then navigate to area wwhere files were cloned
/home/administrator/nighthawk/portfolio_2025

list top level or root of files with project pulled from github
404.html  assets  _config.yml  _data  design  Gemfile  images  _includes  index.md  kasm_design  _layouts  LICENSE  Makefile  navigation  node_backend	_notebooks  _posts  README4YML.md  README.md  requirements.txt	_sass  scripts
Navigate to project, then navigate to area wwhere files were cloned
/home/administrator/nighthawk/portfolio_2025

list all files in long format
total 140
drwxrwxr-x 18 administrator administrator  4096 Aug 24 17:30 .
drwxrwxr-x  3 administrator administrator  4096 Aug 24 17:30 ..
-rw-rw-r--  1 administrator administrator   436 Aug 24 17:30 404.html
drwxrwxr-x  6 administrator administrator  4096 Aug 24 17:30 assets
-rw-rw-r--  1 administrator administrator   842 Aug 24 17:30 _config.yml
drwxrwxr-x  2 administrator administrator  4096 Aug 24 17:30 _data
drwxrwxr-x  3 administrator administrator  4096 Aug 24 17:30 design
-rw-rw-r--  1 administrator administrator   122 Aug 24 17:30 Gemfile
drwxrwxr-x  8 administrator administrator  4096 Aug 24 17:30 .git
drwxrwxr-x  3 administrator administrator  4096 Aug 24 17:30 .github
-rw-rw-r--  1 administrator administrator   251 Aug 24 17:30 .gitignore
drwxrwxr-x 10 administrator administrator  4096 Aug 24 17:30 images
drwxrwxr-x  4 administrator administrator  4096 Aug 24 17:30 _includes
-rw-rw-r--  1 administrator administrator 11586 Aug 24 17:30 index.md
drwxrwxr-x  4 administrator administrator  4096 Aug 24 17:30 kasm_design
drwxrwxr-x  2 administrator administrator  4096 Aug 24 17:30 _layouts
-rw-rw-r--  1 administrator administrator 11357 Aug 24 17:30 LICENSE
-rw-rw-r--  1 administrator administrator  3551 Aug 24 17:30 Makefile
drwxrwxr-x  4 administrator administrator  4096 Aug 24 17:30 navigation
drwxrwxr-x  2 administrator administrator  4096 Aug 24 17:30 node_backend
drwxrwxr-x  6 administrator administrator  4096 Aug 24 17:30 _notebooks
drwxrwxr-x  3 administrator administrator  4096 Aug 24 17:30 _posts
-rw-rw-r--  1 administrator administrator    79 Aug 24 17:30 README4YML.md
-rw-rw-r--  1 administrator administrator 14185 Aug 24 17:30 README.md
-rw-rw-r--  1 administrator administrator    57 Aug 24 17:30 requirements.txt
drwxrwxr-x  5 administrator administrator  4096 Aug 24 17:30 _sass
drwxrwxr-x  2 administrator administrator  4096 Aug 24 17:30 scripts
drwxrwxr-x  2 administrator administrator  4096 Aug 24 17:30 .vscode
Look for posts
/home/administrator/nighthawk/portfolio_2025/_posts
.:
total 124
-rw-rw-r-- 1 administrator administrator  4326 Aug 24 17:30 2023-08-21-python_flask.md
-rw-rw-r-- 1 administrator administrator 11347 Aug 24 17:30 2023-08-30-agile_methodolgy.md
-rw-rw-r-- 1 administrator administrator  6265 Aug 24 17:30 2023-08-31-javascript_project-binary-calculator.md
-rw-rw-r-- 1 administrator administrator  6712 Aug 24 17:30 2023-08-31-javascript_project-calculator.md
-rw-rw-r-- 1 administrator administrator  5707 Aug 24 17:30 2023-08-31-javascript_project-game-of-life.md
-rw-rw-r-- 1 administrator administrator  3811 Aug 24 17:30 2023-08-31-javascript_project-music-api.md
-rw-rw-r-- 1 administrator administrator 14282 Aug 24 17:30 2023-08-31-javascript_project-snake-game.md
-rw-rw-r-- 1 administrator administrator  3683 Aug 24 17:30 2023-09-12-python-flask-repo.md
-rw-rw-r-- 1 administrator administrator 48002 Aug 24 17:30 2023-10-03-java-types-student-2.ipynb
-rw-rw-r-- 1 administrator administrator  2698 Aug 24 17:30 2024-07-11-GPTchatbot.md
drwxrwxr-x 4 administrator administrator  4096 Aug 24 17:30 Kasm

./Kasm:
total 8
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 Config_Guides
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 MultiServer

./Kasm/Config_Guides:
total 4
-rw-rw-r-- 1 administrator administrator 3167 Aug 24 17:30 2024-07-12-terraform-vs-ansible.md

./Kasm/MultiServer:
total 80
-rw-rw-r-- 1 administrator administrator 55630 Aug 24 17:30 2024-07-12-multiserver-development.md
-rw-rw-r-- 1 administrator administrator 21730 Aug 24 17:30 2024-07-12-multiserver-install.md
Look for notebooks
/home/administrator/nighthawk/portfolio_2025/_notebooks
.:
total 28
-rw-rw-r-- 1 administrator administrator 10436 Aug 24 17:30 2023-08-23-jupyter-notebook-python.ipynb
drwxrwxr-x 8 administrator administrator  4096 Aug 24 17:30 CSA
drwxrwxr-x 4 administrator administrator  4096 Aug 24 17:30 CSP
drwxrwxr-x 8 administrator administrator  4096 Aug 24 17:30 Foundation
drwxrwxr-x 6 administrator administrator  4096 Aug 24 17:30 KASM

./CSA:
total 24
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 chatgpt
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 fullstack_java
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 spring
drwxrwxr-x 3 administrator administrator 4096 Aug 24 17:30 units_1_to_10
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 units_1_to_10_examples
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 units_1_to_10_quiz

./CSA/chatgpt:
total 20
-rw-rw-r-- 1 administrator administrator 6512 Aug 24 17:30 2024-07-16-chatgpt-code.ipynb
-rw-rw-r-- 1 administrator administrator 8992 Aug 24 17:30 2024-07-16-chatgpt-intro.ipynb

./CSA/fullstack_java:
total 44
-rw-rw-r-- 1 administrator administrator  4384 Aug 24 17:30 2024-07-21-Fullstack-intro.ipynb
-rw-rw-r-- 1 administrator administrator 12072 Aug 24 17:30 2024-07-22-Fullstack-backend.ipynb
-rw-rw-r-- 1 administrator administrator  2909 Aug 24 17:30 2024-07-22-Fullstack-design.ipynb
-rw-rw-r-- 1 administrator administrator  8853 Aug 24 17:30 2024-07-22-Fullstack-example.ipynb
-rw-rw-r-- 1 administrator administrator  4621 Aug 24 17:30 2024-07-22-Fullstack-frontend.ipynb

./CSA/spring:
total 16
-rw-rw-r-- 1 administrator administrator 13812 Aug 24 17:30 2023-10-02-java-spring-anatomy.ipynb

./CSA/units_1_to_10:
total 248
-rw-rw-r-- 1 administrator administrator 13973 Aug 24 17:30 2024-06-24-unit_2.ipynb
-rw-rw-r-- 1 administrator administrator 17230 Aug 24 17:30 2024-06-24-unit_3.ipynb
-rw-rw-r-- 1 administrator administrator 11517 Aug 24 17:30 2024-06-24-unit_4.ipynb
-rw-rw-r-- 1 administrator administrator 17743 Aug 24 17:30 2024-06-24-unit_5.ipynb
-rw-rw-r-- 1 administrator administrator 31117 Aug 24 17:30 2024-06-24-unit_6.ipynb
-rw-rw-r-- 1 administrator administrator 42237 Aug 24 17:30 2024-06-29-unit_7.ipynb
-rw-rw-r-- 1 administrator administrator 42641 Aug 24 17:30 2024-07-02-unit_8.ipynb
-rw-rw-r-- 1 administrator administrator 55677 Aug 24 17:30 2024-07-08-unit_9.ipynb
drwxrwxr-x 2 administrator administrator  4096 Aug 24 17:30 unit_01

./CSA/units_1_to_10/unit_01:
total 60
-rw-rw-r-- 1 administrator administrator 14270 Aug 24 17:30 2023-10-03-java-types-student-1.ipynb
-rw-rw-r-- 1 administrator administrator  2172 Aug 24 17:30 2024-06-23-unit_1._intro.ipynb
-rw-rw-r-- 1 administrator administrator  5162 Aug 24 17:30 2024-06-24-unit_1_primatives.ipynb
-rw-rw-r-- 1 administrator administrator  2360 Aug 24 17:30 2024-06-24-unit_1_reference.ipynb
-rw-rw-r-- 1 administrator administrator  8198 Aug 24 17:30 2024-06-24-unit_1_stack_heap.ipynb
-rw-rw-r-- 1 administrator administrator  5932 Aug 24 17:30 2024-07-01-unit_1_examples.ipynb
-rw-rw-r-- 1 administrator administrator  5428 Aug 24 17:30 2024-07-13-unit_1_quiz.ipynb

./CSA/units_1_to_10_examples:
total 20
-rw-rw-r-- 1 administrator administrator 3891 Aug 24 17:30 2024-06-24-unit_2_examples.ipynb
-rw-rw-r-- 1 administrator administrator 3004 Aug 24 17:30 2024-06-24-unit_3_examples.ipynb
-rw-rw-r-- 1 administrator administrator 3954 Aug 24 17:30 2024-06-24-unit_4_examples.ipynb
-rw-rw-r-- 1 administrator administrator 4446 Aug 24 17:30 2024-06-24-unit_5_examples.ipynb

./CSA/units_1_to_10_quiz:
total 48
-rw-rw-r-- 1 administrator administrator 3658 Aug 24 17:30 2024-07-13-unit_2_quiz.ipynb
-rw-rw-r-- 1 administrator administrator 1656 Aug 24 17:30 2024-07-13-unit_3_quiz.ipynb
-rw-rw-r-- 1 administrator administrator 1473 Aug 24 17:30 2024-07-13-unit_4_quiz.ipynb
-rw-rw-r-- 1 administrator administrator 6515 Aug 24 17:30 2024-07-13-unit_5_quiz.ipynb
-rw-rw-r-- 1 administrator administrator 5533 Aug 24 17:30 2024-07-13-unit_6_quiz.ipynb
-rw-rw-r-- 1 administrator administrator 4703 Aug 24 17:30 2024-07-13-unit_7_quiz.ipynb
-rw-rw-r-- 1 administrator administrator 3657 Aug 24 17:30 2024-07-13-unit_8_quiz.ipynb
-rw-rw-r-- 1 administrator administrator 2701 Aug 24 17:30 2024-07-13-unit_9_quiz.ipynb
-rw-rw-r-- 1 administrator administrator 1753 Aug 24 17:30 2024-07-14-unit_10_quiz.ipynb

./CSP:
total 8
drwxrwxr-x 7 administrator administrator 4096 Aug 24 17:30 big-ideas
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 flask

./CSP/big-ideas:
total 20
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 big-idea-1
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 big-idea-2
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 big-idea-3-part-1-fundamentals
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 big-idea-3-part-2-concepts
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 big-idea-3-part-2-reinforce

./CSP/big-ideas/big-idea-1:
total 12
-rw-rw-r-- 1 administrator administrator 8415 Aug 24 17:30 2023-10-04-big-idea-1_python-errors.ipynb

./CSP/big-ideas/big-idea-2:
total 116
-rw-rw-r-- 1 administrator administrator 100550 Aug 24 17:30 2023-10-02-python_data-abstraction-1.ipynb
-rw-rw-r-- 1 administrator administrator  13398 Aug 24 17:30 2023-10-02-python_data-abstraction-2.ipynb

./CSP/big-ideas/big-idea-3-part-1-fundamentals:
total 152
-rw-rw-r-- 1 administrator administrator  4643 Aug 24 17:30 2023-10-04-big-idea-3-fundamentals.ipynb
-rw-rw-r-- 1 administrator administrator 11462 Aug 24 17:30 2023-10-05-big-idea-3-1.ipynb
-rw-rw-r-- 1 administrator administrator 18277 Aug 24 17:30 2023-10-05-big-idea-3-2.ipynb
-rw-rw-r-- 1 administrator administrator 48623 Aug 24 17:30 2023-10-05-big-idea-3-3.ipynb
-rw-rw-r-- 1 administrator administrator  4959 Aug 24 17:30 2023-10-05-big-idea-3-4.ipynb
-rw-rw-r-- 1 administrator administrator  4470 Aug 24 17:30 2023-10-10-big-idea-3-5.ipynb
-rw-rw-r-- 1 administrator administrator  7767 Aug 24 17:30 2023-10-10-big-idea-3-6.ipynb
-rw-rw-r-- 1 administrator administrator  7602 Aug 24 17:30 2023-10-11-big-idea-3-7.ipynb
-rw-rw-r-- 1 administrator administrator 14573 Aug 24 17:30 2023-10-12-big-idea-3-8.ipynb
-rw-rw-r-- 1 administrator administrator 12678 Aug 24 17:30 2023-10-19-big-idea-3-10.ipynb

./CSP/big-ideas/big-idea-3-part-2-concepts:
total 164
-rw-rw-r-- 1 administrator administrator  4297 Aug 24 17:30 2023-10-04-big-idea-3-concepts.ipynb
-rw-rw-r-- 1 administrator administrator 12569 Aug 24 17:30 2023-10-13-big-idea-3-9.ipynb
-rw-rw-r-- 1 administrator administrator  7367 Aug 24 17:30 2023-10-19-big-idea-3-11.ipynb
-rw-rw-r-- 1 administrator administrator 10418 Aug 24 17:30 2023-10-22-big-idea-3-12.ipynb
-rw-rw-r-- 1 administrator administrator  8633 Aug 24 17:30 2023-10-22-big-idea-3-13.ipynb
-rw-rw-r-- 1 administrator administrator 56044 Aug 24 17:30 2023-10-26-big-idea-3-14.ipynb
-rw-rw-r-- 1 administrator administrator  5656 Aug 24 17:30 2023-10-26-big-idea-3-15.ipynb
-rw-rw-r-- 1 administrator administrator  9927 Aug 24 17:30 2023-10-27-big-idea-3-16.ipynb
-rw-rw-r-- 1 administrator administrator 14019 Aug 24 17:30 2023-10-27-big-idea-3-17.ipynb
-rw-rw-r-- 1 administrator administrator 13720 Aug 24 17:30 2023-10-27-big-idea-3-18.ipynb

./CSP/big-ideas/big-idea-3-part-2-reinforce:
total 56
-rw-rw-r-- 1 administrator administrator  9854 Aug 24 17:30 2023-10-28-big-idea-3_Iteration.ipynb
-rw-rw-r-- 1 administrator administrator 13096 Aug 24 17:30 2023-10-28-big-idea-3_python-lists.ipynb
-rw-rw-r-- 1 administrator administrator 14581 Aug 24 17:30 2023-10-29-big-idea-3_algorithms.ipynb
-rw-rw-r-- 1 administrator administrator 10278 Aug 24 17:30 2023-10-30-big-idea-3_developing-procedures.ipynb

./CSP/flask:
total 272
-rw-rw-r-- 1 administrator administrator 22339 Aug 24 17:30 2021-01-25-flask-code-style.ipynb
-rw-rw-r-- 1 administrator administrator  5997 Aug 24 17:30 2024-01-24-flask-intro.ipynb
-rw-rw-r-- 1 administrator administrator  8876 Aug 24 17:30 2024-01-25-flask-anatomy.ipynb
-rw-rw-r-- 1 administrator administrator 89001 Aug 24 17:30 2024-01-25-flask-code-full_stack.ipynb
-rw-rw-r-- 1 administrator administrator 49612 Aug 24 17:30 2024-01-25-flask-code-ideation.ipynb
-rw-rw-r-- 1 administrator administrator 26212 Aug 24 17:30 2024-01-25-flask-code-login-page.ipynb
-rw-rw-r-- 1 administrator administrator 14682 Aug 24 17:30 2024-01-25-flask-code-sign-up.ipynb
-rw-rw-r-- 1 administrator administrator 13216 Aug 24 17:30 2024-01-25-flask-play-in-jupyter.ipynb
-rw-rw-r-- 1 administrator administrator  2248 Aug 24 17:30 2024-01-26-flask-scrum.ipynb
-rw-rw-r-- 1 administrator administrator 22289 Aug 24 17:30 2024-01-27-flask-deploy-aws.ipynb

./Foundation:
total 28
-rw-rw-r-- 1 administrator administrator 3974 Aug 24 17:30 2024-08-21-sprint1_plan.ipynb
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 A-pair_programming
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 B-tools_and_equipment
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 C-github_pages
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 D-sass_basics
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 E-frontend_development
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 F-projects

./Foundation/A-pair_programming:
total 24
-rw-rw-r-- 1 administrator administrator  5433 Aug 24 17:30 2023-08-16-pair_programming.md
-rw-rw-r-- 1 administrator administrator  3918 Aug 24 17:30 2023-08-16-pair_showcase.ipynb
-rw-rw-r-- 1 administrator administrator 11624 Aug 24 17:30 2023-08-17-pair_habits.ipynb

./Foundation/B-tools_and_equipment:
total 108
-rw-rw-r-- 1 administrator administrator  9767 Aug 24 17:30 2023-08-19-devops_accounts.ipynb
-rw-rw-r-- 1 administrator administrator  5931 Aug 24 17:30 2023-08-21-devops_tools-home.ipynb
-rw-rw-r-- 1 administrator administrator 18564 Aug 24 17:30 2023-08-21-devops_tools-setup.ipynb
-rw-rw-r-- 1 administrator administrator 23156 Aug 24 17:30 2023-08-22-devops_tools-verify.ipynb
-rw-rw-r-- 1 administrator administrator 32288 Aug 24 17:30 2023-08-23-devops-githhub_pages-play.ipynb
-rw-rw-r-- 1 administrator administrator  9479 Aug 24 17:30 2023-08-23-devops-hacks.ipynb

./Foundation/C-github_pages:
total 64
-rw-rw-r-- 1 administrator administrator 14718 Aug 24 17:30 2023-08-23-github_pages-intro.ipynb
-rw-rw-r-- 1 administrator administrator 12484 Aug 24 17:30 2023-08-23-github_pages-markdonwn.ipynb
-rw-rw-r-- 1 administrator administrator 10111 Aug 24 17:30 2023-08-24-github_pages-anatomy.ipynb
-rw-rw-r-- 1 administrator administrator  3850 Aug 24 17:30 2023-08-25-github_pages-utterances.ipynb
-rw-rw-r-- 1 administrator administrator 10291 Aug 24 17:30 2023-08-26-github-pages-jekyll.ipynb
-rw-rw-r-- 1 administrator administrator  2149 Aug 24 17:30 2023-08-27-github-pages-hacks.ipynb

./Foundation/D-sass_basics:
total 56
-rw-rw-r-- 1 administrator administrator 11648 Aug 24 17:30 2023-09-01-SASS_basics-intro.ipynb
-rw-rw-r-- 1 administrator administrator 12586 Aug 24 17:30 2023-09-01-SASS-basics-play.ipynb
-rw-rw-r-- 1 administrator administrator 13865 Aug 24 17:30 2023-09-02-SASS_basics-coding.ipynb
-rw-rw-r-- 1 administrator administrator  8415 Aug 24 17:30 2024-07-20-SASS-hacks.ipynb

./Foundation/E-frontend_development:
total 124
-rw-rw-r-- 1 administrator administrator  6951 Aug 24 17:30 2023-08-27-frontend-basics-playground.ipynb
-rw-rw-r-- 1 administrator administrator  7054 Aug 24 17:30 2023-08-28-frontend-basics-html.ipynb
-rw-rw-r-- 1 administrator administrator  7204 Aug 24 17:30 2023-08-28-frontend-basics-js-errors.ipynb
-rw-rw-r-- 1 administrator administrator 16924 Aug 24 17:30 2023-08-29-frontend-basics-of-js.ipynb
-rw-rw-r-- 1 administrator administrator 20154 Aug 24 17:30 2023-08-30-frontend-basics-js-data-types.ipynb
-rw-rw-r-- 1 administrator administrator 12454 Aug 24 17:30 2023-08-30-frontend-basics-js-with-html.ipynb
-rw-rw-r-- 1 administrator administrator 12781 Aug 24 17:30 2023-08-30-frontend-input.ipynb
-rw-rw-r-- 1 administrator administrator 25250 Aug 24 17:30 2023-08-30-frontend-output_objects.ipynb

./Foundation/F-projects:
total 8
-rw-rw-r-- 1 administrator administrator 7079 Aug 24 17:30 2023-08-30-javascript_project-play.ipynb

./KASM:
total 16
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 Config_Guides
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 Database
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 MultiServer
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 Workspaces

./KASM/Config_Guides:
total 28
-rw-rw-r-- 1 administrator administrator 4804 Aug 24 17:30 2024-07-05-docker-cronjob-for-containers.ipynb
-rw-rw-r-- 1 administrator administrator 3646 Aug 24 17:30 2024-07-05-manual-addition-of-docker-images.ipynb
-rw-rw-r-- 1 administrator administrator 1183 Aug 24 17:30 2024-07-12-security-group-configuration.ipynb
-rw-rw-r-- 1 administrator administrator 3222 Aug 24 17:30 2024-07-15-manual-registry-addition.ipynb
-rw-rw-r-- 1 administrator administrator 2088 Aug 24 17:30 2024-07-15-persistent-data.ipynb
-rw-rw-r-- 1 administrator administrator 2292 Aug 24 17:30 2024-07-31-plans-for-big-meet.ipynb

./KASM/Database:
total 44
-rw-rw-r-- 1 administrator administrator 11567 Aug 24 17:30 2024-08-10-rds-documentation.ipynb
-rw-rw-r-- 1 administrator administrator  4665 Aug 24 17:30 2024-08-14-migration.ipynb
-rw-rw-r-- 1 administrator administrator 23557 Aug 24 17:30 2024-08-14-python-api-4-kasm.ipynb

./KASM/MultiServer:
total 28
-rw-rw-r-- 1 administrator administrator 18056 Aug 24 17:30 2024-07-30-autoscale-config.ipynb
-rw-rw-r-- 1 administrator administrator  3663 Aug 24 17:30 2024-08-07-persistent-storage.ipynb
-rw-rw-r-- 1 administrator administrator  3473 Aug 24 17:30 2024-08-14-workspace-registry-admin.ipynb

./KASM/Workspaces:
total 20
-rw-rw-r-- 1 administrator administrator 8672 Aug 24 17:30 2024-08-14-container-building.ipynb
-rw-rw-r-- 1 administrator administrator 1285 Aug 24 17:30 2024-08-14-dockerhub-push.ipynb
-rw-rw-r-- 1 administrator administrator 3038 Aug 24 17:30 2024-08-14-nighthawk-registry.ipynb
Look for images, print working directory, list files
/home/administrator/nighthawk/portfolio_2025/images
.:
total 2120
-rw-rw-r-- 1 administrator administrator 129584 Aug 24 17:30 agile.webp
drwxrwxr-x 2 administrator administrator   4096 Aug 24 17:30 binary
drwxrwxr-x 2 administrator administrator   4096 Aug 24 17:30 course-brag
-rw-rw-r-- 1 administrator administrator 134051 Aug 24 17:30 createusersample.png
-rw-rw-r-- 1 administrator administrator  15406 Aug 24 17:30 favicon.ico
-rw-rw-r-- 1 administrator administrator 177895 Aug 24 17:30 food.png
drwxrwxr-x 2 administrator administrator   4096 Aug 24 17:30 fullstack
-rw-rw-r-- 1 administrator administrator 244133 Aug 24 17:30 homesample.png
-rw-rw-r-- 1 administrator administrator 220573 Aug 24 17:30 information.png
drwxrwxr-x 2 administrator administrator   4096 Aug 24 17:30 jokes
drwxrwxr-x 2 administrator administrator   4096 Aug 24 17:30 jpa-lesson-images
drwxrwxr-x 2 administrator administrator   4096 Aug 24 17:30 kasm
-rw-rw-r-- 1 administrator administrator 155071 Aug 24 17:30 loginesample.png
-rw-rw-r-- 1 administrator administrator  34239 Aug 24 17:30 logo.png
drwxrwxr-x 3 administrator administrator   4096 Aug 24 17:30 notebooks
drwxrwxr-x 7 administrator administrator   4096 Aug 24 17:30 platformer
-rw-rw-r-- 1 administrator administrator 165794 Aug 24 17:30 postmanexample.png
-rw-rw-r-- 1 administrator administrator 207818 Aug 24 17:30 sleep.png
-rw-rw-r-- 1 administrator administrator 203861 Aug 24 17:30 stress.png
-rw-rw-r-- 1 administrator administrator 168467 Aug 24 17:30 tracker1.png
-rw-rw-r-- 1 administrator administrator 244703 Aug 24 17:30 waterfood.png
-rw-rw-r-- 1 administrator administrator  12911 Aug 24 17:30 wireframe.png

./binary:
total 5040
-rw-rw-r-- 1 administrator administrator  37088 Aug 24 17:30 1.png
-rw-rw-r-- 1 administrator administrator  39155 Aug 24 17:30 2.png
-rw-rw-r-- 1 administrator administrator 145986 Aug 24 17:30 andgate.png
-rw-rw-r-- 1 administrator administrator 221394 Aug 24 17:30 ascii_label.png
-rw-rw-r-- 1 administrator administrator 322245 Aug 24 17:30 binary_math_conversion.png
-rw-rw-r-- 1 administrator administrator 298587 Aug 24 17:30 binary_shift.png
-rw-rw-r-- 1 administrator administrator  82759 Aug 24 17:30 b.png
-rw-rw-r-- 1 administrator administrator  19526 Aug 24 17:30 codetable.png
-rw-rw-r-- 1 administrator administrator  82392 Aug 24 17:30 color_block.png
-rw-rw-r-- 1 administrator administrator 457749 Aug 24 17:30 color_code.png
-rw-rw-r-- 1 administrator administrator 301661 Aug 24 17:30 elaboration_of_shift.png
-rw-rw-r-- 1 administrator administrator  30647 Aug 24 17:30 halt.png
-rw-rw-r-- 1 administrator administrator 121894 Aug 24 17:30 integer_math_neg.png
-rw-rw-r-- 1 administrator administrator 125395 Aug 24 17:30 integer_math_pos.png
-rw-rw-r-- 1 administrator administrator 419775 Aug 24 17:30 logic_gate_application.png
-rw-rw-r-- 1 administrator administrator 536361 Aug 24 17:30 logic_gate_lab.png
-rw-rw-r-- 1 administrator administrator 107742 Aug 24 17:30 logic_gates.png
-rw-rw-r-- 1 administrator administrator 888227 Aug 24 17:30 logic_of_shift.png
-rw-rw-r-- 1 administrator administrator  17921 Aug 24 17:30 problems.png
-rw-rw-r-- 1 administrator administrator  38846 Aug 24 17:30 reverse.png
-rw-rw-r-- 1 administrator administrator 373203 Aug 24 17:30 sample_unicode.png
-rw-rw-r-- 1 administrator administrator 145986 Aug 24 17:30 truth.png
-rw-rw-r-- 1 administrator administrator 245559 Aug 24 17:30 twos_complement.png
-rw-rw-r-- 1 administrator administrator  55105 Aug 24 17:30 unsigned_addition.png

./course-brag:
total 2752
-rw-rw-r-- 1 administrator administrator 536162 Aug 24 17:30 ccr.png
-rw-rw-r-- 1 administrator administrator 311888 Aug 24 17:30 csa24.png
-rw-rw-r-- 1 administrator administrator 654211 Aug 24 17:30 csa.png
-rw-rw-r-- 1 administrator administrator 323986 Aug 24 17:30 csp24.png
-rw-rw-r-- 1 administrator administrator 680581 Aug 24 17:30 csp.png
-rw-rw-r-- 1 administrator administrator 270084 Aug 24 17:30 csse.png
-rw-rw-r-- 1 administrator administrator  27531 Aug 24 17:30 qr.png

./fullstack:
total 40
-rw-rw-r-- 1 administrator administrator 15371 Aug 24 17:30 newvars.png
-rw-rw-r-- 1 administrator administrator  8035 Aug 24 17:30 quickSketch.png
-rw-rw-r-- 1 administrator administrator 14073 Aug 24 17:30 variables.png

./jokes:
total 1788
-rw-rw-r-- 1 administrator administrator 1040469 Aug 24 17:30 debug.png
-rw-rw-r-- 1 administrator administrator  245915 Aug 24 17:30 postman.png
-rw-rw-r-- 1 administrator administrator  533869 Aug 24 17:30 run.png

./jpa-lesson-images:
total 740
-rw-rw-r-- 1 administrator administrator  15657 Aug 24 17:30 columnName.jpg
-rw-rw-r-- 1 administrator administrator  48430 Aug 24 17:30 email.jpg
-rw-rw-r-- 1 administrator administrator  83139 Aug 24 17:30 haslastname.jpg
-rw-rw-r-- 1 administrator administrator  85779 Aug 24 17:30 jpa.jpg
-rw-rw-r-- 1 administrator administrator 201269 Aug 24 17:30 largeterminal.jpg
-rw-rw-r-- 1 administrator administrator  62635 Aug 24 17:30 partial.jpg
-rw-rw-r-- 1 administrator administrator  75480 Aug 24 17:30 postman.jpg
-rw-rw-r-- 1 administrator administrator  42227 Aug 24 17:30 search2.jpg
-rw-rw-r-- 1 administrator administrator  27237 Aug 24 17:30 userJpaRepositoryFile.jpg
-rw-rw-r-- 1 administrator administrator  37602 Aug 24 17:30 userTable.jpg
-rw-rw-r-- 1 administrator administrator  56784 Aug 24 17:30 walloftext.jpg

./kasm:
total 136
-rw-rw-r-- 1 administrator administrator 138312 Aug 24 17:30 kasmv2.png

./notebooks:
total 4
drwxrwxr-x 2 administrator administrator 4096 Aug 24 17:30 foundation

./notebooks/foundation:
total 364
-rw-rw-r-- 1 administrator administrator 310743 Aug 24 17:30 create_repo.png
-rw-rw-r-- 1 administrator administrator  29416 Aug 24 17:30 push.jpg
-rw-rw-r-- 1 administrator administrator  17105 Aug 24 17:30 stage.jpg
-rw-rw-r-- 1 administrator administrator   6659 Aug 24 17:30 wsl.jpg

./platformer:
total 144
-rw-rw-r-- 1 administrator administrator   841 Aug 24 17:30  1_lopez.png
-rw-rw-r-- 1 administrator administrator 91596 Aug 24 17:30  background.png
drwxrwxr-x 2 administrator administrator  4096 Aug 24 17:30  backgrounds
-rw-rw-r-- 1 administrator administrator 15406 Aug 24 17:30  favicon.ico
drwxrwxr-x 2 administrator administrator  4096 Aug 24 17:30  obstacles
drwxrwxr-x 2 administrator administrator  4096 Aug 24 17:30  platforms
drwxrwxr-x 2 administrator administrator  4096 Aug 24 17:30  sprites
drwxrwxr-x 2 administrator administrator  4096 Aug 24 17:30  transitions
-rw-rw-r-- 1 administrator administrator  8525 Aug 24 17:30 'Untitled drawing.png'

./platformer/backgrounds:
total 10764
-rw-rw-r-- 1 administrator administrator   23764 Aug 24 17:30  avenidawide3.jpg
-rw-rw-r-- 1 administrator administrator   10759 Aug 24 17:30  bat.png
-rw-rw-r-- 1 administrator administrator  989059 Aug 24 17:30  BossBackground.png
-rw-rw-r-- 1 administrator administrator   71134 Aug 24 17:30  castles.png
-rw-rw-r-- 1 administrator administrator   32795 Aug 24 17:30  clouds.png
-rw-rw-r-- 1 administrator administrator  916487 Aug 24 17:30 'Congratulations!!!.png'
-rw-rw-r-- 1 administrator administrator  180238 Aug 24 17:30  desertbg.png
-rw-rw-r-- 1 administrator administrator   43261 Aug 24 17:30  devil.png
-rw-rw-r-- 1 administrator administrator   61795 Aug 24 17:30  flyingplayers.png
-rw-rw-r-- 1 administrator administrator   47684 Aug 24 17:30  game_over.png
-rw-rw-r-- 1 administrator administrator   33177 Aug 24 17:30  greek.png
-rw-rw-r-- 1 administrator administrator  232046 Aug 24 17:30  hills.png
-rw-rw-r-- 1 administrator administrator  160593 Aug 24 17:30  home.png
-rw-rw-r-- 1 administrator administrator   28317 Aug 24 17:30  icewater.png
-rw-rw-r-- 1 administrator administrator  258834 Aug 24 17:30  miniHogwarts.png
-rw-rw-r-- 1 administrator administrator  150548 Aug 24 17:30  mini.png
-rw-rw-r-- 1 administrator administrator   29894 Aug 24 17:30  moon.jpg
-rw-rw-r-- 1 administrator administrator  194001 Aug 24 17:30  mountains.jpg
-rw-rw-r-- 1 administrator administrator 3804266 Aug 24 17:30  multiplayerbackground.png
-rw-rw-r-- 1 administrator administrator  101005 Aug 24 17:30  narwhal.png
-rw-rw-r-- 1 administrator administrator  663965 Aug 24 17:30  planet.jpg
-rw-rw-r-- 1 administrator administrator  230522 Aug 24 17:30  podium.jpg
-rw-rw-r-- 1 administrator administrator   48819 Aug 24 17:30  quidditch2.jpg
-rw-rw-r-- 1 administrator administrator  328600 Aug 24 17:30  reef.png
-rw-rw-r-- 1 administrator administrator  188425 Aug 24 17:30  school-fish.png
-rw-rw-r-- 1 administrator administrator  863997 Aug 24 17:30  skibidiCompletion.png
-rw-rw-r-- 1 administrator administrator     721 Aug 24 17:30  snowfall.png
-rw-rw-r-- 1 administrator administrator  543088 Aug 24 17:30  springfield.png
-rw-rw-r-- 1 administrator administrator  599642 Aug 24 17:30  water.png
-rw-rw-r-- 1 administrator administrator  118454 Aug 24 17:30  winter.png

./platformer/obstacles:
total 860
-rw-rw-r-- 1 administrator administrator  25477 Aug 24 17:30 blue-tube.png
-rw-rw-r-- 1 administrator administrator  25554 Aug 24 17:30 blue-tube-up.png
-rw-rw-r-- 1 administrator administrator  32653 Aug 24 17:30 cabin.png
-rw-rw-r-- 1 administrator administrator  81268 Aug 24 17:30 Chest.png
-rw-rw-r-- 1 administrator administrator  23107 Aug 24 17:30 coinanimation.png
-rw-rw-r-- 1 administrator administrator  16925 Aug 24 17:30 coin.png
-rw-rw-r-- 1 administrator administrator  43191 Aug 24 17:30 dimonds.png
-rw-rw-r-- 1 administrator administrator  66987 Aug 24 17:30 flag.png
-rw-rw-r-- 1 administrator administrator  24701 Aug 24 17:30 iceberg.png
-rw-rw-r-- 1 administrator administrator   7163 Aug 24 17:30 laser.png
-rw-rw-r-- 1 administrator administrator  11955 Aug 24 17:30 snitch.png
-rw-rw-r-- 1 administrator administrator  22801 Aug 24 17:30 snowflake.png
-rw-rw-r-- 1 administrator administrator  19408 Aug 24 17:30 star.png
-rw-rw-r-- 1 administrator administrator  60071 Aug 24 17:30 toilet.png
-rw-rw-r-- 1 administrator administrator 248218 Aug 24 17:30 tree.png
-rw-rw-r-- 1 administrator administrator  33120 Aug 24 17:30 Trident.png
-rw-rw-r-- 1 administrator administrator  29442 Aug 24 17:30 tube.png
-rw-rw-r-- 1 administrator administrator  21876 Aug 24 17:30 vbucks.png
-rw-rw-r-- 1 administrator administrator  48319 Aug 24 17:30 whompingwillowtree.png

./platformer/platforms:
total 2344
-rw-rw-r-- 1 administrator administrator   75783 Aug 24 17:30 alien.png
-rw-rw-r-- 1 administrator administrator   41211 Aug 24 17:30 brick_block.png
-rw-rw-r-- 1 administrator administrator    2782 Aug 24 17:30 brick_wall.png
-rw-rw-r-- 1 administrator administrator   10690 Aug 24 17:30 bubbles.png
-rw-rw-r-- 1 administrator administrator    8474 Aug 24 17:30 Chocolatefrog.jpg
-rw-rw-r-- 1 administrator administrator    6537 Aug 24 17:30 cobblestone.png
-rw-rw-r-- 1 administrator administrator   26145 Aug 24 17:30 grass.png
-rw-rw-r-- 1 administrator administrator   56810 Aug 24 17:30 ground.png
-rw-rw-r-- 1 administrator administrator   15969 Aug 24 17:30 island.png
-rw-rw-r-- 1 administrator administrator   84023 Aug 24 17:30 lava.jpg
-rw-rw-r-- 1 administrator administrator   23906 Aug 24 17:30 lionpattern.jpg
-rw-rw-r-- 1 administrator administrator  143056 Aug 24 17:30 magic_beam.png
-rw-rw-r-- 1 administrator administrator   66332 Aug 24 17:30 mario_block_spritesheet_v2.png
-rw-rw-r-- 1 administrator administrator   27915 Aug 24 17:30 mushroom.png
-rw-rw-r-- 1 administrator administrator    4921 Aug 24 17:30 narwhalfloor.png
-rw-rw-r-- 1 administrator administrator  115313 Aug 24 17:30 rockslava.png
-rw-rw-r-- 1 administrator administrator     298 Aug 24 17:30 sandblock.png
-rw-rw-r-- 1 administrator administrator   64074 Aug 24 17:30 sand.png
-rw-rw-r-- 1 administrator administrator    8076 Aug 24 17:30 sandstone.png
-rw-rw-r-- 1 administrator administrator   55870 Aug 24 17:30 skibidiBlock.png
-rw-rw-r-- 1 administrator administrator  330989 Aug 24 17:30 snowyfloor.png
-rw-rw-r-- 1 administrator administrator    7447 Aug 24 17:30 snowywood.png
-rw-rw-r-- 1 administrator administrator   39059 Aug 24 17:30 stone.jpg
-rw-rw-r-- 1 administrator administrator 1092399 Aug 24 17:30 turf.png
-rw-rw-r-- 1 administrator administrator   27827 Aug 24 17:30 yellowredpattern.jpg
-rw-rw-r-- 1 administrator administrator   17518 Aug 24 17:30 yellowtowerpattern.jpg

./platformer/sprites:
total 8616
-rw-rw-r-- 1 administrator administrator   38055 Aug 24 17:30 alert.gif
-rw-rw-r-- 1 administrator administrator   51640 Aug 24 17:30 alien.png
-rw-rw-r-- 1 administrator administrator  120450 Aug 24 17:30 boss.png
-rw-rw-r-- 1 administrator administrator    6736 Aug 24 17:30 canelopezspritesheet.png
-rw-rw-r-- 1 administrator administrator    3167 Aug 24 17:30 cerberus.png
-rw-rw-r-- 1 administrator administrator  103701 Aug 24 17:30 dementor2.png
-rw-rw-r-- 1 administrator administrator   49625 Aug 24 17:30 dracomalfoy.png
-rw-rw-r-- 1 administrator administrator   24281 Aug 24 17:30 dragon.png
-rw-rw-r-- 1 administrator administrator  141829 Aug 24 17:30 escaper.png
-rw-rw-r-- 1 administrator administrator  121796 Aug 24 17:30 flying-goomba.png
-rw-rw-r-- 1 administrator administrator  356155 Aug 24 17:30 flying-ufo.png
-rw-rw-r-- 1 administrator administrator  121815 Aug 24 17:30 goomba.png
-rw-rw-r-- 1 administrator administrator   91068 Aug 24 17:30 goombaspritesheet.png
-rw-rw-r-- 1 administrator administrator   14232 Aug 24 17:30 harryanimation2.png
-rw-rw-r-- 1 administrator administrator   15902 Aug 24 17:30 harryanimation3.png
-rw-rw-r-- 1 administrator administrator   15969 Aug 24 17:30 island.png
-rw-rw-r-- 1 administrator administrator  164132 Aug 24 17:30 jellyfish.png
-rw-rw-r-- 1 administrator administrator  162387 Aug 24 17:30 knight.png
-rw-rw-r-- 1 administrator administrator   17116 Aug 24 17:30 lopezanimation.png
-rw-rw-r-- 1 administrator administrator    6609 Aug 24 17:30 lopezspritesheet3.png
-rwxrwxr-x 1 administrator administrator 3851947 Aug 24 17:30 mario.png
-rw-rw-r-- 1 administrator administrator  111425 Aug 24 17:30 monkey.png
-rw-rw-r-- 1 administrator administrator   49605 Aug 24 17:30 narwhal_boss.png
-rw-rw-r-- 1 administrator administrator  181376 Aug 24 17:30 noirio.png
-rw-rw-r-- 1 administrator administrator   59931 Aug 24 17:30 owl.png
-rw-rw-r-- 1 administrator administrator   23940 Aug 24 17:30 penguin.png
-rw-rw-r-- 1 administrator administrator  457104 Aug 24 17:30 skibidiEnemy.png
-rw-rw-r-- 1 administrator administrator  155875 Aug 24 17:30 skibidiTItan.png
-rw-rw-r-- 1 administrator administrator   26141 Aug 24 17:30 snowman.png
-rw-rw-r-- 1 administrator administrator  376506 Aug 24 17:30 white_mario1.png
-rw-rw-r-- 1 administrator administrator 1683899 Aug 24 17:30 white_mario.png
-rw-rw-r-- 1 administrator administrator  152460 Aug 24 17:30 zombie.png

./platformer/transitions:
total 4756
-rw-rw-r-- 1 administrator administrator 750112 Aug 24 17:30 greeceEnd.png
-rw-rw-r-- 1 administrator administrator  20774 Aug 24 17:30 greenscreen.png
-rw-rw-r-- 1 administrator administrator 951532 Aug 24 17:30 hillsEnd.png
-rw-rw-r-- 1 administrator administrator 211655 Aug 24 17:30 hogwartsminiEnd.jpg
-rw-rw-r-- 1 administrator administrator 123315 Aug 24 17:30 IceMinigameEnd.png
-rw-rw-r-- 1 administrator administrator 859809 Aug 24 17:30 miniEnd.png
-rw-rw-r-- 1 administrator administrator 917436 Aug 24 17:30 quidditchEnd.png
-rw-rw-r-- 1 administrator administrator 917788 Aug 24 17:30 waterEnd.png
-rw-rw-r-- 1 administrator administrator  94865 Aug 24 17:30 winterEnd.png
Navigate to project, then navigate to area wwhere files were cloned
show the contents of README.md

# Introduction

Nighthawk Pages is a project designed to support students in their Computer Science and Software Engineering education. It offers a wide range of resources including tech talks, code examples, and educational blogs.

GitHub Pages can be customized by the blogger to support computer science learnings as the student works through the pathway of using Javascript, Python/Flask, Java/Spring.  

## Student Requirements

Del Norte HS students will be required to review their personal GitHub Pages at each midterm and final.  This review will contain a compilation of personal work performed within each significant grading period.

In general, Students and Teachers are expected to use GitHub pages to build lessons, complete classroom hacks, perform work on JavaScript games, and serve as a frontend to full-stack applications.

Exchange of information could be:

1. sharing a file:  `wget "raw-link.ipynb"
2. creating a template from this repository
3. sharing a fork among team members
4. etc.

---

## History

This project is in its 3rd revision (aka 3.0).

The project was initially based on Fastpages. But this project has diverged from those roots into an independent entity.  The decision to separate from Fastpages was influenced by the deprecation of Fastpages by authors.  It is believed by our community that the authors of fastpages turned toward Quatro.  After that change of direction fastpages did not align with the Teacher's goals and student needs. The Nighthawk Pages project has more of a raw development blogging need.

### License

The Apache license has its roots in Fastpages.  Thus, it carries its license forward.  However, most of the code is likely unrecognizable from those roots.

### Key Features

- **Code Examples**: Provides practical coding examples in JavaScript, including a platformer game, and frontend code for user databases using Python and Java backends.
- **Educational Blogs**: Offers instructional content on various topics such as developer tools setup, deployment on AWS, SQL databases, machine learning, and data structures. It utilizes Jupyter Notebooks for interactive lessons and coding challenges.
- **Tools and Integrations**: Features GitHub actions for blog publishing, Utterances for blog commenting, local development support via Makefile and scripts, and styling with the Minima Theme and SASS. It also includes a new integration with GitHub Projects and Issues.

### Contributions

- **Notable Contributions**: Highlights significant contributions to the project, including theme development, search and tagging functionality, GitHub API integration, and the incorporation of GitHub Projects into GitHub pages. Contributors such as Tirth Thakker, Mirza Beg, and Toby Ledder have played crucial roles in these developments.

- **Blog Contributions**:  Often students contribute articles and blogs to this project.  Their names are typically listed in the front matter of their contributing post.

---

## GitHub Pages setup

The absolutes in setup up...

**Activate GitHub Pages Actions**: This step involves enabling GitHub Pages Actions for your project. By doing so, your project will be automatically deployed using GitHub Pages Actions, ensuring that your project is always up to date with the latest changes you push to your repository.

- On the GitHub website for the repository go to the menu: Settings -> Pages ->Build
- Under the Deployment location on the page, select "GitHub Actions".

**Update `_config.yml`**: You need to modify the `_config.yml` file to reflect your repository's name. This configuration is crucial because it ensures that your project's styling is correctly applied, making your deployed site look as intended rather than unstyled or broken.

```text
github_repo: "portfolio_2025" 
baseurl: "/portfolio_2025"
```

**Set Repository Name in Makefile**: Adjust the `REPO_NAME` variable in your Makefile to match your GitHub repository's name. This action facilitates the automatic updating of posts and notebooks on your local development server, improving the development process.

```make
# Configuration, override port with usage: make PORT=4200
PORT ?= 4100
REPO_NAME ?= portfolio_2025
LOG_FILE = /tmp/jekyll$(PORT).log
```

### Tool requirements

All `GitHub Pages` websites are managed on GitHub infrastructure and use GitHub version control.  Each time we change files in GitHub it initiates a GitHub Action, a continuous integration and development toolset, that rebuilds and publishes the site with Jekyll.  

- GitHub uses `Jekyll` to transform your markdown and HTML content into static websites and blogs. [Jekyll](https://jekyllrb.com/).
- A Linux shell is required to work with this project integration with GitHub Pages, GitHub and VSCode.  Ubuntu is the preferred shell, though MacOS shell is supported as well.  There will be some key setup scripts that follow in the README.
- Visual Studio Code is the Nighthawk Pages author's preferred code editor and extensible development environment.  VSCode has a rich ecosystem of developer extensions that ease working with GitHub Pages, GitHub, and many programming languages.  Setting up VSCode and extensions will be elaborated upon in this document.
- An anatomy section in this README will describe GitHub Pages and conventions that are used to organize content and files.  This includes file names, key coding files, metadata tagging of blogs, styling tooling for blogs, etc.

### Development Environment Setup

Comprehensive start. A topic-by-topic guide to getting this project running is published [here](https://nighthawkcoders.github.io/portfolio_2025/devops/tools/home).

Quick start.  A quick start below is a reminder, but is dependent on your knowledge.  Only follow this instruction if you need a refresher.  Always default to the comprehensive start if any problem occurs.

#### Clone Repo

Run these commands to obtain the project, then locate into the project directory with the terminal, install an extensive set of tools, and make.

```bash
git clone <this-repo> # git clone https://github.com/nighthawkcoders/portfolio_2025.git 
cd <repo-dir>/scripts # cd portfolio_2025
```

#### Windows WSL and/or Ubuntu Users

- Execute the script: `./activate_ubuntu.sh`

#### macOS Users

- Execute the script: `./activate_macos.sh`

#### Kasm Cloud Desktop Users

- Execute the script: `./activate.sh`

## Run Server on localhost

To preview the project you will need to "make" the project.

### Bundle install

The very first time you clone run project you will need to run this Ruby command as the final part of your setup.

```bash
bundle install
```

### Start the Server  

This requires running terminal commands `make`, `make stop`, `make clean`, or `make convert` to manage the running server.  Logging of details will appear in the terminal.   A `Makefile` has been created in the project to support commands and start processes.

Start the server, this is the best choice for initial and iterative development.  Note. after the initial `make`, you should see files automatically refresh in the terminal on VSCode save.

  ```bash
  make
  ```

### Load web application into the Browser

Start the preview server in the terminal,
The terminal output from `make` shows the server address. "Cmd" or "Ctl" click the http location to open the preview server in a browser. Here is an example Server address message, click on the Server address to load:...

  ```text
  http://0.0.0.0:4100/portfolio_2025/
  ```

### Regeneration of web application

Save on ".ipynb" or ".md" file activiates "regeneration". An example terminal message is below.  Refresh the browser to see updates after the message displays.

  ```text
  Regenerating: 1 file(s) changed at 2023-07-31 06:54:32
      _notebooks/2024-01-04-cockpit-setup.ipynb
  ```

### Other "make" commands

Terminal messages are generated from background processes.  At any time, click return or enter in a terminal window to obtain a prompt.  Once you have the prompt you can use the terminal as needed for other tasks.  Always return to the root of project `cd ~/vscode/portfolio_2025` for all "make" actions.

#### Stop the preview server

Stopping the server ends the web server applications running process.  However, it leaves constructed files in the project in a ready state for the next time you run `make`.

  ```bash
  make stop
  ```

### Clean the local web application environment

This command will top the server and "clean" all previously constructed files (ie .ipynb -> .md). This is the best choice when renaming files has created duplicates that are visible when previewing work.

  ```bash
  make clean
  ```

### Observe build errors

Test Jupyter Notebook conversions (ie .ipynb -> .md), this is the best choice to see if an IPYNB conversion error is occurring.

  ```bash
  make convert
  ```

---

## Development Support

### File Names in "_posts", "_notebooks"

There are two primary directories for creating blogs.  The "_posts" directory is for authoring in markdown only.  The "_notebooks" allows for markdown, pythons, javascript and more.

To name a file, use the following structure (If dates are in the future, review your config.yml setting if you want them to be viewed).  Review these naming conventions.

- For markdown files in _posts:
  - year-month-day-fileName.md
    - GOOD EXAMPLE: 2021-08-02-First-Day.md
    - BAD EXAMPLE: 2021-8-2-first-day.md
    - BAD EXAMPLE: first-day.md
    - BAD EXAMPLE: 2069-12-31-First-Day.md

- For Jupyter notebooks in _notebooks:
  - year-month-day-fileName.ipynb
    - GOOD EXAMPLE: 2021-08-02-First-Day.ipynb
    - BAD EXAMPLE: 2021-8-2-first-day.ipynb
    - BAD EXAMPLE: first-day.ipynb
    - BAD EXAMPLE: 2069-12-31-First-Day.ipynb

### Tags

Tags are used to organize pages by their tag the way to add tags is to add the following to your front matter such as the example seen here `categories: [Tools]` Each item in the same category will be lumped together to be seen easily on the search page.

### Search

All pages can be searched for using the built-in search bar. This search bar will search for any word in the title of a page or in the page itself. This allows for easily finding pages and information that you are looking for. However, sometimes this may not be desirable so to hide a page from the search you need to add `search_exclude: true` to the front matter of the page. This will hide the page from appearing when the viewer uses search.

### Navigation Bar

To add pages to the top navigation bar use _config.yml to order and determine which menus you want and how to order them.  Review the_config.yml in this project for an example.

### Blog Page

There is a blog page that has options for images and a description of the page. This page can help the viewer understand what the page is about and what they can expect to find on the page. The way to add images to a page is to have the following front matter `image: /images/file.jpg` and then the name of the image that you want to use. The image must be in the `images` folder. Furthermore, if you would like the file to not show up on the blog page `hide: true` can be added to the front matter.

### SASS support

NIGHTHAWK Pages support a variety of different themes that are each overlaid on top of minima. To use each theme, go to the "_sass/minima/custom-styles.scss" file and simply comment or uncomment the theme you want to use.

To learn about the minima themes search for "GitHub Pages minima" and review the README.

To find a new theme search for "Github Pages Themes".

### Includes

- Nighthawk Pages uses liquid syntax to import many common page elements that are present throughout the repository. These common elements are imported from the _includes directory. If you want to add one of these common elements, use liquid syntax to import the desired element to your file. Here’s an example of the liquid syntax used to import: `{%- include post_list.html -%}` Note that the liquid syntax is surrounded by curly braces and percent signs. This can be used anywhere in the repository.

### Layouts

- To use or create a custom page layout, make an HTML page inside the _layouts directory, and when you want to use that layout in a file, use the following front matter `layout: [your layout here]`.  All layouts will be written in liquid to define the structure of the page.

### Metadata

Metadata, also known as "front matter", is a set of key-value pairs that can provide additional information to GitHub Pages about .md and .ipynb files. This can and probably will be used in other file types (ie doc, pdf) if we add them to the system.

In the front matter, you can also define things like a title and description for the page.  Additional front matter is defined to place content on the "Computer Science Lab Notebook" page.  The `courses:` key will place data on a specific page with the nested `week:` placing data on a specific row on the page.  The `type:` key in "front matter" will place the blog under the plans, hacks(ToDo), and tangibles columns.

- In our files, the front matter is defined at the top of the page or the first markdown cell.

  - First, open one of the .md or .ipynb files already included in either your _posts|_notebooks folder.

  - In the .md file, you should notice something similar to this at the top of the page. To see this in your .ipynb files you will need to double-click the markdown cell at the top of the file.

  ```yaml
  ---
  toc: true
  comments: true
  layout: post
  title: Jupyter Python Sample
  description: Example Blog!!!  This shows code and notes from hacks.
  type: ccc
  courses: { csa: {week: 5} }
  ---
  ```

- The front matter will always have '---' at the top and bottom to distinguish it and each key-value pair will be separated by a ':'.

- Here we can modify things like the title and description.

- The type value will tell us which column this is going to appear under the time box supported pages.  The "ccc" stands for Code, Code, Code.

- The courses will tell us which menu item it will be under, in this case, the `csa` menu, and the `week` tells it what row (week) it will appear under that menu.

end of README.md
Show the shell environment variables, key on left of equal value on right

SHELL=/bin/bash
SESSION_MANAGER=local/MirageMiniLinux:@/tmp/.ICE-unix/5699,unix/MirageMiniLinux:/tmp/.ICE-unix/5699
QT_ACCESSIBILITY=1
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
SSH_AGENT_LAUNCHER=gnome-keyring
XDG_MENU_PREFIX=gnome-
project=/home/administrator/nighthawk/portfolio_2025
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
CONDA_EXE=/home/administrator/Aashray/Apps/Anaconda/anaconda3/bin/conda
_CE_M=
GNOME_SHELL_SESSION_MODE=ubuntu
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
XMODIFIERS=@im=ibus
DESKTOP_SESSION=ubuntu
GTK_MODULES=gail:atk-bridge
PWD=/home/administrator/nighthawk/portfolio_2025
XDG_SESSION_DESKTOP=ubuntu
LOGNAME=administrator
XDG_SESSION_TYPE=wayland
SYSTEMD_EXEC_PID=5728
XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.YGVRS2
project_dir=/home/administrator/nighthawk
HOME=/home/administrator
USERNAME=administrator
IM_CONFIG_PHASE=1
LANG=en_US.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
XDG_CURRENT_DESKTOP=ubuntu:GNOME
VTE_VERSION=6800
WAYLAND_DISPLAY=wayland-0
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/9895df60_4b82_4886_97ff_d268643e496f
posts=/home/administrator/nighthawk/portfolio_2025/_posts
GNOME_SETUP_DISPLAY=:1
GEM_HOME=/home/administrator/gems
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_SESSION_CLASS=user
TERM=xterm-256color
_CE_CONDA=
LESSOPEN=| /usr/bin/lesspipe %s
USER=administrator
notebooks=/home/administrator/nighthawk/portfolio_2025/_notebooks
GNOME_TERMINAL_SERVICE=:1.956
CONDA_SHLVL=0
DISPLAY=:0
SHLVL=2
QT_IM_MODULE=ibus
project_repo=https://github.com/nighthawkcoders/portfolio_2025.git
CONDA_PYTHON_EXE=/home/administrator/Aashray/Apps/Anaconda/anaconda3/bin/python
XDG_RUNTIME_DIR=/run/user/1000
XDG_DATA_DIRS=/usr/share/ubuntu:/home/administrator/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/
PATH=/home/administrator/gems/bin:/home/administrator/Aashray/Apps/Anaconda/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
GDMSESSION=ubuntu
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
OLDPWD=/home/administrator/nighthawk/portfolio_2025/images
_=/usr/bin/env

show the secrets of .git config file
-rw-rw-r-- 1 administrator administrator 274 Aug 24 17:30 config

look at config file
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = https://github.com/nighthawkcoders/portfolio_2025.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main

File listing and status
-rw-rw-r-- 1 administrator administrator 808 Aug 24 17:32 sample.md
 15 132 808 sample.md
Config file saved to /home/administrator/.config/mdless/config.yml


Show Generated Markdown ===================================================================================================================================================================================================================

This introductory paragraph and this line and the title above are generated using tee with the standard input (<<) redirection operator.

 * This bulleted element is still part of the tee body.
 * This bulleted element and lines below are generated using echo with standard output (>>) redirection operator.
 * The list definition, as is, is using space to separate lines. Thus the use of commas and hyphens in output.
   * ls: list directory
   * cd: change directory
   * pwd: present working directory
   * if then fi: test condition
   * env: bash environment variables
   * cat: view file contents
   * tee: write to output
   * echo: display content of string
   * echo "sample text" >$file: write content to file
   * echo "sample text" >>$file: append content to file


troff: <standard input>:2375: warning: can't find special character 'vs'
troff: <standard input>:2375: warning: can't find special character ''c'

File listing and status
-rw-rw-r-- 1 administrator administrator 1019 Aug 24 17:32 sample.md
  15  160 1019 sample.md


Show Generated Markdown ===================================================================================================================================================================================================================

This introductory paragraph and this line and the title above are generated using tee with the standard input (<<) redirection operator.

 * This bulleted element is still part of the tee body.
 * This bulleted element and lines below are generated using echo with standard output (>>) redirection operator.
 * The list definition, as is, is using space to separate lines. Thus the use of commas and hyphens in output.
   * ls - list directory contents
   * cat - concatenate files and print on the standard output
   * tail - output the last part of files
   * pwd - print name of current/working directory
   * env - run a program in a modified environment
   * grep, egrep, fgrep, rgrep - print lines that match patterns
   * gawk - pattern scanning and processing language
   * sed - stream editor for filtering and transforming text
   * curl - transfer a URL
   * Wget - The non-interactive network downloader.

Debug info

1607  code verify.sh 
1608  chmod +x verify.sh 
1609  ls
1610  cat verify.sh 
1611  clear && ./verify.sh 
1612  mdless
1613  sudo apt install mdless
1614  gem install mdless
1615  sudo apt install ruby-rubygems
1616  gem install mdless
1617  sudo apt install ruby-dev
1618  gem install mdless
1619  clear && ./verify.sh 
1620  clear
1621  ls
1622  history

Automation for Package Installation

#!/bin/bash

# /home/administrator/Aashray/Coding

# UPDATES, UPGRADES, PACKAGE INSTALLATION/REMOVAL
echo "updating"
sudo apt update -y

echo "upgrading"
sudo apt upgrade -y

echo "installing minetest"
sudo apt install minetest -y

echo "searching for minetest"
apt search minetest

echo "removing minetest"
sudo apt remove minetest* -y
sudo apt purge minetest* -y

echo "installed packages:"
apt list --installed

# DEVELOPER TOOL INSTALLATION BY CLONING PORTFOLIO
echo "installing developer tools"
cd
mkdir nighthawk 
cd nighthawk 
git clone https://github.com/nighthawkcoders/portfolio_2025.git


# THE TOOL INSTALLATION
cd
cd nighthawk/portfolio_2025/scripts

echo "making conda environment"
conda create portfolioEnv
conda activate portfolioEnv
conda install pip

# Setup CompSci / GitHub Pages Tool Requirements
GITHUB_LOCATION=${1:-$(pwd)}
# Setup CompSci / GitHub Pages Tool Requirements
$GITHUB_LOCATION/setup_ubuntu.sh
# Show instructions
head -36 $GITHUB_LOCATION/activate_ubuntu.sh

# CHECK THE VERIONS
echo "version checks"
# Show the active Ruby version, MacOS is 3.1.4
ruby -v

# Show active Python version, it needs to be 3.9 or better
python --version

# Show Jupyter packages, nbconvert needs to be in the list
jupyter --version
# Show Kernels, python3 needs to be in list
jupyter kernelspec list # does not work on Cloud Ubuntu

# GITHUB VARIABLES
echo "github variables and open a project"
git config --global user.email transyt8@gmail.com
git config --global user.name KinetekEnergy

# EXIT ENV
conda deactivate
conda deactivate

# CLONE STUDENT, NEW ENV
cd
cd nighthawk 
git clone https://github.com/nighthawkcoders/student_2025.git

cd student_2025

conda create studentEnv
conda activate studentEnv
conda install pip

pip install -r requirements.txt
bundle install

code .