Skip to content

Commit 80fd30d

Browse files
committed
Update projects
1 parent c9df1a0 commit 80fd30d

15 files changed

Lines changed: 259 additions & 31 deletions

File tree

src/assets/333gle-homepage.png

281 KB
Loading

src/assets/cardIcons/c.png

108 KB
Loading

src/assets/cardIcons/gdb.jpg

36.9 KB
Loading

src/assets/cardIcons/valgrind.png

109 KB
Loading

src/assets/husky-robotics/map.png

82.6 KB
Loading
247 KB
Loading

src/components/Card.astro

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
---
2-
import type { CollectionEntry } from "astro:content";
32
import { Image } from "astro:assets";
43
54
import astro from "@cardIcons/astro.png";
65
import cesium from "@cardIcons/cesium.png";
76
import coreml from "@cardIcons/coreml.webp";
7+
import c from "@cardIcons/c.png";
88
import cpp from "@cardIcons/cpp.png";
99
import css from "@cardIcons/css.png";
1010
import figma from "@cardIcons/figma.svg";
11+
import gdb from "@cardIcons/gdb.jpg";
1112
import github from "@cardIcons/github.svg";
1213
import gitlab from "@cardIcons/gitlab.png";
1314
import html from "@cardIcons/html.png";
@@ -20,6 +21,7 @@ import python from "@cardIcons/python.png";
2021
import react from "@cardIcons/react.png";
2122
import ros2 from "@cardIcons/ros2.png";
2223
import swift from "@cardIcons/swift.webp";
24+
import valgrind from "@cardIcons/valgrind.png";
2325
import verilog from "@cardIcons/verilog.png";
2426
import vite from "@cardIcons/vite.png";
2527
import wpilib from "@cardIcons/wpilib.png";
@@ -45,10 +47,12 @@ const kvArray: [string, ImageMetadata][] = [
4547
["astro", astro],
4648
["cesium", cesium],
4749
["coreml", coreml],
50+
["c", c],
4851
["cpp", cpp],
4952
["c++", cpp],
5053
["css", css],
5154
["figma", figma],
55+
["gdb", gdb],
5256
["github", github],
5357
["gitlab", gitlab],
5458
["html", html],
@@ -62,11 +66,12 @@ const kvArray: [string, ImageMetadata][] = [
6266
["ros2", ros2],
6367
["react", react],
6468
["swift", swift],
69+
["valgrind", valgrind],
6570
["verilog", verilog],
6671
["vite", vite],
6772
["wpilib", wpilib],
6873
];
69-
const iconMap = new Map<string, ImageMetadata>(kvArray);
74+
const iconMap = new Map<string, ImageMetadata | string>(kvArray);
7075
7176
function formatDate(date?: Date) {
7277
if (date == null) {

src/global.d.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Declarations to allow importing image files and the @cardIcons alias in TypeScript
2+
3+
// Alias pattern for @cardIcons/* (maps to src/assets/cardIcons/* in tsconfig)
4+
declare module '@cardIcons/*' {
5+
const src: string;
6+
export default src;
7+
}
8+
9+
// Generic image module declarations
10+
declare module '*.png' {
11+
const src: string;
12+
export default src;
13+
}
14+
15+
declare module '*.jpg' {
16+
const src: string;
17+
export default src;
18+
}
19+
20+
declare module '*.jpeg' {
21+
const src: string;
22+
export default src;
23+
}
24+
25+
declare module '*.webp' {
26+
const src: string;
27+
export default src;
28+
}
29+
30+
declare module '*.svg' {
31+
const src: string;
32+
export default src;
33+
}
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
---
2+
article:
3+
publishedTime: "2025-11-25T02:55:00-08:00"
4+
modifiedTime: "2025-11-25T02:55:00-08:00"
5+
authors: ["Violet Monserate"]
6+
section: Class Projects
7+
tags: ["c", "c++", "gdb", "valgrind", "gitlab"]
8+
layout: '@components/MarkdownProjectLayout.astro'
9+
title: File Explorer
10+
description: Individual project for CSE 333 Systems Programming course, linking a web server to an inverted index of a file directory
11+
seoDescription: Group project for CSE 440 Human-Computer Interaction course, where we researched and developed a novel commercial product
12+
image:
13+
src: "@assets/333gle-homepage.png"
14+
alt: "Homepage for 333gle: web interface for file explorer. The query is currently 'hello world' and shows a couple links related to the query hello world"
15+
startDate: '2025-01'
16+
finishDate: '2025-03'
17+
icons: ["c", "c++", "gdb", "valgrind", "gitlab"]
18+
---
19+
20+
![Homepage for 333gle: web interface for file explorer. The query is currently 'hello world' and shows a couple links related to the query hello world](@assets/333gle-homepage.png)
21+
22+
---
23+
24+
## Key Tools
25+
26+
In order to ensure that my code was working, I utilized 2 debugging tools:
27+
- **GDB**: This allowed me to go instruction by instruction and inspect the state of the program, which was especially useful when tracking "segfaults"
28+
- **Valgrind**: This allowed me to see how memory was being utilized by our program, and ensure that we were allocating and freeing memory correctly.
29+
30+
31+
## Homework 1: C Data Structures Implementation
32+
33+
### Overview
34+
Implemented two fundamental C data structures from scratch:
35+
- **Doubly-linked list** with iterator support
36+
- **Chained hash table** with dynamic resizing
37+
38+
### Key Features
39+
- **Generic payload support** for storing arbitrary data types
40+
- **Memory management** with proper malloc/free handling
41+
- **Iterator abstractions** for safe data structure traversal
42+
- **Robust error handling** using Verify333 assertions
43+
44+
### Technical Implementation
45+
- **LinkedList**: Managed head/tail pointers with node splicing logic
46+
- **HashTable**: Used FNV hashing with separate chaining collision resolution
47+
- **Memory safety**: Comprehensive Valgrind testing for leaks and errors
48+
- **Code quality**: Followed Google C++ style guide with cpplint validation
49+
50+
## Homework 2: In-Memory Search Engine
51+
52+
### Overview
53+
Built a file system crawler, indexer, and query processor using HW1 data structures.
54+
55+
### Components Implemented
56+
57+
#### Part A: File Parser
58+
- **Text file ingestion** with memory-efficient string handling
59+
- **Word parsing** using alphabetic character separation
60+
- **Position tracking** with byte offset recording
61+
- **Case normalization** converting all words to lowercase
62+
63+
#### Part B: Crawler and Indexer
64+
- **Recursive directory traversal** with document ID assignment
65+
- **Inverted index construction** mapping words → documents → positions
66+
- **Document table management** for filename ↔ docID bidirectional lookup
67+
68+
#### Part C: Query Processor
69+
- **Multi-word query processing** with result intersection
70+
- **Ranking algorithm** based on term frequency summation
71+
- **Interactive shell** with console-based user interface
72+
73+
### Data Structures Used
74+
- Document table: Dual hash tables for bidirectional lookup
75+
- Inverted index: Nested hash tables (word → docID → positions)
76+
- Position tracking: Linked lists maintaining sorted offsets
77+
78+
## Homework 3: Disk-Based Search Engine
79+
80+
### Overview
81+
Extended HW2 search engine to persistent storage with architecture-neutral file format.
82+
83+
### Components Implemented
84+
85+
#### Part A: Index Marshaller
86+
- **Big-endian serialization** for cross-platform compatibility
87+
- **Complex file format** with header, doctable, and index regions
88+
- **Checksum validation** for data integrity verification
89+
- **Hierarchical data storage** maintaining in-memory structure relationships
90+
91+
#### Part B: Index Reader
92+
- **C++ class hierarchy** for file-based data structure access
93+
- **Efficient lookup algorithms** for query processing
94+
- **Memory-mapped style access** without full file loading
95+
96+
#### Part C: Multi-Index Search Shell
97+
- **Multiple index file support** for distributed searching
98+
- **Rank aggregation** across multiple corpora
99+
- **Interactive query interface** with result merging
100+
101+
### File Format Features
102+
- Magic number identification (0xCAFEF00D)
103+
- Embedded hash tables with bucket chaining
104+
- Variable-length string storage
105+
- Position list compression and sorting
106+
107+
## Final Project: Web Server Security & Session Management
108+
109+
### Security Features Implemented
110+
111+
#### Session Management
112+
- **Secure cookie generation** with session tracking
113+
- **HMAC-SHA256 protection** against cookie tampering
114+
- **Session validation** with cryptographic verification
115+
116+
#### Authentication System
117+
- **Login page** with credential processing
118+
- **Admin cookie minting** for privileged access
119+
- **Plaintext authentication** (noted as potential security concern)
120+
121+
#### Access Control
122+
- **Admin-only routes** (`/quitquitquit` endpoint protection)
123+
- **Protected file access** for `$(BASE_DIR)/admin` contents
124+
- **Role-based authorization** using session cookies
125+
126+
#### Administrative Features
127+
- **Server logging** of client requests and activities
128+
- **Admin dashboard** with system overview
129+
- **Navigation system** with role-appropriate links
130+
131+
### Technical Implementation Details
132+
- **Cookie security**: HMAC verification prevents unauthorized modifications
133+
- **Access enforcement**: Session validation on protected endpoints
134+
- **User experience**: Seamless navigation between public and admin areas
135+
- **Monitoring**: Comprehensive request logging for administrative oversight

src/pages/projects/flight-app.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,8 @@ icons: ["java", "postgres"]
2121

2222
---
2323

24+
## [WIP] Overview
25+
26+
In this project, I learned about how to link an application to a database, specifically through the use of JDBC, while also going through the whole process of designing a database, including generating an ER diagram to include every entity and relationship we'd possibly need.
27+
28+
*MORE DETAILS TO COME SOON (PLUS PHOTOS!)*

0 commit comments

Comments
 (0)