Categories
Uncategorized

Challenge Yourself with a Capstone

For many students, taking a capstone class is one of the final steps before they can graduate. This is the case for post-bacc computer science students at Oregon State such as myself. Your capstone project can be a great time to challenge yourself and learn new technologies and more about the software development lifecycle with a team.

We decided to create a job tracker for our capstone project. Many computer science students use excel spreadsheets or other tools to track their applications during recruiting season. Tracking your applications is useful because you can take notes on where you are in the process, when your next interview is, and when to follow up when you haven’t heard back in a while.

To create this application, we have chosen to challenge ourselves with learning new technologies. We are developing our application using React on the front end and Django on the backend. We’ve chosen to deploy our project to Google Cloud Platform and use a Postgres database. Some or most of these technologies are new to us and have taken time to learn.

Fortunately, there is a lot of documentation surrounding all of these technologies. Google provides documentation on how to set up a Django server and your local environment to develop the project. Many people have developed React projects, encountered the issues are and written solutions online.

Diagnosing problems and finding solutions online is a critical skill during the software development process. It is a given that you are going to run into problems, so you’re going to need to be able to solve them. You should work on your ability to do this, and identify how you want to mitigate them, and communicate when they do occur with your team.

Working on a team when you’re all learning new technology can be challenging. In order to mitigate issues, you should identify a plan for mitigating and solving problems before you begin your project. Then, as you encounter problems, you may identify reoccuring issues and how you want to solve those. You might encounter unique problems and create documentation so that you can teach others how to avoid them, and how to fix them should they accidentally recreate them.

Ultimately, communication is a critical component creating a project with a group. A capstone project is a great opportunity for students to learn how to work in groups and challenge themselves. It is a great stepping stone for computer science students to transition from formal education to the informal education that they will need throughout their careers.

Categories
Uncategorized

My Programming Journey

As a pre-teen and early teenager, I spent a lot of time playing video games online. My involvement in communities around the games I played exposed me to a lot of hobbies related to computers. The first that I pursued was digital design.

I spent years creating artwork on computers and still do on occasion. I progressed from creating simple artwork for my forum profiles to artwork for musicians and businesses. I wasn’t the best and I don’t always enjoy it, but I was good enough that I enjoyed helping friends and family that needed help.

One natural progression of learning digital design over a decade ago, in my opinion at least, was to learn web development. Web development was my first foray into programming. I learned HTML and CSS fairly easily. But I struggled to learn anything more complex.

In high school, we had a couple programming classes. They weren’t really advanced, or modern even. The first of which was a simple web development course that taught how to build websites using tables. The second course taught visual basic.

Visual Basic was simple enough for me to grasp some of the basic concepts like if-else statements and for loops. It made creating graphical user interfaces easy. I probably thought it was perfect back then. But I stopped programming shortly after that class ended.

During my first stint in college, I was struggling to choose a major and ended up taking a single programming course. This was my first time using Python. When I was younger, Python was recommended to me because it was easy to learn, but I still thought it was too difficult then. After this course, I would stop programming more for years again.

Now, as I’m about to graduate from Oregon State, I spend most of my time programming in JavaScript it seems, but I’m most confident with Python. I’ve been exposed to many other languages like C, C#, Rust, and Dart. I’ve learned how to use popular frameworks like React online without the help of a formal teacher.

My programming journey has been long. It has always been something that has interested me, but I guess it wasn’t the right time for me to learn it until now. When I was younger I was overwhelmed by how much there was to learn and what you could do with programming. But now, as an adult, navigating documentation is pretty much an everyday occurrence. I’ve had a great time at OSU, and look forward to continuing learning and solving problems for the rest of my career.

Categories
Uncategorized

ORMs: Object-relational Mappers

Object-relational mappers are libraries that help programmers map the database data into objects that are more easily usable in their programming language of choice. By abstracting away the database, programmers can then use their programming language to create their tables and access or modify the data in them. There is no need to write a query in your database language, which can help to speed up the development process. 

Django’s ORM

Django, a popular Python backend framework, offers an ORM that can speed up your web development. With Django’s ORM, you can create models which will be used to generate the tables in your database, and you can use the functions in the database API to then access and modify data in those tables.

Models

Each model is a Python class and contains data fields which will be the columns in the table. Django provides a wide variety of DataFields that map to the various data types available in some popular SQL languages. The DataFields can also be passed parameters so that you can set a max length for a char datatype just like you would in SQL for instance. 

Querying your Database

The database API provided by Django allows you to perform CRUD operations without ever touching SQL as well. We will use the example model from above to write some sample queries to show how this works. 

Create

Creates a user with the name Tyler Rayls.

Retrieve

Since we have only made one user, we can get the only user with the name Tyler.

Update

Changes the user’s name from Tyler Rayls to John Doe.

Delete

Deletes the only user in our database.

Conclusion

ORMs are a useful tool because they can help speed up web development. They do this by abstracting away the database so that programmers can work in their language of choice and access their data in objects they are familiar with. 

Categories
Uncategorized

Finally

The vast majority of students are looking to work as software engineers, if not all of us. Some may be interested in pursuing research or working in education, but not me.

Part of the reason I chose to study at Oregon State was the active and helpful community of students and alumni. They have played a pivotal role in me preparing for the job hunt by sharing their knowledge and experiences. However, I think I started utilizing them to the full extent too late.

Before accessing the wealth of knowledge the community offers, I had a rough idea for when to start applying and what to expect to encounter in technical interviews. I didn’t know how to handle it when I encountered it. But I was familiar with the types of problems I’d see.

Utilizing the wealth of knowledge of the community too late hurt me in the internship hunt. I didn’t start to practice for interviews early enough. I didn’t feel confident going into interviews until they stopped being offered. I missed my only chance to get an internship.

I was nervous about hunting for a full-time role after graduating, but I was now utilizing the community and knew what to do to prepare. I spent all summer practicing technical problems and enrolled in a course to prepare for interviews. It was a long summer, but I was prepared for the job hunt.

I started applying later than I think others did. I didn’t think anything of it at first. But then people started getting offers and I still wasn’t really scheduling any interviews. Eventually, I started getting responses and scheduling interviews.

I submitted a lot of applications to get some online assessments and got even fewer interviews. But I was ready for this moment, I spent all summer practicing for it. My first final round interview came and went.

I spent some time in the days following that interview, slowly becoming more and more critical of my performance. I knew where I made mistakes and how to be better the next time around. Finally, I got a response.

Finally, an offer.

If there is one thing I can say looking back at my experience, it’s that you should be persistent and make use of the resources available to you. We are fortunate to have such an active and caring community.

But you also must evaluate yourself and what you are doing. Without that, you won’t be able to identify what you can do to improve. Even when you do well enough to get an offer, there are things you can do to improve. Maybe you shouldn’t beat yourself up over these things. In fact, you shouldn’t at all, but it’s a skill that you will need for the rest of your career.

Categories
Uncategorized

A Figma of my Imagination

If you’re interested in design, chances are you have heard of Figma. Chances are you have heard of Figma even if you shut down when front end development is mentioned. Figma is a powerful tool that allows creators and developers to collaborate on designs, low fidelity wire frames, high fidelity prototypes, and more.

Cross Platform? In more ways than one.

Figma allows you create a wide variety of designs, and this starts with the frame. When a user creates a new project file, they can add a frame to it. The frame can take various shapes and sizes.

Designing an app for an iPhone 8? Macbook Pro? Generic desktop? Anything else? No problem. Just select the device(s) you have in mind, and a frame will appear with the shape and size of that device. This will serve as a constraint for the elements that you wish to be displayed on the screen.

Plug me in, Scotty

Figma is meant to make your life easier. One way that it does this is through plugins. There are a lot of plugins. The Figma community is constantly developing them, and there are some really nice ones.

Need a user avatar in your design? Draw a shape in your frame. Select it. Open up the UI Face plug in and input your constraints (sex, mood, hair color, source). Voila, the plugin just filled in your avatar with a random image from the sources you selected.

The world of plug ins does not stop here. It is vast and too expansive to cover in this post. Community involvement in Figma doesn’t stop there, however. You can also collaborate with others in real time.

FigJam

Figma includes multiple tools for collaborating with others on designs. You can invite team members to a project and edit their permissions for viewing and editing the files and workspace. There is even an audio chat feature when you’re editing a file so that you can communicate with others also editing it.

One of Figma’s coolest and newest features for collaboration is FigJam. FigJam is a digital whiteboard that allows teams to brainstorm, map out work, and more. It is just another step in easing the design process in a digital world, especially a pandemic stricken world.

Putting it to use

Figma is likely to become an even more popular tool than it is currently, and if you have any interest in design I suggest checking it out. There are multiple paid tiers and even a free version available with limited features. If you are a student, you can also sign up for the first paid tier for free and use one of the best tools on the market for your (group) projects.

Categories
Uncategorized

New beginnings…

Today marks my third wedding anniversary.

This time of year, in recent history at least, has been important for more reasons than the one I just mentioned. My son, our first child, was born a month before our first wedding anniversary. A few months later I was laid off of work.

I spent a lot of time back then contemplating returning to school and studying computer science. It abruptly became a necessity. The career progress I had made over the prior two years went from a rapid river to a slowed stream, and a dried-up bed in a matter of months.

I was back at square one.

I spent years in restaurants, working my way up into management positions where I was fortunate to be mentored by many great leaders. Everything I learned about leadership came from those people.

When my wife and I moved to New York City, I sought out new opportunities. I ended up in electronics manufacturing making accessories for bass guitars. We were a well-known and respected boutique shop. Our equipment looked good and as far as I knew, not being a musician myself, sounded good.

Though my time there didn’t lead to a career elsewhere like I imagined it would, I appreciated it. I enjoyed working alongside our engineers and wished I was doing their work more than I was mine. Returning to school to be an electrical engineer didn’t seem realistic, however.

With a push from my brother who was applying to master’s programs to study computer science, I reflected on when I was in high school and I was learning programming as a hobby. I wasn’t very good but it was something I enjoyed. It also was similar enough to the problem-solving and creating that I was daydreaming about.

So while I was just contemplating about returning to school and studying computer science, being laid off forced my hand. I had researched some programs beforehand. Oregon State University offered a post-bacc program that seemed like a great fit for me.

I immediately signed up for a Udemy course in Python. If I was going to apply and enroll in school again, I wanted to make sure I knew what I was getting myself into. I wanted to make sure I would enjoy it.

I loved it.

Now, here I am two years later. I’m about to begin working on my capstone project. It’s the last course that I have before I graduate. This wouldn’t be possible without the support of my wife. I owe her a great deal and attribute most of my success to her. I know that she is excited for this chapter to almost be over.

As I reflect back over the last two years, I think about them fondly. I’ve non-stop been learning about something that I’ve grown to love and excel at. The future looks bright.

For those of you that are aspiring or current software engineers, you know that now is also a heavy recruitment period in the industry. I’ve been fortunate to go to OSU. The knowledgeable community of current students and alumni has been paramount in preparing for this moment.

So as I look forward to completing this capstone, I hope to create something I am proud of. I hope to refine the skills I have, and I hope to learn many more along the way. And as I continue my job hunt, I hope to learn from my mistakes and relish in many successes but know that I will cherish even just one.