Brian's Portrait

Brian Stevenson

Undergraduate

Brian Stevenson

Calstate Long Beach Undergraduate Student

Brian's Portrait

I'm a full time student expecting my B.S. in Fall 2024 and my passion has always been computer science.
I have a very wide area of interest in the field, and in most of my classes or projects I can pick up any aspect and want to know about it. I realized that despite being a full time student, I have lots of free time. I spend lots of time with my Australian Cattle Dog I've had for a couple years now, or FaceTiming my grandparents in Oregon. I also have a slight interest in cars or even a little fabrication and occasionally go to car meets just to look at what other people have built. I was very fond of my TIG Welding elective class in city college and met some cool people and learned great skills during covid while all my other classes were online. Aside from my hobbies, I spend a lot of my time learning about applications in computer science.
Finishing school is my priority however getting real world experience is extremely important to me.

Personal Projects

Demonstrating Knowledge In Applications.

FriendMastery Website      Flask Logo PostgreSQL Logo Debian Logo

FriendMastery was my first useful website and compares people's progress on League of Legends, a popular online game. The technologies employed are a PostgreSQL database paired with the Flask web framework on a Debian system. These work together to serve not only static content but dynamic content that depends on user input. Here's an example of a profile: https://lolmastery.net/view/640d51b6-c7c9-4eb5-9cc1-e60d389a8e00. It functions relying on Riot's API, the company who owns League of Legends. On the frontend, Jinja templates help serve content and simplify forms. Javascript (AJAX) is also being used to show dynamic content. I made it to compare players' 'Mastery Score' since there wasn't other sites that compared this metric. There are lots of other sites revolving around League of Legends statistics, however they tend to focus on 'rank' and I never found another that does 'Mastery Score'

Game Servers      Minecraft Logo Java Logo

My first x86 experience with Linux was hosting Minecraft to play with friends starting in 201 circa January 2019. After trying Ubuntu Desktop and Ubuntu Server I settled on Arch Linux. I got familiar with partitioning disks, port forwarding, and the headless environment. Hosting the game entailed installing many plugins and configuring all the settings and plugins, often in yml formats. All the servers and plugins were .jar format while all the configuration files were basic text or JSON.

Discord Bots      Java Discord API Logo DiscordJS Logo Google Places API Logo Raspbian Logo

I've also hosted a couple Discord bots. I really enjoyed hosting finished music bots other people made that I just needed to configure to make own, however I've also programmed one of my own music bots. I was also playing around with an API for stocks and managed to make a Discord bot that could show a graph and price of a stock using nodejs. I think the one I'm most proud of displayed the hours, address, and other metadata of WingStop franchises. WingStop is a restaurant that serves chicken wings, fries, and chicken sandwiches. I made it as a gimmick however it functioned very well, interfacing with Google's Places API completely in Java. I made these years ago using Discord libraries that have since been deprecated. I've even lost the code for my music bot and WingStop bot, as I hadn't learned about GitHub yet.

LAMP Stack      Arch Linux Logo Apache Logo MySQL Logo PHP Logo

Shortly after hosting my first game servers, I made my first web deployment using Linux, Apache, MySQL, and PHP. I made a functioning login system although there wasn't really an enterprise or interest associated with this, I just wanted to see how this stuff worked. I configured Apache using VIM as this was all hosted on Arch Linux, however, I wrote all the html, css, javascript, and php on my PC in Microsoft Web Expression 4. I used Argon2 to hash and salt passwords. Although Arch Linux was interesting to use and helped me learn lots of things, I also took away that I have a great distaste for Arch and it's rolling release model when I need a reliable server.

Private Contracting      Rust-Lang Logo Actix Web Logo Actix Web Logo

Right now I have two paid clients I do full stack development for.

  1. I have set up a simple one-page website for someone's band. Right now, most crucially, it has their contact information so they can be gotten ahold of in the event someone has a gig for them.
  2. I made an online inventory system such that customers know which trading cards my client has. This project features a Postgres Database that currently sits at nine tables with several indexed columns, and a dataset exceeding 30GB of images and 100MB of metadata with no redundancy for columns bigger than four bytes. This project is still unfinished as my client wants me to display market prices, and he also needs to come up with a name and theme for his store.
I'm uncomfortable putting links for these projects here, however I'd gladly share all my work in a private session. I did all the work for both of these in Rust using a web framework called ActixWeb as a webserver. I also learned a bunch of frontend stuff. I learned how to use another templating engine called 'maud', however for my second client I've actually opted to employ React. I really liked how maud worked and it was clear and straight forward to me compared to React, however I wanted to get the performance of client side rendering. I decided on React because I think it'd be the most beneficial choice I could make in terms of what the market has wanted from my resume for the last few years, and it appears React won't be going anywhere soon.

GitHub Profile     GitHub Logo

https://github.com/brian-chilin
Here I put most of my smaller projects. I even include some solo and group work from school. I private some of my better work because it's deployed, but I'd be happy to share them during a one-on-one session.

Coursework

I'm always looking to broaden and deepen my knowledge.

CECS 323: Database Fundamentals

Fundamental topics on database management are taught with PostgreSQL. Topics include entity-relationship models, database design, data definition language, the relational model, data manipulation language, database application programming and normalization.

PostgreSQL Logo Cartoon representation of a database as a cylinder.

CECS 378 & CECS 478: Intro to Computer Security

During Fall 2023 I've been studying computer security and principles from blue and red team perspectives. Interesting chapters have included risk and security evaluation and symmetric and asymmetric encryption. For symmetric encryption, I'm attempting to make a program that cracks substitution ciphers. We've also practiced asymmetric encryption using gpg in the command line to securely communicate messages as attachments in email.

#TODO

CECS 342: Principles Of Programming Languages

Fundamental topics in the design and implementation of programming languages. Programming language paradigms. Also covered comparison of languages in type systems, data types, control flow, subroutines, concurrency, and exception handling. Smaller projects are completed in C++. Also touched Rust, Lisp, and Python.

Xilinx Vivado Icon Programming language hierarchy visual

Object Oriented Programming

The first course I took for OOP was AP-CS-A in high school and utilized Java to clearly outline the four concepts of OOP. At city college I took a C++ course that got into objects and encapsulation but none of the other OOP concepts. Most recently, I've reviewed the OOP concepts using Python3 in CECS 277.

Encapsulation, Abstraction, Inheritance, and Polymorphism visual

CECS 328: Algorithms

This course covered many types of problems and mainly solves them with dynamic programming or greedy algorithms. All the implementations were done in Python or pseudocode, and there's a focus on achieving better time complexity.

A graph showing common time complexities. LeetCode Logo Python Logo

CECS 329: Concepts of Computer Science Theory

Fundamental topics in theoretical computer science. Topics include regular languages, finite automata, context-free languages. Turing machine, computability theory, computational complexity, NP-completeness.

Graph showing how P and NP-Complete are subsets of NP

All CECS 323 Databases Exam Scores
Picture of good exam scores for databases
CECS 328 Algorithms Midterm 2 100%
Picture of a good exam score for algorithms

My Career Goals

"If you want to live a happy life, tie it to a goal, not to people or things." -Einstein

Short-Term

  • Enterprise Server

    I've been working getting pieces off the second hand market to get my own enterprise grade server running. I've been running an old Debian server and it's served me well for years, however it's running all on consumer grade hardware so I wanted to upgrade and have experience around a real server. Furthermore, my old 'server' doesn't have any kind of redundancy. The new server has redundant power supplies and I'm running the storage in RAID 1 so in the event a drive fails I should lose no data, and be able to rebuild data once the failed drive is replaced. I also just wanted to experience handling enterprise grade hardware just like what's in real servers in real data centers. I think it's neat how the rack units work with mounting hardware, and then many parts in the server are hot-swappable like power supplies, storage, and fans. There's also lots of features that I just haven't see on consumer hardware, like keyholes on panels and facias, the form-factor, internal USB ports, and small status LCDs on the front panel. I also like how the enterprise drives have 'power loss protection' and it's common to even install an 'uninterruptible power supply' in the rack. I'm pleased in how the second hand market is treating me, I'll probably come out of this project for less then what a new moderate gaming machine would cost. At this point, I'm ensuring everything is stable and that I trust the second hand hardware. I'm starting to move my projects off my old hardware and onto this server.

  • Docker & Kubernetes

    I've already played around with Docker and K3s (mini kubernetes) and had some success on a cluster of three Raspberry Pi's but I really want a strong grip. I'll get more experience containerizing everything on my old server I intend to run on my new hardware. Something I'd really like to learn is how to make auto-scaling applications, such that a deployment can spin up and load-balance more pods when traffic increases and subsequently delete those pods when traffic eases. In the past I thought I wasn't going to use Docker & K8s much, however as I grow to have more and more projects I'm starting to see the benefit and look forward to making the jump moving all my personal projects to Docker & K8s. The simplifications I particularly intend to reap are in deployment, stability, and maybe on day redundancy. Currently, for any project, I write systemctl & NGINX modules particular to that project. It's organized, however I honestly don't have any backups of these because there's a bunch of other stuff mixed in those directories and it sounds like a pain. Moving to Kubernetes will reduce all this to Kubernetes deployment and services that I can keep in each project's folder.

  • Machine Learning

    I intend to learn how to use machine learning. I've made progress on my second attempt learning tooling, particularly conda and Jupyter Notebook. I've made a couple models in the past when other people were holding my hand. I think I understand the high level concepts, however to say 'I know machine learning' would be wrong. I want to get better at transforming data by myself into forms that models and libraries work well with and then identifying what to do to make a model better.


Medium-Term

  • Get A Job

    I'd take any position and titles that come to mind are software engineering and software development, however I think I need time in industry to really know. I think my portfolio demonstrates I'm growing to an intermediate full-stack engineer, however I truthfully dislike frontend work. I wouldn't overlook a frontend position, however I really enjoy doing backend work like making API endpoints, making database schemas, and laying out flows of data.

Contact Me

LinkedIn

or email me: lbc.brian.chilin@gmail.com