Hanalei, Hawaii 9/2/2010
438 Posts and Counting

Be a Good Jedi: Build Your Own Blog

Monday, August 10, 2009 - Every developer has a blog, and every developer bitches about it – mostly because (and this is my theory) they always think they can do better themselves. The only people who don’t bitch about their blogs are the guys who are building the engines (they just bitch about each other’s :). Rather than complain about what others aren’t doing for me :) I decided I should get constructive/proactive: Capture Yah! I did a File|New, came up with a name, got really excited and then…

Meh.

As the cascades of “Yah just another blog engine” started coming in – it hit me: Capture2 I’m actually serious. Why not? Here’s why I think it’s a good idea:
  1. It’s the perfect app for a geek who wants a blog to build – they’re the perfect domain experts
  2. It’s easy (for the most part) but gets harder and harder the farther in your dive
  3. It’s ubiquitous. What a perfect interview topic: “I’d love to see how you handled asynchronous pings to Technorati and – oh – do you have a POP feature? Also – did you use MetaWeblog or Wordpress?”
  4. It’s your calling card. If your blog rocks – likely you do too. If it sucks and it’s slow – well…
  5. It’s a great way to learn a language. Want to try out ASP.NET MVC? Compare the LOC and features to your Webforms blog – then try Rails…
  6. Luke did it – and that’s good enough for me
I’m Doing It I’m going to build my own engine – but it will be my little lightsaber. I’ll keep it on GitHub if you want to see it but I challenge you to do the same. Why not? It’s a great bit of sidework and who knows what could come of it…

Related


Gravatar
Kent Sharkey - Monday, August 10, 2009 - At the risk of bringing this again, who am I to argue with Luke?

Getting the core of the blog up and running with SubSonic should take you about the same 15 minutes the legendary RoR video takes, but please make sure all your old links line up. Enjoy Trackbacks and the usual "standards" joys.

Good luck with this. Personally, I can't really feel like bothering writing my own. Subtext does what I need (and I don't remember ever complaining about it).
Gravatar
Troy Goode - Monday, August 10, 2009 - I totally get the theory, but have to disagree on the application of it. An open source project in general is the developer's lightsaber - it doesn't have to be your blog engine. The time and effort that you would sink into recreating WordPress (or at least recreating the parts you find useful) could be so much better spent on other projects that will actually be of benefit to the community. Building a new blog engine that is inferior to existing ones rather than working on something new is a lose/lose for yourself and the community.

SubSonic (and your other past/future OSS work) is *your* lightsaber.

That said, if your intention is to actually write a new blog engine because you truly feel you can create something *new* (rather than just as an exercise in dogfooding) then by all means...
Gravatar
Josh - Monday, August 10, 2009 - I both agree and disagree at the same time.. I agonized over this before starting my blog with blogengine.net. I even found something based on Castle that I could hack up into what I wanted to do. Ultimately, I don't have the time. I having paid work and a very long side project list as well.

I think it could make a good calling card, but it has to be open sourced then. Otherwise, it means nothing. Could be smoke and mirrors. Or could be totally awesome but have a lame UI because the author is not a UI dev.

All this reminds me.. I've got some code in open source floating around the intertubes, but, uh, well.. it's been more playground/experimental/throw-away stuff. Not calling card work. Think I better clean that up.
Gravatar
Adam - Tuesday, August 11, 2009 - Star Wars != Real life
Developers != Jedi

I know a lot of developers don't want to believe these truths but it doesn't make them less true :)
Gravatar
Dave - Tuesday, August 11, 2009 - As Johnny Storm would say, "FLAME ON!"

Reinventing the wheel is asinine. Unless you have something truly innovative to contribute to blogging technology, the last thing anyone cares about is another blogging engine. Let's extend the "Jedi" concept a bit.

Why not go ahead and write your own HTTP daemon to host your blog?
Why not write your own compiler language to create your blog?
Why not write your own operating operating system to run your code?

Create something unique instead of YABE "Yet another blogging engine".
Gravatar
Kevin - Tuesday, August 11, 2009 - Wow.

The response's to Rob's post are pretty sad. SO... someone who posts information to the masses via his blog decides that rolling his own blog engine would be a good skills sharping endeavor and test his chop and wants to open source it and he gets chastised for it? I think some people feel that just because he works for MS he is expected to give the community at large something a few deem as "useful" every time.. Reminds me of the beating the Oxite guys took for opening their mvc project.

Rob, if you want to roll your own blog I say go for it.. If I want to follow your efforts I will read posts that pertain to it - if not I will simply choose not to. Either way I wont attack you for making a PERSONAL choice - thats lame and tired.

Kevin
Gravatar
Ryan - Tuesday, August 11, 2009 - For the most part I agree with the other comments sentiments about not reinventing the wheel, however, most of us do this as a hobby/for fun too. Isn't it okay to program something simply because you want to?
Gravatar
David Nelson - Tuesday, August 11, 2009 - I like the idea of creating a calling card that demonstrates your strengths as a programmer. Troy's point is well taken, but I would also point out that coming up with an original idea is HARD. I mean REALLY hard. Not all of us are going to be able to come with the next killer open source project. So if we want to do something non-trivial that we control, it probably has to be something that has been done before. Be it a blog engine or a logging library or a domain object validation framework, the time isn't wasted if you learn something from it, regardless of whether it sees the light of day in a production environment.
Gravatar
Eyston - Tuesday, August 11, 2009 - I like your idea and reasoning, but understand people who would rather do something else (aka downers).

http://blog.smarx.com/

I think this is written using ASP.NET MVC and run on Windows Azure. It also uses worker threads for some cool features. The nice thing with Azure is you get a lot of 'enterprise' features and ways of doing things without needing an enterprise (like non-RDBMS and messaging/queue/bus ... fun scaling things).

I don't recall if it is open source or not, but it definitely shows that you can use a blog as a personal exercise.
Gravatar
Khalid Abuhakmeh - Tuesday, August 11, 2009 - I like the idea but what do you hope to accomplish by writing your own blog platform (other than the good points made above)?

What features will a blog platform have?
Is this purely personal or is it a community thing?

You could probably, if not already, answer some of these questions in an upcoming blog entry. Maybe you could also approach it like you did the storefront MVC; i liked that series.

Thanks Rob and can't wait to see what you come up with.
Gravatar
John Watson - Tuesday, August 11, 2009 - You might check in with Rob Mensching who just went through that himself...http://robmensching.com/blog/posts/category/personal/page/2 the blog engine home is at...http://robmensching.com/robmensching.blog/
Gravatar
Aidan Doolan - Tuesday, August 11, 2009 - A few months ago I reviewed two open-source blog engines written with MVC. Although both looked promising, they were far from production-ready - I had problems setting them up and there were numerous bugs.

So I decided to write my own MVC blog/CMS from scratch. And yes, once I had the first 90% done, I had to finish the other 90%.

Reinventing the wheel is not accurate for my case though. I'm using lots of open-source goodness that is production-ready, like Lucene.NET. I didn't have to write any of this.

But I've now got a full MVC blog/CMS app under my belt. Very satisfying and very extensible for my own needs, without having to re-invent the wheel!

Check it at http://www.idealbinary.com
Gravatar
Bertrand Le Roy - Tuesday, August 11, 2009 - Nikhil built his own, that he's the only one to use. Might be interesting to ask him if he would do it again. I wouldn't.
Gravatar
Luke Sampson - Tuesday, August 11, 2009 - I don't know what's with all you naysayers! This is an inspiring idea... it reminds me of when I was little and I'd do things like make a drum kit out of ice cream containers. Of course it's not going to be the best sounding drum kit, that's not the point. The point was to play around and learn something at the same time. I don't know about you guys, but I definitely want to spend less time working and more time playing - building your own blog sounds like a great excuse to do that. Thanks Rob for the inspiration!
Gravatar
KevDog - Tuesday, August 11, 2009 - It's not a matter of reinventing the wheel, but designing a wheel for a particular application. The wheel for my minivan won't work on my Saturn. Though personally, I think doing an ORM is Jedi Master material, a blog is regression Jedi work.
Gravatar
Rick Ratayczak - Tuesday, August 11, 2009 - I would also like to add that SubSonic is your Lightsaber.

Instead of creating a blog, how about finishing the CMS portion of the subsonic demo for 3.0, and adding blogging features to that. Not only is it a good starting point, but the line between CMS and blog is thinning every day.
Gravatar
Gokul - Tuesday, August 11, 2009 - Rob,
I might be requesting the same feature again.The framework which we can just open and start working on is what we miss between PHP world and .net

Good examples are cake php, & the killer blog app from the LAMP world(Wordpress).


Can we have the features of public, private areas for content management and make the blog a feature of this application.

Whoever wants to manage their site with this app can have custom pages and blog as a part of their site.
The templating concept should be very simple so any designer can design it.
I can write the whole requirements here... but I am not sure whether you are interested this route.
Let us know your thoughts on this.
Gravatar
dario-g - Tuesday, August 11, 2009 - Rob:
You are thinking the same way as me. I'm building my own Mini/Small CMS with blog engine as an additional future. I need this for my own company for quickly building sites for my clients. After checking couple of options I decided to build my own and this is great.

My dev stack: ASP.NET MVC, NHibernate, jQuery, StructureMap.

My idea: method for very simple editing content by clients without messing in html.
Gravatar
alberto - Wednesday, August 12, 2009 - Why don't you collaborate with an existing one instead of reinventing the wheel? There is this guy with his blog engine you may have heard of, Phil Haack ;)
Gravatar
Jonathan Danylko - Wednesday, August 12, 2009 - Rob,

Did it and I'm so glad I did. I'm currently reworking my entire site with ASP.NET MVC and it's coming along great.

I don't understand why programmers look at me like I have three heads when I said I built my own blog engine and CMS for my blogs (my CMS is called Backstage). I'm also currently working on a social network with ASP.NET MVC.

When I built my blog, I realized (as mentioned by Gokul above) is that you need a CMS (Content Management System) of some type so you're actually building two sites, right?

The great thing about writing your own engine is that you can take it any direction you want. Heck, it's your blog. :-) I even ping services into the site.

I hope this spurs some developers to create their own engine. It may seem unnecessary at first, but in the end, it's worth it.

Like Rob said, "Every developer has a blog, and every developer bitches about it."

Then do something about it! :-)

JD
Gravatar
Jamie - Wednesday, August 12, 2009 - As a side project I've begun writing my own blog - I think its a rite of passage that most programming bloggers at least attempt during their blogging "careers"! :)
Gravatar
Michael - Wednesday, August 12, 2009 - Shouldn't you be working on Kona? :)
Gravatar
Miguel de Icaza - Wednesday, August 12, 2009 - I wrote my own blog engine (Lame Blog) which is not exactly very feature rich.

It merely generates static files, and requires no server side processing. Comments are handled by third parties (disqus).

The advantage is clear: every time I write a blog entry, I run the command, burn an ISO with a Linux image, and reboot the machine. Since there is no storage, but only read-only media, I can bypass hackers that might try to break into the system.

I know, genius.
Gravatar
Seth - Wednesday, August 12, 2009 - Let the man build his own blog! I've built things (where I've KNOWN there were better things out there) just to figure things out. It is fun. If you don't think writing code is fun, then be an accountant or something.
Gravatar
Jeff - Friday, August 14, 2009 - Hrm, I think I might do the same...

My problem is taking the time to sit down and blog.. Tough to take the time to blog when no one reads it!
Gravatar
phenryll - Saturday, August 15, 2009 - I am sure Rob's blog engine is going to be great! ;)

Rob, can you communicate any release date?

Subtext works fine but the default database is sql server; Phil Haacks said he would rewrite the engine to conform with the MVC pattern, but when is he doing it? Phil works on the new MVC 2; it does make sense he is doing his new blog engine after MVC 2 would have been released.

Imagine a blog you can choose which database to use for storing everything, subsonic leveraging the whole engine, ... Frankly, I just cannot wait ;)

Good luck and don't forget to post regularly about it.
Gravatar
jeffa - Sunday, August 16, 2009 - I too am working on a CMS/blogging system for my own use.

I see several benefits for doing so:
1) Gives me a real project to work on using MVC
2) Forces me to think deeply about standards (both de facto and published)
3) Existing blog engines give me a standard of comparison to know how well I did
4) I can cherry pick a feature set I like from all the existing sytems

I have no doubt that I could be up and running more quickly with the various projects I'm planning if I used WordPress or BlogEngine.net (or any of the dozens of other really good blog systems out there), but I would miss the learning opportunity.

This will be the second blog engine I have built. The first used WebForms and runs two sites: http://funzietown.com (my webcomic) and http://ggmug.com (my user group site -- Gwinnett, Georgia, Microsoft User Group). That one started life as just webcomic software, but when BlogEngine blew up on me (on New Year's Day, no less) it was pressed into service for GGMUG. It sucks as a blog engine. I never finished it. But I learned a lot from the experience and am baking those lessons into the new MVC system.

Like Rob mentioned, I'm not doing this for other people to use. This is MY lightsaber, er, I mean blog/webcomic doo-dad. I don't plan to release the entire thing as open source. I do plan to release certain sub-projects, but not the whole thing.

Those of us who do such a thing KNOW we are re-inventing the wheel, but then so do the people who build their own aircraft, cars, bikes, etc. To quote Paul Newman in Cool Hand Luke "It'd be something to do."
Gravatar
Joe Chung - Sunday, August 16, 2009 - I'm curious what's so wrong with WordPress that you want to write your own.
Gravatar
Brian - Monday, August 17, 2009 - I'd say that any geek needs to have his own project--if all he only works on work projects, he's not really a geek, he just pretends to be one at work. Having a blog engine as your project is pretty cool because it really can represent you--the underlying technologies, simplicity/ features, etc. It is not reinventing the wheel but rather making your own wheel (will it be wooden, metal, plastic, or some hybrid, like metal & rubber?).

Honestly, I really envy Rob's decision to make his own. I want to make one too, because there are *no* blog engines I've seen that have everything I want.

Good luck with your blog writing, Rob, but I am more likely to make my own than use yours. ;)
Gravatar
JM - Sunday, August 23, 2009 - I like the idea of writing your own blog but just curious about something, why not get a start up going. With you being semi well know in the coding world, I would think you could pull an Atwood and come up with a pretty cool start up. Maybe not what you're looking for. Any road, best of luck to you. Subsonic 3 looks really good.
Gravatar
Omar Colocci - Tuesday, September 01, 2009 - Well, first of all, I have to agree that writing a blog is a great first project for learning a language. I'm a newbie on several web technologies (as programming is now a mere hobby to me, from something I started learning still in early 90's), and I'm also quite interested in a few ruby frameworks (not only Rails), and at the same time, as a newbie, I'd not be of much use on any open source project. A blog is a CRUD application, for starters, and later it's a nice bridge to learn other technological approaches that can be applied to this kind of application and which are useful in other contexts as well.
Gravatar
Salman - Thursday, October 08, 2009 - Funny I was just about to go with wordpress, but I noticed a pretty popular blog had some footer spam (via a WP exploit), so I decided to roll my own (.net mvc).
You can see the tweet here: http://twitter.com/debugging/status/4561962810