(function () {\n version.extensions['replaceMacro'] = {\n major: 1,\n minor: 3,\n revision: 0\n };\n macros['continue'] = macros['insert'] = macros['replace'] = {\n handler: function (g, e, f, b) {\n var h = insertElement(null, "span", null, "replacement");\n var k = b.source.indexOf('>>', b.matchStart) + 2;\n var a = b.source.slice(k);\n var d = -1;\n var c = '';\n var l = 0;\n var el = e.length\n\t\t\tif (e=="continue") {\n\t\t\t d=k+a.length;\n\t\t\t c=a;\n } else for(var i = 0; i < a.length; i++) {\n if(a.substr(i, 7 + el) == '<<end' + e + '>>') {\n if(l == 0) {\n d = k + i + 7 + el;\n break;\n }\n else {\n l--;\n c += a.charAt(i);\n }\n }\n else {\n if(a.substr(i, 2 + el) == '<<' + e) {\n l++;\n }\n c += a.charAt(i);\n }\n }\n if(d != -1) {\n var m = Wikifier.createInternalLink(g, null);\n m.className = "internalLink replaceLink";\n insertText(m, f[0]);\n insertText(h, c);\n g.appendChild(h);\n h.style.display = "none";\n m.onclick = function () {\n var n = this.nextSibling;\n if(n) {\n var t = n.firstChild ? n.firstChild.nodeValue : "";\n removeChildren(n);\n new Wikifier(n, t);\n n.style.display = "inline";\n n.classList.add("replacement-in");\n setTimeout(function () {\n n.classList.remove("replacement-in");\n }, 1);\n scrollWindowTo(n);\n }\n if(e == "insert") {\n var p = document.createElement("span");\n p.innerHTML = this.innerHTML;\n p.className = this.className + " disabled";\n this.parentNode.insertBefore(p, this.nextSibling);\n }\n this.parentNode.removeChild(this);\n }\n b.nextMatch = d;\n }\n else {\n throwError(g, "can't find matching end" + e);\n return;\n }\n }\n }\n macros['endinsert'] = macros['endreplace'] = {\n handler: function () {}\n }\n scrollWindowTo=function(E){var D=window.scrollY?window.scrollY:document.body.scrollTop;\n var G=J(E);if(!G){return;}var C=Math.abs(D-G);var B=0;var I=(D>G)?-1:1;var F=window.setInterval(H,25);\n function H(){B+=0.1;window.scrollTo(0,D+I*(C*Math.easeInOut(B)));if(B>=1){window.clearInterval(F);\n }}function J(N){var O=A(N);var P=O+N.offsetHeight;var K=window.scrollY?window.scrollY:document.body.scrollTop;\n var L=window.innerHeight?window.innerHeight:document.body.clientHeight;var M=K+L;\n if(O>=K){if(P>M){if(N.offsetHeight<L){return(O-(L-N.offsetHeight)+20);}else{return O;\n }}}}function A(K){var L=0;while(K.offsetParent){L+=K.offsetTop;K=K.offsetParent;}return L;\n }};\n}());
You've got a business plan?\n\n[[Yes, I plan to make quality products that will stand out in the market|2]]\n \n[[Yes, my twitter followers said they'd buy it|2]]\n
So you want to be an indie dev? Let's ask some questions and find out how it'll go.\n\n[[I can't wait to soar free!|1]]\n
You've got your marketing figured out?\n\n[[Yes, I'll write a captivating behind-the-scenes blog|4]]\n\n[[Yes, I'll send a review code to John Gruber|4]]
Your idea is original? There's an unfilled niche?\n\n[[Yes, it's a photo filter app with more options than any other product|3]] \n\n[[Yes, this is the most beautiful & minimalist notes app available|3]]
Finally: do you think RSS still might catch on?\n\n[[Of course, it's the best way to keep on top of all of my favourite Blogspot feeds|6]] \n\n[[Definitely, look how many trendsetters on hacker news use it|6]]\n
And you've got a backup plan in case this doesn't work out?\n\n[[Yes, I'll do contracting and still have time in the evenings for my own work|5]] \n\n[[Yes, my partner has a job that gives me health care|5]]\n
You'll last <b>eight months</b>. Have fun!\n\n<i>~fin~</i>
Alright, we've figured out your future as an indie dev!\n\n[[Hooray!|7]]
The Amazing Indie Dev Career Fortune Telling Machine 5000