Welcome to the aorps.blog! At the time of writing this, the blog site is not fully fleshed out. However, it’s good enough for a MVP (it lists all the blogs and anyone can read them). The things that I will try to ameliorate going forward is to filter, development & rss).
One of the major pushes to utlimately get this website off the ground, was revamping the “Markdown to HTML” pipeline. Naively, I thought that by simply adding blogs (markdown files) would be enough to call it a job well done. However, with the addition of assets (images within the blog entries), this made a seemingly straightforward process into something more challenging. The other smaller ones (that also contributed to the challenge) were around not understanding the intriacies of Cloudflare, aka skill issues on my part. I had confidence that I configured the DNS records via Terraform correctly, but I had errorenously configured the domain to be a zero trust application months prior, so I needlessly went down rabbitholes. Luckily, when I saw the app and whispered to myself: “why it does it need an access token?”, everything began to click and after removing the site from the cloudflare’s zero trust suite, I saw my ‘glorious’ site when going to aorps.blog. The next bit revolved around not fully understanding how Cloudflare caches worked. I was under the impression that upon enabling ‘Development Mode’, I would be in the clear to see my changes.
On an earlier rendition of the site, I had no css
styling around <img>
tags, making images render at their original size. Given that I had some massive images, it made some of the blogs a complete UI nightmare and looked incredibly un-professional. My immediate fix was to just bound the images to the size of the parent tag within html. After building a version locally and verifying that the change had it’s desired effect. I went on to deploy these changes to the server. To 100% verify that I was getting fresh content, I doubled up and went into Caching > Configuration
of the aorps.blog domain and hit the Purge Everything
button. For some reason, while I ‘cleared the cache’, it still showed the old rendition of the site (where the images were much larger than what I would have hoped for). Through debugging, I was able to isolate that it was affected by the usage of Cloudflare after I verified that the behaviour worked locally on the server. Frankly, a huge amount of time was spent on a red herring. I would try searching for fixing my specific case, however whenever the word: image
and Cloudflare
, the only thing my search engine would point at is docs around Cloudflare Images. Additionally, my thinking lead me to think that maybe Cloudflare needed sites to format their images to optimize site speed. I even went as far as modifying the behaviour of the underlying markdown -> html
pipeline (some custom AST stuff), assuming that Cloudflare did an in-place substutition of images and I could get around the direct modifications to the <img>
tag by indirectly modding them. After some time I realized how silly that might be and that I should probably learn more about Development Mode
worked, and noticed that in order to actually bypass the cache, Cache Rules
would need to be configured.
While my total time debugging the issue couldn’t have taken more than 6 hours (1.5 tops). It could have asymptotically at 0! Not all is bad, through my deep diving of the Cloudflare Docs (the wrong docs), I found a small markdown flaw which I noticed and immediately fixed! My ultimate take-away from this was double-check your documentation, if you are lucky enough to have some, use it!
When I started to build this site, I had 4 main reasons for do so:
Overall, while I don’t consider this project completed. I think it would prudent to reflect on some of the statements I made within already within these 4 pillars.
Slim Down Characters
I think this is the easiest of the 4 pillars. While it seems trivial to pare medium.com/@AOrps
to aorps.blog
, it certainty brings another level of whoami
(who I am).
Grow technically
Frankly, I don’t think I have grown the amount nor the ways I wanted to. At a high-level, all I did was build a go web server on a different CSP and behind Cloudflare. The only thing that differs between this and other go web server (that I have written), is that I wanted to make use of some dependency injection techniques & go embeddings & dynamic routing. Likewise, it only poorly imitates medium.com (at least at the time of writing this), there is no strong product differentiation nor any outsized advantage. And those are only grievances on web server. I still am using a very generic nginx configuration to reverse proxy the server. While I try to strive for simplicity, I don’t know whether I am maximizing the usage of nginx. When it comes to the Infrastructure-As-Code perspective, it is still done manually and not via the gitlab managed service like I would have hoped. That’s an improvement that will pay dividends when done right, but for now I must settle for incuring some tech debt. Additionally, using spot
for configuration management has served decently, but it’s not being leveraged for more maintenance things. Currently, it has the ability to help with a full restart, but beyond that it’s not as effective as I would need it to be. Don’t even get me started on DR/BC or BCDR, where there is nothing in place to mitigate risk or acknowledge that risk (there is nothing to stop a surprise Murphy’s Law event). To make an analogy, I feel that I can see all the tools and how they interop with a block of wood to create something, but don’t have the experience to yield them all together like a master craftsmen. While this seems fairly negative, I think that this serves a launchpad of things I can improve and get better at. Some specific points that I want to try/learn are Threat Modelling via the STRIDE framework & Understanding Go Server Performance Metrics.
Create a more “authentic experience” elsewhere & Create my own version of blog.orhun.dev
This is a bit subjective, but the fact that I have been able to transition off of Medium and create this (very hacky) site has let me capture some of the things I was looking for when creating a more “authentic experience”. Additionally, I think it ties into Creating my own version of blog.orhun.dev, because beyond some aesthetic choices and endpoints, everything else is mine!
If you are thinking about the this through the simplified Product Life Cycle. I would consider aorps.blog still deeply within the Introduction Stage.
Some of the other things that I was looking to pursue were: 12-factor App & Tigerbeetle’s Tiger Style. Frankly, these I haven’t made these a large priority, due to needing to push features to get this off the ground. But I think after a couple of additional milestones, I am going to do a retrospective to understand how best to do follow both methodologies. The only significant comment to make is that I’m being to realize the dark side of a declarative approach, there is no such thing as pure declarative. To achieve something that is not cookie-cutter, requires using some imperative techniques. Perhaps, this is a bad take and I have a skill issue on this but if I wanted to create a server and then generate a Cloudflare certificate on that server. It can’t really be fully done via terraform, requiring some complicated HCL to achieve it (more to come though).
I definitely want to tackle the filter endpoint. I think that would be an interesting feature to search for similar content and definitely be a step up above other blogs. As I was thought about ways to tackle this problem simply, it immediately lent itself to be solved easily in a microservices environment. While I
Particularly, I had accidentally made aorps.blog a zero trust application, and didn’t let me access the resource.
Almostly, immediately after releasing my Goodbye Medium blog, some things came up that shifted my priority. But I wanted to ensure that by 2025, aorps.blog would be operational. Then like most Journeys, there began to be too many side quests to manage all of the achievements I wanted to hit before a proper v1.0.0
(eg, https://github.com/cloudflare/cloudflare-docs/pull/18852, https://community.cloudflare.com/t/css-for-img-tag-erased-when-shown-on-cloudflare/749390). While I am still a bit far from a v1.0.0
.
There are a number of differences between Medium.com & my custom aorps.blog site.
The realization that m