Categories
Uncategorized

Soft Skills and Career Changes

Like many millenials, I went to college immediately after high school, majored in Sociology and Anthropology, and then got stuck. With a Bachelor’s Degree in a soft science, my options were pretty limited to begin with. I was accepted into a MS/PhD program, but I dropped out a year in. At that point I knew that academia wasn’t for me – but now what?

Next, again like many millenials, I spent the next few years working various service or retail jobs. I eventually settled into the veterinary field and I did well enough. I was great at my job, but I grew to hate it. The constant stress, the emotional impact, the toxic workplaces, the abuse from clients all got to be too much for me when the pandemic hit. I had already decided that it was time to move on from that field and was already about halfway through this post-bacc program, so I quit my veterinary receptionist job. After recovering for a couple of months, I took yet another retail job to make ends meet.

As I prepare to leave this program and move on to my new career in computer science, I’ve spent a lot of time evaluating my skills. Many of us in this program are making a major career change now and it can feel like a weird position to be in. We are competing for entry level software engineering jobs with 22-year-olds and most of us are definitely not 22 anymore. We’ve been working for years or decades, so starting at an entry level position can feel like a setback in some ways. Many of us are probably leaving fields where we have built a lot of experience, so feeling like a beginner is really uncomfortable.

In order to be competitive in our job searches, I think it is important for people in our position to make it clear how our experience in other fields helped us build our soft skills in ways that people without any work experience don’t have. For example, my time in the veterinary field has helped me strengthen the following skills:

  • Attention to detail: Being detail-oriented and accurate is essential in veterinary medicine. Even small mistakes can have big consequences – in some cases, like when administering medication, it could mean the difference between a healthy, happy pet and a pet owner’s worst nightmare.
Dealing with potentially dangerous or even deadly drugs necessitates a strict attention to detail. Photo by Selasie Apeadu on Unsplash
  • Effective communication: In this field, you need to be able to communicate effectively with technicians, doctors, other clinics, and clients of all types – from the nervous new puppy parent who emails with every question that comes to mind to the elderly person who rarely uses emails at all. I’m able to talk to people who have no experience at all on a subject as well as people who know much more than I do. Furthermore, I can keep my cool in stressful situations, even when dealing with highly emotional clients.
Veterinary receptionists get yelled at…. a lot. Be nice to them. Photo by Icons8 Team on Unsplash
  • Critical thinking: I’ve dealt with many emergencies during my time in the veterinary field. Providing phone triage is one of the most important aspects of a vet receptionist’s job and you need to be able to quickly assess a situation and determine the best course of action. Being able to quickly recognize red flags and ask follow up questions, then making a decision based off of that information is something that comes with practice (and I’ve had plenty of practice).
Puppies can experience diarrhea from parasites or from parvovirus, but one of them is deadly if not treated immediately. Asking the right questions can give this pup a fighting chance. Photo by Markus Winkler on Unsplash

Being able to draw attention to these skills will help set us apart from others with less experience, so it’s a good idea to spend some time evaluating how your past experiences can translate to your potential new job.

Categories
Uncategorized

Personal Projects

Since this week’s Exploration is all about personal projects, I thought it would be the perfect week to write about one of the projects I’m planning to do once this term is over and I have more free time. This project is, in essence, a to-do list, but eventually I want it to have many more features than just that.

Photo by Thomas Bormans on Unsplash

A few years ago, a roommate mentioned that he had so many things to do but he couldn’t decide which one to do first. He said it would be nice if there was an app that would just assign him a task from his to-do list so that the decision was out of his hands. That really resonated with me and now I know why: we both have ADHD and we struggle with executive dysfunction. If you’re unfamiliar with that phrase, it basically means that we find it difficult to get started on something because we don’t know how to start or even what to start with.

The more I learn about ADHD and my own experience, the more I think an app that assigns me a task from a list of things that I want or need to do would be extremely helpful. All of the things on my list are important, but I can never decide which one is the most important (or at least the most urgent). This becomes even more of an issue when my to-do list is full of unpleasant things, like making a phone call or doing laundry.

Below, I’ve written a rough roadmap of the steps I will take to make this app and then improve it and add the functionality I want:

  1. Make a basic to-do list app (easy to do with online tutorials).
  2. Make the app randomly choose a task for you to do.
  3. Allow the user to assign an estimated time to each task, then allow the user to input the time they have available. The app then chooses a task that fits in that timeframe.
  4. Allow the user to assign deadlines. The choice algorithm will prioritize these tasks when choosing a task.
  5. Allow the user to rank tasks in terms of importance. The choice algorithm will prioritize these tasks when choosing a task.

After I get all of this working, I have a lot more ideas that will make this app more fun and motivating. For instance, gamifying tasks is a well-known and very effective way to keep someone interested and motivated. I think adding various rewards (chosen by the user) that are achieved by completing certain tasks or reaching milestones would be a great way to encourage users to complete their tasks.

Made that dentist appointment you’ve been avoiding? You deserve a fancy coffee!
Photo by Jeremy Yap on Unsplash

Another aspect of ADHD is the tendency to hyperfocus on tasks that you find interesting or exciting. I only mention this to explain why I am waiting until this class is over before starting to work on this project… I foresee this project taking up every little bit of spare time I have for a while, so it’s best that I wait until I don’t have any more assignments to potentially neglect 🙂

Categories
Uncategorized

Machine Learning & Ethics

In the very beginning of this course, after we were assigned our projects but before we had any meaningful information that would let me begin working on the project in earnest, I watched several documentaries on machine learning and artificial intelligence.

Learn about machine learning at a high level

Of course this field is incredibly interesting and full of potential, but there are so many concerning possibilities as well. I learned about robots learning to pick things up and projects that are improving driverless cars. I also learned about the ethical concerns relating to these concepts.

https://www.youtube.com/watch?v=OEoU9k5hApM
How do you think artificial intelligence will change the labor force?

Apparently it’s very difficult for robots to dynamically pick up objects of varying sizes. Humans are very good at it, but robots have to be specifically trained to pick up individual things and it’s difficult for them to adapt to differently sized things. In this way, humans still have a significant advantage over robots, but we should not assume this will always be the case.

One thing I worry about is how companies are investing into machine learning as a way to eventually replace human workers. Proponents of this plan insist that this will free people from working menial, repetitive jobs. In a utopia, this sounds great. People would (theoretically) have more free time to strengthen social and familial bonds or to create art. Given the current capitalist society, I can’t help but think that this is simply another way to pay the working class less and less money. Repetitive jobs will be eliminated, but will new jobs be created? Or will a universal basic income be implemented to provide everyone with the necessities for living? Some of these documentaries say that this is the goal, but I have my doubts.

Why should we trust those in power to act ethically when, historically as well as currently, they have never acted ethically? When faced with new social movements, capitalistic leaders have been quick to beat down laborers and pay them as little as possible, while cutting as many jobs as they can.

I understand the great potential that artificial intelligence and machine learning have to improve human quality of life. After all, computers are much better than humans at a lot of things, especially when those things are repetitive in nature. I am extremely skeptical that the people who will most benefit from “employing” highly intelligent machines will act in a way that actually benefits most people, though. Given the long history of exploitation of the poor and working classes, I think it is very healthy to be suspicious of the true benefits of robots and computers taking over human tasks.

Categories
Uncategorized

Visualizing Neural Networks

When I chose the Fire Risk Prediction as my Capstone project, I knew very little about machine learning. After five weeks of work, I still know very little about the vast field of machine learning, but I know much more about a specific type of neural network, created by our sponsor, Chester Ornes: the visual neural network.

You can read his original publication here. This paper describes the benefits of having a visualization of “the relationship between the query and the data in the training set.” It’s a great way not only to examine the data and the model to understand the relationship, but also to foster a better understanding of how neural networks work.

For me (and the rest of my group), most of these first weeks of the Capstone course have been an intense onboarding process. Our sponsor provided us with some material to start with, but it was up to us to get ourselves up to speed. This has been a pretty painful process for me, if I’m being perfectly honest. As I said earlier, I had basically no knowledge of machine learning concepts beyond that of a layperson.

I spent many, many hours trying to understand this complex topic. Thankfully, there are many resources available for that purpose. The most helpful, unsurprisingly, involved lots and lots of visualizations. One of the first videos I watched did a great job providing dynamic diagrams and graphical representations of concepts they were explaining.

Screenshot depicting the “hidden layers” of a neural network in the video “But what is a neural network? | Chapter 1, Deep learning” by 3Blue1Brown on Youtube

Watching these visual depictions, along with some excellent explanations, really started to drive the knowledge home. I feel like I have a long way to go, but I’m finally able to understand what is happening at a deeper level.

While this isn’t exactly the visualization that we’re working on, reflecting on this experience has definitely reminded me of how valuable visualizations can be in helping people understand complex concepts. It’s exciting to be working on a project that will actually implement this in a way that can help in real world situations, like predicting fire risk.

Categories
Uncategorized

Writer’s Block Got Me Like

This week has not been the easiest between struggling to make sense of a lot of new information and some new stressors in my personal life. I’m already late writing this post, but I would much rather submit something late than not at all (even if the 3 lowest grades get dropped). I cannot think of a single thing related to computer science or a career that I would like to write about right now, so I’m going to talk about my current favorite pastime instead – Pokemon GO!

I play and talk about this game ALL the time.

I have never been into video games. I would go through phases of playing The Sims and Zoo Tycoon, but I really kind of hated things like Mario Kart and Mario Party. They moved way too fast for me and my cousins got SO into them that it just wasn’t fun for me. I hated fumbling with controllers and the gloating that was sure to come when I lost (which was every time I played). Other than the occasional Sims kick, I didn’t touch video games for about two decades.

That is, until one fateful day when my partner asked me to download Pokemon GO just so that he could make a new friend in order to complete a task. I made a jokey username and added his referral code, fully expecting to delete the game later that day.

Me and my Ultra Buddy, a 3-star Magikarp who flops along with me as long as I feed him berries. Today he brought me a Snowy Pinecone as a souvenir!

It feels a little silly, but getting hooked on this game has been really helpful for my mental health. It’s winter here in Portland right now, so it has been raining more days than not for the past few months. I’m naturally a homebody and I tend to really hunker down when it’s cold and wet outside. That’s usually a recipe for a SAD season, but it’s been different this year. I still hate winter, but at least I am willing to venture outside multiple times a day – even in the rain.

I definitely wasn’t walking this much this time last year!

In addition to the increased physical activity and vitamin D, having constant goals assigned to me with useful rewards given upon achieving those goals has given me some much needed dopamine hits. Yes, the rewards are useless outside of the game and yes, my eyes are glued to my phone a little more often than I’d like, but this silly little phone game has brought me happiness and enjoyment that I never thought I’d get from a game.

There’s always rewards to work toward – and who doesn’t love bonuses?

P.S. If anyone out there wants to play, I’ll happily send you my code!

Categories
Uncategorized

Knowing When To Take A Break

I can easily get lost in a task. When I get into something, hours can pass without my noticing. This can be great sometimes – I can sit and grind away at a problem for hours if I find it interesting.

This often means that I can make a lot of progress all at once if things go smoothly. That’s not always the case, though. Bugs and other issues come up while I’m working. Most of the time I can just handle them and move on, but sometimes I’ll run into an issue that I just can’t figure out.

In many situations, being able to continue working on a stubborn problem until you find a solution is a good thing. At a certain point, it’s better to take a break and walk away from the problem for a while.

Photo by Elisa Ventur on Unsplash

It’s difficult to know when I’m at that point. I fall into the trap of thinking “I know I can figure this out if I just try one more thing.” For awhile, this isn’t a problem. Suddenly, I’ll find myself getting so frustrated that I feel physically ill. Even at that point, it’s hard to step away because, again, “I know I can figure this out if I just try one more thing.”

I know from experience that sometimes all it takes to solve a previously unsolvable problem is to take the dog for a walk and revisit the issue after a break. Sometimes the best option is to call it a day and come back to the problem with fresh eyes in the morning.

The current issue I’m dealing with (which prompted me to write this post)

Right now, I’m deciding to step away from the computer for the rest of the night. I’ve been trying to figure out why VSCode isn’t recognizing numpy anymore, even though it had been up until this afternoon. I’ve spent way too much time on this issue and I haven’t gotten anywhere. Tomorrow, I’ll start fresh.

Categories
Uncategorized

HelloWorld.ipynb

Today, I wrote my first simple program using scikit-learn, a machine learning library for Python. During our kickoff meeting, our sponsor recommended that we familiarize ourselves with this library before getting started on our project. My teammate found a helpful tutorial and shared it with the rest of us.

“Machine Learning with Python” tutorial by Programming with Mosh

Of course, the first thing the tutorial had us do was write a Hello World program. Instead of using an IDE like PyCharm or Visual Studio Code, we used Jupyter. Jupyter is helpful when writing a program that interacts with data because it allows you to view the data just below any function calls you make.

Jupyter allows you to view data just below function calls. Here, Jupyter is showing the output of describe() and values() when working with the Video Game Sales dataset from Kaggle.

After getting familiar with Jupyter and its shortcuts, we begin working on a program that predicts a person’s musical preference based on their age and sex. We are using a simple dataset with only a few attributes and we are assuming that all males within a certain age range prefer the same type of music. The same is assumed to be true about females. At this point, the intimidation I was feeling about getting started faded away. Working with such a small set of data and having only 2 factors (age and sex) made it easy to grasp.

Our first step was to train our model to be able to predict a person’s musical preference. Since we only had one set of data, we learned how to split the data into input data for training, input data for testing, output data for training, and output data for testing. We were also able to obtain the accuracy of the model by comparing the testing output (musical preference) with the actual data. Then, we played around with using different ratios of training data to testing data and saw how drastically this changes the accuracy.

Once we got a model with a sufficiently high accuracy score, we learned how to make our model persistent so we don’t have to create a new model each time we edit our program. This isn’t exactly essential for this simple program as it deals with only a small amount of data, but it would absolutely be necessary when dealing with more complex programs and large amount of data.

We also learned how to create a .dot file, which shows us the decision tree that our model creates and uses. Below, you can see the line of code that creates this file, followed by the visual representation of the decision tree.

This exports a .dot file that shows the decision tree created and used by our model.
When opened in VSCode with a .dot viewer extension, we can see the decision tree created and used by our model.

This tutorial showed how accessible machine learning is – with this help of scikit-learn, anyone who is familiar with Python and has even a small amount of data can write a program that utilizes machine learning to make predictions when tested. This program uses a binary decision tree, but there are several other approaches (including neural network, which we will be using in our Capstone project). I’m excited to start working with other components from this library!

Categories
Uncategorized

Fire Risk Prediction

I’ve been waiting to write this post in the hopes that we would get our project assignments before the first blog post is due. I’m very happy that I got my first choice, the fire risk prediction project! There were a few others that I would have enjoyed working on, but this one immediately stood out to me.

I’m a little nervous about this project, too. I’ve never done anything with machine learning or artificial intelligence, so I don’t know too much about it. The first thing that comes to mind when I think of AI is how many wonderful and disgusting cat names become possible when a computer is given basic training. The second thing I think of is the programmer who used Generative Adversarial Networks to create a generation of freakishly sort-of-believable Pokémon. Beyond that, I’m basically a layperson in this subject.

Luckily the project brief says that understanding the basics of machine learning and artificial intelligence is an objective, not a prerequisite. I expect that I’ll need to spend quite a bit more than 10 hours per week to get a good grasp on the subject and be an asset to my team. Thankfully, this is the only class I’m taking this term and my job will be somewhat less demanding after I finish my current project, so I should be able to devote plenty of time to this class.

Overall, I’m very excited to get started on this project! I know it will be challenging, but what better way to learn a new topic than to jump in with “code that could save lives”?