 Here in the last few days, I spent a lot of time reworking my main website because since starting my channel about four years ago, I've always wanted to maintain a website related to the channel. But the problem is I've never been happy with my website. I keep rewriting it, at least four major rewrites. When I first started the YouTube channel, I created Distrotube.com. I had that domain and I threw up a WordPress site on that domain. And I think that's what most people do when they start a website. WordPress is rather easy, right? You just throw up a quick and dirty WordPress site. But for most websites, probably 95% of the websites that people put on the web, they don't need something like WordPress. It's heavy, it's bloated, it's database driven. And for most people, a plain static HTML site would work. And that's the case for me. So eventually I got rid of the WordPress site. It was more than what I needed. I wanted something a little bit more minimal. So I created a Hugo site. I did a video about Hugo a while back. Hugo, you write everything in Markdown. And then Hugo converts your Markdown files into a static HTML website for you. It's a really cool program. So I really liked Hugo. But after a while, you know what? I just got bored with Hugo. It wasn't doing anything for me. I just got tired of actually working on the website. So eventually what I wanted was something even more minimal. So I left the web all together. I went over to Gemini. I created my own Gemini capsule. Gemini is an alternative protocol to the web. I've done videos about Gemini in the past. And what I was doing is I wanted to still have a website for people to visit. So I did everything in Gemitex, the Gemini syntax. I just created my Gemini files. And I converted them with a script I wrote into HTML. It wasn't anything that looked good or anything, but it would convert my Gemini site over to a website. And that was working for me for a little while. But I got tired of writing everything in Gemitex because these days I spent all of my time in Emacs. I write everything in org mode. So what I was really wanting to do for a while now is I wanted to convert my website over to org mode. A few weeks back I actually discussed a couple of tools, how to do this. Inside org mode you've got org export where you export files to other kinds of formats. You can convert all kinds of things such as you can convert org mode over to HTML. There's a tool called org publish, which you create a project inside Emacs. And then you do org publish and it actually takes all the org documents in that project and converts them all to HTML, creating a website for you. It's actually rather quick. It's actually really simple to create a fully functional website using nothing but org mode. So let me switch over to my desktop and show you a little bit of what I've been working on. So I've got a directory on my system called distro.tube. It's a GitLab repository. And within that I created subdirectories and these subdirectories all have org files in them. These org files, of course, when I convert them will all get converted to HTML and will create the HTML site. This is index.org. This is the index page of the site. And at the top you've got some meta information, standard information like title, description. You also have setup file, which is the location of a setup file, a setup file in org mode. This is typically where you include information about where the CSS files are located. You know, where to grab the CSS style sheets from. Then we also have a header here for options, num, colon, nil. What this is is when the outlines of some of these documents gets converted to HTML, I don't want you to include numbering in the outline. And then I have include equals a location of this file here, header.org. What this is, this is a section of code that I want to be displayed in every single document. So rather than having to write this bit of code in every single file for this website, I just want to do it one time and then have an include for header.org. What this is, it's a menu system. And then I have, and the rest of it actually is the beginning of the document itself attribute HTML. This is me adding some styling to this ping here. This is an image file. And the rest of it is a standard org document, the outlines, so asterisks and lists, you know, just creating lists. And pretty much when it gets converted to HTML, let me show you what it looks like. So let me switch over to my web browser here. And let's actually go, this is the GitLab repository distro.tube. And a good thing about GitLab and GitHub is they can render org documents. So actually the index.org here, it actually gets displayed right here inside the repository. So you kind of get to see what the site most looks like. But I've got some fancy styling actually that makes it look even cooler. If I go to distro.tube, you see that is actually the way it gets rendered. We've got this column over here of sections that as you scroll down, you can actually click these links and it would go to exactly that part of the page here. Earlier I showed you in my code the header.org. What the header.org file is, is actually these navigation links here. And most of these don't do anything. They're just empty pages that I know I'll create eventually like support DTs where this is where I'll put some information about Patreon and maybe Teespring and stuff like that. Contribute. This will be for people that want to contribute articles and things to the site. Community. This will be social media stuff where to find me. And then I have DTOS, which is empty. I know people have been asking about it. We're going to get to creating DTOS very soon. We'll talk a little more about that at the end of this video. And then I have this knowledge base. Now knowledge base, I actually have created a lot of articles because what this is, all of my show notes for my videos. So I don't do show notes for every video because most of my videos, I just hit record on the camera and start talking like today's video. There's no show notes for this. But some of the more technical stuff, the tutorial stuff that I do, typically I do make some show notes for myself. And I write all my show notes in org. So it was very easy to throw all of these show notes in this knowledge base directory. Just throw them all there. And when I export the HTML, or we get a HTML page, for example, there's my show notes about Auk from some videos I've done about Auk in the past. I've done a couple of Auk things. And I've got notes about things like Shuff. You know, I did a video about Shuff. Shuff is not a very complicated command. So there's not much to that. Got show notes about Doom Emacs. You know, you guys have seen me do a lot of Doom Emacs content. And this is some of the stuff that I had saved in an org document that I just threw into this directory. And then when it gets exported to HTML, you know, I've got this as part of a website. Let me go back to the home page here. And in the home page I mentioned about the CSS theming. So there is this GitLab repository, or actually it's a GitHub repository called org HTML themes. I did a video about this in the past, too. And basically this guy, he has a couple of really nice CSS themes where if you do one of these org-mode-based sites, you know, it'll create, here, this read the org theme, which is the one I used. It creates kind of like a read the docs clone, you know? And that's kind of the theme I did here. I took his read the org theme. And what I did is I hacked on it a little bit, adjusting the colors and adding some stuff, removing some stuff to get it, you know, more DT-like. Because I didn't like the white background, for example, I wanted something darker. Now, let me show you how I actually deploy this. So let me get back into Doomy Max. What you need to do is inside the project directory, in my case distro.tube was the name of the directory. Pick any org file in that directory. And what you want to do is run the command org-publish. Let me make sure I know the exact name because there's several org-publish commands. org-publish-current-project. And in Doomy Max that is space M, capital P, capital P. And what this does, it takes every org file in that document and converts it to HTML. And let me go to my Doomy Max config because there's some relevant code in my Doomy Max config that makes this happen. So I have this section called org-publish. And what it is, is look for a project called distro.tube. And the base directory for that project is this location here, getlab-repo slash distro.tube. And then base extension org. So look for every file that ends in .org. And then what I want you to do is convert it to HTML. And the publishing directory is getlab-repo slash distro.tube slash HTML. So it takes all the org documents from this directory, creates a HTML directory, or I already created the HTML directory, and it places all the HTML files that get exported into that directory. I also have this exclude directory saying, hey, don't go into this directory, don't export anything in that directory. This is some of the org files that are not needed. This is some of the read the org theme files. I don't want that stuff converted to HTML because it's not really part of the site. So let me go to the previous buffer here and get back into index.org. And if I do space M, capital P, capital P, you'll see a bunch of information going on. It's converting all of those org files into HTML files and placing them into that HTML directory. This will take a couple of minutes because I've got, I don't know, 50, 60 pages already in this directory structure. Now, if you had thousands of pages, you know, this could take a while doing this export for an entire project, but you can do one file at a time. In do me max, if you do space M, capital P, lowercase f, it only exports the current file you're working on. That way, if you have a thousand page website, but you only edit one page, there's no reason to export the whole project again. Just do the current file you're working on. And now that I've done that, I'm going to add the file manager here and I have HTML here and that is the directory that it placed all the HTML files. Basically, you remember index.org became index.html, header.org became header.html and then all of the directories and sub-directories and sub-articles, all of that stuff got converted to proper HTML files. And from there, the rest is easy. All I do is I push this to my GitLab, so let me get back into my GitLab here. So there is everything pushed to my GitLab and then on my web server, I just do a Git clone. A Git clone, all of this stuff here and throw it in, of course, slash var slash www slash, you know, name of domain in my case distro.tube. And this is the site. It's very easy. I was actually very impressed how easy it is to work with this stuff, especially once you get it kind of set up. If you're new to Emacs, new to org mode, new to exporting things and using org publish, there may be a learning curve at first, but once you kind of learn what's going on with it, the rest of it is just writing work files. You know, that's pretty much all I do these days, so I'm really happy that I've got that done. Now, the site is still a work in progress. Many pages are empty. There may be some broken links and things because, again, I've been working on it for three or four days, but it's nowhere near complete, so I don't have time or what I've been working on the past few days because I haven't made a video lately. And the reason is, because I'm working on this, the other thing I want to share with you guys is for the last three months, I have not had a home computer. I'm getting a home computer, though, delivered tomorrow. I'm finally getting a computer at the house. That way I can spend some time at home also working on these projects. That way I can quickly get back up to speed on working on the website. There are stories that I've been neglecting. A lot I need to work on some of those. Also, you guys have been asking about DTOS, a deployment script for my Xmone desktop. I'm going to start working on that soon as well now that I get that home computer. So that'll be tomorrow. I won't make any content tomorrow because tomorrow I actually have to be at my house waiting on that computer because it has to be signed. You have to have a photo ID and everything. They're not going to drop off a $2,000 to just leave it on the doorstep. I have to physically be there. So I'm not coming to the office tomorrow. I'm going to sit at home until I get that computer. And then once I get that computer, then I have to install Linux on it, whatever distro I decide to put on it and set everything up and make sure sync my next cloud and everything. That way I can sync between the computer at the office and my home computer. That way I can work on both of them and still get things done that I need to get done. I need to talk to some people. I need to thank the producers of this episode. I need to thank Epzegabe James Mitchell, Paul Scott-West, Kami Allen Chukker, David Dylan Gregory, Miky Hyde, Mike Irrion, Alexander Peace, Archon Fidore, Paulie Tech-Rever, Red Prophet, Stephen and willie these guys. They're my highest tiered patrons over on Patreon without these guys. This episode about writing a website entirely in org mode, it would not have been possible. The show is brought to you by each and every one of these ladies and gentlemen as well. over on Patreon because I don't have any corporate sponsors, it's just me and you guys, the community. If you like my work and want to support me, consider subscribing to Distro Tube over on Patreon. Alright guys, peace. I can't wait to play some Zero AD on my new computer.