Skip to main content

Command Palette

Search for a command to run...

What I've been working on so far ...

Published
5 min read

Introduction

So, a few weeks ago I started this blog and told you all how the reason I even started it was to track my journey to change careers into software development. As anyone who has tried to look into getting a job as a developer knows, there are way too many people out there in the pool of applicants and to stand out you have to do things to stand out and at the very least have some portfolio pieces or interesting projects that you can show off and talk about if you do get an interview.

Today I will give you an insight into what project I've been working towards and what I've learned along the way.

The Project

Since my kids and I are all neurodivergent, we tend to have this weird obsession with learning new skills and trying to master them. One of my more special interests is about meta-learning or "learning how to learn". After figuring out how to use chatGPT more effectively and using it to help me assess my learning style and things that work and don't work, I decided that I would use the knowledge I've gained about the art of learning to make and deploy my first actual full-stack website that will help with planning, prioritizing, tracking and making actionable tasks to complete for each learning "sprint".

One of the most effective ways not only I, but science has found to stay consistent with something is to have some sort of accountability and to make S.M.A.R.T. goals. I hope to put all that together in an easy-to-use site for my kids, myself, and eventually any additional users with the same love of skill development.

While the entire application is not complete, I have learned a ton to get to what I have now. Like I mentioned earlier this is my first time deploying an actual website, this is the first time I've learned anything actually involving the backend, and the first time I've made an application that connects to an actual database to do something useful.

Git

Out of all the things that I learned, the first and the one that I was the most intimidated by was learning Git. Although I only know enough to be able to setup a new repo and be able to push my commits to it from my command-line, it is definitely one of the most useful things I have learned and hope to go deeper into.

JWT

One of the things that I just finished learning that I found very interesting is how JWT (JSON Web Token) works. JWTs are used for authorization after you have successfully authenticated yourself with the backend.

JWTs use a hashing function, usually SHA256, to encode a string that will be sent back to the user so that everytime they make a request to the backend, they don't have to do an access request each time. The JWT is used with every request to check for authorization when accessing different endpoints.

Databases

You can't have a full-stack C.R.U.D. project without having a place to store all the information you are getting or presenting, that is where databases come in. I think in the last few weeks I learned more about databases and SQL than I ever did during my Bachelor's degree. I learned the differences between relational vs. non-relational databases, SQL and the alternatives, ORMs (Object-Relational Mapping) for easily making calls to a database, and all the "fun" of normalizing a database, which is where you look at all the information that you are planning to keep in your database and by following very specific rules you break that information down into separate tables with the appropriate relationships for the best query performance and storage.

Lessons Learned the Hard Way

I got pretty far into my project using certain websites for the backend and for the database, and certain modules for interacting with the database and with route handling for the endpoints. Since all this was new to me at the time, I made a lot of mistakes and found a lot of errors that were being caused by things that a more senior full-stack developer would probably find trivial, but where I'm at now was too much to deal with, which caused me to have to start from scratch multiple times.

Now, I have a working backend that is setup on Neon, my database is on Render and my frontend is on Github Pages. With this setup I was able to create a simple and FREE full-stack project that is accessible from the internet and even though it isn't much at all. I have something that is working and that can let you login for the two test users I have setup with the authentication portion working correctly and the site actually returning a JWT.

Once the site does something more interesting than just letting me know that a login for a test user is successful I will leave a link for anyone that wants to use my web app.

Conclusion

It's been a hard road so far and I'm sure it will only get harder the "deeper into the weeds" I go, I'm very excited to keep learning new concepts, and actually have a working full-stack application that does something that I genuinely think will be useful to either my kids, myself, or maybe one of you. As always, stay curious!