This is the technical blog of Keyvan Nayyeri, a 29 years old software engineer at Match.Com, speaker and author. You will find content about computer science, programming, and technology on here.
Those who have thought about starting their own podcast would already know that finding a good engine to power a podcast website is not an easy job, and most people end up at using their own custom engine or tolerating a customized version of a blog engine like WordPress and this is a universal for all platforms (e.g., PHP, Ruby, and .NET). Unfortunately, I couldn’t find a good engine available on the web, and it’s been a surprising point for me because podcasts are very common these days and unlike thousands of blog engines, there isn’t a good solution for podcasting.
Starting Keyvan.FM, I decided to implement my own engine with ASP.NET MVC and SQL Server called Hawraman to power my podcast, and after a while, I switched from SQL Server to RavenDB for the database. Recently, I joined other folks on Mash This podcast and we needed to move our site to a custom engine, and I spent some time simplifying my podcast engine to deploy and I called it Mini Hawraman.
First off, the name Hawraman would be unfamiliar to most of my readers. Hawraman is the name of a very beautiful mountainous area in Kurdistan that I always loved to visit back to the days when I was in Iran. I’ve used some project names from Kurdistan before like Behistun (powering this blog) and Abidar (task scheduler for ASP.NET).
Hawraman is a fully-featured podcast engine powered with ASP.NET MVC that initially used SQL Server as its database backend and now uses RavenDB. Hawraman is unit tested and comes with video and audio podcasting features. Hawraman is powering Keyvan.FM. Here is a brief list of features it supports:
Mini Hawraman, as its name suggests, is a minimized and simplified version of Hawraman that misses some of the features and I created as a fast solution for simple audio podcasts to get started with. With significant changes in the models, the unit tests didn’t compile and the current version doesn’t have any unit testing (no surprised since I’m a busy doctoral student who doesn’t have anything to do with .NET for his daily works).
What Mini Hawraman provides is a system to publish a set of episodes with some separate fields like title, summary, description, show links, duration, guest(s) name, guest(s) biography, and MP3 file URL. Mini Hawraman is powering Mash This.
Some of the features that Mini Hawraman supports are listed here:
I have dual motivations for open sourcing Mini Hawraman. First, as I said above, I wanted to provide a solution for all these people looking for that. Second, I want to embrace open source.
You may be wondering why I’m not open sourcing the original Hawraman instead, and the question is simple: after over 10-11 years of being on the Microsoft community, I realized that this is how it works here. You release a small thing as open source, and people are so happy about that, and praise you! There has been no reward for all my activities on the Microsoft community, and I don’t want to waste my time on something that helps others make money! Open sourcing Mini Hawraman doesn’t help in that way either, but it’s below my threshold of let it go code.
I’d wish that there are some people who pick up this code and make it better to work for a more diverse range of users.
Current version of Mini Hawraman is far beyond a code that I’d like to give to a normal user, but as I said, it’s just a fast solution. It definitely requires a basic knowledge in C# and ASP.NET MVC to initially install and configure the application, and update some hardcoded parts of settings for the users.
Having that said, I tried to simplify a few things before committing the code to GitHub. There is a simple console application provided for initializing the RavenDB database, and there are several configurations to set in Web.Config file. Other than that, some settings like podcast category in iTunes and some other stuff should be set in the programming code, so I strongly recommend viewing the whole source code before deploying anything.
I try to polish the code and make it simpler and better in the coming weeks, but the current source code is usable for production of a podcast.
Mini Hawraman is available as a public repository on GitHub and you can clone or fork the source code as you wish. This project is licensed under a GNU General Public License but I can dual license that if somebody’s looking for a better option. As is obvious, this code is provided as is with no warranties and support.
If you have any questions, comments, and suggestions about Mini Hawraman, I’d like to hear them, but implementing them depends on my free times. You can find my contact information on Keyvan.tel.