Hacker News new | comments | show | ask | jobs | submit login
Do things, write about it (mdswanson.com)
232 points by swanson on Aug 12, 2013 | hide | past | web | favorite | 88 comments

I recently bought Shaun Inman's book "Lift Off", which was essentially his development journal for an awesome iOS game he created called The Last Rocket. Although the journal wasn't public while he was writing it, he bundled it up later started selling it for $10. When a couple friends and I started talking about creating an iOS game, I bought the book and read it in a weekend. It was worth every penny.

The thing that impressed me the most was that he wrote, and made some progress, almost everyday. Also, it wasn't polished or article-y at all. It was just candid journaling.

I found it so motivating that when I recently started working on a new product myself (http://churnbuster.io/) I decided to do the same thing. I'm keeping a journal (http://productquest.andrewculver.org/) totally separate from the product blog, product mailing list, etc. that conveys my experience as I build a product, rather than trying to market the product itself.

The journal serves a couple purposes: It keeps me accountable to keep development coming along regularly. Also, it helps me connect with other product people or people who want to get into creating products. (They're more likely than the average person to be a potential customer for the product.) Also, any audience the development journal may gain can help amplify the announcement when the product is ready to launch.

I think you'll quickly find another benefit of journalling: It forces you to justify your decisions. Even if you only write for yourself, many ideas "sound smart" in your head, but don't seem all that bright when they've been put in writing and you re-read them.

You also get invaluable documentation of justifications for what you do.

And the effect multiplies when you decide to publish it.

I keep sporadically working on a series about writing a compiler in Ruby, which morphed into writing a Ruby compiler in Ruby, and it's a slow going slog (I just ended a two year "break"), and writing about it quickly started changing my approach. It's like when your maths teacher insist you show your working rather than just giving the results - you can't skip steps just because you know (or think you know) how to go straight from A to B any more. Of course when writing a journal, nobody is forcing you to not take shortcuts, but I find I am more likely to be disciplined about verifying assumptions an testing changes anyway.

Thanks for the recommendation, I'll check it out. Here's the link for those who are interested as well (there are a few "Lift Off" books around): http://store.shauninman.com

This is really cool Andrew, thanks for sharing!

I recently bit the bullet and created a personal site for myself so that I could do the "tell people about it" half of this advice. I'm so glad that I did.

I'm pretty happy with the technical aspects of what I ended up with, in terms of simplicity, how easy it is to add content, and how little I have to do admin on the server.

I use S3 static website hosting and a dead-simple node.js script to generate the page, and then use s3cmd, a wonderful little tool that is in my distro's package manager.

So the cool thing is that I pay approximately 3 cents per month for the hosting, I can take any amount of traffic no problem, and server crashes are out of the question. On top of that I can preview perfectly what I will see before I publish by viewing what I am about to push with the file:/// protocol.

Result: http://andrewkelley.me/

It's open source: https://github.com/superjoe30/andrewkelley.me

Exactly the same thing for me! I was thinking: "man, I should write something about this" for a long time and never committed to it because I had the lame excuse that I did not have a personal site.

So last week I finally caved, I learned nanoc, a static site generator in Ruby, and got to work. I didn't know Ruby either but to be honest it wasn't such a big deal, I learned what I had to pretty quickly and you can find some great examples online. I especially liked the little bits, like the fact that it's so easy to let nanoc generate a sitemap for me, which I could submit to Google and Bing to cozy up to the search engines.

I'm currently still using more or less the default template because I find it to be pretty readable, but I'll change that soon, content is more important first.

I didn't feel like paying for hosting, so I picked github as my host, which is working wonderfully. To use it with a custom domain you own, all you have to do is add a CNAME file to your repository.

This is the site: http://www.aktau.be/ (currently only 1 real article + the about/contact page up but more drafts are in the pipeline)

Mine's open-source as well (of course): https://github.com/Aktau/aktau.github.com

I got a cheap domain name for my own country from versio.nl, but they didn't seem to offer free DNS, so I'm using a free account at http://www.luadns.com/. Which is, quite frankly, the most fun I've ever had configuring DNS. Write it in Lua, git push and you're done.

So, the only thing I'm paying for is my domain name, which costs me about $2 per year. Awesome.

I have lots of websites hosted on S3 - you can have up to 100 buckets per account and every bucket can be a website. I use different setup - s3sync for syncing and AutoIt script for static blog generation (~100 lines of code).

Just wanted to say you've some awesome projects on github!

hey thanks :)

I think creative people always do fun projects. I think it depends where you are in your career whether it will give you material gains.

In my opinion these projects, and generally building a network amongst developers can help you if you are a beginner, looking for entry-level jobs.

But in my experience after a point the job offers you get this way might not be the best amongst the offers you get. For example at 1998 I wrote a real-time ray tracer, and because of it a game-engine company offeed me a job as a script writer. They said I am not experienced enough to join their core engine team. Nowadays, it is even worse: I get the best opportunities from people who are not even technical. The best job/contracting opportunities come from people who are good businessmen, but not technical. They cannot evaluate me based on my fun projects, they evaluate me based on some relatively boring previous jobs/works in their industry. I do my fun projects for myself, or because I want to create paying products of them. I occasionally tell about them to fellow hackers; not because I want to get yet another low paying entry-level job, but because it is fun to speak about a fun project.

We must define fun, first. In my experience you can have fun in any kind of genre of work. I do both design and code and I found coding pleasant too.

Creativity will blow, of course, when you're doing side projects but when you're working for a client or your company most of the things will be defined before the first line of code or the first illustrator vector is drawn. So the creativity limits in those situations may be shorter than anyone expects.

Previous to Carl Lange’s post, this was described in "How to Increase Your Luck Surface Area" - http://www.codusoperandi.com/posts/increasing-your-luck-surf...

Apparently, Carl was unaware of it as well despite the post and subsequent discussion receiving a fair amount of attention on HN at different times.

Disclaimer: I wrote it.

Don't worry Jason - I was pimping luck surface area last month: http://mdswanson.com/blog/2013/07/19/getting-traction-for-yo... ;-)

Cool! Thanks. ;)

I've heard this described as "The harder I train the luckier I get" though it's as much about marketing as production.

We can't assume L is always positive. Because if it is, where does bad luck come from?

Perhaps. But we can assume that in expectation, conditional on previous effort, L is positive.

I'm not a luck scientist, but I would say this:

Lets assume that doing and telling increase luck surface area. We know, through observation, that both good and bad luck exist. Thus, there should exist situations in which telling and/or doing increase bad luck surface area.

All things being equal, the direction in which ones luck surface area will grow (good/bad) when telling/doing, is evenly distributed. In other words, you have even odds of good and bad luck when you tell/do.

Now, lets follow the general social studies assumption that people are risk averse.

You get a more tightly packed theory, albeit, less inspirational - the winning strategy in life is doing nothing and shutting up. :)

Now back to work.

What's a reasonable place to put up a development blog for a side project, if I want to spent as close to zero time as possible messing with configuration?

Don't say "install this blog software on your web server"; my side project doesn't need a side project, thanks. :)

That's actually a tough question. I haven't found a place yet to put up a development blog. Code snippet are always screwed up or you don't have analytics, etc.

I took the extra mile on my blog and installed Wordpress on my server. I thought I liked it but now, I'm looking for another solution. I have yet to find what I want.

I've been using Wordpress for a few years, and I don't like it.

I had a blog hosted at MIT, on a server that they have since shut down. For my first few years of using Wordpress, I was pining for the days of my good ol' MIT blog - it was perfect!

Recently I checked out an archive of my MIT blog. Okay, so, it wasn't perfect. In fact, I think in truth Wordpress is superior. Maybe since the MIT blog was so uncustomizable I just made myself happy with it, whereas with Wordpress I can tinker endlessly, striving for some ideal of perfection that I don't even have a clear vision of.

Does this mean that there's a (small, perhaps) market for code development blogs, e.g. that integrate effortlessly with Github, Bitbucket, etc.?

Or does something like that already exist (beyond Gists)?

I actually had this thought too a few days back. I have no data to back my claim yet but there could be.

Good point, I didn't think about code snippet formatting.

If you can live without great code formatting support and you don't mind paying for it, then I really can't recommend Squarespace highly enough.

I fancied blogging, but I already have so many god-damn side projects on the go (my eternal problem is too much started - too little finished) that the last thing I want to do is keep a linux vps and a Wordpress installation up-to-date and configured securely.

With squarespace I think I pay $16 a month (less actually as discount codes are in healthy supply online) instead of $5 for, say, a vps on DigitalOcean, but I get my pick from a set of nice responsive template designs, unlimited traffic (in case I ever write something that gets HN'd) and a drag and drop interface that most of the time exactly meets my needs. They do all the updating of the back end for me and I can just write. I can inject code and other stuff onto the page if I need to, but I've kind of come to the realisation that I don't need most of that bumf anyway.

I did just have a look at the in-post code writing tool out of interest: It has HTML, CSS and Javascript formatting, which isn't much help if you do most of your work in c# like I do, but then I'm sure I'll survive. Their customer service is why I'm so damn enthusiastic about them, so no doubt if I REALLY feel I need it I could just email them and request it.

Reading this back sounds like I work in their marketing department. I promise I don't, I just really think you should check them out.

I can second this, I moved over from WordPress because it was so buggy (add on's didn't always work as promised). No regrets with squarespace - the site looks professional and I don't have to spend any time updating/maintaining it. Of course, this comes at the cost of learning but...

github gists are an ok solution for this if you don't really mind not having total control over color scheme.

or docpad on any host if you prefer node http://docpad.org

I know some people like Tumblr. Or Blogger. They aren't sexy but who cares? The important part is the writing. And as long as you have your own domain you can move later when you have a free weekend and want to migrate elsewhere.

If you want to invest a bit more time, Jekyll on GitHub pages is a really great setup and I highly recommend it.

swanson - I and many others use pelican, which is another static blog generator (like Jekyll). I use it along with github pages. Super simple.

Pelican docs:


My personal site as an example:


Does using GitHub pages imply a connection to some project hosted on GitHub? (The side-project I'm working on isn't on GitHub.)

Not necessarily - you can have a standalone blog (e.g. https://github.com/swanson/swanson.github.com). GH Pages does allow you to easily setup a project page per repository, but it is not required.

You can also pick up a domain name and point it at your github repo. I've got wickerbox.net for $10 a year from Namecheap being served out of wicker/wicker.github.com. One of the neat features is that any time you do put in a gh-pages branch in one of your other repositories, it's accessible by wickerbox.net/name-of-repo.

Thanks for writing this, swanson. I've written on and off over the last few years but lately I've wanted to write, started to write, and then lost the nerve and never posted. Hearing "you don't have to be the next Joel On Software" helps.

I use Blogger - you can amend the HTML to include google's https://code.google.com/p/google-code-prettify/ in nearly no time at all. And it just works! Lovely.

I found myself in a similar position to Mr Swanson. I just started writing about things and found that good things came out of it. It makes life more interesting. And it helps other people. This is me:


GitHub Pages is really great because they will host it themselves at a domain like username.github.io, and when you decide you need a new side-project, you can easily port everything over to your own server. Jekyll static-site generator can be used on GitHub Pages, or you can literally throw .html files in there. I like it purely for the flexibility it provides me.

I used blogger (blogspot) for many years, and liked it. Eventually though I decided to switch to hosting my blog as a menu/tab on my own main web site and use Jekyll to generate static pages. Either using Google Analytics, or on your server set up awstats (an apt-get install, and 2 minutes of setup) so that you know which blog entries people actually read.

Hosted Wordpress.

It's not tremendously cheap (WP Engine starts at $30 a month), but if you want to run a sophisticated CMS with no setup or maintainance investment, it's by far the best approach.

(It may be noted that I've tried everything from hosted free services to writing my own blogging engine in RoR, and hosted WP is what I've eventually settled on.)

I'm using blogger for my side project (http://higherordergo.blogspot.com). It is nothing special but it gets the job done for close to zero time configuration.

Wordpress on any decent shared hosting. It's very easy to set up, requires almost no maintenance, but you're still free to do anything you want to your blog.

Tumblr is pretty great - fully customisable layout, you can assign your own custom domain for free and the posting tools are powerful and easy to use.

There are also many ways to embed code in it in a nice way. Since they don't limit your layouts, you can stick any code-formatting JS you want on the blog.

I don't think anybody mentioned Octopress http://octopress.org/

Squarespace has a nice balance of out of the box functionality with lots of power under the hood if you ever want to dig into it.

Can't get easier than Wordpress.com (which supports code snippets), but GitHub pages are relatively easy, too.

Code snippets on Wordpress is plain awful, indentation & HTML escaping is a mess. I have to re-edit the same code snippet 2-3-4 times when writing a blog entry on WP.

I'm sure it can get easier than WP.

Have you tried embedded Github gists? Or do you want the snippet to live on your page?

Sounds like you just need to use a hosted blog service like wordpress.com, tumblr, blogger, etc.

This is a very good advice. You can do all sorts of incredible things, but if you don't know how to tell other people about it, it will simply fade into deep folder on your hard drive.

It's been a personal goal of mine this year to blog more and more. The few times where I really put effort into it, I found huge rewards. A simple (but lengthy) article about how to write canvas games ended up being published in the Game Developer Magazine, and I made some money off it. All because the editor saw it, liked it, and emailed me about it.

I find that the weekend coding project can become very good fodder for a blog. http://www.dynamicalsoftware.com/analytics/oss is such an example of some hands on exploration of map reduce and is currently my top blog post.

This is great advice. I have a long list of projects I wish I'd done with the intent of accomplishing and then telling people about, as it would force me to get them done and make them into contributions.

Many are small, others would have made me wealthier.

In all cases, I didn't engage them because I didn't feel they were significant "enough" or lacked the confidence to simply dive and do them, and missed an opportunity as a result.

Almost all of them would have been accomplish-able in a weekend or afternoon, with another half-hour spent writing a blog about it. You don't need much detail, but it takes some mental work to distill the project to a simple statement that people will enjoy reading.

Regrets? Sometimes. More so for having failed to cultivate in myself a culture of getting stuff done and pushing it away from my desk into the world at large, so others can build on it.

"I could have done more" is the statement of someone who realizes in retrospect the value of his time.

I've been blogging about my chosen field for about a year now and I've seen similar rewards from it.

Most recently: - I was asked to provide an article to go into a sidebar of someone's book. - Someone I met for the first time at a meetup mentioned that they knew who I was as my articles kept appearing at the top of their Google searches for particular topics. - Microsoft suggested a resolution to a problem ticket I had raised with them by copying and pasting my own blog into a Word document and sending it to me - complete with Screenshots.

I've also learnt a lot by researching "that extra little bit" for the blog content and from other people leaving really great comments.

I wish people would stop suggesting that everyone blog. It just creates so much bulk. Only really creative and thoughtful people (like me) should blog. All of YOU blogging clutters things and makes it harder for people to find MY work.

I'm struggling towards this end myself.

I have http://www.mikadosoftware.com, which is the main supposedly commercial site. Its self hosted on rackspace for various reasons.

For documenting side projects I use readthedocs.org and CNAMEs to put up any and every github project - so I get http://pyholodeck.mikadosoftware.com, generated straight out of docs in the github project. Good syntax highlighting is a breeze, look at `literal-include` in sphinx for an idea. I have maybe twenty CNAMEs like this.

And http://blog.mikadosoftware.com is a wordpress site, I pay about 5 bucks a month for, mostly because I did not want to write my own blogging software for the 3rd time.

I know it sounds a mess but the theory is I used to have "ideas" and would mail myself with a sentence or two thnking "one day" I would write it up into that world changing post it deserved. Well now I just open the Wordpress app and put those sentences, plus a couple more because I am publishing and I have a "thought" out there. Basically every random thought that used to languish on my inbox is tarted up with an extra 30 seconds work and actually contributes to my capital.

I have no idea if it is SEO good or bad, or frankly if anyone actually reads this stuff. But I am glad I am slowly building up my online capital. If any of the blog posts actually get attention, I guess I will tart it up a bit and republish it on www.

(As an example, I often bang on about software as new forms of capital here, but this link (http://blog.mikadosoftware.com/2013/08/06/software-capital/) is an example of me putting a quick thought into existence. I would not actually consider that an acceptable docstring for production code, but its OK to throw out there.

Anyway - I agree with the main thrust - and for less than 50 bucks I have blogs, code documentation, and proper length articles from ReSt (a python form of markdown)

This was edited to add in links for ease, but now looks more like spam. My apologies, mail already winging its way to info@

Ignoring that however, the setup has taken a while to arrive at a sensible level and might be useful to the OP.

I have time lots of it and I am trying to learn different stuff. My problem is I rarely have "new cool original project" idea, which is bad for me, because as a freelancer personal reputation goes long way.

I recently redesigned my website http://www.mohitranka.com, and looking to build a text analytics api side project (yes, I know not original) http://analytex.net.

How do I generate "original and interesting" ideas, worth showcasing/talking about?

If you're learning things and you either run into a snag that you personally overcome or encounter a poorly-documented/explained subject, you could write a tutorial about it. It doesn't require finding an innovative business idea and it a) shows potential employers that you know a skill, b) shows potential employers that you know how to write, and c) gets you emails asking for help that may lead to consulting work if you play your cards right.

A text analytics API sounds interesting to me - even if it isn't the first one. Start with the basics and build from there, describe the existing solutions and why they aren't appropriate for your needs, show some of the open source libraries that are out there.

How do you successfully build an audience? Posting to reddit and HN is nice and all, but one or two popular posts rarely builds a ton of repeat users in my experience.

> How do you successfully build an audience?

Just keep writing. Don't worry about building an audience, focus on improving your own writing ability and finding your voice. I wouldn't even really say I have much of an audience - but it has grown from only co-workers and friends to local developers to occasional HN/Reddit success.

When you think about bloggers that have a real, influential audience (PG, Joel Spolsky, etc) just remember how many years and hundreds (or thousands) of posts they've written.

I write a technical blog so people only really come to my articles when they are looking for a solution to a problem. Until recently I did zero "audience building" and had about 80% new visitors with 500 visitors a day.

I just wrote articles to improve my writing skills and now people find them in Google.

Reddit and HN (and DZone) can be seeds for other things - e.g. there are a bunch of email newsletters that pull content from there. I've had good luck with some of the programming language based subreddits, because they have a decent size audience but don't always have a lot of content. Usually there are big Google Plus groups of similar size.

Twitter is useful, because you can contact people directly (e.g. people like it when you write something using a tool they built). It's also a good way to connect with people at conferences because there is often a conference hashtag - I met a few people writing up summaries of talks. It seems like a lot of people use it as an RSS substitute as well, so it's a light-weight way for them to follow you.

Make it easy for people to discover when you post again. This could be anything from a mailing list (overkill IMO) or providing an RSS feed of your blog for people to subscribe to.

I like that. For me it was always "Put yourself out there". Even if it's something you are not good at, perhaps especially if it's not something you are good at.

I never felt comfortable with writing for public consumption. Nor did I feel I had code to contribute, that wasn't proprietary of a client.

I've started slowly and enjoy the practice even if it's just practice for myself for the time being.

I have a slightly different approach. I mostly find out about new software through GitHub. So rather than talk about it I put my stuff on GitHub and possibly NPM. If any of those repos generate enough traction on their own, I would work on them more/make them better etc. If they don't and the work is useless to others, there is no point in talking about them.

why not combine telling the people about it and linking to your github / npm projects? It will definitely gain much more attraction and you can showcase already the effects of said code with a neat demo.

I am thinking the repo's README.md should be enough as I do not have anything more to say than what is there: "Thing X does Y, here is a quick start". Usually I put a picture up there or even a link to an online demo.

If you are in the mode to tell a good story, have a try on our visual story telling platform: http://www.visual-marks.com.

It provides round-trip markdown/HTML editing to let you focus on writing and easily layout the page.

Good advice, but

    "This past month I set a goal to write 20,000 words"
Setting writing goals in terms of number of words looks terribly wrong to me.

Yeah - the intention was to write a little bit every day or so, but I needed to quantify it to keep myself honest and track progress. I guess I could have said "write 20 things this month" or something similar.

(First, thank you so much for the Beeminder plug! This is a big day for us, thanks to you!)

I like just forcing blog posts to happen on a reasonable schedule. Like tomorrow is an "emergency blog post day" for us on http://blog.beeminder.com

I also think having the thumbnail in the sidebar like that makes for a nice "ETA till next post" for your readers. And there are a couple ways to automate sending the +1 to Beeminder each time you write a post.

PS: Another more explicit example of the "ETA To Next Post" thing: http://daily.muflax.com/ (Looks like they burned out on blogging there for a while but are committing to get a post out 20 days from now...)

I've found that type of goal can be really helpful once or twice, to force yourself to think about how to finish projects in a timely manner. Every time I do something like that I fell like it gets easier to write, and my writing gets more effective.

What do I do if I can't make anything cool? I mean, I can write code, but it seems like I'm incapable of an original thought.

There are a lot of tactics you can take to come up with things that are novel (in minor ways). I found that if you write you'll discover new things along the way.

* Write up samples of old ideas in new languages (e.g. X in Scala)

* Write up samples using new libraries (e.g. from the Show HN posts)

* Combine two random things together (e.g. PDF.js + Lunr.js = ...). This works well with new libraries, because people like having their work used.

* Thought experiments can work well (what's a feature of language/tool X that you don't like, and how would you fix it)

* Write up sample code that fills the gaps in some libary's documentation (if you work on a tool and have trouble googling the results, this works well, or if the documentation doesn't answer questions in the way you formulate them)

* Find a CS textbook on a subject you find interesting, find interesting problems but apply them to something you're familiar with. I've had good success with this with an NLP textbook, but apply the exercises to data I have access to so they are novel.

* If you look at language based subreddits, a lot of the smaller ones are starved for content. You can find popular examples from language X and rewrite them for language Y.

* Find a book of puzzles (soduku type things) and write up puzzle solvers.

A lot of designers have this issue. The hardest person to develop/design for is yourself since you're your worst critic.

Ask yourself "What if?" Take something you're interested in and modify it slightly versus trying to think of a whole new original concept. What if I made a to do list specifically for teachers? What if I created a workout app only for developers? etc.

This could help spark your imagination into something more grandiose.

that is kind of hard. i don't know many people.

You might need novelty for a side project to hit the front page of Hacker News, but you don't need novelty to see benefits from the "Do things and write about them" paradigm. For example, you could write blog posts about problems you've run into and how you solved them if the solution isn't already on Stack Overflow.

it seems like it is always answered on SO.

Just pursue what you think is cool or interesting to you, learn about it and write about it. Creativity doesn't have to be completely original. If you write about your own learning experiences with projects of interest to you, that scratch your own itch, Im sure it will be interesting, even valuable to a few people.

i'm too dumb to pursue anything that I find interesting, it seems.

Then look at Github or here, find projects you find cool, and contribute to them and write about that. If you don't know what you can contribute to, ask - most open source projects can always need more contributors.

it seem slike all of the interesting things i want to help out on don't want my help. or maybe I'm not fit to assist.

The beauty of github is that you don't have to ask. It removes that particular (and possibly socially awkward/difficult) barrier of entry, for new people. You simply fork a project that you want to make a change to, make the change, and then send the pull request (it's literally just a button in github you click).

If they don't accept the change, don't take it personally.

swanson - very great post. I happen to like this "do things, tell people" so much that its been my personal website's tagline for sometime. Thanks for writing and sharing with us HNer's

Self promotion works great :)

I hate blogs that don't have comments enabled. What's the point?

My personal stance is that my blog is MY space on the internet. It is for my thoughts - if you want to share your thoughts, that's great, but please do it on your own space (or a common space like HN/reddit).

Publishing information.

Applications are open for YC Summer 2018

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact