CSA Blog
Ian Wu
Tools and Equipment
Development Tools Intro
The essentials of development begin by understanding the need for tools and equipment. The Tools and Equipment topic highlights the core components you’ll need for a smooth entry into coding, collaboration, and project creation.
A computer, GitHub account, and a code editor are the starting points for rapid entry into coding. Adding frameworks for databases and Jupyter Notebooks bridges a computer into fields like IT, data science, and all the emerging technologies centered on AI.
Essentials of Development Tools
Understanding and utilizing the right development tools is crucial for a successful coding journey. This section highlights the core components and additional tools that will enhance your learning experience and collaboration.
- Laptop Requirement: Ensure you have a laptop with development tools installed. MacOS and Windows are preferred. Chromebooks are supported by using a KASM cloud workspace.
- Version Control: GitHub will store your coding projects and serve as a collaboration hub with others.
- Code Editor: This course will use Visual Studio Code for its extensive support for programming languages and helpful coding features.
- Interactive Coding: In this course, coding will be interactive and instantaneous. Visual Studio Code, with support for Jupyter Notebooks and GitHub Pages, is ideal for coding, data analysis, capturing notes, and creating documentation.
- Web Hosting: Throughout this course, students and teachers will publish their projects and notes using GitHub pages. Students will showcase their projects and chronicle their development journey.
- Application Containerization: Using tools like GitHub Pages, Docker, and AWS, students will learn to create, deploy, and run applications on the Internet.
- Communication and Collaboration: Stay updated and connected with course announcements and discussions using Slack. The DM, group messages, and channel communication options allow students to stay informed and collaborate effectively.
By mastering these tools, you’ll be well-equipped to tackle various projects and collaborate efficiently with your peers. Future topics will delve deeper into advanced tools and techniques to further enhance your development skills.
Tool and Setup Goals
By the end of this unit, you should have installed and become familiar with the following tools and concepts:
- GitHub Portal: Create an account on GitHub. It will be used to store, plan, track, and publish your coding projects.
- MacOS Tools: Use the Terminal with the Homebrew
brew
command for installing developer tools on MacOS. - Windows Tools: Use the Terminal with the
wsl
command to set up a Linux shell. Use theapt
command within that shell for installing developer tools on Ubuntu. - KASM Cloud Tools: Become familiar with the Linux shell. Use the
apt
command to review installed developer tools on Ubuntu. - Visual Studio Code and Marketplace: Get comfortable with the Visual Studio Code editor and explore marketplace extensions to enhance your coding experience.
- JavaScript, Python, Java: Learn the Development Life Cycle and get introduced to Jupyter Notebooks.
- Python Packages: Learn to use the
pip
command in the Terminal to add Python libraries to your projects. Libraries are pre-written code shared by others. - Java Packages: Understand how to use the
pom.xml
configuration file to add third-party libraries to your Java projects.
Engagement and Participation Goals
- Active Participation: Bringing your laptop daily is crucial. Lack of access to necessary tools equates to an absence and will require makeup.
- Understanding Tools: Engage with tools daily. Discuss what you learn as you use your tools with your pair coder, then share newly learned elements with others. Familiarity and sharing will breed understanding and efficiency in your individual and team projects.
- Community and Support: Be a daily communicator at your table and in Slack. Start the communication habit now. Information sharing needs to be constant and timely.
- Team and Project Communication: Start researching tenets of Agile/Scrum methodologies. Use the GitHub Issue and GitHub Project tools. All students will qualify for the right to be on a project team based on fundamental tool knowledge, communication habits, and supporting assessments and analytics.
Devops_accounts_ipynb_2_.md:zone
Accounts
Personal Identifiable Information (PII)
When creating accounts for this course, it’s important to understand what personal identifiable information (PII) is and how and what to protect. PII includes any information that can be used to identify you.
In this course, in some cases we will ask you share or build the value PII. We hope to do it in a good way.
Why PII Matters
Websites like LinkedIn
are places where we want to showcase our accomplishments. We intend to advertise PII.
As individuals and a society, sometimes we are willing spread our PII through sites like TikTok, Reddit, X, Instagram or Facebook. This often provides satisfaction, some refer to it as the dopamine effect. Sometimes we are proud of what we advertise, sometime us or others wish they could retract the information shared.
In our society, all the accounts mentioned above become part of our PII.
Types of PII
- Public Information: These are details that are generally known and shared:
- Name
- Email (consider using a secondary email)
- Picture
- High School and College attended
- Properties you own
- State and City of residence
- Previous residences
- Credit Reports
- Home router location
- Sensitive Information: Be more cautious with these details:
- Full birth date
- Place of Birth
- Street Address
- Phone Number
- Maiden names of Mother or Grandmother
- Driver’s License Number
- Highly Confidential Information: Keep these absolutely secret:
- Internet Access Credentials
- Google key store
- Two-Factor Authentication sources
- Social Security Number
Techniques to Increase Security
- Multi-Factor Authentication (MFA): Use systems that require a code sent to your phone or email.
- Biometrics: Secure your devices with fingerprints or facial recognition.
- Asymmetric Cryptography: Understand that public-key cryptography uses a pair of keys (one public, one private) to encrypt and decrypt messages. This is used in SSL for secure websites (aka https://).
- Strong Passwords: Use complex and unique passwords for different accounts. Consider using a password manager to keep track of them.
- Regular Software Updates: Keep your operating system, applications, and antivirus software up to date to protect against the latest threats.
- Secure Home Router: Create a strong password for your home router to ensure it is not easily compromised from the internet.
- Secure Wi-Fi: Use strong passwords for your home Wi-Fi network to ensure it is not easily accessed by others in proximity (e.g., the stree). Consider using a VPN when accessing Wi-Fi in public places (e.g., coffee shops).
- Data Encryption: Encrypt sensitive data on your devices and backups to protect it from unauthorized access.
Be Aware of Internet Threats
- Viruses and Malware: These compromise security and are often spread through email attachments.
- Phishing: Be cautious of attempts to get your information through deceptive emails or websites.
- Social Engineering: Be aware of tactics used to manipulate you into divulging confidential information.
- Post-Incident Actions: If compromised, review and secure all vulnerabilities immediately. Revise and update your PII plan to prevent future incidents.
By understanding and protecting your PII, you can safely navigate the digital world and keep sensitive and highly confidentail personal information secure.
Nighthawk Coders Accounts
In this class, we will advise you to create several accounts. Additionally, we will request that you publish a public-facing name and email on some of these accounts.
Email Accounts
You will be using and sharing email accounts with the teacher and fellow students.
A strategy I employ is maintaining different email accounts according to the expected type or volume of information (junk email, common email, work/school email, important email). This is not about security, but it helps set an expectation for the “purpose,” “value,” or “importance” of information aggregated to that endpoint.
GitHub Account
We want you to create a GitHub account. You will need to establish a GitHub user ID, username, and email. This can include one or more email accounts. We will ask that you make a name and email public. This account will be your social media account as a coder.
We suggest that you use a “junk” or “common” email account for this platform. We recommend that you don’t use your school email.
The email you make public should be in the same category as what you would share on more professional social media accounts, i.e., in the “common” or “junk” category.
GitHub Pages
We will ask you to publish a Student Portfolio using GitHub Pages. This will be a public website and will be indexed by Google and Google Analytics.
Slack Account
We will ask you to create an account on Slack, which will require PII. We suggest that you use a “junk” or “common” email account for this platform. We recommend that you don’t use your school email.
PII in this category should be restricted to the teacher and fellow students. This includes students from the past, as we have allowed this to be open to those who were formerly enrolled. There are different Slack workspaces for CSSE, CSP, and CSA.
Portfolio 2025 Account
We will ask you to create a user account based on your GitHub user ID. This will be used to build course lists, provide compute services (e.g., AWS, KASM), and aggregate analytics for the teacher.
PII in this category should be restricted to the teacher and fellow students. This includes students from the past, as we have allowed this to be open to those who were formerly enrolled.
PII Strategy on Account Creation
It is in the teacher’s interest that you establish and continually refine your PII (Personal Identifiable Information) strategy. It is likely that you are already active in sharing common PII, considering for yourself what is OK to share. As you progress in the digital world, you will likely need to adapt.
Key Points to Consider:
- Categorize Information:
- Public Information: Information you are comfortable sharing publicly, such as your name and general interests.
- Sensitive Information: Information that should be shared cautiously, such as your full birth date and phone number.
- Highly Confidential Information: Information that should be kept strictly private, such as your social security number and internet access credentials.
- Use Different Email Accounts:
- Maintain different email accounts for different purposes (e.g., junk email, common email, work/school email, important email). This helps manage the type and volume of information you receive and sets expectations for the importance of the information.
- Be Prepared for Security Incidents:
- Anticipate that you may be hacked and will need to secure any vulnerabilities. Regularly update your passwords and use multi-factor authentication where possible.
- Adapt and Evolve:
- As you gain more experience and your digital footprint grows, continually reassess and adapt your PII strategy to ensure it remains effective.
Parting Advice:
As you create and manage your accounts, always be mindful of the information you are sharing. Protecting your PII is an ongoing process that requires vigilance and adaptability. By categorizing your information, using different email accounts, and preparing for potential security incidents, you can better safeguard your personal information.
Remember, the digital world is constantly evolving, and so should your approach to managing your PII. Stay informed about the latest security practices and be proactive in protecting your digital identity. Your future self will thank you for the precautions you take today.