Time for Change and Cleanup
What a year and a half that it has been been! I can't imagine many other times in my life that everything has been the confused mess that it has for the past 18 months. Its amazing that no matter how much new technology is introduced and scientific proof is given there seems to be a growing number of people in the world that have relieved themselves of any matter of common sense and produce their own logic based in complete non-sense. I really wouldn't care that much normally and would just let Darwin take over to settle the matter but unfortunately innocent people are impacted by the complete idiocy of others this time. I'm not saying that you shouldn't get your concerns and questions answered, but I am saying that Dr. Facebook is probably not the best place to do so. Zuck isn't your friend, I can assure you of that. If there is money to be made from another person's pain, FB is all over it. Ask the number of developers who have either left the company or have turned down interviews with them when they cold called us... just saying.
So what have I been doing over the past 1.5 years or so? Well I've been working on a long term project that has been sitting on the shelf for way too long, spending some time trying to begin to understand Rust, at least enough to be able to make a judgment call on whether it is something I want to deep dive into. Looking very closely at Zig which I definitely want to revisit at some point. Zig looks really interesting, possibly more so than Rust for me. Spending a small amount of time traveling during the gap of goodness as I call it, that was May/June of 2021 and as you can see, making yet another change to my web page.
Why the Change?
Don't get me wrong, I really liked the layout and design of my page prior to this one. It was very professional looking IMHO and just eye catching. I have several reasons really for the change.
One is that I spent a lot of time with Haskell working on that page just getting the environment up and running, learning some of the real basics of working with the language. I found it to be a really solid language and also due to its static nature, really picky about things. To Haskell folks this is a positive as with it comes stability of the compiled code and I agree with that. I did find the development environment not something though that was to my liking, not nearly as much as Clojure or Common Lisp. So after I deemed I had given it a good investigation, I thought it was time to select something that would allow me to work in a development environment that fit me personally better and would allow me to increase my knowledge of the language that I choose.
This time it would be more about the understanding the internals of the base language and less about the general "bling" of the site. The CSS in the prior page was actually taken from another person's Hakyll site on GitHub that I went through and attempted to strip down as much as possible. However, the original code they used was actually from a WordPress site so it had gone through several transformations and was just pretty messy at the end of the day. With this new site, I wanted to either clean up that code if I was going to continue to use it, or I was going to go with something completely new that I understood the pieces much better.
The REPL Wins Out
After weighing all of these things I decided to make a change rather than continue to use Hakyll as I found that I wasn't really using Haskell outside of the web site so it didn't make much sense to continue having simply a static website leveraging Haskell for its creation. I did spend a bit of time weighing out if I wanted to try to use Rust for it, but decided against that ultimately. In the end I realized that I just love the REPL.
What is so special about the REPL is a common question that I get from people who have worked in Ruby or in Python (as well as other languages)? Their comments are generally something along the lines of, I can spin up a Python prompt/REPL also, so why is the REPL in a language like Common Lisp different, or better? This is actually something that I may do a deep dive in at some point in the future if I have the time, but I can assure you that there is a difference in the workflow of development between something like Python and Lisp. For now I will leave you with Eric Normand's video What Makes a REPL as a quick introduction that I believe does identify one of the, if not the most important difference.
I could have leveraged Clojure for this but I ended up deciding on Common Lisp, Steel Bank Common Lisp actually in the end. One of the nice features of Lisp is that there exist many flavors of Lisp out there but they will generally all follow the ANSI Standard for Common Lisp. So whether you choose Steel Bank, or Common Lisp, LispWorks, or another Common Lisp, the code will run on all of them.
I picked Steel Bank since it is considered more optimized for speed than Common Lisp and unlike LispWorks is a free option as I won't need to have the support of a pay option at this point.
The actual library that I decided upon is called Coleslaw which seems to work very nicely and does support extensions if I decide to add something that I want later. There are number of sites out there that run Coleslaw so I had access to a few blogs that talked about the configuration and setup procedures.
The Front End
What about the presentation layer? It turns out that Coleslaw does provide some themes by default but I decided to create my own theme using Bootstrap and leveraging some of the themes that exist readily out there for it. I ended up customizing a theme from Bootswatch which wasn't a terrible experience. Once I started to understand their CSS it was relatively simple to get it to look how I wanted it. There are couple of things that I still need to work out, but I think it is pretty nice now. The big thing is that I can maintain this pretty simply at this point.
Hopefully this read was both interesting and informative. It does feel good to work on this site again and throw out some new content. Something to keep my mind off of the craziness going on in the world at the moment!
Until the next blog, don't talk about it...