open to work — software engineer, new grad 2026
visit count
// distributed systems · backend · data-intensive computing

Brad Guevara
Software Engineer

Specializing in distributed systems, backend, and data-intensive computing. Computer Science graduate (May 2026) from the University at Buffalo, with a Certificate in Data Intensive Computing. My coursework and projects center on distributed systems and large-scale data processing, including consensus protocols, peer-to-peer routing, fault detection, and the Spark/Hadoop pipelines that move data through them. I also practice data structures and algorithms regularly on LeetCode, using NeetCode's roadmap to guide my study.

Brad Guevara pixel art
01

Projects

Raft Leader Election

Mar 2025
GoRaftConsensus
  • Implemented the leader election portion of the Raft consensus protocol in Go.
  • Built randomized election timeouts and heartbeat-driven RPCs to detect leader failure and trigger new elections.
  • Handled term tracking and vote requests to ensure at most one leader per term across the cluster.

Distributed Hash Table

Feb 2025
GoKademliaP2P
  • Implemented a routing table for a k-DHT, a simplified Kademlia, to model peer-to-peer data structures.
  • Used cryptographic primitives and Go interfaces for secure, content-based addressing.
  • Integrated the routing table into a full DHT, optimizing lookup and communication across a decentralized network.

Message Service & Failure Detector

Jan 2025
GoTCPProtobuf
  • Built a multi-process message service using Go, TCP sockets, and channels — sub-10ms message latency.
  • Implemented a heartbeat-based failure detector identifying node failures within 500ms.
  • Learned and implemented Protobuf-based message serialization over a custom length-prefixed TCP framing protocol.

COVID-19 Data Analysis

Jan – Apr 2026
PythonPandasNumPyScikit-learnMatplotlibJupyter Notebook
  • Worked with a COVID-19 dataset from Google Dataset Search, combining data inspection, data cleaning, and ML training in Jupyter Notebook.
  • Cleaned and structured raw patient records with Pandas, then trained models with Scikit-learn to predict patient outcomes from symptoms.
  • Compared mortality rates between genders and used NumPy/Scikit-learn to identify the strongest drivers behind recorded COVID-19 deaths.

Stock Predictor App

Jun 2026
PythonFastAPIReactXGBoostGemini AI
  • Built a full-stack app pulling live data from Yahoo Finance and Finnhub.
  • Trained an XGBoost model on 11,000+ rows of historical data for next-day prediction.
  • Integrated Gemini LLM to analyze news sentiment and generate a next-day direction verdict.

Movie Rating & Review Platform

Fall 2025
ReactPHPMySQL
  • Built a full-stack platform with a team for rating, reviewing, and discussing movies.
  • Developed React/JSX front-end components with custom CSS for dynamic, responsive UI.
  • Created PHP REST APIs connected to MySQL for reviews, auth, reactions, and watchlists.

Video Platform — Backend

CSE312
PythonWebSocketsJWTFFmpegOAuth
  • Built the backend for a video platform on a provided starter server, learning REST fundamentals — handling GET, POST, PATCH, and DELETE requests and serving JSON responses.
  • Implemented JWT-based authentication with cookie sessions, two-factor authenticator support, and OAuth login (Login with GitHub).
  • Used FFmpeg for video processing, with database-backed storage for files, images, and video uploads.
  • Implemented WebSockets for real-time chat and peer-to-peer video calls.
02

Experience

Jun – Sep 2025

Software Engineering Intern

Citytech — Quito, Ecuador
  • Assisted with code updates and organization in a C#/.NET testing environment.
  • Gained hands-on exposure to REST APIs, SQL, and how layers of a .NET application connect.
  • Worked with senior developers using diagrams and documentation to learn the architecture and workflow.
// Independent Research — CSE 498

Internship Experience at Citytech

Credited research paper · Supervised by Prof. Bina Ramamurthy, Department of Computer Science and Engineering, University at Buffalo · March 2026

1. Introduction

I completed an internship at a software company located in Quito, Ecuador, from June 2025 to September 2025. Ecuador is a country that is located in South America, and I was there during my summer break. At that time, I was looking for an internship so I could gain more experience, although I did not receive a response from any companies in the United States. I decided to contact a company located in Ecuador through someone I knew to see if they could offer me an internship opportunity while I was there, and I was happy that they offered me an opportunity. When I arrived, I began to learn with them. This company is a Software house with more than 8 years of experience in research, design, and development of technological solutions. They have many products that they have launched, including a Document management and workflow automation system, an insurance broker software, accounting software, invoicing software, and custom-made software for specific requirements.

2. Internship Role

During my internship, I worked with the Invoicing team, who were in charge of the creation and maintenance of a product called EasyFact, which was designed to create invoices and manage receipts. I was able to attend many daily meetings the team had, which taught me how they assigned tasks within a project, how they communicated concerns and suggestions, and how progress was tracked and reported. The main issue the team had was to update and generate a more scalable system to generate receipts.

3. Tools Used

The tools I used were Visual Studio, .NET, SQL database, EF Core migrations, and REST APIs.

4. SQL and Databases

First, I learned about SQL and databases. The other interns and I were tasked to get familiar with the technology, so I created a database and got familiar with SQL language to insert rows, retrieve tuples, and perform basic operations. Through this first part, I learned a lot about the ideas of Databases, why they exist, and how they are different and sometimes better than an Excel sheet. SQL Syntax was something I had never experienced before, and surprisingly very easy to do. By doing this, my understanding of databases, how data is stored, queried, and managed, has increased greatly, and I am more knowledgeable now than I was before. In many of the data-related classes I am currently taking, I recognize many of the topics we are speaking about, and if something is completely new, I can relate it to stuff I have seen before.

5. Playground SQL Server

The team had a playground SQL server dedicated to teaching interns and running tests without harming any of their main databases, where we were able to mess up without any worry. Here, we practiced larger and more complex queries; they did not check our work in any way. The tasks were treated like a self-directed learning course, where we were expected to take responsibility for our own progress and to learn independently. Here, they also showed us examples of SQL operations during a short live session via Zoom.

6. Where Data Came From

At first, when we were tasked to simply get familiar with the new technology, they suggested we use DBeaver and SQL Server, as those were the tools they used for their applications. I created a database that ran locally and used Google Dataset Search to grab something I could play around with. I remember using a dataset of Ecuadorian housing and property market details, which contained tens of thousands of rows of information. It had things such as price, location, details about the properties, and much more. Creating a database, populating it, and performing my first queries was a fundamental skill and concept to grasp, and it later helped me understand the general purpose and structure of a Database. This was done for around one week, from June 11 to June 23, 2025, approximately. Then we jumped to performing a list of queries they assigned to us using their data, which was on a private server separate from the main server, so when testing new features and learning, nobody could hurt anything. This data came from real anonymised users and was served by the developers. They had millions of records from which we would learn more complex queries and understand more in-depth how their data was processed later on. This private server was structured the same as their deployed versions, just had fewer records, and was fully functional.

7. Data Size, Cleaning, and Methodology

During the internship, I began with a public dataset of Ecuadorian house/property prices, which contained tens of thousands of records. I executed various data-cleaning techniques using the Pandas library on Python, such as counting records, finding out how many records had empty values, handling those empty values, checking for incorrect or inconsistent formatting of the data, looking for duplicates, and understanding the data overall. Some simple SQL queries were also performed with this data set after I loaded it into a local SQL database. Then we moved to an SQL Playground server that they provided us. This server contained many tables and hundreds of thousands of records, where we practiced more complex queries. This data was already cleaned and correct; no data cleaning was needed.

The main methods we used during this portion of the internship were SELECT, INSERT, UPDATE, and DELETE, along with more complex queries containing JOIN, SUBQUERIES, WHERE statements, and more. The goal of this portion of the internship was to understand how large datasets are queried, processed, and ultimately served.

Steps taken to represent the methodology used:

  1. Learn the basic structure of SQL databases.
  2. Clean and understand the dataset using Python Pandas Library.
  3. Create a local practice database using the public property dataset provided.
  4. Practice inserting, updating, deleting, and querying records on the local database.
  5. Practice more complex queries on the playground server provided by them.
  6. Practice larger and more realistic queries on anonymized real-world data.
  7. Create REST API endpoints to retrieve, insert, update, and delete database records.

No machine learning methods were used since it was not the focus of the company. We mainly focused on how to build a RESTful API server and how Databases work.

8. Quality of the Data

To speak more about the data, this data was generated from real users who have used the app, where it served as a copy of real records with randomized identifiers, such as fake names and more. It reflected real-life data and behavior, which I believe is way better than randomly made-up values. To describe the quality of this data, I would say it is realistic, which was perfect for practicing, testing new features, and more. About the data itself, we never looked or dived into data cleaning, so I would not be able to tell if this data was perfect or had any missing or redundant values, but for learning query language it worked very well. Realistic data is excellent for this internship because it was the same data and queries that developers used during the production of their software, showing real business behavior and real records. Anonymization also provides very important user privacy, which makes for good business practice.

9. Goal of Data Analysis

The goal of data analysis in this internship was to understand large amounts of information, how they are structured, how to retrieve relevant information from large datasets through queries, and to understand how a company processes and organizes its data. It also helped me see how companies have dedicated playgrounds and testing servers where they can develop and test new software before deploying it. It was not just queries I learned, but also companies' and developer teams' processes to develop, test, and deploy systems.

10. REST APIs

The team also introduced us to the REST APIs and explained how they work during many short Zoom meetings. I learned the purpose of APIs and how the applications and backend communicate with each other. During the various meetings, we were introduced to different methods for GET, POST, PUT, and DELETE, what each one means and does. I also learned how the backend received the various requests through HTTP, and how it interacted with the database to deliver that. We were tasked to create endpoints to retrieve data from the playground database, so I remember creating methods for INSERTING tuples, DELETING tuples, GETTING tuples, and UPDATING tuples. From this, I learned about the flow of how data is moved between parts of a system, how responses are assembled, and how they are received. They also helped me understand that data management is not just about storing information in a database but also sending, receiving, and updating that data in a certain way.

11. .NET Environment and Scalability

The team also taught us how their application was organized; they used a .NET environment. During many Zoom video calls, they explained this by showing us their actual application code and explaining how different layers of their system connected. At that time, I had already learned C#, so it was not very complicated to follow the code they were reviewing, which helped me understand how a company's software is structured. They continued to explain to us what challenges their team was facing. The system they had could not handle an extremely large volume of transactions from a major insurance client in Ecuador, which had slowed down the system, and sometimes required upwards of two days to process all their transactions between them and a government agency. They were building a bigger and better system from scratch, where they had scalability in mind. They explained that they would build a system using a parallel approach; they mentioned that the problem was not storing data into a database, but rather processing it all before storing. They presented a plan to create a parallel system that used threads, tasks, and asynchronous processing to better the runtime and allow scalability. In addition to that, they mentioned that they would also upgrade the hardware to allow for more processing power and efficiency.

12. What I Learned

Through this internship, I learned a lot about data-related systems and how companies have professional environments. Before this experience, most of the concepts I knew were only what I was taught in a classroom, and to see how it all comes together in a professional setting is a huge experience for me. I was able to learn about databases and data itself; it is such a relevant experience for my future. By learning about SQL, databases, REST APIs, and .NET environment, I have a great understanding of how all comes together to build a complete system.

This experience also helped me in later classes here at UB. Where many of those concepts were repeated or related, and I instantly recognized if I was learning something I had seen before, the understanding of how data is processed was also implanted into my mind. Before starting that internship, I had a good foundation in distributed systems, where scalability was key, but I had never thought of relating scalability and processing with data and data handling. To see it all come together in a real implementation that is used by real people helped me understand that backend structure, data management, and processing efficiency can be closely related.

By attending the team's daily meetings, I was able to observe how tasks were assigned and how progress was tracked, how communication was handled, and how they got together to come up with a solution to a given problem. I learned that developing software is not only about writing code, but also about collaborating with a team, since most likely you will never be alone on a project.

13. References

03

Skills

Languages
GoPythonJavaScriptSQL JavaC#HTML/CSS PowerShellMIPS
Frameworks / Libraries
ReactFastAPIPandasNumPy Scikit-learnXGBoostPySpark MLlibMatplotlib
Databases
PostgreSQLMySQLSQL Server (MSSQL)
Tools & Platforms
DockerKubernetesGitGitHub AWSGCPGCP DataprocKafka SparkHadoopLinux/UNIXPostman
Concepts
Full Stack DevelopmentBackend Services InfrastructureDistributed Systems Production CodeData Structures AlgorithmsSystem DesignOOP AI
04

Education

B.S. Computer Science

University at Buffalo — Buffalo, NY · May 2026
Coursework: Distributed Systems, System Programming, Data Models & Query Languages, Applied Probability Theory, Software Engineering Concepts, Data Intensive Computing

Certificate in Data Intensive Computing

University at Buffalo — Buffalo, NY · May 2026
Focus on large-scale data processing and distributed storage — Apache Spark, Hadoop, PySpark, MLlib, and Google Cloud Dataproc for building and tuning data pipelines over large datasets.
05

LeetCode

Problems Solved

  • Problem 26Remove Duplicates from Sorted List(Python/JAVA)
  • Problem 122Best Time to Buy and Sell a Stock(Python/JAVA)
  • Problem 189Rotate Array(Python/JAVA)
  • Problem 217Contains Duplicate(Python/JAVA)
  • Problem 136Single Number(Python/JAVA)
  • Problem 350Intersection of Two Arrays II
  • Problem 66Plus One(Python/JAVA)
  • Problem 283Move Zeroes(Python/JAVA)
  • Problem 1Two Sum(Python)
  • Problem 3Longest Substring Without Repeating Characters(Python)
  • Problem 104Maximum Depth of Binary Tree
  • Problem 226Invert Binary Tree
  • Problem 100Same Tree
  • Problem 206Reverse Linked List
  • Problem 21Merge Two Sorted Lists
  • Problem 242Valid Anagram
  • Problem 49Group Anagrams
  • Problem 347Top K Frequent Elements
  • Problem 128Longest Consecutive Sequence
  • Problem 200Number of Islands
  • Problem 78Subsets
  • Problem 56Merge Intervals

NeetCode Roadmap

Array
  • Concatenation of Array
  • Contains Duplicate
  • Valid Anagram
  • Two Sum
  • Group Anagrams
  • Top K Frequent Elements