The End of a Milestone and the Start of a Journey

“Congratulations, you just graduated! What are you going to do next?” My answer to that question probably wouldn’t be “I’m going to Disney World” (although I’m completely open to it). But how would I answer? After all, I’ve just completed a major milestone in my life. What am I going to do next? Before I answer that, let me reflect on my achievements that brought me here.
My achievements:
Swift/SpriteKit — The 8-bit Master:
After graduating high school, I went full force into learning programming on my own. I had a vision of a game I wanted to create. Although I did not have any formal/professional training in the language, I quickly got the hang of Swift and SpriteKit. I even did all of the graphics, artwork and even the music. I learned many things along the way, not just about Swift, but about software engineering in general. Before I knew it, I had a functional and pretty impressive game published on the App Store.
Flatiron School and my Portfolio Projects:
After completing my game, I realized that I should get some professional education in an employable field. I decided on full stack web development and enrolled in Flatiron school. During my curriculum, I learned many programming techniques, especially in Object Oriented programming. I further grew and improved on my previous experience in programming and learned the best practices and rules when writing and code and designing applications, along with many other things that I previously did not know.
Ruby — TicTacToe with AI:
(Many references to WarGames(1983). You have been warned.) Tic tac toe, a strange game, the only way to win against my AI is to press control + c before getting a tie. This was one of my first challenging projects with my school. My approach to building this project was a bit different than most students, basically I reversed engineered TicTacToe in order to build an unbeatable algorithm. I drew diagrams to help me visualize the logic flow of how such an AI would need to function. I went through and made notes of steps it would need to take in order to win, and also figured out how to prioritize those steps based on the state of the game. Ultimately, I built an unbeatable AI from scratch that may or may not eventually figure out “the only winning move is not to play.” This project was very challenging, especially for not having that much experience in programming, but it was a lot of fun to design, build and figure out on my own.
Ruby — Inventory Manager:
This project is a full SQL-less command-line interface database program. Why is it SQL-less? Up until this point, I had no knowledge of Structured Query Languages or how databases worked. What I did know, was how to create ruby objects in memory and relate them to each other. Now, the main premise of this project was to scrape data from the internet and allow the user to interact with that data via CLI. I read a little too much into it(actually a lot) and I ended up building a full inventory software that can Create, Read, Update, and Delete data, as well as organize and categorize that data. It scraped mock data for items from Publix’s website and as such, that took a long time. I realized that it would be pointless and take forever to scrape data every time the program ran and lose that data whenever the program quit. I looked into ways to quickly save data and decided to convert those ruby objects into hashes that can be written to a JSON file. The school’s courses never taught me on how to do this. I learned and built this parser by reading documentation and StackOverflow. In the end I had built a really impressive data manager with an intuitive command-line interface.
Ruby in Sinatra Framework — The Local Coffeeshop:
This was my first project in the world of Server Side web programming, as well as relational database design. I used technologies such as SQLite, the ORM ActiveRecord, Rake and Rack. I learned a lot about how the internet works, how browsers interact with servers on getting and posting data as well as conventions in web design, such as RESTful routing. Overall it was a great learning experience and I went above and beyond the basic project requirements.
Ruby on Rails — Coffee-Beans:
This project really cemented things I had previously learned. It also taught me about important things that make the internet the useful place it is today, such as sessions and cookies and how they work with authentication of users. I implemented views to display data using ERB and as far as the database design was concerned, I implemented something that the school had previously not taught me, polymorphic associations. You can read more about it here: https://coffee-dust.github.io/coffee-beans_social_my_rails_project
Javascript — My Coffee Table:
Learning a new language is hard, and Javascript is no different! In fact, some may argue that it is one of the most frustrating languages to learn. However, although it was very different from all previous languages I have learned, with its prototypal inheritance model and functional based programming, I did enjoy getting the hang of it and applying that knowledge to a real world use. This project really demonstrates that. With my use of OO ES6 Javascript syntax and design, event driven DOM manipulation and fetching data from my rails server and parsing that data into something Javascript can use. Overall it was a fun learning experience and I really enjoyed building this project.
React/Redux — React Coffee-Beans:
Javascript can be difficult to design and organize when you have to update the DOM and build interfaces that react to user input. It can get even more difficult to keep code organized when you have to update the DOM based on an async event, such as when you fetch and receive new data from a server. This was something I realized on my last project. JSX was a great thing to learn about and learning how the React framework can auto update the DOM when values in state changes, along with how it organizes elements into reusable components, was a great improvement over dealing with countless query selectors and adding event listeners that update values using more query selectors all while trying to connect it to a separate HTML file. Although React was a bit confusing at first, it is a very powerful tool that I am glad I learned. This project really demonstrates all the things I learned about react and I was able to build a single page version of my rails project ‘Coffee-Beans’ that can do everything, all without ever refreshing or redirecting the page.
So what about that initial question?
Along this journey, I have learned a lot and built a lot of impressive things. So what will I do next? Well, for one, I will continue to learn, grow and create software that will hopefully enhance the lives of those who use it, and find a Team/Company that will help me do just that.



