<?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>Per page discussions (new posts)</title>
		<link>http://250bpm.com/forum/c-506683/per-page-discussions</link>
		<description>Posts in the forum category &quot;Per page discussions&quot; - This category holds per-page comment threads</description>
				<copyright></copyright>
		<lastBuildDate>Sat, 01 Aug 2015 21:45:18 +0000</lastBuildDate>
		
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2350154</guid>
				<title>Let&#039;s stop kidding ourselves about APIs: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2350147</guid>
				<title>The Second Use Case for Literate Programming: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2350145</guid>
				<title>The Second Use Case for Literate Programming: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2350143</guid>
				<title>Let&#039;s stop kidding ourselves about APIs: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2350135</guid>
				<title>Let&#039;s stop kidding ourselves about APIs: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2350127</guid>
				<title>Let&#039;s stop kidding ourselves about APIs: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2350060</guid>
				<title>A case for unstructured programming: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2350058</guid>
				<title>A case for unstructured programming: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2350055</guid>
				<title>A case for unstructured programming: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1305623#post-2349941</guid>
				<title>Advanced metaprogramming in C: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1305623#post-2349937</guid>
				<title>Advanced metaprogramming in C: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1057234#post-2348097</guid>
				<title>The Clockwork inside Game of Thrones: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1057234#post-2348091</guid>
				<title>The Clockwork inside Game of Thrones: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2347772</guid>
				<title>Let&#039;s stop kidding ourselves about APIs: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1298947#post-2347758</guid>
				<title>Let&#039;s stop kidding ourselves about APIs: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2347493</guid>
				<title>Where are Python macros?: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1287804#post-2345853</guid>
				<title>The Second Use Case for Literate Programming: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2343787</guid>
				<title>A case for unstructured programming: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1283596#post-2343786</guid>
				<title>A case for unstructured programming: </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> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://250bpm.com/forum/t-1269209#post-2342296</guid>
				<title>Where are Python macros?: </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> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>