About Me
Motivated Computer Science student with a Can-Do attitude looking to gain experience in full-stack development. Currently working on improving my skills in web development.
Education
Bachelor of Science in Computer Science
Ariel University • 2022 - 2026
Relevant Coursework:
- Data Structures & Algorithms
- Object-Oriented Programming
- Database Systems
- Web Development
- Software Engineering
- Operating Systems
- System Design
- Network Programming
GPA: 86.2
Projects

Israel Bridge Federation
Building a brand-new web application for the IBF from scratch, using Next.js, TypeScript, Tailwind CSS, and Prisma. Replacing their outdated system, the project emphasizes accessibility, user-friendliness, secure payments, membership management, and an advanced rating system.
System Design Patterns
A multi-threaded server using Pipeline and Leader-Follower concurrency patterns to efficiently handle operations over TCP. Optimized performance and scalability with thread synchronization and resource management.

Netcat Clone
A custom netcat-like tool that opens clients and servers over TCP, UDP, and UNIX domain sockets. It reroutes standard input/output based on flags and even includes a Tic-Tac-Toe game you can play against the computer, showcasing how versatile network communication can be across different protocols.

ML - Text Classification
Using the 20 Newsgroups dataset, investigating the performance of various machine learning algorithms for text classification, and how does different dimensionality reduction techniques affect the results.
async def receive_data(self) -> List[bytes] | None:
"""
1. receive data from the socket and divide it into packet and frames
2. if the packet is not SYN/ACK/SYN_ACK/FIN start measuring time
3. if the stream_id is not in the streams stats dictionary,add it
"""
frames_received_counter = 0
while True:
received_data, address = self.sock.recvfrom(QUIC_PACKET.Max_size)
received_packet, received_frames = QUIC_PACKET.deserialize_data(received_data)
if received_packet.packet_flag not in (FLAGS.SYN, FLAGS.ACK,
FLAGS.SYN_ACK, FLAGS.FIN):
frames_received_counter += len(received_frames)
# GOT THE FIRST PACKET OF THE SPECIFIC STREAM, START MEASURING TIME
if received_packet.packet_flag == FLAGS.FIRST_PACKET:
if received_frames[0].stream_id not in self.streams_stats:
self.streams_stats[received_frames[0].stream_id] = Stats(received_frames[0].stream_id, 0, 0, 0,
time.time())
if OVERALL_DATA not in self.connection_stats:
self.connection_stats[OVERALL_DATA] = Stats(0, 0, 0, 0, time.time())
if len(received_frames) != 0:
self.streams_stats[received_frames[0].stream_id].frames_amount += len(received_frames)
self.connection_stats[OVERALL_DATA].frames_amount += len(received_frames)
# GOT THE LAST PACKET OF THE SPECIFIC STREAM, MEASURING END TIME
if received_packet.packet_flag == FLAGS.LAST_PACKET:
self.streams_stats[received_frames[0].stream_id].time = time.time() - self.streams_stats[
received_frames[0].stream_id].time
QUIC Multi Streams
Asynchronous multi-stream QUIC functionality with dynamic frame management, leveraging asyncio for concurrent operations.
Skills
Programming Languages
C/C++
Java
Python
TypeScript
JavaScript
HTML
CSS
SQL
Frameworks & Libraries
React
Next.js
Node.js
Symfony
Tailwind CSS
Prisma ORM
Doctrine ORM
Tools & Technologies
Git
MongoDB
MySQL
Windows
Linux
TCP/IP
Multi-threading
Resume
Gal Ben Ami
Computer Science Student
Work Experience
Full stack Developer | Freelance
2024 - Present
- Migrating the Israeli Bridge Federation’s legacy site into a Next.js + React web app serving ~6,000 active members.
- Built Core Modules: Secured Payments Flow, Tournaments registration, and A role-based management dashboard.
- Tech Stack: Next.js, React, Prisma, Tailwind CSS, TypeScript.
Education
Bachelor of Science in Computer Science
Ariel University
2022 - 2026
GPA: 86.2
Technical Skills
- C/C++, Java, Python, Shell, TypeScript, CSS, HTML, SQL
- MongoDB, MySQL
- React, Next.js, Node.js, Symfony
- Windows, Linux
- Git, Prisma ORM, Doctrine ORM
Get In Touch
Thank you for visiting my website!