TECH: Deer Text Format - the system powering this site, and how it can work for you
written by ida deerz on November 2, 2024
in tech, politics, webdev, capitalism, social media, enshittification, leftism, frontend development, php, website, css, technology
my personal website runs on a bespoke dynamic site generator i coded from scratch. but why? what lead me to designing and programming it? what can you do with it? and how can it be transformed into a tool for everyone to use? a deep dive into Deer Text Format, why it exists, and what lies in its future.
taking back the internet
i've been a computer user all my life; i've spent more time of my life behind a screen than not. i have been connected to the internet since at least 2006. you could argue that my parents giving me access to a computer with an internet connection at such an age wasn't very wise, but it did mean i have been familiar with social media and digital creation from a very young age. i practically grew up on web 2.0, IRC chats, Hamachi, and phpBB boards. social media platforms were also a part of that; i've been on places like YouTube, Hyves, Twitter, and Facebook since their early days, back when these types of websites were still an exception to the norm.
because at one point, the web was just... user-generated. nowadays, we are so caught up in "the web" or "the cloud" being this nebulous framework for all the tools in our daily life to run on. everything is a web app now. everything that isn't a web app gets consolidated into an app at some point. everything is a piece of software hijacking and perverting what were once just languages for creating simple documents, pages, and layouts. HTML wasn't meant to exist on a fridge!! those phpBB forums aren't a thing anymore; that's a subreddit now. those fan websites ran by individuals became too expensive and too undiscoverable, so they're on Fandom now. we live in an age of venture capitalism, where all these apps fight to become a main, centralized provider of whatever service it is that they provide. everyone is on Twitter! and the problem with that is that any megalomaniac billionaire can gain access to Twitter and run it into the ground. we are encouraged at every step to centralize our content with these businesses that become too big to fail... and then they fail... and we're left to deal with the wreckage of that. millions of profiles and writings turn into lost media because we trusted these massive platforms with our data, and they ended up breaking that trust.
the constant migration from platform to platform is not supposed to be the default. but any internet poweruser (using the modern definition of the term here) at this point is deeply familiar with the process of migration. it's referred to in complete earnesty with terms of biblical proportion; leaving a website is an exodus now. while our geographical lands are being uprooted at a similar scale by climate change at the hands of the capitalist class — 1.2 billion climate refugees by 2050 — our digital lands face destruction at the hands of the same exact people. our society has created people who live almost exclusively on the internet, and their homes are being destroyed. life in the cloud isn't the problem; it's easy to return to primitivism and reject tech, just like it is easy to blame overpopulation for all the issues on this earth. but the truth is that we could have a completely manageable earth if our resources were being equally shared; and the same thing applies for our digital earth. it is a part of our earth, a part and an extension of the physical realities we exist in every day. we have to be conscious about it and maintain it as best as we can.
cohost & social media at large
my personal journey on the web
i have had a cohost account since november 2022. i joined shortly after Elon Musk's aqcuisition of Twitter sparked one of the first Twitter exoduses. in this ever-changing social media landscape, cohost would often find itself taking on the brunt of these "exoduses", profiling themselves as an anti-capitalist take on platforms such as Tumblr. it's not just Twitter, though, as Tumblr faced its own unique community issues with Matt Mullenweg at the head of it through his company Automattic. there is a lot to be said about cohost and both its financial- and moderational practices, but i think it's fair to summarize that they grew too fast as a result of all these other platforms turning into sinking ships around them.
social media isn't fun or simple anymore. carving out a space for yourself on these platforms has turned into opening yourself up towards increasing polarization and fractionation of communities. your very participation in these platforms has meaning now, you are signaling something to your peers with it. being on Bluesky is for boring millennials. being on cohost is for furry tech nerds. being on Twitter or Tumblr is for people who lack idealism and want to stick to what they know. and every time an exodus happens, you lose touch with people. social media are, as the name suggests, supposed to be social. but there's nothing social about it when your friend group splits into twenty different directions, because your one friend is on Mastodon, your other friend is on Bluesky, then there's that one friend who moved over to Dreamwidth or Spacehey or some other obscure platform. you've been sold the comfort of everyone being in the same place, and you're so used to this that making an account on all these other platforms has now become a huge investment.
the truth is that cohost didn't solve any of these issues, they just ended up becoming xkcd 927 at that point. social media right now is more than just numbers and algorithms; those are internal dynamics that can be altered to taste, but you can't change the external forces, such as all the exoduses, the fracturing of communities, the fights over which platform is better that are fought in chatrooms and threads outside of your reach. you can build your own ship, but you can't control the weather or the waves. cohost had issues because it tried to be a safer, healthier alternative to a product in a market that cannot sustain itself healthily to begin with. they were a nicotine patch in a sea of cigarette packs. all the users were still sold the ideals of smoking by all the other platforms, and as much as they wanted to heal from it, they were still smokers at the same time. cohost had huge financial issues. cohost had moderation issues. cohost had several instances of site-wide discourse that slowly chipped away at the community. cohost was never going to be the solution to this problem. the problem is social media, the problem is consolidation and centralization of users and their resources. you can turn off the numbers, but you can't turn off all of those other things.
so after being the recipient of many an exodus, cohost now has its own exodus named after it. users once again had to scramble to stay in touch with their friends and figure out what other platforms everyone was migrating to. a lot of good came from this exodus; a handful of webrings were created, along with people making cohost groups on other platforms. other efforts sprung up, such as the Website League .
a broad consensus among users was to invest effort into personal websites again. many people moved to Neocities or other similar webhosts, many people vowed to set up an RSS feed on their websites. several efforts were created and shared in the cohost community that would simplify these processes. this really got me thinking about the path i wanted to follow after the shutdown of cohost.
the ideas behind Deer Text Format
a new way of building sites
the simple explanation of what .dtf is, is a serverside PHP parser that works with a Markdown-inspired text format. you give it text files, it transforms it into a functional website. the original idea was to build something that i could use to easily store and share my cohost posts after the platform would shut down, so a text file parser is what i settled on.
in my daily life, i use Obsidian for taking notes. i particularly like its approach of using Markdown for text formatting and adding dynamic links between notes. previously, i would take notes on my phone's notes app, but this meant being locked into the app's ecosystem; extracting notes from the app and into something else would be a tedious process in which i'd have to manually copypaste text from them into a different app. if i wanted to get a note onto my desktop, i'd just copypaste it into a Discord server with just me as its only user. now i just use Obsidian together with Syncthing. the software and i have a healthy relationship, and unlike with social media, i am not being restrained or locked in. it provides a service to me, but if i ever get enough of it, i can take my business elsewhere because i control the data it manages. all the files are stored in such a basic folder structure and such a widespread file format, i can use any other software to process them; heck, i could even use Notepad if i really needed to!
similarly, i use foobar2000 in combination with a Soulseek client on my home server and other free software such as mp3tag and Audacity to play and manage my media library. as an artist, having access to these audio files is invaluable. i can listen to them and get inspired, i can run them through a spectrum analyser and study their mixes, i can sample them in my own works... i've never been interested in streaming music platforms for this very reason: having the music files is important to my creative process. foobar2000 can work with any properly tagged media library; it's another example of a piece of software where you're ultimately not locked into its ecosystem. you can use a different media player if you don't like how it works. imagine if you had a media player that trashed your whole media library if the developers went bankrupt... or if you switched players, you'd be forced to re-tag your entire library from scratch. wouldn't that be insane? what Spotify does with its absurd distribution system and its other industry practices isn't too far off from this. while it's not really related to websites and web development, it's still another really good example of the enshittification .dtf is intended to rival.
while the ecosystem example applies much more to cohost by virtue of it being a closed social media platform, ultimately it was still a big inspiration for .dtf thanks to it simplistic, open-ended design. i know, pretty much every website uses Markdown these days, but it's still nice to have. and cohost expanded on it greatly by giving users the ability to add inline HTML and CSS to posts. similarly, since .dtf is practically just echo'ing a raw text file onto a webpage, it's entirely possible to put HTML code into it if you feel like getting more in-depth than what the basic .dtf format allows.
development on the .dtf protocol started about a week after cohost's shutdown was announced. besides all of these inspirations, i had a few goals in mind when i conceptualized it and started work on programming the first version of it.
.dtf belongs to me. what you seeing on this website is nothing more than a copy of some local files on my home server. all the files and the hosting for them are within my control. i'll never have to copypaste a hundred posts in a row after being forced to migrate from one platform to the other; in theory, i can just leave this website running until the end of time. maintaining my posts myself takes more responsibility and technical knowhow than trusting a big platform like Twitter with it, but it also ensures nobody else can do anything funny with those posts.
.dtf belongs to you. free access to information and data is important for developing ourselves as humans. as a marginalized person who grew up in a very abusive household, i haven't had the same chances as everyone else in life. but i had access to countless tutorials and courses on the internet. i had access to free programs, ranging anywhere from open-source to pirated pieces of software. i had access to political opinions and thinkpieces that informed the ways i think about the world and how i interact with it. the internet is an important source for marginalized people to emancipate themselves with. therefore, it is imperative that none of this information gets walled off. easy access to information is twofold: it requires the information to be hosted in an easy way, but it also needs to be readable in an easy way. .dtf files are written in a Markdown-inspired set of formatting rules. you can download any .dtf file from this site and keep it for personal usage, and you will still be able to read it in whichever text editor or reader you prefer! information is kept alive by it being easy to work with. and information is reinvigorated by being easy to modify and reuse. so i want to make sure .dtf is designed in a way that is minimal and simple to process for both readers and editors alike.
.dtf needs to be easy for others to use. continuing the previous thought, .dtf is designed to be as utilitarian as possible. the information i want to share through this website isn't just limited to the posts on it; the website itself and the code that runs it is also a part of the information. it would be pointless if i didn't share the fruits of my labor, so at some point i am going to look into open-sourcing it. .dtf is extremely no-frills, it can be ran as easily as just drag and dropping the files onto a server directory and letting it do its thing. i wanted to build something where all the core user-generated parts of the website are abstracted into a single, easy to edit format. each piece of text is a .dtf file, but so are the header and footer, the site's settings, the site theme... everything can be modified by changing a few lines of text, and the backend handles the rest. taking back the internet is not something that should be done in isolation, as it means creating our own decentralized networks of websites to operate within. making .dtf easy to set up and use for anyone else with the same ideals is a big part of that.
.dtf needs to be pretty and easy to look at. i've discussed making information easy to access on the code side of things, but as a front-end developer i know it's also important to make information easy to access for readers and visitors. my websites have always had utilitarianism at their core; sometimes they play around with the concept of it, choosing to hide certain elements of the site to encourage users to poke around as if the website were a physical device they interact with. the design language behind .dtf is intended to be minimal in a way where it is both easy to customize and easy to read. i want to add as many quality-of-life features to .dtf as i can, to speed up the process of making a website that is both pretty and accessible. site themes are made up of a set of user-defined colours and a font. there are various widgets (or what i'd like to call "dynamic items") built into the site formatting: things like the search bar, feeds and directory lists, image grids, divs and other page layout elements can all be inserted within the .dtf format. it's first and foremost a blogging platform, so it is meant to communicate information and text to the reader, but secondly it's meant to abstract away all the annoying parts of front-end and layout work.
.dtf needed to be operational before october. i wanted to make sure that i could direct people to a functioning website and RSS feed before cohost shut down the ability to post. this meant that i needed to have a minimum viable product up and running in just a few weeks, before the end of the month.
what can you do with .dtf?
the .dtf format includes standard text formatting rules that you may recognize from Markdown.
you can write out a list, like this one!
you can write italics, bold text, or even both!
underlines and strikethrough are available too!
links can both be external or link to other .dtf files on the server, like this!
pages use internal links to connect to eachother, through user-written links, but also through page tags. everything is connected!
this is the coolest website generator ever!
quotes are supported too!
header text
with subtitles!
there's a handful of features that are specific to .dtf, though!
did you know that these page dividers are all done within the .dtf format as well? unlike Markdown, .dtf gives you the ability to easily create and style div tags.
you can write stuff into a code block, like this!
switch ($itemExp[0]){
case ":":
$temp = explode(" = ", $itemExp[1]);
$tempArr[$temp[0]] = $temp[1];
break;
}
RSS feed
the feed dynamic item will automatically query the latest posts from the site's feed
November 2, 2024 • ida deerz • tech, politics, webdev, capitalism, 8 more
my personal website runs on a bespoke dynamic site generator i coded from scratch. but why? what lead me to designing and programming it? what can you do with it? and how can it be transformed into a tool for everyone to use? a deep dive into Deer Text Format, why it exists, and what lies in its future.
May 17, 2024 • ida deerz • cohost, technology, linux, computer, 1 more
experimenting with running a home server! ft. Ubuntu Server and Docker
May 16, 2024 • ida deerz • cohost, joost klein, eurovision, ebu, 2 more
a brief look at the politics behind the Eurovision Song Contest, how it gives states soft power over eachother, and how Joost Klein has become stuck in the middle of this.
May 3, 2024 • ida deerz • cohost, technology, enshittification, capitalism, 3 more
as technology becomes more enshittified and locked down by venture capitalists, it begs the question: am i becoming my parents? is my nostalgic appreciation for retro tech any different from theirs? will i become one of those "back in my day" people?
April 25, 2024 • ida deerz • cohost, music production, eurorack, intellijel, 4 more
i spent way too much money on a Eurorack module
auto directory
this item queries any directory on the server and links to all the .dtf files in it:
2023/12/23 - the MAIM VST plugin and Jørgen Lund's 32-bit build of it
2023/12/05 - that time the hyperpop scene literally MADE UP career-ending sexual abuse allegations about a neurodivergent artist
2023/12/03 - on the topic of plagiarism
2023/11/22 - on music libraries & foobar2000
2023/11/21 - trans day of remembrance
2023/11/01 - the visual design of 'idaidaida' and my design principles
image grids
easily create flex grids with image links using these items!
colour picker
the only JS on the entire website: an item that displays a colour and copies it to your clipboard when clicked. useful for visual artists!
#5BCEFA
light blue
#F5A9B8
pink
#FFFFFF
white
#F5A9B8
pink
#5BCEFA
light blue
auto meta, embeds, & RSS/Atom support
every .dtf file comes with a set of meta tags, such as the page title or author. these are loaded into the parser and used to generate a variety of things.
page meta! any page generated with .dtf will automatically have the correct page title and other information applied to it.
embeds! this meta is then also used to generate meta tags for use with embeds. any page can be posted on other social media and it'll have an embed.
RSS! .dtf uses the meta to generate an RSS/Atom entry which is pasted into a HTML comment. all you need to do to update your feed is view the page source, copy the entry it generated, and paste it into your feed .xml!
images
.dtf in action! from left to right, we see the parser, the config file, a theme file, and this section of the page.
automatic chapters
the .dtf parser will recognize any subtitles appended to page breaks as chapter titles. it preloads these before rendering out the page, and creates a chapter index at the top of your post!
you can go back to the top to view it.
override settings
the default settings for your website are all stored in the config.dtf file in the root directory of your website. but any individual page can override these settings. a simple example of this is setting a different theme on your page! like this!
search bar
even the search bar is its own dynamic item! meaning you can put it anywhere on your website. heck, you can even put two of them there if you want. or three. .dtf has no limit on the amount of search bars you can add. exactly as it should be.
the future of Deer Text Format
truthfully, i've never programmed anything at this scale before. i have thought a lot about open sourcing .dtf, but i've also never built anything before that was worth learning about open source for. i don't really know how this works! i will be spending some time inquiring how such a process works and how i can best make .dtf available for others to use.
i have a lot of ideas for features to implement into .dtf or other tools that could surround it. RSS is incredibly fun to work with; i wonder what the possibilities are to combine multiple feeds together into one. with the code i programmed for .dtf it should certainly be possible to load and sort a handful of feeds and display them together. perhaps there could be a more communal way of using .dtf, where multiple sites can consolidate and manage a group feed together? i'm also thinking of ways for readers to interact with .dtf posts. maybe there could be a way to operate a guestbook for each page using RSS? these are all just ideas, but i'd love to hear people's thoughts on the viability of them.
for the time being, i will continue updating the protocol for personal use on my website. if you would like to stay informed on .dtf and all the other things i write about on here, make sure to follow my RSS/Atom feed! you can also find my other socials here. if you have anything to say about .dtf or anything you'd like to add or respond to, feel free to send me an email!