Project Week

Project Week

Project 0 : Tic Tac Toe

Classwork

The first project of the course was to build a working tic-tac-toe website that was playable by two users at the same PC. I had already looked at this project during pre-work, however I had failed to get my win conditions to work at the time and side-lined the project when the class started. I never went back to the original, deciding instead to take a fresh attempt and put what I have learned into practise.

I had a wireframe prototype sorted out by Tuesday morning, it had a few odds and ends that needed to be finalised, but it was playable, I had already answered a few bonus problems involving user inputs for names and custom images (I scrapped the images in the final design). With what I believed to be a solid amount of time for experimentation I took a look at firebase. It was suggested as a framework for making online multiplayer. After 8-10 hours of tutorials, technical datasheets, and experimentation I had successfully logged in. This was not a promising amount of progress for a days work, and my understanding of what was happening did not seem to be improving either.

With day 2 as a complete write off I was left with the question of how to best utilize the rest of my time. The choices seemed to be programming a minimax algorithm to run as an AI opponent, or to dig into the CSS and design aspect and make it look flashy. My natural inclination was to make an AI, it was much more up my alley, a technical problem for me to figure out. So I went with the CSS because I need a lot more work in that discipline. I picked a theme I would enjoy, and I know there were a few fans in class too, so the whole game was Star Wars themed. Like any good Star Wars movie I needed a text scroller, some epic music, and a few memorable quotes. All of this took me far longer than I expected, and honestly the result didn't hit the level I had hoped for the time invested, but that was the point, try to learn and improve an area I feel I am weaker in.

Overall I am a little disappointed in my performance, I got over confident early, meandered around exploring different aspects and ran out of time for refined implementation, and thorough testing process. There are issues still in the game, players can choose the same name and the win condition will read them as a single person, I have an alert used when players don't enter any names, which was a band aid fix to a bug that not entering names would cause an instant win because an empty name will read true for my win conditions with all empty squares. The tie function I forgot about until someone had mentioned it the morning of presentation. I had coded one in with a console log message, but never fleshed out the function to handle it on the UI. With minimal time and a faulty win condition I just coded an instant reset. None of these bugs are world ending, but it hurts the polish of the project, and none were problems that I couldn't have handled properly if I had been more deliberate in my planning.

The moral of the story is, make a plan, stick to the plan, and make sure that I test everything thoroughly. Also don't put a 30 second un-skippable text scroller in before your functionality because it makes checking things arduous. I wish I could say I quickly realised I could bypass it with the HTML code, but there is about 90 minutes of my life I will not be getting back.

Competitive Nature

While watching 10 tic-tac-toe presentations and performing one of my own, I found myself comparing every aspect of presentations to my own. Regardless of what the instructor says about the class not being a competition, competition is how I push myself to be better. Each presentation and project had aspects that did better than aspects of mine. Watching how people ran their presentation or how readable their code was compared to mine all taught me areas that I can improve on, and ways to improve them. The whole class is very talented and as much as my ego hates to admit it, I have a long way to go to catch some of these people, but that is all part of the fun and challenge.

Outcomes

This week's outcomes lesson was on personal branding. Writing a personal brand is one of those tasks that just makes me uncomfortable. The what, how and why of my personal brand took some thinking to boil it down to some bare bones points.

What?

What unique experience do I bring through my previous career? I have worked varying roles in transport and logistics for nearly 10 years. Even early on I gravitated to supervisory roles and some project work. Working with many different stake holders including upper management, customers, employees and any other external stake holders as required.

How?

What's strengths and values do I use to achieve this, and how would people describe me? I will stick to descriptions that are fit for polite company. Team work, leadership, problem solving and thinking quick on my feet are the biggest transferrable skills I bring from my previous career. As to how people describe me, hopefully approachable and helpful.

Why?

What is my cause? what do I believe? Constant improvement is a big part of what I have always strived for professionally and and personally. I want to be a part of that improvement for people. Every program should bring a benefit to someone, make something easier, more efficient or quicker. I also try to bring that to my team work, helping people around me to solve problems, learn things, or just help support them.

Michael's Brand Statement

After nearly 10 years in the transport and logistics I am bringing my set of leadership, problem solving and team work skills to the programming industry. I will put my new talents to the test building projects that elevate people's experiences through efficiency and ease of use. Please get in contact if you think I can bring something to your team.

Networking

This week was the first in person Roro (a Sydney based ruby on rails group) meetup since Covid. Pretty good timing if you ask me as I am starting ruby on rails next week. I know I touched on networking, and my general discomfort around it, but after a very enjoyable night I wanted to dig deeper into my personal struggles with it. I do enjoy meeting new people, I can and often do talk the ear off anyone who comes near me.

So why does networking pose such a mental barrier for me. I think the answer comes from having an agenda. For me it feels disingenuous to walk into a room full of people who don't know me with a list of things I want to achieve, or looking to meet people in the hope that they may one day be helpful to me. I logically understand in my mind that I have just described every social interaction in one way or another. It is just a weird feeling to be deliberately going out and doing it. I don't really have a conclusion to this thought, and it will probably be raised in future blogs as I come to terms with this aspect of the industry.

Extras

The extras fell by the way side this week a little with the focus being on project week. So I will kick it into gear this weekend and try to put some time in with typing and reading a book, but generally this weekend I need a bit R&R.