I've mentioned in my previous post that the first and, probably, one of the most important steps in getting back to software development industry is a personal site. These days having online presence is probably more important than a well-written resume. Here are just a few reasons why:
I spent good amount of time last year learning and improving my photography and videography skills. I practiced my video shooting and editing for my Youtube channel. My photography experiments are shared on my Instagram, Flickr and in several Meta groups for photographers. This personal webspace can become a centralized outpost showcasing my diverse skills :)
I approached creation of my site at least a couple of times in the past. Several years ago I wanted to build it using Drupal CMS because it was a CMS I was somewhat familiar with from work projects, but after attempting to learn it in more depth I disliked it. I wasn’t able to figure out how I could implement the designs I wanted. My brain couldn’t get satisfaction from knowing just "the facade" of the architecture and it seemed that layers of plugins with their vastly disjointed user interfaces created "a perception wall" which I wasn’t able to break through.
Therefore, I applied a backtracking algorithm from CS theory and went back to learn the fundamentals of HTML/CSS along with Javascript. At times it felt like a hopeless neverending brain torture, because while attempting to learn a particular version of some JS framework or library their next iterations were arriving at the scene with changes overriding their current approaches, but I persevered and was able to stay on course. Eventually I set my eyes on React because it had reached such a wide spectrum of applications in web and mobile development and tools like Gatsby and NextJS popped on my radar. I liked their approach much better because I could see more clearly how to build things from simple components all the way to complex designs and this is how this website came along.
UI portion is built with NextJS which allows server-side generated pages which is good for SEO. No external state management libraries were used so far, just native React's state management mechanisms (i.e. hooks). Hygraph headless CMS (formerly known as GraphQL CMS) is on the server-side. GraphQL is much more versatile than REST, while headless CMS's are great alternatives to bloated traditional CMS's like WordPress or Drupal. Schema creation was quick and it was quickly modeled from Hygraph's templated solution for personal blogs. It was up and running receiving and sending data from/to frontend using GraphQL API in just a few hours. Hygraph’s CMS free plan seem to have enough bandwidth to cover my needs.
Next, I’ll try writing a few small posts about implementation details of some of the functionalities on the site. Disclaimer: they won’t be step by step tutorials guiding through the development process, but rather my notes on the decisions I took and may be some code snippets important for those functionalities.