· News
muslu.org rebuilt from scratch
Today I rewrote muslu.org from scratch and put it live. In my first post I mentioned that I have changed the site's theme every two years since 2011. This time it is not only the theme; I also rebuilt the software that runs the site.
Infrastructure
The site now runs as a single Go program. Templates and static files are embedded in the program, so copying one file to the server is enough.
- Data lives in PostgreSQL, and frequently visited pages are served from a Valkey cache.
- Public pages contain no JavaScript. Pages are served compressed over HTTP/3.
- Old blog addresses still work. I kept the posts and database tables from the Django era as they were.
Turkish and English
The Turkish version of the site is at the main address, and the English version is under /en/. Blog posts can now be published in both languages too. Today I translated my two older posts into Turkish, and I wrote this post in both languages.
Projects
I reorganised the projects page and grouped 53 projects into 10 categories: products, business panels, AI tools, data, infrastructure, developer tools, Python libraries, browser and email extensions, websites, and education projects.
Every project now has its own page. On these pages I explain why I wrote the project, how it works and which technologies it uses.
Admin panel
I added a new editor to the panel where I write my posts. Text in the editor looks exactly as it will look on the site. I can add headings, subheadings, quotes, note boxes and code blocks with a single click:
def hello():
return "muslu.org"
A sentence from my first post applies to this work as well:
If I am going to make a change, I want to think about the future of that change too.
Other changes
- I brought the About and Skills pages in line with my LinkedIn profile.
- I removed my email address from the site. You can reach me on LinkedIn.
- External links now open in a new tab.