<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://www.wikidot.com/rss-namespace">

	<channel>
		<title>250bpm - new forum posts</title>
		<link>http://250bpm.com/forum/start</link>
		<description>Posts in forums of the site &quot;250bpm&quot;</description>
				<copyright></copyright>
		<lastBuildDate>Sat, 01 Aug 2015 21:43:20 +0000</lastBuildDate>
		
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2350154</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis#post-2350154</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 21:37:07 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>The most critical rule, IMO, is the &quot;rule of three&quot;.</p> <p>But there's a lot of other rules (of thumb) to follow. This is quite a good presentation: <a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf">http://lcsd05.cs.tamu.edu/slides/keynote.pdf</a></p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis">Let's stop kidding ourselves about APIs</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2350147</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming#post-2350147</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 21:25:02 +0000</pubDate>
				<wikidot:authorName>M. Dinmore</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Addressing this problem is the basic idea behind this research: <a href="http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&amp;arnumber=6344472&amp;filter%3DAND%28p_IS_Number%3A6344456%29">http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&amp;arnumber=6344472&amp;filter%3DAND%28p_IS_Number%3A6344456%29</a></p> <p>It is generally about documenting and sharing problem-solving knowledge. As you note, this means one sort of thing for a computer scientist writing a paper, but something more pragmatic to an end user or business.</p> <p>The software evaluated in this research was more of a traditional spreadsheet and GUI design, but other work looked at a test-based approach with something like Markdown. Something similar is going on in the data science community with &quot;notebook&quot; tools like Jupyter and Beaker.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming">The Second Use Case for Literate Programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2350145</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming#post-2350145</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 21:21:43 +0000</pubDate>
				<wikidot:authorName>warbo</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I've written a couple of literate programming plugins for Pandoc ( <a href="http://pandoc.org">http://pandoc.org</a> ), which I've written about at <a href="http://chriswarbo.net/essays/activecode/index.html">http://chriswarbo.net/essays/activecode/index.html</a></p> <p>I tried to use Babel, as mentioned in another comment, but found it too bloated and complex. My approach is pretty simple in comparison: code blocks can be annoted with a shell command, which they're piped into, eg.</p> <p>&#8216;``{pipe=&quot;python&quot;}<br /> echo &#8217;Hello world'<br /> ```</p> <p>Most actions can then be achieved in a regular Unix way (eg. by reading/writing files, calling programs from scripts, etc.)</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming">The Second Use Case for Literate Programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2350143</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis#post-2350143</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 21:16:56 +0000</pubDate>
				<wikidot:authorName>Richard</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Great post!! Can you recommend good resources that you came across re:API design?</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis">Let's stop kidding ourselves about APIs</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2350135</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis#post-2350135</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 20:54:19 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Well, that's how it should be. Solve the political problem, then design the API based on that. But unfortunately, that's rarely the case.</p> <p>As for the monkey part, yes, it's an exageration. But let's be frank: It's not quntum physics. If you've been programiing for a decade or two you can probably hack together a bearable API. Assuming that the political aspect have been settled in advance, of course.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis">Let's stop kidding ourselves about APIs</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2350127</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis#post-2350127</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 20:40:45 +0000</pubDate>
				<wikidot:authorName>Britt M</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Hi author,</p> <p>In your first sentence:</p> <blockquote> <p>&quot;I've browsed resources about API design&quot;.</p> </blockquote> <p>You go on to talk technically about how:</p> <blockquote> <p>&quot;APIs are just functions&#8230;&quot;</p> </blockquote> <p>and then how there can be</p> <blockquote> <p>&quot;messy APIs with ragged borders&#8230;&quot;</p> </blockquote> <p>So it would seem that you are pretty focused on <strong>building APIs and API design</strong>.</p> <p>API design is 0% political and 100% technical. How APIs are exposed, how they are organized, how they are developed, how they are documented - it's all technical - 0% political.</p> <p>The 100% political part happens at the product level where you have stakeholders pushing and pulling with each other on who the API is for. This is not API design. None of the product (political) stakeholders will tell any of the engineers how the <strong>design</strong> should look - because that's a technical issue.</p> <p>This is the least responsible statement in your article:</p> <blockquote> <p>&quot;solve it [politics] and the rest of it can be done by a monkey&quot;</p> </blockquote> <p>If all product politics surrounding an API are wiped out, I can guarantee you 100% that an API will not, and cannot, be properly <strong>designed</strong> and <strong>implemented</strong> <strong>technically</strong> by a monkey or even a junior developer for that matter.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis">Let's stop kidding ourselves about APIs</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2350060</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2350060</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 17:13:26 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Indentation fixed.</p> <p>As for the question, I would use goto. It's much more readble than do/break/while(0) construct.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2350058</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2350058</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 17:11:13 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Most of serious C code uses goto for error handling. I wouldn't worry much about being seen as a heretic by C++/Java people. Just tell them to check the C best practice.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2350055</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2350055</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 17:05:10 +0000</pubDate>
				<wikidot:authorName>Ian</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>In particular I often have code that looks like this:</p> <div class="code"> <pre> <code>if (obviously_no_result(request)) return null; calculation = check_something(request); if (calculation_shows_no_result(calculation)) return null; if (more_expensive_check_shows_no_result(calculation)) return null; full_calculation = expensive_full_check(request, calculation); if (!full_calculation) return null; result = get_result_structure(request, full_calculation); notify_hooks(result); return result;</code> </pre></div> <p>i.e. the fact that additional calculations are needed between ifs means that else-if cannot be used, and the performance hit of putting all calculations up front is unacceptable when most calls will (intentionally) fail.</p> <p>I've used this style for 20 years for efficiency and clarity. It is much more clear than 'only return once' style code. When I wrote a textbook with an example using this style it garnered a bad Amazon review from someone who complained it showed I was a terrible programmer, because I didn't follow 'best practice' as taught in their Java course. Not that I'm bitter, or anything&#8230;</p> <p>The complaint is that, if I need to do something for every failure (like adding a log, say), it is easy to forget a place to add it. I'm increasingly thinking that goto is actually a pretty good solution, and labels are a form of documentation. Though my need to be seen as non heretical probably stops me from using it in anger:</p> <div class="code"> <pre> <code>if (obviously_no_result(request)) goto no_result; calculation = check_something(request); if (calculation_shows_no_result(calculation)) goto no_result; if (more_expensive_check_shows_no_result(calculation)) goto no_result; full_calculation = expensive_full_check(request, calculation); if (!full_calculation) goto no_result; valid_result: result = get_result_structure(request, full_calculation); notify_hooks(result); return result; no_result: notify_error_hooks(request); return null;</code> </pre></div> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1305623#post-2349941</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1305623/advanced-metaprogramming-in-c#post-2349941</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 11:10:05 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I've actually tried to do that. Note however, that it requires a change to the kernel.</p> <p>More details here: <a href="http://250bpm.com/blog:16">http://250bpm.com/blog:16</a></p> <p>TL;DR: I've never got the patch merged to Linux. If you have any free time to spend you may try to push it through yourself.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1305623/advanced-metaprogramming-in-c">Advanced metaprogramming in C</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1305623#post-2349937</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1305623/advanced-metaprogramming-in-c#post-2349937</link>
				<description></description>
				<pubDate>Sat, 01 Aug 2015 10:53:22 +0000</pubDate>
				<wikidot:authorName>zimbatm</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Isn't it possible to make the channels compatible with select(2) ? Being able to copy the go syntax is nice but I think will prove to be more of a headache in the long run. It's actually an annoyance that I have in go: select doesn't allow to mix channels with IO objects forcing the user to create goroutines to feed the latter into the former.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1305623/advanced-metaprogramming-in-c">Advanced metaprogramming in C</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1057234#post-2348097</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1057234/the-clockwork-inside-game-of-thrones#post-2348097</link>
				<description></description>
				<pubDate>Wed, 29 Jul 2015 06:21:12 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Fixed. Thanks for spotting it!</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1057234/the-clockwork-inside-game-of-thrones">The Clockwork inside Game of Thrones</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1057234#post-2348091</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1057234/the-clockwork-inside-game-of-thrones#post-2348091</link>
				<description></description>
				<pubDate>Wed, 29 Jul 2015 06:00:33 +0000</pubDate>
				<wikidot:authorName>kevinan</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>&quot;George Martin likes to slaughter his caracters &quot;<br /> caracters -&gt; characters.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1057234/the-clockwork-inside-game-of-thrones">The Clockwork inside Game of Thrones</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2347772</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis#post-2347772</link>
				<description></description>
				<pubDate>Tue, 28 Jul 2015 19:22:44 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hi, good to know that there's someone out there who thinks about the problem. It's not at all that common.</p> <p>Anyway, it'll be hard to decompose politics into building blocks. Any system proposed will be gamed if it gets adopted. That's the nature of politics, I am afraid.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis">Let's stop kidding ourselves about APIs</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2347758</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis#post-2347758</link>
				<description></description>
				<pubDate>Tue, 28 Jul 2015 19:02:49 +0000</pubDate>
				<wikidot:authorName>Kin Lane</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>The issues you discuss are real, and something being realized and worked on by many. Your title is linkbait. ;-)</p> <p>Politics of APIs - <a href="http://apievangelist.com/2014/03/17/politics-of-apis/">http://apievangelist.com/2014/03/17/politics-of-apis/</a><br /> Politics of the API Economy - <a href="http://apievangelist.com/2015/07/27/politics-of-the-api-economy/">http://apievangelist.com/2015/07/27/politics-of-the-api-economy/</a><br /> API Evangelist Thoughts On The Right To An API Key And Algorithmic Organizing - <a href="http://apievangelist.com/2014/09/06/api-evangelist-thoughts-on-the-right-to-an-api-key-and-algorithmic-organizing/">http://apievangelist.com/2014/09/06/api-evangelist-thoughts-on-the-right-to-an-api-key-and-algorithmic-organizing/</a></p> <p>I don't believe need to stop kidding ourselves about APIs, we need keep having discussions about why they work, why they don't, and the common building blocks that make things go around.</p> <p>Something I've been working on for over 3 years.</p> <p>Kin Lane</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1298947/let-s-stop-kidding-ourselves-about-apis">Let's stop kidding ourselves about APIs</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2347493</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2347493</link>
				<description></description>
				<pubDate>Tue, 28 Jul 2015 12:19:31 +0000</pubDate>
				<wikidot:authorName>crocket</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Clojure is a modern reincarnation of lisp that has a decent support for macro.<br /> And, macro is fine in the lisp languages.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2345853</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming#post-2345853</link>
				<description></description>
				<pubDate>Sun, 26 Jul 2015 09:11:47 +0000</pubDate>
				<wikidot:authorName>Apostolis Xekoukoul</wikidot:authorName>				<wikidot:authorUserId>1959035</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Looking forward to the answer to that question. I am interested in the interaction of software to the users of the software and how they can adapt it.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming">The Second Use Case for Literate Programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2343787</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2343787</link>
				<description></description>
				<pubDate>Thu, 23 Jul 2015 23:30:22 +0000</pubDate>
				<wikidot:authorName>Tim Janik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Sorry about the broken formatting, I didn't realize the indentation will collapse and I can't edit the post now. INDENT(1) is your friend&#8230; ;-)</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2343786</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2343786</link>
				<description></description>
				<pubDate>Thu, 23 Jul 2015 23:27:14 +0000</pubDate>
				<wikidot:authorName>Tim Janik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>if do_stuff*() require a lot of surrounding context so cannot easily be factored out into a seperate function, would you advocate for using break over nested if()s?</p> <div class="code"> <pre> <code>void foo(void) { setup_do_stuff_context(); do { if(condition1()) { do_stuff1(); break; } if(condition2()) { do_stuff2(); break; } if(condition3()) { do_stuff3(); break; } do_stuff4(); } while (0); teardown_do_stuff_context(); }</code> </pre></div> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2342296</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2342296</link>
				<description></description>
				<pubDate>Tue, 21 Jul 2015 15:50:09 +0000</pubDate>
				<wikidot:authorName>Gunnar</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>A big problem with languages that allow macros is that they make it very hard to write static analysis tools for them. Having macros also means that the syntax of the language isn't fixed, just look at all the trouble the C preprocessor can cause (#define BEGIN {) or how godawful (La)TeX is. There are real reasons why people have turned away from macros.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2342149</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming#post-2342149</link>
				<description></description>
				<pubDate>Tue, 21 Jul 2015 09:37:10 +0000</pubDate>
				<wikidot:authorName>Eugene Grebenyuk</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Another application of literate programming is writing verifiable documentation. I like using Dredd. You write documentation for you REST API in Markdown and the document itself can be validated. It saves a lot of time during development, especially on communications.</p> <p>Link: <a href="https://github.com/apiaryio/dredd">https://github.com/apiaryio/dredd</a></p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming">The Second Use Case for Literate Programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2342051</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming#post-2342051</link>
				<description></description>
				<pubDate>Tue, 21 Jul 2015 03:30:40 +0000</pubDate>
				<wikidot:authorName>Tim Daly</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>If you want to see literate programming done right, look at the book &quot;Phyically Based Rendering&quot; by Pharr and Humphreys. Now imagine that you just joined a project. They give you the book, send you to Hawaii for a couple weeks, and then see how well you can maintain and modify the project.</p> <p>If real projects were maintained with the same level of human-to-human commuication there would be a lot fewer &quot;legacy&quot; projects. The U.S. is still using air traffic code from the 1960s. The Railroad retirement board has a huge legacy code base they can't maintain. Many other government agencies have the same problem.</p> <p>In fact, you might run into the same problem if you ever get a chance to write code you wrote 10 years ago. You'll know WHAT it does but not WHY it does it. Literate programming is about writing down the WHY, not HOW.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming">The Second Use Case for Literate Programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2342018</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming#post-2342018</link>
				<description></description>
				<pubDate>Tue, 21 Jul 2015 00:02:33 +0000</pubDate>
				<wikidot:authorName>anon</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Are you familiar with orgmode and babel? <a href="http://orgmode.org/worg/org-contrib/babel/">http://orgmode.org/worg/org-contrib/babel/</a></p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming">The Second Use Case for Literate Programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2342001</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming#post-2342001</link>
				<description></description>
				<pubDate>Mon, 20 Jul 2015 23:02:29 +0000</pubDate>
				<wikidot:authorName>Kartik Agaram</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I've spent some time thinking about the subject. Critique: <a href="http://akkartik.name/post/literate-programming">http://akkartik.name/post/literate-programming</a>. My current improvement on it is a notion of layers: <a href="http://akkartik.name/post/wart-layers">http://akkartik.name/post/wart-layers</a>. My current project is at 9kLoC programmed entirely using layers.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1287804/the-second-use-case-for-literate-programming">The Second Use Case for Literate Programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-952061#post-2341311</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-952061/are-you-a-programmer-mathematician-or-a-programmer-handyman#post-2341311</link>
				<description></description>
				<pubDate>Sun, 19 Jul 2015 19:31:47 +0000</pubDate>
				<wikidot:authorName>dtoux</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>25 years in the industry and I'm in category 1 but for different reasons. Writing simple solution for complex problem is an art but one can only appreciate it by being around long enough. For me complex solutions are associated with inexperience and low quality.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-952061/are-you-a-programmer-mathematician-or-a-programmer-handyman">Are you a programmer-mathematician or a programmer-handyman?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2340768</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2340768</link>
				<description></description>
				<pubDate>Sat, 18 Jul 2015 20:43:21 +0000</pubDate>
				<wikidot:authorName>Sean Jensen-Grey</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Python has many great facilities for macros. At the lowest level code can be generated dynamically and integrated in to the running program via <tt>eval</tt> and <tt>exec</tt>.</p> <p>In the std lib <a href="https://github.com/python/cpython/blob/2.7/Lib/collections.py#L236">namedtuple</a> which builds a class from a textual template and then calls <tt>exec</tt> to compile it. You can see the generated code by passing <tt>verbose=True</tt> in the <a href="https://gist.github.com/seanjensengrey/9b27a241e26bae445950">construction function</a>.</p> <p>At at much higher level <a href="https://github.com/lihaoyi/macropy">macropy</a> gives you full syntactic macros like you would get in a Scheme or Lisp.</p> <p>If that isn't enough, there is <a href="https://github.com/hylang/hy">Hy language</a> which is a full Lisp hosted on Python. Full Python semantics with Lisp syntax, including <a href="https://hy.readthedocs.org/en/latest/">macros</a>.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2340555</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2340555</link>
				<description></description>
				<pubDate>Sat, 18 Jul 2015 13:16:15 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Yeah, I often do the same.</p> <p>However, more often flattening the structure is harder to achieve and one must actually think and experiment with moving pieces around.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2340536</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2340536</link>
				<description></description>
				<pubDate>Sat, 18 Jul 2015 12:29:29 +0000</pubDate>
				<wikidot:authorName>Brian Oxley</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Beautiful reference!</p> <p>I often use early return as illustrated following the principal of avoiding deep nesting. One of my favorite refactorings is adding return to a the first branch and removing the matching else with an outdent of its block.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2340458</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2340458</link>
				<description></description>
				<pubDate>Sat, 18 Jul 2015 07:58:40 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I've showed the simplest possible example. If you look at real-world examples you'll find out that lot of stuff out there cannot be nicified in this way.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2340455</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2340455</link>
				<description></description>
				<pubDate>Sat, 18 Jul 2015 07:52:15 +0000</pubDate>
				<wikidot:authorName>catwell</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Well, the way you presented your &quot;ugly&quot; code is a bit convoluted. You would probably write it like this:</p> <div class="code"> <pre> <code>void foo(void) { if (condition1()) do_stuff1(); else if (condition2()) do_stuff2(); else if (condition3()) do_stuff3(); else do_stuff4(); }</code> </pre></div> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2340449</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming#post-2340449</link>
				<description></description>
				<pubDate>Sat, 18 Jul 2015 07:40:59 +0000</pubDate>
				<wikidot:authorName>Mikhail Gusarov</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>One of the codebases I had been working on pushed this style even further:</p> <div class="code"> <pre> <code>void foo(void) { if (condition1()) DO_RETURN(do_stuff1()); if (condition2()) DO_RETURN(do_stuff2()); do_stuff3(); }</code> </pre></div> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1283596/a-case-for-unstructured-programming">A case for unstructured programming</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2335328</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2335328</link>
				<description></description>
				<pubDate>Fri, 10 Jul 2015 05:17:38 +0000</pubDate>
				<wikidot:authorName>Martin Sustrik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Split it into small components. Provide extensibility mechanisms. Build new components on the top of the old ones. The only valid reason for something to change is that it is an experiment, i.e. deliberately unstable.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2335262</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2335262</link>
				<description></description>
				<pubDate>Fri, 10 Jul 2015 02:14:24 +0000</pubDate>
				<wikidot:authorName>Stephen</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>How does this apply to applications? Should an editor like Atom be initially feature complete and never change? Or, how about a browser like Chrome? The only software I can think of that's truly done are those on mediums that inhibit future iterations. Especially, videogames and firmware.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2334151</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2334151</link>
				<description></description>
				<pubDate>Wed, 08 Jul 2015 15:06:57 +0000</pubDate>
				<wikidot:authorName>Lee</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I state this differently when talking to customers, &quot;An app, tool, or library should do one thing and do it very well.&quot; If this is followed, the temptation to create one tool that does everything goes away. I've seen good apps and other products bloat up to un-usability for May reasons. One of those is to remain &quot;relevant to the marketplace.&quot;</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332875</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332875</link>
				<description></description>
				<pubDate>Tue, 07 Jul 2015 05:17:11 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>By building new and cool software on top of them?</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2332750</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2332750</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 22:43:03 +0000</pubDate>
				<wikidot:authorName>Marcos</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I'll have to agree with the GP. In Python you simply load the module, insert your functions types and whatever there, and rewrite the name at the global scope.</p> <p>That is, Python macros are written in Python (and sometimes they are even useful). It also supports goto and multiple inheritance.</p> <p>I'd argue that Lisp is plenty of inspiration for people to not run away from macros. It's just that we already have a good set of macro oriented languages, so people aren't rushing to replace it.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332745</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332745</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 22:33:15 +0000</pubDate>
				<wikidot:authorName>Hitesh</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>I agree with the notion that small focused, finished software is better than the alternative. However, how do you find out about it? Like it or not, the usage of software seems to follow communities and communities are built around things that people can discuss over time such as features, bugs, etc. You may have built the best code, but how are people going to discover it today, let alone 5 years from now if noone is talking about it? I sometimes wonder how many really good libraries have been forgotten on Sourceforge this way.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2332668</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2332668</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 21:07:09 +0000</pubDate>
				<wikidot:authorName>Jack O&#039;Connor</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>You can do that sort of thing in Python too; it's all dynamic in the end. Even if you were willing to put up with the nastiness though, there could be other drawbacks. For example, if you use mypy to do typechecking, you can't typecheck the functions you're generating at runtime. But if macros had been part of the language, mypy could learn how to expand them.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332408</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332408</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 15:09:19 +0000</pubDate>
				<wikidot:authorName>Martin Sustrik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>slist is libmill-specific, but you have a point here: If your project depends on a project that is never finished, it itself won't be ever finished.</p> <p>The trick here is to pick the right dependencies, ones that don't change. POSIX, for example, is stable for a decade. So are most mainstream programming languages. Many core UNIX tools are as well.</p> <p>I think that it's mostly developers of the low-level infrastructure how should reflect on finishing stuff. If they don't everybody else is screwed.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332399</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332399</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:58:50 +0000</pubDate>
				<wikidot:authorName>Joachim Nilsson</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Good advise, just wish more people would take it! Cheers</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332381</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332381</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:33:08 +0000</pubDate>
				<wikidot:authorName>Jerome Covington</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Thanks for this. Made me think as well as look very honestly at my developer ethics.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332379</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332379</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:31:36 +0000</pubDate>
				<wikidot:authorName>Hugo</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Libmill code looks like Redis in the sense that is has no dependencies. How do you handle your improvements to, say, slist.c, which is probably used in all your C projects?</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332374</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332374</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:30:02 +0000</pubDate>
				<wikidot:authorName>Hugo</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Libmill repo looks like Redis! :)</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332363</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332363</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 14:17:39 +0000</pubDate>
				<wikidot:authorName>Martin Sustrik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>That's the very point. You don't modify original project beyond recognotion. You just start a new project.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2332322</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2332322</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 13:43:27 +0000</pubDate>
				<wikidot:authorName>Charles Smith</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>You can generate functions like that dynamically in Ruby. I have helper functions generated dynamically in: <a href="https://github.com/twohlix/database_cached_attribute/blob/master/lib/database_cached_attribute.rb#L62">https://github.com/twohlix/database_cached_attribute/blob/master/lib/database_cached_attribute.rb#L62</a></p> <p>so when I call<br /> database_cached_attribute :bollocks<br /> database_cached_attribute :silliness<br /> my class ends up with nice to have functions like</p> <p>invalidate_silliness, only_silliness_changed?, cache_silliness<br /> invalide_bollocks, only_bollocks_changed?, cache_bollocks</p> <p>etc&#8230;</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332305</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332305</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 13:17:08 +0000</pubDate>
				<wikidot:authorName>Karel</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>A software project is 'done' when the last end user is in his grave. I don't agree with the 'grep' example. It may be very stable (last commit on gnu-grep is from september 2014), but there are projects which aim to make a better grep: ack-grep and ag (the silver searcher)</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332270</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332270</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 12:19:09 +0000</pubDate>
				<wikidot:authorName>Martin Sustrik</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Code generation. Any case that doesn't yet require a full blown compiler, but is already too hard to maintain by hand.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332262</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332262</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 12:09:05 +0000</pubDate>
				<wikidot:authorName>brijesh</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>greetings from india,<br /> good advice man<br /> rgds</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332237</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332237</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 11:27:57 +0000</pubDate>
				<wikidot:authorName>krist</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>ill give you two*. one is a &quot;security&quot; app for taking photos from the isight camera whenever your laptop is woken up. the other is an app for reading twitter feeds from the speaker.<br /> both are cocoa apps that was supposed to help me transition to being an ios developer.<br /> then lion and mountain lion happened and i realized it was impossible for me to keep on supporting the software. so i abandoned it. guess what, instead of becoming an ios dev i became a ruby dev instead.</p> <p>there really is no point to this story other an just go where the current takes you. :)<br /> <a href="http://www.macupdate.com/developers/profile/7341" target="_blank">http://www.macupdate.com/developers/profile/7341</a></p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1234043#post-2332235</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1234043/finish-your-stuff#post-2332235</link>
				<description></description>
				<pubDate>Mon, 06 Jul 2015 11:27:15 +0000</pubDate>
				<wikidot:authorName>Ashish</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Umm&#8230;Ribosome use case?</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1234043/finish-your-stuff">Finish your stuff</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2331858</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2331858</link>
				<description></description>
				<pubDate>Sun, 05 Jul 2015 19:24:45 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Specifically, I wanted to generate a group of functions, all with the same prototype, without having to repeat same list of arguments each time.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2331837</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2331837</link>
				<description></description>
				<pubDate>Sun, 05 Jul 2015 18:43:39 +0000</pubDate>
				<wikidot:authorName>fjardon</wikidot:authorName>				<wikidot:authorUserId>424263</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Perl hasn't got a &quot;standard&quot; preprocessor because it has got a better tool: filters.</p> <p>A filter is a Perl module which reads the initial source code and produces the Perl code passed to the final Perl interpreter.</p> <p>This allows everyone to create its own new syntax or DSL in Perl.</p> <p>See: perldoc Filter::Simple , perldoc Filter::Util::Call</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2331804</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2331804</link>
				<description></description>
				<pubDate>Sun, 05 Jul 2015 17:07:54 +0000</pubDate>
				<wikidot:authorName>Brendan Long</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>What would you even use macros for in Python? You can already define functions and classes anywhere, and do pretty much anything you want. C needs them because the language is so restrictive, but I can't think of anything similar in Python.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2331788</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2331788</link>
				<description></description>
				<pubDate>Sun, 05 Jul 2015 16:25:25 +0000</pubDate>
				<wikidot:authorName>Lyubomyr</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Yeah.. Macroses as well as goto, multiple inheritance and others undeservedly retired just because they have a bad luck to be used improperly.<br /> Rust looks promising in this regard.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2331682</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2331682</link>
				<description></description>
				<pubDate>Sun, 05 Jul 2015 14:03:16 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Good to know. I've heard good things about Nim. I should have a look&#8230; but there's still Haskell and Rust on my todo list :(</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2331673</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1269209/where-are-python-macros#post-2331673</link>
				<description></description>
				<pubDate>Sun, 05 Jul 2015 13:47:22 +0000</pubDate>
				<wikidot:authorName>Sergey Drannikov</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Nim?</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1269209/where-are-python-macros">Where are Python macros?</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1226402#post-2327317</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1226402/reusability-trap#post-2327317</link>
				<description></description>
				<pubDate>Mon, 29 Jun 2015 05:19:33 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>We call those symbionts and yes, it's a viable survival strategy.</p> <p>Then there are true parasites that make the host less fit. For example, the first thing lot of them do is to castrate the host thus bringing its fitness to zero. It's a strategy that works fine as well.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1226402/reusability-trap">Reusability Trap</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1226402#post-2327281</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1226402/reusability-trap#post-2327281</link>
				<description></description>
				<pubDate>Mon, 29 Jun 2015 03:32:01 +0000</pubDate>
				<wikidot:authorName>Christopher Marahall</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Parasites that help the host be more successful would out compete the ones that make their hosts less successful, wouldn't they?</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1226402/reusability-trap">Reusability Trap</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1226402#post-2327012</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1226402/reusability-trap#post-2327012</link>
				<description></description>
				<pubDate>Sun, 28 Jun 2015 17:55:18 +0000</pubDate>
				<wikidot:authorName>martin_sustrik</wikidot:authorName>				<wikidot:authorUserId>939</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I was not arguing that the resulting application will be extremely nice of useful. It very likely won't be. However, the compoent doesn't care. Or doesn't care too much. It's like a parasite: Don't be evil to the extent to kill the host. But short of that, do suck it dry.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1226402/reusability-trap">Reusability Trap</a>
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1226402#post-2326993</guid>
				<title></title>
				<link>http://250bpm.com/forum/t-1226402/reusability-trap#post-2326993</link>
				<description></description>
				<pubDate>Sun, 28 Jun 2015 17:17:39 +0000</pubDate>
				<wikidot:authorName>Christopher Marahall</wikidot:authorName>								<content:encoded>
					<![CDATA[
						 <p>Making a component easily separable from the rest of the application also makes the component easier to maintain, reason about, test, etc. In other words, increases it's quality in a number of significant areas. The more a software project is composed of such components, the more useful, robust, and scslable it will tend to be. So the selective pressure that favors usefulness will give such components an edge.</p> <br/>Forum category: <a href="http://250bpm.com/forum/c-506683">Hidden / Per page discussions</a><br/>Forum thread: <a href="http://250bpm.com/forum/t-1226402/reusability-trap">Reusability Trap</a>
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>