I'm thrilled to announce the launch of Squidtree! This project has been a work in progress since 2008, and while it continues to be so today... it's actually a real website, finally.
I’m Shaine Hatch. The most important thing for me to share with you about this fact is that I am the curator of this website. There are a number of other interesting things for me to share with you; this is in fact the purpose of the website that I am announcing to you in this very moment. While I will leave most of those secondary interesting points for future writing, I can share today that my focus lies in software engineering, the management thereof, and the hoarding of art supplies.
A Sordid and Oddly Flash-Based Background
I started programming in 2002. This is a website launch announcement and not instead a recipe, so I’ll spare you my entire life’s story, but I’m going somewhere with this.
In 2002, I was in high school, and looking back, I’d like to think that the nature of web development was also a teenager. CSS had not yet completely taken over from table-based design, and I spent a lot of time in those years learning about CSS from the masters while also reading through the arguments for and against delegating styling entirely to CSS.
During those 3 years, I also built 4-or-so Flash-based websites. 2 years after that, I was building renegade counterfeit investigation research tools in Adobe AIR, which basically brought Adobe Flash into the desktop environment, to augment the dysfunctional corporate software we were attempting to use for that purpose. A few years later, in my first official web development job, I spent a lot of time working around browser dereliction in the custom font world with a tool called sIFR or Scalable Inman Flash Replacement, which allowed us to use custom fonts by swapping out text with tiny Flash applets displaying the text in an embedded custom font. The namesake of that tool, Shaun Inman, (very) indirectly sent me down a path that eventually leads to this website.
Squidtree features a revolving color scheme that’s anchored to the seasons of the year. This post was made in July and therefore reflects an orange color, existing in a season whose heat will escalate to a bright red. Come fall, purples will be introduced as things cool down on their way to the cold blue of winter. When spring starts to warm things up again, the site’s colors will rotate through green hues, back on their way to the warm colors of summer. Any piece of content published will become pinned to the colors of its publish date, which is why different colors are displayed while navigating the website.
This color concept has been one of the biggest drivers for me to work on this site, and it has followed me around for many, many years. But I cannot take credit for it. The reason for the Flash story? Flash led me to sIFR, which led me to the creative work of Shaun Inman, who shared his inspiration about the nature of the passage of time during a site relaunch. (If the page is unreadable, you may hit this color toggle URL and then reload the page). While Shaun’s colors fade, my interest was the progression of color with time—with the non-readable mode toggled on, you can see the color effect he was going for here. (Keep in mind this page was built many years ago against different constraints, and what we see today does not resemble what we’d experienced in the browsers of the day.)
While this website has been under development since 2008, it has served its purpose over the years. There’s real, live content today because there’s real, live content to be shared. Before now, though, its purpose has specifically been to be in the process of getting developed…
…Many, Many Times
This site has been rewritten with various forms and designs to
- further develop a custom PHP framework
- learn the Yii PHP framework
- further develop understanding of Backbone.js
- self-train isomorphic React & Node
- familiarize myself with Elixir and Phoenix (twice)
Alongside those studies, many finer points were researched, such as CSS frameworks/patterns, testing frameworks, various databases, API design strategies, and a dozen other technologies and practices.
Having finally delivered a non-trivial version of the site, I can say that Elixir and the Phoenix framework have performed a miracle which no other technology combination has managed to do so far. The technology was easy to learn, it was opinionated and clear enough that I didn’t get caught up in the trap of non-development decision making, the language and framework details were engaging enough that I was able to build it as a point of entertainment in my spare time rather than treating it as a learning chore, and so much more.
The site is built mostly in markdown files on a static file server. Elixir manages a webserver to read and serve its contents, but the interesting part of this implementation involves OTP to manage processes with different responsibilities to the site.
As mentioned, the webserver is a given. Webserver requests mostly involve reading a markdown file and processing it in fairly complex ways. A GenServer is running with several ETS tables to pull in these markdown files and retain their processed copies in memory, so new requests can immediately serve the content.
Serving the content is only half of the story. With all of this content and associated metadata in memory, more useful behaviors are in place which index the content and make it available in contexts beyond just reading a document itself—a note about a book can now easily pull in every note that references the book, for example.
While not necessarily the most efficient manner of learning, I couldn’t recommend more the practice of always having a background project that just so happens to need the application of the technical skills which you do not presently possess. The combination of understanding the requirements, having interest in moving forward, but not having the necessary skills to quickly or entirely deliver creates a space within which there’s a fast track toward technical growth.
I’m excited to have Squidtree up and running at long last. This milestone marks a time when my focus is no longer on learning technology, but instead is on deeply integrating ideas and sharing the resulting insights.