Post #4: Layoffs and Feels

My dog, Lily, with her bear cape for Halloween

(Sorry that the title sounds depressing – I assure you that I kept it optimistic in the end.)

We are now less than 1 month away from wrapping up this term! It’s crazy to see how speedy the time passed since I got accepted into the program and begun studying at OSU from Winter 2021. It was also around the same time that I got an offer to work for Facebook’s (now Meta) security program management team, and I’ve been working at Meta as a contractor for almost 2 years now. It’s been a busy ~2 years, but I learned a lot.

I started off as one of four technical project manager/coordinators on the team, beginning my role around mid-December of 2020. I’m now a team lead of the same team that is now about 14 people, which is an impressive jump now that I think about it.

Why am I talking about my current job all of a sudden?

You may have guessed from the title, but this week – specifically, on Wednesday November 9th 2022, Meta announced that they’ll be laying off 11,000 employees (about 13%). Am I impacted? Well, fortunately I wasn’t impacted by the first wave of this layoff. At least, from what I can tell, as I haven’t received the bad news yet directly. However, Wednesday has been one gloomy day – internally, we are calling it a “Metapocalypse“.

This isn’t my first time at a company laying off employees; in fact, I was one of the people who got laid off from Amazon in the beginning of 2020 (right before the COVID-19 layoff wave that happened early in 2020) due to reorganization. I knew something was off few months prior to the bad news, when the projects I’ve been working on were getting shifted to another team in different office. The suspicion was confirmed when I got a meeting scheduled with my manager along with few other invitees – of course, it was the HR and director, looking a little sheepish and guilty, delivering the news to me (and others).

It’s been almost 3 years since that incident and that has given me a lot of time to digest, reflect, and move on from it. So, here’s few pointers and tips that I can share to someone who may be going through a layoff, or who’ve never been in a close situation but might want to mentally prepare one’s self for it, just in case:

  • Don’t get too comfortable in a position, even if you love it. Make sure to update your resume time-to-time.
  • Challenge yourself. Along with updating resume, maybe go through an interview once a while to see how you compete, or do some coding challenges. Keeping your skills (both technical and interview) sharp is important!
  • When you get laid off – it might feel like a mountain in front of you or falling into a pit. Take time to digest, take as much break as you need/can get, and start making strides forward, big or small.
  • Most importantly – be kind to yourself. Most of the time, layoff isn’t your fault.

I know I’ve got still a long way to go in my career and these pointers may not resonate to everyone, but I hope for those people who are still early in their career that may have been laid off to keep their hopes up and be kind to themselves. I’m also planning to start looking for a new role in December as well, and while I’ll be competing in a whole different market where many tech people will be looking for new opportunities – I hope that I can find the right company that would be a good fit for me.

Until next time.

– Fusako

Post #3: Battle of the CORS

Ever heard of CORS? For those who are not familiar with web development, CORS may be a new concept.

It stands for “Cross-Origin Resource Sharing” and there are great online resources that go over the concept such on the MDN web docs or a quick overview provided on the wikipedia page. Here’s a brief description taken from the wikipedia article on CORS:

Cross-origin resource sharing (CORS) is a mechanism that allows restricted resources on a web page to be requested from another domain outside the domain from which the first resource was served.

– Cross-origin resource sharing on Wikipedia

So What Exactly Is It?

Say you created a full-stack web application and you want to test it out locally. You’ve selected two different ports to run the frontend and backend:

  1. http://localhost:3000/ for frontend
  2. http://localhost:8080/ for backend

Frontend wants to fetch some data that’s stored in a backend server that’s hosting a database, which is currently running on the address http://localhost:8080/ so frontend decides to send a GET request to the backend with http://localhost:3000/ as the origin point.

Depending on how the backend is setup, one of the three responses will be returned:

  1. Send back the requested data along with Access-Control-Allow-Origin (ACAO) header in its response, letting the requester (frontend) know that request from that particular origin (http://localhost:3000/) is allowed.
    • It may look like:
      Access-Control-Allow-Origin: http://localhost:3000/
  2. Send back the requested data along with ACAO header in its response, letting the requester know that requests from all domains are allowed with a wildcard (*).
    • It may look like:
      Access-Control-Allow-Origin: *
  3. An error if the server does not allow a cross-origin request
    • If you have the Web Developer Tool on your browser open, you may see it in the console

It’s a way to prevent unauthorized (and unintended) HTTP requests from being made; same-origin security policy is also in place for majority of the major browsers used today in order to protect the users of these browsers from ending up in a wrong place. Browsers don’t want users to end up like Dorothy telling Toto “I’ve a feeling we’re not in Kansas anymore” like in The Wizard of Oz.

My First Hand Experience

As a naive, newbie developer that only had few experiences of coding my own personal website prior to attending OSU, when I took CS290 (Web Development) and CS361 (Software Development I) and was tasked to develop a full-stack web app during these classes, I was destined to encounter and figure out how to handle CORS.

Spoiler alert: I did.

Even after reaching a point where I’m currently developing a capstone project with my teammate, CORS has still made a comeback and managed to block our path. Since my teammate and myself have looked into this for a good few hours one afternoon/evening, I’ll be sharing how we resolved it (and later found more material on it).

The Error

Hello CORS error, my old friend, I’ve come to talk with you again

So what exactly is going on here? For quick context, we’ve decided to create a React-based frontend with a backend server that’s run on node.js and express for our capstone project (called Kaizen Manager).

When one of our team members pushed the change to the Github for our project and set up the Pull Request, I decided to test the frontend to backend connection locally, but encountered the above error when we thought we appropriately configured each end of the web app.

This is the frontend if the backend isn’t properly getting fetched
This is the frontend if we successfully get the backend data
Backend server that’s on localhost:8080/ is running fine when we directly access it, and GET request to the /api endpoint returns the message (data) we’re looking for

As we can see in the first image, we’re encountering CORS issue. The backend server on localhost:8080/ isn’t accepting the request getting sent by frontend over on localhost:3000/. What should we do?

The Solutions

We’ve come across few solutions over the course of the CORS battle, and I’ll be sharing two of the solutions we’ve found and those that we tried with our project.

One way is using the cors package, the other way is to simply define a proxy.

cors package

npm is a package manager for Javascript programming language and you can find useful packages created by other developers for you to use in your code. cors is one of such handy packages and by installing it to your project, it enables CORS.

CORS is a node.js package for providing a Connect/Express middleware that can be used to enable CORS with various options.

– Readme of the cors Module
So you can install and mark as a dependency to your backend project directory (in package.json)
Import cors into your file that’s running the backend server, and if you are using express, use it. Alternatively you can also try to specifically only accept a particular origin, e.g. localhost:3000/
Then from the frontend (this is the App.js file of the React app), point to the backend server

Then, the cors module will handle the rest. It’ll allow the request coming from any origin (based on the wildcard *) or a specified origin (the commented out code example from above) and send the data back, allowing data to flow from backend to frontend.

Set the proxy

This was discovered after learning about the cors module. React actually has a very handy way of handling CORS issues by defining proxy in the package.json file. See details here.

Just define “proxy”… it’s that simple

My teammate and I were a little dumbfounded by this simple solution; however, in the official documentation it is noted that this is only works in development (when we run the app using npm start).

In fact, in the same documentation from create-react-app.dev website, there’s a link on how to enable CORS on ExpressJS. This is something I remember attempting to implement in my previous encounter before my capstone project, but did not work. I definitely need to try it out locally and make sure I understand what is going on.

Lesson Learned

After all these encounters with CORS-related shenanigan throughout my web dev study, I find myself realizing that I still got a lot to learn; however, I do find myself becoming better at finding potential solutions and being more comfortable discussing technical problems with my teammate, which is a great asset (skill) in itself.

In fact, writing this blog post was a great way to better understand the solutions I have found at hand, and I’m excited to continue coding on my capstone project further. So, for now, thank you for reading and,

Until next time.

– Fusako

Post #2: Electric Boogaloo

My neighbor’s Halloween decoration, featuring moomoo getting zapped into an UFO. Spooky season is here!

Welcome to week #3 – as I spend my Tuesday night writing this blog post, listening to lofi hip hop – beats to relax/study to and pondering where my weekend went.

I expected this quarter to be quite relaxed; potentially taking a break from my 40 hours day job of being a Technical Project Management team lead, and focusing my energy towards wrapping up my academics and applying to job.

In reality, Bed Bath and Beyond took a dive along with the economy, and here we are sitting with my 401k account going down the stream (it’s okay, it’ll recover eventually) and dollar to yen ratio hitting an all-time record (in recent years) of 1 dollar to 146 yen. Though for the last point I did take advantage by having a <2 week vacation in my home country right before the term started, I unfortunately (or fortunately) decided to continue on with my day job. As much as I longed for the freedom and luxury of focusing on my study, I, too, am an adult that need to pay rent.

Regarding my career, I feel I am in an interesting position. I am currently a contractor for a vendor company that provides service to a multinational tech conglomerate that just announced legs to be shown in their VR tech along with a release announcement of a high-end version of their VR headset with a whopping price tag of $1499.

I work closely with the security team, which grinds their soul day and night, securing the user base of millions of users around the world. I advocate for security, work with my project coordinators to work with engineers to get things done, though it doesn’t go so smoothly as many may expect, especially if you have a technical background.

Would I be in the receiving side of such request, to properly code with security in mind, as I aspire to become one of the developers working endlessly to create a product with minimal bugs and hiccups? Or should I pursue a career continuing to be in a Technical PM side, advising and pushing agendas for engineering teams to follow.

(From Unsplash, by Tamara Gak)

The more I am in both shoes as I continue my day job and study at night, the more I feel being in a limbo. I certainly do like keeping things organized, but at the same time, I like getting actual things done with my hands. But am I going to be happy with the work-life balance as a developer that I aspire to be, or am I happy with the way I am right now? One thing for sure – is that I’m getting too comfortable in my current job.

That’s how I lost my last job, and I don’t want to repeat that again. I want to challenge myself to something new, and if the developer role doesn’t work out for me, I can always take a step back and go explore a project management-centered role again. As I get older, the career window may get narrower, but I think given the current climate, changes are bound to happen. As I write this post, I come to the realization – that I should, really get my stuff together and be ready to start tackling the long but rewarding road of job hunting.

Is future going to be certain? Well, GameStop stock is surprisingly still around and above $25 for about a year, but who knows that the next few months to year would hold. But I know from a fact that I shouldn’t be too comfortable with where I am at, and until I retire at a ranch taking care of chickens and taking care of a garden surrounded by dogs and maybe kids, I shouldn’t be afraid to try new things.

Until next time.

– Fusako

Post #1: The Last Stretch

“Time flies when you have fun!”

I’ve heard this phrase often growing up, and while the journey up until this point of my last year of my 20s hasn’t been the smoothest, it’s been fast moving ever since I’ve started taking courses at Oregon State University (OSU) in the Winter of 2021.

Now that I’ve started the (hopefully) last term at OSU, I reflect back to my childhood when I first touched my late father’s computer at his work back in the late 1990s.

The 1990s – The Introduction

I don’t have great recollection of all the details from that time, but I still vaguely remember my father showing me how to draw flowers and animals on Microsoft Paint using the mouse, shooting monsters on Doom (which my mother was not a huge fan of him showing me), and simply clicking around different features of the computer back then. This was a big step for me – it introduced my young self to technology, and its endless potential. I was hooked.

Early 2000s – Living the Generation

From then on, I continued to be fascinated by computers, games, and gadgets. I saved money to buy the latest console from Nintendo, drew digital drawings using Microsoft Paint, and eventually created my first website in GeoCities.

Then in middle school, I created a website from scratch using HTML through a class and presented it at a local Apple store. I was proud of my creation, although my parents at the time were a little embarrassed by my geekiness. Classic Japanese parents.

Late 2000s to 2010s – Transition

Then, towards high school while I continued to play MMO games on my PC, it was time to decide on my first major in college; however, Computer Science was not my choice.

You might wonder, why? Why did I decide not to pursue at least something like Game Design or some computer related degree, based on the stories told so far?

I hit a point where my interests were pointed at painting with traditional medium (like oil paints) and I simply enjoyed doing regular coursework. Computer was more of a hobby at the time, not something I wanted to pursue in career.

Hence, I went into University of California, Santa Cruz, first pursuing Theater Arts Design and eventually graduated with a degree in Business Management Economics (BME). This transition is a story for another time.

Late 2010s to 2020 – College to Working in Silicon Valley

And you might be wondering, so how did you go full circle and end up today at my last stretch in my Computer Science degree?

After graduating from UC Santa Cruz with a not-so-useful BME degree, I ended up in a contractor work at Google, working closely with engineers for localization. As I worked more closely with tech people, this was the point where I started to wonder:

“Wait a minute… Wasn’t this the people, topics, and knowledge that I was actually interested in?”

Turns out, it was. After working at Google for a little more than a year, I applied and became a Knowledge Engineer at Amazon.

I was able to work on creating new features for Amazon Alexa, and that was the point I confirmed I really enjoyed creating something from scratch, much like I enjoyed painting artwork in high school.

However, after 2 years of working there, a company re-organization happened and I lost my job, and that happened to coincide with the COVID-19 pandemic that severely impacted the job market in 2020, leading me to an year of self-reflection.

2020 – The Year of Reflection

The year of 2020 was tough, but was a year that I learned more about myself and interest. I decided to code once again, after multiple months of failed attempt at landing on jobs.

I revived my limited memory of HTML from my middle school and Java from that one class I took in college, and proceeded to learn Python, JavaScript, HTML, CSS, SQL, etc. through online courses like The Odin Project and freeCodeCamp.

Then, towards the latter half of 2020, I learned about OSU’s post-bacc program. I was already late for Fall 2020 application, so I rushed to apply for Winter 2021.

I got accepted, and fortunately or not, I also got accepted for a contract role for Meta as a TPM role. Though I was not expecting to study and work at the same time initially, I decided to try out the “working full time and pursuing a 2nd degree” route.

And Now

Here I am today, spending my daytime working as a TPM team lead and nighttime studying in my last term in OSU. It’s been a busy year and three quarters, but I’m seeing the light at the tunnel.

I am already looking towards 2023 as a year to advance my career, shifting my gear from a engineering coordination/management role to actual engineering role, which I haven’t had a chance to prepare myself quite yet, but is excited of!

I also just went back to Japan seeing my family for the past 2 weeks, and feel rejuvenated. I feel ready to tackle my last term.

Photo from my recent trip back to Japan

For those who happened to come across this post and taken the time to read, thank you! If you are fellow student like myself, I wish you the best of luck in your journey.

I don’t think the next post will be as long as this one, but until next time!

– Fusako