Page cover image

Carisa's Dev Journey Notes

A collection of notes I have taken

Table of Contents

Document Key

Real World Projects

Project 1: Large-Dataset-Generation

Breakdown of Project 1

Project 2: Data-Analysis-and-Interpretation

Breakdown of Project 2

Programming Languages

Programming language: Bun

Programming language: LangChain

Programming language: NumPy

Programming language: Prometheus

Programming language: PyTorch

Programming language: Sentry

Programming language: Svelte

Programming language: SvelteKit

Programming language: Threlte

Programming language: Whisper

Real World Guidelines

Table of Contents Key

Table of Contents

Breakdown Table of Contents

Wiki Home Page Key

Wiki Home Page

Breakdown Wiki Home Page

Personal Project Key

Personal Project Guidelines

Project Initialization

Code Management

Testing and Debugging

Code Review and Refactoring

Security and Best Practices

Documentation

Project Completion

Step-by-step Personal Project Guidelines

Step 1: Project Initialization

Step 2: Development 26

Step 3: Testing and Debugging

Step 4: Security and Best Practices

Step 5: Documentation

Step 6: Project Completion

Document Key

Highlight Colors

  • Pink: Real World Projects

  • Light Purple: Programming Languages

  • Light Blue: Real World Guidelines

  • Light Yellow: Title (Main Topic)

  • Teal: Subtitle (Tailored to Topic)

  • Red: Date Started

  • Gray: Date Finished

Real World Projects

Project 1: Large-Dataset-Generation

Project Description: Generates large dataset from News API

Programming Languages: JavaScript, Node.js, and Axios

Programming Tools: News API, Visual Studio Code, Git, and GitHub

Start Date: August 4, 2024

End Date: August 6, 2024

Breakdown of Project 1

Strengths:

  • Clear documentation: README well structured, good explanation of project’s purpose, setup, and usage

  • Specific use: Project has a specific use (generating large dataset from News API)

  • Technologies Used: Project uses popular and widely used technologies (Node.js, JavaScript, and Axios)

Weaknesses:

  • Limited customization: Project is only designed for a specific case (fetching articles about Elon Musk). Adjust to adapt to other use cases.

  • Dependence on News API: Project relies heavily on the News API which creates limitations (rate limit, data quality, possible change to API endpoint)

  • Data storage: Project stores data in text file, not suitable for large-scale data storage/analysis

Potential for real-world/company use:

  • Media monitoring: Companies can use to monitor news articles about their brand, competitors, or industry trends

  • Market research: Researchers can use to gather data on market trends, customer opinions, or product reviews

  • Data analysis: Data analyst can use as starting point for more complex analysis tasks (sentiment, topic modeling)

Improvements for real-world/company use:

  • Add customization options: Allow users to specific their own API (endpoints, query parameters, data storage location)

  • Improve data storage: Consider using more robust data storage location (database, data warehousing)

  • Enhance error handling: Add more robust error handling to make sure project can handle API errors, network issues, etc

Project 2: Data-Analysis-and-Interpretation

Project Description: Data analysis and interpretation project that uses R to analyze and evaluate news article data

Programming Languages: R

Programming Tools: News API, Replit, and GitHub

Start Date: August 4, 2024

End Date: August 8, 2024

Breakdown of Project 2

Strengths:

  • Clear methodology: Project follows clear defined methodology (makes it easy to understand, replicate)

  • Organized code: Code is organized (tasks separated, clear sections)

  • Effective data visuals: Bar plot, effective way to show findings (clear title, labels- easy to understand)

  • Data exploration: Project has data exploration steps (view structure of data frame, checking missing values)

Weaknesses:

  • Limited data validation: Project does not have data validation steps (leads to - errors, inconsistencies in data)

  • Limited data cleaning: Project does not have data cleaning steps (leads to - errors, inconsistencies in data)

  • Limited data transformation: Project does not have data transformation steps (difficult to analyze data)

  • Limited reproducibility: Project does not have any steps to make results more reproducible (setting random seed, robust method generating plot)

Potential for real-world/company use:

  • Analyzing Customer Feedback: Company use project’s methodology analyze (customer feedback, identify trends, and patterns in satisfaction)

  • Monitoring Website Traffic: Analyze website traffic data, identify trends, and patterns of user behavior

  • Analyzing Sales Data: Analyze sales data, identify trends, and patterns in sales performance

Improvements for real-world/company use:

  • Data Validation Steps: Add validation steps, ensure data is in expected format (no errors in data)

  • Data Cleaning Steps: Include data cleaning steps to handle missing values, inconsistent data

  • Methodology: Include advanced data analysis and visualization techniques

  • Results Reproducible: Add steps for results more reproducible

Programming Languages

Programming language: Bun

Programming definition: All-in-one JavaScript runtime and toolkit designed for speed and efficiency

Examples of use:

  • Run JavaScript/TypeScript applications: bun run index.ts

  • Installing packages: bun install react

  • Bundling code: bun build ./src/index.ts --outdir ./dist

  • Run tests: bun test

  • Starting a development server: bun --hot run server.ts

Features:

  • Fast, JavaScript and TypeScript

  • Built-in package manager compatible with npm

  • Bundler for creating optimized production builds

  • Test runner for executing unit and integration tests

  • Hot reloading for quick development iterations

Programming language: LangChain

Programming definition: Framework for developing applications powered by language models

Examples of use:

  • Creating a chatbot (conversational AI using Large Language Models(LLMs))

  • Document analysis: Extract information from large text datasets

  • Question-answering systems: Build systems that can answer queries based on given context

  • Automated content generation: Create tools for writing articles or summarizing text

Features:

  • Integrates with various LLMs (e.g., GPT-3, GPT-4)

  • Tools for prompt engineering and management

  • Offers memory systems for context retention in conversations

  • Enables creation of AI agents that can use external tools

Programming language: NumPy

Programming definition: fundamental package for scientific computing in Python

Examples of use:

  • Data analysis: Perform statistical operations on large datasets

  • Image processing: Manipulate and analyze image data as multi-dimensional arrays

  • Machine learning: Prepare and process data for ML algorithms

  • Financial modeling: Conduct complex calculations on financial data

Features:

  • Efficient multi-dimensional array object

  • Functionality for operating on arrays of different shapes

  • Tools for integrating C/C++ and Fortran code

  • Linear algebra operations, Fourier transform, and random number capabilities

Programming language: Prometheus

Programming definition: Open-source monitoring and alerting toolkit

Examples of use:

  • Server monitoring: Track CPU, memory, and disk usage of servers

  • Application performance monitoring: Measure response times and error rates

  • Container schedule monitoring: Monitor Kubernetes clusters

  • Network monitoring: Track network traffic and connectivity issues

Features:

  • Multidimensional data model with time series data identified by metric name and key/value pairs

  • PromQL, a flexible query language for data analysis

  • No reliance on distributed storage (single server nodes are autonomous)

  • Push gateway for supporting short-lived jobs

  • Service discovery or static configuration for scraping targets

Programming language: PyTorch

Programming definition: Open-source machine learning library (developed by Facebook's AI Research lab)

Examples of use:

  • Deep learning research: Implement and experiment with neural network architectures

  • Computer vision: Develop image classification, object detection, and segmentation models

  • Natural language processing: Create language models, machine translation systems, and chatbots

  • Reinforcement learning: Learn to make decisions in complex environments

Features:

  • Dynamic computational graphs for flexible model building

  • Integration with Python tools

  • GPU acceleration for fast model training

  • Rich ecosystem of tools and libraries for various AI tasks

  • TorchScript for model deployment in production environments

Programming language: Sentry

Programming definition: Error monitoring platform that helps identify, track, and resolve issues in applications

Examples of use:

  • Web application monitoring: Track errors in frontend and backend code

  • Mobile app crash reporting: Identify and diagnose issues in iOS and Android apps

  • Performance monitoring: Analyze application performance and identify bottlenecks

  • Release tracking: Associate errors with specific software releases

Features:

  • Real-time error tracking and reporting

  • Detailed stack traces and error context

  • Integration with development tools and platforms

  • Customizable alerts and notifications

  • Support for multiple programming languages and frameworks

Programming language: Svelte

Programming definition: Modern JavaScript framework for building user interfaces

Examples of use:

  • Single-page applications: Build interactive web applications

  • Component libraries: Create reusable UI components

  • Data visualization: Develop interactive charts and graphs

  • Progressive web apps: Build responsive, offline-capable web applications

Features:

  • Compile-time framework with no virtual DOM

  • Reactive declarations for easy state management

  • Scoped styling to prevent CSS conflicts

  • Built-in animations and transitions

  • Small bundle sizes for faster loading times

Programming language: SvelteKit

Programming definition: Application framework built on top of Svelte for creating full-stack web applications

Examples of use:

  • E-commerce websites: Build online stores

  • Blogs and content management systems: Create dynamic content websites

  • Web applications with authentication: Develop secure multi-user applications

  • Server-side rendered (SSR) applications: Improve initial page load times and SEO

Features:

  • File-based routing for project structure

  • Server-side rendering

  • API route creation for backend functionality

  • Adapter system for easy deployment to various platforms

  • Code splitting for optimized loading times

Programming language: Threlte

Programming definition: Library, 3D graphics capabilities to Svelte applications using Three.js

Examples of use:

  • 3D product visualizations: Create interactive 3D models for e-commerce

  • Data visualizations: Develop 3D charts and graphs

  • Game development: Build browser-based 3D games

  • Virtual tours: Create immersive 3D environments for real estate or museums

Features:

  • Declarative syntax for creating 3D scenes in Svelte

  • Reactive updates to 3D objects based on state changes

  • Integration with Svelte component system

  • Optimized performance for rendering complex 3D scenes

  • Easy animation and interaction implementation

Programming language: Whisper

Programming definition: Automatic speech recognition (ASR) system developed (OpenAI)

Examples of use:

  • Transcription services: Convert audio files or live speech to text

  • Closed captioning: Generate subtitles for videos automatically

  • Voice assistants: Implement speech recognition for voice commands

  • Language learning tools: Create applications for practicing pronunciation

Features:

  • Multilingual support for transcribing and translating many languages

  • Robust performance across various accents and audio qualities

  • Zero-shot learning capabilities for adapting to new tasks

  • Open-source availability for research and development

  • Handle technical language and domain-specific vocabulary

Real World Guidelines

Structured template of table of contents for GitHub Documentation

Table of Contents Key

Highlight Colors

  • Mint: H1

  • Medium Purple: H2

  • Light Red: H3

  • Light Pink: H4

  • Medium Blue: Horizontal Break

Table of Contents

Project Title

Project Description

Table of Contents

  • Project Overview

    • Project Description

    • Project Goals

    • Key Features

  • Getting Started

    • Prerequisites

    • Setup Instructions

    • Installation

  • Features

    • Examples

  • Technical Requirements

    • Hardware Requirements

    • Software Requirements

    • Network Requirements

  • Technical Details

    • Architecture

    • Project Structure

    • Packages (If used)

  • Security (If used)

    • Security Overview

    • Security Best Practices

  • Wiki

    • Wiki Overview

  • Contributing

    • Contributing Guidelines

    • Code of Conduct

  • License and Copyright

    • License

    • Attribution

  • Contact and Support

    • Contact Information

      • About Developer

    • Support Resources

      • FAQs

      • Glossary

      • Documentation

Breakdown Table of Contents

Project Title

Project Description

  • Brief summary 1-2 sentences

***

Table of Contents

***

Project Overview

***

Project Description

  • More detailed explanation of project 2-3 paragraphs

Project Goals

  • List project goals

Key Features

  • Key Features of the project

Getting Started

***

Prerequisites

  • List necessary prerequisites for using project, what you need to get started

Setup Instructions

  • List setup configuration requirements to use project

Installation

  • Step-by-step instructions for installing project

Features

***

  • List project features, include notable functions, integration, or tools

  • (Use this section to highlight project capabilities and benefits)

Examples

  • Include examples or use cases to illustrate project functionality

Technical Requirements

***

  • (Use this section to help readers understand project, technical dependencies, and limitations)

Hardware Requirements

  • List hardware requirements (RAM, CPU, etc)

Software Requirements

  • List software requirements (Visual Studio Code, libraries, etc)

Network Requirements

  • List network requirements (internet connectivity, etc)

Technical Details

***

Architecture

  • Describe project architecture (Visuals- Diagrams, design process)

Project Structure

  • List and describe file structure of project

Packages (If used)

  • List and describe packages used in the project

Security (If used)

***

Security Overview

  • Describe overview of project’s security features and considerations

Security Best Practices

  • List and describe best security practices for using the project

Wiki

***

Wiki Overview

  • Brief overview of wiki and purpose

Contributing

***

Contributing Guidelines

  • Describe guidelines for contributing to the project (how to join the project)

Code of Conduct

  • Describe code of conduct for people who want to join

License and Copyright

***

License

  • Specify project’s license and any relevant copyright information

Attribution

  • Explain any credit or acknowledgments (third-parties libraries, frameworks, etc) used in the project. Explain any sources or inspirations (research, code, borrowed or adapted) used in the project

Contact and Support

***

Contact Information

  • Provide contact information (email, supporting channels-youtube)

About Developer

  • Short bio of me (something not from my resume, GitHub profile)

Support Resources

FAQs

  • List question and answers (general questions about project- information that is not explained in README)

Glossary

  • List key terms or concepts used in the project

Documentation

  • List and describe sources used (explain the why I went that route)

Structured template of wiki for GitHub Documentation

Wiki Home Page Key

Highlight Colors

  • Mint: H1

  • Medium Purple: H2

  • Light Red: H3

  • Light Pink: H4

  • Medium Blue: Horizontal Break

Wiki Home Page

Wiki Title

Wiki Overview

Table of Contents

  • Introduction

  • Tutorials

    • Title of tutorial

    • Tutorial instruction steps

  • Methodologies

    • Name of methodology

      • Overview

      • Benefits

      • Challenges

  • Approaches

    • Name of approach

      • Overview

      • Benefits

      • Challenges

  • Resources

    • Name of resource

      • Link (name)

      • Description

    • Glossary

    • References

  • FAQs

Breakdown Wiki Home Page

Wiki Title

Wiki Overview

  • Brief overview of wiki’s purpose 1-2 sentences

***

Table of Contents

Introduction

***

  • More detailed explanation of wiki’s purpose 1-2 paragraphs

Tutorials

***

Title of tutorial

  • Name of the tutorial

  • (explain purpose of tutorial- reason for having it, why is it important)

Tutorial instruction steps

  • Detailed instructions (step 1, 2, etc)

Methodologies

***

Name of methodology

  • Name of methodology

Overview

  • Detailed explanation of methodology (include explanation of the why it’s being used)

Benefits

  • List benefits of using methodology

Challenges

  • List any challenges experienced with methodology

Approaches

***

Name of approach

  • Name of approach

Overview

  • Detailed explanation of approach (include explanation of the why it’s being used)

Benefits

  • List benefits of using approach

Challenges

  • List any challenges experienced with approach

Resources

***

Name of resource

  • Name of resource

Link

  • Link to the resource

Description

  • Explanation of the resource (why it was used)

Glossary

  • List key terms or concepts used in the project

References

  • Explain any sources used in wiki

FAQs

***

  • List question and answers (general questions about wiki- information that is not explained in wiki

Structured real-world guidelines for any project

Personal Project Key

Highlight Colors

  • Light Yellow: Title (Main Topic)

  • Teal: Subtitle (Tailored to Topic)

  • Medium Yellow: Word Definitions

  • Medium Green: Create Separate Template

Personal Project Guidelines

Project Initialization

  • Define project goals or objectives

    • Clearly explain what you want to achieve by building the project (it’s purpose)

  • Conduct feasibility assessment (need to create)

    • Assess resources, time, and skills to do the project

  • Create a project plan

    • Create a plain (milestones and deadlines)

  • Setup repository

    • Create project repository GitHub

Code Management

  • Use version control system

    • Use a version control system, Git

  • Follow a coding standard (need to create coding standard)

    • Establish coding standard (ensure consistency and readability across code base)

    • Code base = foundation of software, includes all files needed to compile the software

  • Write clean and modular code

    • Reusable modules to improve maintainability and scalability

    • Modular code = Breaking code into smaller separate pieces that do one specific thing. If one part needs fixing or changed, work on specific notes: part without breaking entire code

  • Use a code editor or IDE

    • Choose correct editor or IDE for project

    • Code editor = write and edit code, simple (Ex: notepad)

    • IDE (Integrated Development Environment) = all-in-one solution, writing, testing, and managing code

Testing and Debugging

  • Write unit tests

    • Create unit tests (ensure code quality and catch errors)

  • Use a testing framework (create testing framework template based on language)

    • Use testing framework like Playwright (other options- Selenium, Jest, Pytest, Unittest, etc)

  • Use a debugger (create debugger based on language)

    • Use a debugger like Chrome DevTools (other options- Node.js Inspector, Angular Augury, SonarLint, etc)

Code Review and Refactoring

  • Regularly review code (figure out when to stop building and start review)

    • Schedule review of code to ensure code quality and identify areas for improvement

  • Refactor code

    • Refactor to improve maintainability, scalability, and performance

    • Refactor code = clean up or improve the structure of the code without changing what the code does (Ex: Make code simpler to read, remove duplicate code, break big pieces into smaller and reusable parts)

  • Use code analysis tools (create and figure out when to use analysis tools)

    • Use code analysis tools (never use any- Code Factor, Code Climate, PMD, etc)

  • Keep code organized

    • Keep code organized (comments, documentation, and formatting)

Security and Best Practices

  • Follow security best practices (need to create security practice)

    • Implement security practices, secure coding practices, secure data storage, and secure authentication

  • Use security tools

    • Use security tools (never used any- Zap, Bearer, Horusec, etc) to identify and address security

  • Keep dependencies up-to-date

    • Do regular updates on dependencies (ensure latest security patches and features)

    • Dependencies = External tools or libraries in project (extra features)

Documentation

  • Write documentation

    • Create documentation (comments, README)

  • Keep project journal

    • Track progress, lessons learned, plan future improvements

  • Use documentation templates (need to create)

    • Ensure consistency across projects

Project Completion

  • Define project completion criteria (need to create)

    • Create clear criteria for project completion (what constitutes a completed project)

  • Create project completion checklist (need to create)

    • Create checklist to ensure all tasks are completed before completed

  • Conduct final project review

    • Perform review of project, met requirements of completion

  • Document lessons learned

    • Document lessons learned during project (improve future project outcomes)

Step-by-step Personal Project Guidelines

Project: purpose, what you are building

Project Goal: short explanation of project, purpose for building, “it’s the why are you building

Project Objectives: explain, what you want to achieve with the project

Step 1: Project Initialization

  • Define project goals and objectives

    • Review project goals and objectives (can it be improved from brainstorming, more detailed, tailored focused)

    • (write down project goals and objectives in project plan document)

  • Conduct feasibility study

    • Research existing applications of what you are building (identify features, and functionality)

    • Determine technical feasibility of project (do you know the programming language for the project (if not, time to learn) framework, and tools)

    • Identify potential roadblocks and challenges (learning curve, any problem you can think of)

  • Create project plan

    • Breakdown project into smaller tasks and milestones

    • Create a project timeline with est. completing dates

    • Identify dependencies and (API, library, etc) critical path tasks (create tests at review checkpoints)

  • Setup project repository

    • Create repository, GitHub (README, gitignore) (start basics for version control, documentation)

Step 2: Development

  • Code management

    • Use coding standard and follow throughout project (start version control, even if its small)

  • Create frontend

    • Design wireframe (outline, mindmap, etc) and user interface

    • Use framework to start building UI (basic from wireframe “improve over time of project”)

  • Create backend

    • Setup backend language (API, Node.js, Python, etc)

  • Create authentication and authorization

    • Setup library for authentication Supabase (Passport, etc)

    • Setup library for authorization Supabase (Casbin, Remult, etc) or role-based access control (Casbin, OpenFGA, etc)

    • Authentication = Proving who you are (Ex: logging into email)

    • Authorization = Deciding what you're allowed to do (Ex: After logging into your email, decides if you can read, send, or delete emails.)

Step 3: Testing and Debugging

  • Write unit tests

    • Use testing framework like Playwright (other options- Selenium, Jest, Pytest, Unittest, etc)

    • Test individual components and functions

  • Write integration tests

    • Use testing framework (FitNesse, Citrus, etc) to test application’s functionality and user interface

  • Debug code

    • Use a debugger to identify and fix issues (don’t forget console logs and print statements to debug code)

Step 4: Security and Best Practices

  • Follow security best practices

    • Use HTTPS and SSL/TLS to encrypt data

    • Secure password storage library like bcrypt

    • Secure authentication and authorization

  • Use security tools

    • Use a tools like ZAP identify vulnerabilities

    • Use SSL Checker test SSL/TLS configuration

  • Keep dependencies up-to-date

    • Use npm or pip to manage dependencies

    • Regularly update dependencies to ensure you have the latest security patches

Step 5: Documentation

  • Write documentation

    • Create a README explains how to use the application

    • Write documentation (API, frontend, back, etc)

  • Use documentation templates

    • Use a template like Slite (The Good Docs Project) to create documentation and GitHub to host

Step 6: Project Completion

  • Define project completion criteria

    • Determine what constitutes a completed project

    • Create a checklist of tasks to complete

  • Conduct a final project review

    • Review project to ensure it meets the goals and objectives

    • Identify areas for improvement and create a plan to address them

  • Document lessons learned

    • Write a post document summarizes the project

    • Identify lessons learned and areas for improvement

Last updated