hero-image

I turn computer gibberish into things that make businesses
$$$

👋 Pleased to meet ya, I'm a software developer based in

Vancouver, Canada

I enjoy building everything across the full stack, but what I'm most passionate about is creating something

impactful

&

user-facing

What I've been

Working On

app-screenshots
bingeable-icon

Bingeable

A social media for film lovers and filmmakers.

ios-store-icon
0 downloads
0 user sign-ups
0 avg rating/5

The Front End

All about the UI and client logic. Take a closer look at how I approached the front end with real production code snippets.

Custom Hooks

Infinite Scrolling

Comment Interactions & Optimistic UI Updates

Global State Management with useContext

In this snippet, I've created a custom hook that fetches a film/tv Review data. This encapsulates the fetch logic and all of its related code like refetch and fetchMore for cursor based fetching which separates concerns from the rest of the parent component.
code-snippet

The Back End

A robust backend is needed to support the front end. Here are snippets from my production server code.

Cursor Based Pagination for Infinite Scrolling

In Memory Store Caching with Redis

AWS S3 to Store User Uploaded Media with a CDN

Parsing Text to Extract a URL Preview Thumbnail

Using Prisma ORM with PostgreSQL, I'm using cursor based pagination so I dont fetch repeated data for the infinite scrolling feature in the front end. This is accomplished by using the id of the final item fetched and using that as a cursor with skipping the first element to avoid repeats.
code-snippet

Challenges

Here were some of my biggest challenges and takeaways from building this app.

Challenge #1: Building a full production app with a framework and tools I've never used before.

Approach: Watch videos, read documentation and adapt as I go. Mistakes were made along the way but that's the best way to learn. I spent a good amount of time researching which options to choose when it came to the framework and tools.

For example, since I wanted to eventually distribute to both iOS and Android, I chose to go with React Native rather than writing native code for different platforms. I was confident with this decision since React Native has become well supported through the years and thought it was a safe choice.

Challenge #2: Building the algorithm for user's feeds.

Approach: I didn't want to overcomplicate this early in the app. So for now, the feed is more chronological based, pulling data from different models such as a user's friend's activities, data from interacted movies/shows, etc.

I then sort by the date created. In certain scenarios like for 'Trending Posts', I give a weight or a score for a post based on it's interactions like how many likes, comments, reposts, then sort based on its score.

In the future as the app gains more data, I plan on improving the algorithm to suggest relevant content by utilizing more complex data structures like graphs.

Challenge #3: Learning about System Design.

Approach: Without much prior knowledge in system design, I wanted to set myself up in the case the app scales in the future. I learned about the 3 pillars in system design: Scalability, Reliability, and Maintainability. I've heard you can't have all three and should focus on two of them.

To improve scalability and reliability, I've set up my app like so:

- when a user makes a request, this first go throughs nginx, which reverse proxies the request mainly to enhance backend security.

- This then go through a load balancer which I configured in AWS, which will distribute the traffic to the most available server instance. This works hand in hand with the auto scaling of my server, which will spin up new instances based on the usage and traffic.

- I have redis setup for frequently requested data as a in memory store.

- As for the DB, if the app really scales, I'll look into vertical scaling with partitioning/sharding.

bingeable-icon

Bingeable

Let's take it back.

university-of-torontobarber-chairhaircut-1camera-operatingfilm-still-1film-still-320112011201420152016202320242025

Graduated from Burnaby North Secondary with the Honour Cord

Went to the University of Toronto for Engineering

Completed 2 years, but withdrew from the program upon realizing it wasn't for me.

Enrolled and completed the Associates Certificate for Graphic Design at BCIT

Entered the world of creative barbering

It was great at first. I participated in competitions, built a steady clientele, became self-employed with my best month of doing $9.4k in sales

...but over time I lost the passion, felt limited in my growth, and simply felt like I can achieve more elsewhere.

I explored a few different paths, while keeping my barbering job. Most notably I pursued cinematography where I earned a 'Best Cinematography Award' nomination at a local film festival.

Ultimately, I learned two things about myself after this exploration phase. I love technology and creative problem solving. So I dove head first in software development and after learning on my own, I built and launched my mobile app Bingeable, which has a real growing user base.

I am now looking to apply my skills and learnings at a place where I can contribute and grow further...

Some

Kind

Words

" I've been seeing his work for years, and he has always been thoughtful, consistent, and driven. His passion for improvement is evident and admirable.

profile-pic

Brandon Perez

Senior Software Developer

" Andrew is driven and always eager to learn. I've seen his growth as a developer first hand, and what stands out most is how he combines his creativity and technical skills. This can be seen on full display with the Bingeable app.

profile-pic

Kevin Dhaliwal

SDE 1

Amazon

" I've been consistently impressed by Andrew's drive and initiative. He independently took an idea from concept to a fully launched app in the App Store (Bingeable), handling everything from design to backend and frontend development. He's a quick learner, resourceful, and highly motivated, always applying feedback effectively and showing persistence in solving problems.

profile-pic

Ryan Cimoszko

Senior Software Engineer

Betr