Perhaps I wrote that I don’t know how to create a website, but glancing back, I certainlyhave built a lot. And oh boy, there’s quite the variety of technology involved.
I thought I’d catalog the sites I worked on and make a brief review of how they were produced. This is a testament to illustrate how varied web programming is, and how fast things change.
I could not determine a reasonable ordering. I went with quasi-reverse chronological but with groupings. There is considerable overlap in the timeframes involved, spanning way back to 1995!
The WordPress Family
EdaqasKitchen.com — WordPress.org, Python/YAML
For my cooking website, I wanted I wished to focus content more than technology. Yet, I didn’t want to compromise on my vision. WordPress fits this bill — WordPress is the illusion of a simple CMS marred by the billion-and-one ways to use/configure/program it.
I wasn’t able to find a good theme when I set it up. I took a basic one, but it has many problems. I installed an add-on to change the underlying PHP, and thus have a bunch of custom code fragments now.
The recipes are encoded in YAML files — actually a few files and images, spread over several directories. I use Python code to load them and produce the HTML output. This output is then pasted into the WordPress editor. Once the page is created there is a
--update option that uses the
wp-cli tool to update the site directly.
Configuring WordPress is a massive pain! When I get a chance, I’ll write a short introduction to terminology and concepts. There’s so much that you won’t easily discover by playing around.
Interview.Codes — WordPress.org, Elementor
My newest site, where I’ve opted for WordPress again. It seemed like a no effort step since I can have multiple sites on SiteGround — where I host these sites. I don’t enjoy doing back-end admin when I want to focus on the content.
This time I dug around more with WordPress and came upon a new type oftool: Elementor. The reason I found this is due to a theme I liked, but ended up being junk. Many themes produce pretty layouts with Elementor (or similar tools) and then try to pass it off as their theme. Once I found this, I removed the theme and used a basic one instead. Elementor is essentially a drag-and-drop design tool. It seems great for static pages, which is what I’ll have on this site.
Ultimately, something will force me to adopt a more complex solution here, it always happens. But for now, it’ll be static content, then linking off to sites like SkillShare.
mortoray.com — WordPress.com, Markdown
Mortoray.com has been my primary website for well over a decade now. When I started publishing technical articles, I wanted to focus strictly on the writing. I didn’t want the overhead of maintaining yet another site — and you’ll see from this list thatI had many of them.
Over time, the complexity increased. I found it easier to write Markdown locally. But that wasn’t enough either, so I added extensions in the Python processor. I’m working on the next generation of this now, as I have my own Mortoray Document Language in development.
There’s little I can say about the technology, as everything is managed by WordPress.com. It also means I have little room for customization. I’ve wanted to change various aspects of the layout, but without upgrading to their expensive business plan, I have no way to further customize the theme nor add plugins. It’s the motivation I had to do managed hosting for EdaqasKitchen.
LeafLang.org — Jinja, Foundation, Extended Markdown
I said goodbye to my programming language last year, but its website is still there… for now.
Differing from other sites, this one is entirely static. I use Jinja templates, but they are processed on my machine and I upload the HTML results. The HTML / CSS uses the Foundation libraries.
As the articles are code heavy, I used my extended markdown for the documents. This is the same technology I used to write all of my programming articles on mortoray.com and dev.to. It’s being replaced now, with MDL.
This will be offline soon as I’ve let the domain name expire. It’s still sad for me. 🙁
My massage and wellness company uses essentially the same set of technology as leaflang.org, except here is no markdown. The set of documents is more limited, and not technicalin nature, thus basic HTML with Jinja templates worked.
Edaqa.com — Hugo, Python/YAML
Oddly, my personal resume site is new as of last year. Until then I’ve hosted resumes and history on one of my other sites. I felt it was finally time to centralize my profile.
The domain edaqa.com was registered a lengthy time before I created the site. I used it to run experiments for myself and clients. Perhaps odd, but yes, I was okay with using my namesake domain as a throwaway playground!
I enjoy doing static sites for content — entirely appropriate for this site. There is less overhead than maintaining a CMS and no need to setup a server.
Wanting to stay modern, I tried Hugo, instead of my home-brewed solutions. Overall I’m disappointed with this decision. I don’t find Hugo offers enough to justify learning it. Though maybe it’s okay, but the themes are mostly garbage and hamper the learning process.
I generate some pages from data stored in YAML files. I hate repetition of any kind, so you’ll frequently find me using layers of technology.
A BrainBrain Diversion
BrainBrain was a CMS I built, complete with a social network style front-end. That front-end turned out to be uninteresting, but I re-used the code for several other projects.
EverSystems.eu — Custom Content Manager (PHP)
This will be offline soon, as I’m closing the company. I haven’t updated it in a long time.
I used my content management system on this server. Called BrainBrain, it had it’s own domain as well: BrainBrain.net. Initially designed as a social communications platform, more flexibility was added to adapt to my projects. It was written in PHP and had a web interface to edit articles.
I’m grown clueless about how any of this works!
This is the last act of the BrainBrain technology stack.
BigTPoker — Haxe, Flash, Custom CMS
This was a poker training site, complete with a lot of games. It’s one of the sites I’d qualify as an application more than a static website, even though there was a lot of static content.
I forgot how I managed the content, it turns out I also used my BrainBrain CMS. I wonder how much time I spent developing that thing.
disemia.com — Custom XSLT Transforms, Mortar
I kind of feel ashamed of this domain. It’s so outdated. Yet, it’s my oldest domain, the one I use in my email address. And by old, I mean old: 23 years and counting!
It’s used a mishmash of technologies over the years. I started with plain HTML — yes, the kind that doesn’t even have CSS since it wasn’t an option yet!
I moved on to Mortar, which was a web site tool for Windows. I was the lead developer on this project in the 90’s. It was a good tool, but it’s long since gone.
Riding a trend wave, I switched to XSLT for the new pages. This used some M4 to add features, then processed by Xalan.
trostlos.org — As Above + Ruby
I maintained my record label website the same way as disemia.com. I did however add some Ruby scripts and a database for the songs. I entered all demo songs and samples in a DB, then used Ruby to generate the static content for them.
Both disemia.com and trostlos.org are/were served on HostBaby. Though, disemia.com came later, as it was previously hosted at numerous locations — back in 1995 it was hard to find hosting!
In Left Field
PuzzlePuzzle.net — WebGL, Python Flask, CoffeeScript, Jinja
An attempt at creating a game in the browser using WebGL. It was an animated 3D puzzle game: the puzzle was a scene, split across typical jigsaw pieces. I blame poor WebGL support for its failure.
I wrote the pages, both text content and game wrappers, using Jinja templates with standard HTML and CSS.
I wrote my server with Python and Flask. I still like this combination for its simplicity in writing and deployment.
This is the most app-like site I’ve ever created. There was no static content, with the entire experience focused on the game. I sure wish I had made some screenshots… I wonder if I could get it running again.
WellBook.org — BrainBrain, Persephone, PHP
For a friend I developed a medicine tracking website. It focused around a calendar to track meds and the resulting mood and state of health. It was short-lived, having not gained any kind of traction.
This should probably be under the BrainBrain section, as it used that same CMS stack. However, the focus was on the app part, with the CMS for writing your own personal notes and also for the occasional update.
Looking into this code, I see that BrainBrain was using Persephone. This is a DB abstraction software I wrote ages ago at eCircle. It built PHP interfaces based on schema and query descriptions.
Redid — Python, Flask
This site is the focus of my lightning presentation, “The Two Month Startup”, which I gave at UnternehmerTUM in Munich. It was a dynamic image hosting service.
It was one of those fancy cloud based services, hosted in AWS. I used my preferred combination of Python and Flask.
It was not a “site” per se, but only an API. It provided HTTP endpoints, and served images via the CDN, but offered no kind of static content, not even for the admin interface. I wrote Python CLI’s to use the service.
I’ve not included a few websites. I had an “NRage” website, which was a kind of social experiment of letting out your anger — like if you took only the trolls from Twitter and made animated boxes. It was also using BrainBrain — I sure used that tech a lot!
I also had a short-lived writing project called PorcupineTimes, but I have no record of what technology I used. Possibly I hosted this on Medium, but I purchased a domain. I don’t know.
Plus a few static sites, like one for Doula’s. It’s kind of hard to keep track of all of them. My domain registries show far more domains, but most of them are variations of the above — though a few aren’t, like
lfbt.org which I have no memory of. Plus, hover.com only goes back to 2009, which is only about half of the time covered in my website journey. I think they’ve gone through various name and corporate changes. I tend to use NetIM more for domain names now.
This list focused on sites I did primarily for myself, or in close partnership with others. It does not include those I did as part of formal employment. Those account for only a couple more, but include some technology you might notice are absent here: namely Java and NodeJS.
It’s been quite the adventure.