This website previously used the Play Framework technology, version 1.5, using the Java language.
I had made this choice for a productivity reason : Play is a framework making very many operations easier, and object oriented programming languages seem more "logical" to me. Furthermore, Java is a language I love, and with which I feel at ease.
To finish, Play Framework was the technology I was using professionnally at this time, so this developing choice allowed me to enhance my skills on the professional side as well.
But here is the thing : Play now adopted Scala as its core programming language for its version 2. Version 1.5, using Java, is not updated anymore. I then had to modernize my website by using another framework.
I figured out that if I changed the framework, I might as well change the language. I was very interested in three languages I knew very little of and had just barely looked at, Go, Kotlin and Swift.
Each language was linked to at least one framework which I was also interested in : Gin for Go, Ktor and Spring for Kotlin, and Vapor for Swift.
I chose Go and Gin because Go was the language I was the most interested in, and because if I had chosen Kotlin I would have seen it as an opportunity to use Spring, however Spring seemed a bit heavy for a relatively light project as this one.
Gin has the advantage of being light, developed in Go, and extremely efficient. However, this change was implying some components' update.
The entirety of the code needed to be reworked, to change from Java to Go and exit the Object Oriented design.
Some graphical improvements; the responsive of the website was optimized.
URLs of numerous pages were changed to be more logical (/tech/xxx & /desc/xxx -> /about/xxx for example)
Added spinning icons on the index.
Go and Gin descriptions' pages, as well as this page, were added.
Configuration was externalized, and a configuration by profile management system was added.
Customization of the logger system, with an history of the logs.
Customization of 404 and 500 errors' pages. Added an unique ID, communicated to the user, on the 500 error's pages and in the logs after an error.
Remake of the message flashing system with the help of a struct imitating its functionnality.
Management of translations, with the retrieval of the accept-language HTTP header.
In place of using the cache, we now use a string-object mapping, managed by a concurrent thread.
Goroutines were added to manage the log history and the removal of old logs, as well as temporary stored variables.
Fix of a problem on the number of seconds in the Time Machine tool, resolved when recoding the time system in Go.
Added the version number on the left of the footer.
Added social networks on the right of the footer.
Translation of error messages.
Minor changes on the Career page.
Fusion of the secondary pages to only one template for all these pages (Except this one).
UX optimized by changing the number of fields in the Time Machine tool to only use two.
Automatical completion of the sitemap.
Explanatory commenting on all the backend in the perspective of opening the source code on Github.