I've been meaning to start a blog for a while. I haven't had much of a web-presence for quite a long time now.
The main thing I wanted from it was to have a place to put my photos that I was building and hosting myself. Between 2012 and 2015-ish (with a little revival in the few years after) my main hobby was urban exploration. I spent the vast majority of my free time wandering around abandoned buildings and taking photos, or looking for more abandoned buildings to wander around in. The research and prep was an equally enjoyable part of the process and involved a good amount of sleuthing. The starting point was just reading other people's reports on 28dayslater, a big and popular urban exploration forum. The popular and well-known places were named and easy to find. After the easy finds there, I'd go on to do the same thing with smaller, personal urbex blogs and Flickr accounts, I'd look on listed building registries, in the National Archives for records of hospitals, on local news sites for mentions of derelict buildings or arson attacks. Offline, I was cycling to college daily and already going through an industrial district where a couple of big locations were, so I'd take different detours and side streets and look for telltale signs that a place was abandoned and, more importantly, that there might be a way into it.
In all, I explored over 100 different locations - often revisiting local ones - and took over 10,000 photographs. I've always posted these photos somewhere. When I first started doing urbex in May 2012 I had a Tumblr account, so that was where I posted my photos. I'd do a brief write-up and dump my photos in a single post. I don't remember specifically why I didn't post to 28dayslater. I think partially it was because I didn't feel I had much to contribute - the popular places that were easy to find and access had many, many reports already with better photos than I could take and more details on the history - and partially it was because it felt like a cliquey site, with regular posters knowing each other and using insider lingo. So I stuck to my blog, later dropping much of the write-up aspect and just posting individual photos. Sometimes they got traction and picked up a few likes and reblogs, I didn't mind too much either way.
In April 2013, on the recommendation of my then-girlfriend now-wife Immy, I signed up for Instagram and starting posting through my backlog of pictures. The experience was starkly different, there was instant feedback in a way that just didn't happen on my Tumblr posts. I remember being surprised and pleased at the steady trickle of likes that came in on my first post. The bigger change was that there was now a budding community. As well as the big #urbex tags, there were city-specific ones, and there were people posting to those tags, people who were out exploring the same places as me.
When I first started exploring, I went everywhere solo. This was pretty risky in all honesty, and definitely against the general advice. There was always the danger of falling or getting stuck or encountering undesirables, but I was young, reasonably careful, and knew my limits with things like climbing. No harm befell me when exploring alone apart from minor scrapes. Later I started going everywhere with Immy, it had really become a shared hobby for us and we'd plan trips for the weekend, excitedly messaging each other about leads and promising looking places. With Instagram, we were able to find a place in the community of local explorers. Everyone who posted on the local tags followed one another, not least because you could quickly find out when coveted abandos became accessible, or when there was some newly vacated building ripe for an explore. This too fed into the joy of the discovery process. We'd see a picture of somewhere we didn't recognise and would begin combing through all the photos looking for clues - documents with business names or addresses on, window shots with visible landmarks or at least something to compare with Google Maps or Street View - any hint of where it might be. The rules were different on Instagram, posting the names of places à la 28dayslater was discouraged, we instead tried to keep things secret and people would rarely respond to strangers asking for location details. All this was to avoid the inevitable downfall that came with a location being well-known. Locations that looked almost as if they'd simply been left one day with their contents intact were prized, but that state didn't last long if the whereabouts and the access was generally known. Things would start disappearing and being broken, attention would be drawn and the clandestine access would be discovered and sealed. If you wanted to be able to revisit places, you needed to keep them quiet unless you could trust the person you were sharing the details with.
We met and befriended a fair few people through the Instagram urbex community over the time we were active there, we would go on journeys further afield together and would send each other details of new discoveries, annotated Google Maps screenshots and complicated instructions for access - which fences to climb, which shutters were unsecured, which window boards were loose, which places had active security. It was fun, and I certainly got into a lot of places that I never would have managed on my own. But, over time, the situation changed. The issues with Instagram and the modern internet in general are wide in scope and better suited to their own blog post, though they're also already well documented. An algorithmic feed designed to drive engagement in a walled garden run by one half of the advertising duopoly that drives so much of the surveillance capitalism we live under is no good thing, but we were also experiencing our own small Eternal September. Urbex was becoming popular, new people were doing it and they didn't care about the already pretty ill-defined rules. Forums for hobbies are insular in nature, 28dayslater generally only attracted the attention of people who were already interested in urbex, or in the history of somewhere specific. Instagram was the opposite, the common denominator is just that they want everyone to join, people could find the hobby without being interested in it first. Soon, whenever a new place popped up, you could guarantee that everyone had been there within the week and the access was gone the week after. Sites that had been pristine were going into ruin at an accelerated rate, places that were easily accessible staples were getting locked down tight. I was often left comments or sent DMs from strangers asking for location details or if I could tell them anywhere good to go. I never minded sharing details with people I knew well who played by the rules, but this was different. For us, half the fun had been in finding these places ourselves and it was disheartening to see people have so little interest in that, instead just wanting shortcuts so that they could post pictures for likes. Nobody seemed to really care about the history or about enjoying the exploration, it was just about internet clout.
Eventually the situation with Instagram just made the posting photos aspect of urbex unenjoyable, it was grating to interact with the community and see the low effort stuff floating around, most of the people who were previously active who we followed closely had dropped off posting too. Our life had changed as well, once we were working full time and no longer living at home we didn't have anywhere near as much time to devote to urbex, and responsibilities only grew from there. I recently deleted pretty much all of my social media accounts because I was so fed up with them, they were a constant drain and time-sink that no longer felt like it provided me with enjoyment or value.
So, having no social media or real web-presence anymore, I wanted to start a blog. I figured I could post urbex retrospectives and likely write about the occasional technical topic as well. I like to build my own things and self-host, so I wanted to be able to do that with it too. My initial thought was a static site generator, and likely Hugo. I write plenty of markdown anyway, most of my notes are kept in Obsidian, albeit often edited in Vim. If I had only wanted the written content then that's probably what I would have gone with because it's so straightforward, I wasn't really interested in learning a new tool in some great depth for this, I wanted to be able to spend more time on the actual content. However, there was one thing that I really wanted to include aside from just having straightforward images within the blog content. Tumblr had/has a nice feature where visiting your-blog.tumblr.com/archive just shows a big grid of thumbnails for everything you've posted, this was great for aesthetic blogs and I wanted to have something similar. I planned to tag images in a semi-hierarchical way, with a top level #urbex tag and then a #place for ease of viewing, but then as I added more photos to the blog I would add thematic or aesthetic tags to produce nice pages of similar looking images.
I found a nice looking JavaScript photo galley called PhotoSwipe and a couple of GitHub repos with tools for marrying it to Hugo, but it all felt like it was a world away from the result I was envisioning. I'm sure that what I wanted to do was absolutely possible with Hugo and the PhotoSwipe plugin, but I'm equally sure that I would have garnered no enjoyment from the process of reading enough of the documentation to be able to implement it. I could take the standard trial and error approach and just fiddle until something worked, but that was likely to be equally unenjoyable and would just result in me having a slightly better understanding of something that I didn't really care about understanding. I had a desire to make a blog, not become an expert in a tool that I only wanted to configure once and then forget about. So I did the thing that plenty of devs do when faced with reading a reasonable amount of documentation, I just decided to not bother with the tool and to build something myself from scratch.
I started out by writing some raw HTML and CSS to produce a prototype with the features I wanted. I used Terminal CSS for the look because I'm awful at design and that was basically already what I wanted it to look like - a monospace-y, terminal-y, hacker-y thing. I then spent a while building the tag page layout and remembering why I don't like doing frontend work. Because I don't enjoy it and because it's never been my job, I've also missed out on the last fifteen or so years of frontend development progress, so I had some catching up to do. Eventually, I ended up with a decent enough looking tag page that looked a bit like Tumblr's archive or an Instagram feed.
The next problem was serving images properly. For the proof of concept I was just using my raw JPEGs at full resolution, which obviously meant slow loading and unnecessary bandwidth usage. By this point I'd started writing the actual generation code because I needed to throw a good amount of images onto the page to test the tag gallery layout. I've used Python for this because even though I've never used it at a day job, it's the language I have the most experience in and it's usually what I reach for when it comes to side projects and hobby coding.
I'm using the Python library Marko to generate HTML from markdown. It's simple to use and extend with custom elements that you can render into specific HTML. It can also produce an abstract syntax tree of the parsed elements which lets me do extra processing on things like the images.
For the images, I save a copy at the original resolution with a slightly lower quality as a progressive JPEG, meaning it loads as a progressively less blocky version of the image rather loading line-by-line. I then save a thumbnail at 480p and upload both of these images to Backblaze b2 cloud storage. I followed this guide by Backblaze for serving this images via Cloudflare, which means I don't have to pay network egress fees due to the Bandwidth Alliance. I was already using Backblaze for my remote backups and even though there are downsides to Cloudflare's dominance over the modern web, their free tier offering is really just too good to pass up.
I also extract a few bits of EXIF data to display alongside the photo, namely the camera model, focal length of the lens, shutter speed, f-stop, ISO and whether the flash fired. This is as much for my interest as anyone else's - the camera model and lens length certainly dates the photos, I went from camera phone to camera phone to DSLR, and then bought a fancy wide angle lens.
The original draft date on these couple of posts was 17/11/2023. When I came back to it, I couldn't believe it had been well over a year since I started this. I had been working on it with the usual vigour associated with a new project and had been sure I was going to get it out in the world quickly. I had a minimal set of features in mind that I definitely wanted before making it public to avoid scope creep and endless fiddling, but I got thoroughly stuck on a relatively minor frontend issue partway through and then abandoned the project for months.
Eventually I picked it up again though, managing to fix the problem fairly quickly and then got on with finishing up my couple of posts and outstanding MVP features.
Starting side projects is easy. Like many devs, I've got a ton of things I've started. The hard part is actually finishing and shipping them, especially persevering through the parts where it stops being fun or novel. I'm happy to work on difficult problems if they're new or interesting, but CSS layout minutiae is neither to me.
Similarly, despite considering this to be "finished" now, I haven't done the hard-but-a-bit-dull work of automating the deployment in a sensible way or cleaning up my crap proof of concept code. The main thing is that I can do what I wanted - I can write posts in markdown with custom images layouts and tagging, and I can generate some HTML that looks half decent and has image galleries. My hope is that now I can focus on actually writing some content and occasionally adding small features to the site incrementally.
I think I want to do the urbex retrospectives mostly chronologically, which means starting out with some of my worst pictures. To combat that, here's some of my favourites.