
Be a Good Jedi: Build Your Own Blog - mrssukhaprada
http://blog.wekeroad.com/blog/be-a-good-jedi-build-your-own-blog/
======
patio11
This is developers thinking like engineers when they should think like VP of
Sales. What does writing a blog say about you? That, given the choice between
paying $50 for a Wordpress blog template or paying $5,000 for your salary for
two weeks, you'd pick the second option and deliver a crappier product at a
hundred times the cost _in a field that the decisionmaker doesn't care about
anyway_.

Better to spend those two weeks working to make your online
portfolio/resume/sales letter (every developer should have one) absolutely
sing.

~~~
jrockway
Of course, if you write a blog to learn new skills, you now have two things;
new skills, and code to prove it. You are not in the top 0.001% of candidates
looking for work (if you are looking for work, which most people that write
their own blog aren't; they already have good work).

~~~
jrockway
s/not/now/. What a terrible typo :)

------
jrockway
I did this. It's taken me three revisions and 5 years and I still haven't
gotten anything I like.

A few pieces of insight that I think I'm right about:

\- blogs are not dynamic. no code should run when someone visits your site.
(or requests your atom feed.)

\- content management is just linking. a blog is a graph. a site depends on
pages. the main page depends on pages. each blog post depends on a template.
the template depends on javascript, css, images, and content. the content also
depends on images. once you resolve the links and generate a bunch of files
that a web server can understand, you have the One True generic CMS.

Some day I will figure out the right abstraction for this. But not today :)

~~~
jacques_chester
I run a modest little blogging network (<http://ozblogistan.com.au>) and I
disagree. Blogs are quite dynamic. My users want, inter alia:

* Comments on stories that appear seconds after posting

* Latest-comment lists (this one is a performance nightmare for anything other than the simplest cases)

* Navigability by category, author, tag, date

* Twitter integration

And so on and so forth.

There are, basically, two platonic models of web applications. The first is
the compiled, the second is the dynamic. Compiled web applications perform all
computations in advance and reduce to static resources. Dynamic web
applications perform all page rendering on-the-fly and only a small subset of
a page is static (JS, CSS and images, mostly).

Naturally, most apps fall in between on the continuum. For example, Movable
Type used to have a simplistic compilation scheme that would rebuild large
portions of the site due to small changes. For a while one of the selling
points of Wordpress was that it updated instantly. But that too came at a
price, and now on any busy site using it, Wordpress is usually chaperoned by a
bodyguard of caching systems.

My personal thinking is that the sweet spot will be in managing changes to a
site through queueing and selective compilation. This is what we have in
practice, but I want to move the key queue from GET -> cache -> app -> db to
being POST -> db -> app -> cache.

~~~
nzmsv
If I were writing a blog engine right now, I think I'd do something different:
make the post itself static, and pull in any dynamic content via AJAX. That
way old browsers still get a readable compatible page (just don't load any
fancy stuff), and for everyone else the blog works like any dynamically
generated one. And fine-grained caching can be had for free.

~~~
jrockway
I agree here. It's especially nice things like "posted x minutes ago". Murder
for caching, but easy for Javascript to compute.

------
mcav
The best way to learn a language/framework/skill is to build something with
it. A blog can be straightforward, personal, and interesting to work on.
Building your own blog is a great way to advance your skills, particularly
when you're new to the technology you're building it with.

My current blog is static content generated with Clojure. My previous blog was
generated with Python. It's good to have something you can tinker with in your
free time. Get out there and work on _something_. There's nothing wrong with
building your own blog. "Productivity" be damned.

~~~
kapilkaisare
A corollary: The best way to learn a language or framework is to solve a
problem with a known solution.

When you're building a blog for the nth time, your only focus is on the
language/framework features you'll be using to express your solution, not the
solution itself.

~~~
jacques_chester
Reducing confounding factors in experiments comes under the heading of
Science! (exclamation mark optional).

------
zephjc
I made one some years ago in Python, and a simple templating system for it,
which "compiled" to Python too, and read/wrote article and comment data with
MySQL.

Then I realized I had nothing blog-worthy to write about :-)

~~~
SapphireSun
My girlfriend convinced me that even if you have nothing you think worth
writing about to say, SOMEONE will find it interesting. Try it out. :-)

------
Derferman
Instead of writing your own blogging engine, I would suggest using one of the
many extensible blogging platforms as a base and building from there.

I personally have become a huge fan of statically-generated blogs (using
Jekyll[1] for Ruby or Hyde[2] for Python) as they integrate great with version
control and require little maintenance. Another benefit is speed, as nginx
serves static content with ease.

[1]:<https://github.com/mojombo/jekyll>

[2]:<https://github.com/lakshmivyas/hyde>

~~~
dm3
Also, github integration with jekyll is great. You just push your post to the
repository and voila!

------
noahlt
Alternatively: be a good Jedi and write your own Lisp.

------
postfuturist
Yeah, I built my blog (blog.deliciousrobots.com) in Django in my free time,
importing old entries from my Wordpress blog. I'm thinking about rebuilding it
in Rails or Sinatra or node.js / CoffeeScript or Common Lisp or whatever else
seems fun/interesting at the moment.

------
whackedspinach
I've done this. It isn't really fancy or complicated. It was the first thing I
built with Django (My first web app actually!). It isn't done yet, as I still
have to add syntax highlighting and better Textile support. Also, I currently
add posts using a script instead of a web GUI, so that could be added. Also, I
suppose I could add comments, but I just don't care much for them (on the page
I mean). Maybe just a link to a Disqus thread...Defiantly do it. It isn't
hard, and it is a great learning experience.

~~~
unoti
Use Django admin for adding the posts!

~~~
ctoneal
Definitely this. One of the real benefits of using Django is that the admin
panel is already there. Adding items to be added by the admin panel takes
minimal effort, and really simplifies things.

Once you start using the built in admin panel you'll be infinitely grateful
that you don't have to roll your own anymore.

------
joshu
I did this once. Before the word "blog" was coined. Before there was a MySQL
(there was mSQL, but it was terrible.) I ended up having to write my own
datastore. (Damn kids, get off my lawn?)

------
_delirium
I did this partly because for my needs it was much easier, at least compared
to the other options I tried. I have something more like a "collection of
essays" than a "blog" per se, and I don't like presenting them purely in blog
format, except for the most recent few posts (for regular readers). It was
actually easier to write about 100 lines of Perl than it was to track down the
right combination of Wordpress plugins and configuration options to do what I
wanted.

------
NHQ
I'm not a very good programming yet, outside of html/css/jquery, but I studied
up on basic application design, got some ideas, dug into document database
specs (mongo), and then designed it for somebody else to code :\

Now I have more than a blog, I have a website/CMS engine that is fairly easy
to customize for clients.

Document databases are awesome like that.

------
tbrownaw
Developers don't need hokey religions, we just need to know Perl well enough
to code up a shortcut out of any mess.

:)

------
beseku
I did this, partly as there were no solutions to the frontpage I wanted, and
partly as I wanted to implement better caching than any of the current
platforms offer ... My site queries the database once per day, unless I post
an update. So it's fast, (~100ms on $20 hosting).

What I enjoyed was making software that isn't bulletproof and distributable,
but safe, secure, fast and fun to build. What personal sites should be, imho.

<http://www.beseku.com/>

------
zrail
I did this for my blog[1]. I get complete control over how everything goes
together, which means when I mess up the atom feed (again) and my friends
complain about it (again) I can go fix it and not worry about getting patches
accepted upstream.

[1]: <http://bugsplat.info>

------
FrancescoRizzi
There's arguments for doing so. There's also the arguments against it - but
you should think about both side of the fence, and this side has a Star Wars
reference!

------
KevBurnsJr
Author's blog engine - <https://github.com/robconery/Hana>

------
Locke1689
I just use Tumblr because network effects can't be replicated with code.

~~~
mbreese
Network outage effects?

~~~
jacques_chester
Pretty tough to code, but I think I have a preliminary prototype:

    
    
      exit(1);

------
trezor
I did this as one of my first things when I was learning ASP.NET. Now I
absolutely hate it and intend to move to something else, something pre-built,
something which I don't have to maintain.

That said: I don't _regret_ building it as it taught me tons and tons of
things which was useful when building real world applications. One of the most
important things: What is marketing fluff, what can be applied in the real
world and what is "easy now, hard later" vs "hard now, easy later".

So yeah. Building your own blog can be useful, but it depends on your
motivation. If you have enough things to keep you occupied and you are past
the need to learn the platform you are working on, I think it's more
worthwhile to get something mature and spend your time on something else.

