Blog #5: Hawaii!

We’re almost at the midpoint of the project! I feel like I need a vacation 🙂 So for this blog post I’m going to talk about the trip I took to Hawaii over winter break. I was my first time going (unless you count the time my parents took me when I was an infant), and my girlfriend and I went to Waikiki/Honolulu.

We stayed at Park Shore Waikiki, and our room had an ocean view! We spent a lot of time sitting on the balcony taking in the view people watching .

View from our balcony!

We ate a bunch of good food while we were there too. My favorites were Marukame, an udon restaurant, and Tonkatsu Tamafuji, a Japanese restaurant that served Tonkatsu (Fried Pork). The latter was very popular; I tried a month beforehand to get a reservation and had no luck until an hour before they opened the day of, I guess someone cancelled last minute! We also got some smaller snacks/goodies like poke, spam musubi, and shaved ice.

Tonkatsu Tamafuji
Marukame Udon

We also checked out some nice tourist attractions. We went to Haunama Bay, and tried to snorkel, but the water was very cloudy, it was hard not to step on the coral, and I’m pretty sure the snorkels we bought from the convenience store were meant for children. But it was a beautiful area, and I had a nice time on the beach. We also went to the Waikiki Aquarium, which was kind of small (I’ve been spoiling living so close to Monterey Bay Aquarium my whole life), but still cool! There were a lot of native tropical fish to see.

Haunama Bay

Thanks for reading!

Blog #4: Geohashing

In our project, we are trying to store the location of each farm in a database, and when a worker searches for farms in a certain location, we need to query the table and return farms near that area.

While trying to find out how to do this, we found the concept of ‘Geohashing’. This essentially splits the earth into a bunch of labelled squares. Each of these squares are split into smaller and smaller squares, adding an extra character to the hash code during each layer.

https://www.movable-type.co.uk/scripts/geohash.jpg

All the squares in the g block start with g. If you were to zoom in on g5, it would also be split into squares, 3 characters long, that all start with g5. Let’s say one of these 3 character squares is g5p, for example. g5p would be split into squares 4 characters long that all start with g5p, and so on. The longer the string, the more precise the location.

So for our project, we can pinpoint the location of the farm with a longer geohash (say 8 characters long) and store that value in the table. A user looking for work could search using a vague location term like a zip code, and we would convert that into a geohash that’s 5 characters long . We could then query the table for any farms who have a geohash whose first 5 characters match the user search geohash.

I thought this was a pretty cool way to search for specific locations in a certain area!

Blog #3: Starting the Project

I’ve finally gotten started writing some code for this class! Our project is a website called ‘Farm Match’. The idea is farmers and farms can both use the website to find jobs/workers around them.

The parts I’m responsible for are:

  • The search page for workers to find farms with job listings
  • A page specific to each farm that displays all the active job listings the farm has
  • The search page for farms to find people looking for work near them

I spent some time creating the front end for the first bullet point, and will try to get some of the backend stuff working the rest of the week, like the map box display. I’ve been trying to think about how we should structure our DynamoDB tables. The user will search mainly by location, and they will be able to filter the results by pay range and/or type of job.

I think the way we will approach this is as follow: Each job will have a location hash as the primary key, and the site will take the user’s location and query for location hashes close to the user location. The rest of the information (job type, pay range) must then be stored in the data. We should be able to get all the nearby farms first, then filter out based on the data.

DynamoDB is very different from the SQL tables I am more familiar with, so it will definitely be a challenge for me to tackle this.

Blog Post #2: Interviewing for My Amazon Internship

For my second blog post I thought I would talk a bit about the interview process for internship at Amazon last summer. I applied in Fall 2020. At that point, I had taken the two intro CS courses at OSU, as well as discrete math and Computer Arch./Assembly. I was concurrently taking web development and data structures. I think taking data structures that same quarter was perfect timing, as it greatly increased my ability to solve LeetCode problems and understand how to approach the problems.

I was fortunate in that my friend had worked at Amazon for 2 years at this point, and he was able to refer me. I think having this referral played a big role in me getting my resume past the initial screen and ultimately getting the position.

Prepping for the interview was a still lot of work. I did roughly 150 LeetCode problems over the course of a month and a half. This list of problems is a great starting point that covers a wide range of types of problems. LeetCode also has list of problems that are frequently asked by specific companies, and I went through the list of problems that Amazon asked most frequently as well.

I think the most important thing is not to just be able to solve coding problems, but to be able to explain your process as you’re coding out the solution, and voicing out your thought process. Even if you’re stuck, you should be talking out loud and explaining what you’re stuck on, and what possible solutions you’re considering attempting to unblock yourself. Usually, a good interviewer will hop in with a hint. A big point of the interview I think people miss is to gauge your communication skills as well.

On top of coding, I had to prepare myself to answer behavioral problems. Amazon places a lot of emphasis on their leadership principles, and I tried to mold my previous work experience around these principles.

Thanks for reading!

Blog Post #1: Introduction

Hi! My name is Shane Yen, and this is the first post for my blog for CS 467. I thought it would make sense to use this entry to talk a bit about myself and my background.

I’m from San Jose, CA, born and raised. My first degree was a Pharmacology B.S. from UC Santa Barbara. I graduated in 2018. After graduation, I worked at Thermo Fisher Scientific as a lab technician for a year, and then as a research scientist at a biotech startup called Rani Therapeutics.

I decided to make the switch to CS when I was still working as a lab technician. I enjoyed studying biology in school, but working in a lab was very mundane and repetitive. I was essentially running the exact same lab procedure day after day. I decided I wanted to switch to a career where I could be more challenged and solve different problems every day. Software engineering seemed like a no-brainer, and I found OSU’s post-bacc program and applied.

This program has been very enriching and exciting, and I am very glad to have made the career switch. I’ve learned a lot from my classes and met a lot of great people. A major advantage going back for a bachelor’s has over a coding bootcamp is the option to apply to internships, and last summer I had the opportunity to intern at Amazon/AWS, and I’ll be returning there full time after I graduate.

Outside of school and work, I enjoy playing video games, producing music, and building mechanical keyboards. I also enjoy traveling! I’ve recently visited Washington, New York, and Hawaii, and prior to COVID I’d visited several countries in Asia. I was hoping to make a trip around Europe after I graduate this quarter, but with Omicron spreading so rapidly I’m not sure if that’s still in the picture.

A keyboard I build last year from an old Gamecube controller meant to chat with players online in Phantasy Star. The controller and the keyboard both function!

Thanks for taking the time to read!