<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Observations from Uppsala &#187; stackoverflow.com</title>
	<atom:link href="http://jakob.engbloms.se/archives/tag/stackoverflowcom/feed" rel="self" type="application/rss+xml" />
	<link>http://jakob.engbloms.se</link>
	<description>Computer Technology: Simulation, Virtualization, Virtual Platforms, Embedded, Multicore and Multiprocessing (by Jakob Engblom)</description>
	<lastBuildDate>Sun, 29 Jan 2012 19:45:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<image>
    <title>Observations from Uppsala</title>
    <url>http://jakob.engbloms.se/favicon.png</url>
    <link>http://jakob.engbloms.se</link>
    <width>32</width>
    <height>32</height>
    <description>Observations from Uppsala - http://jakob.engbloms.se</description>
    </image>		<item>
		<title>Joel Spolsky: You cannot program parallel in C, period</title>
		<link>http://jakob.engbloms.se/archives/953?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/953#comments</comments>
		<pubDate>Sun, 11 Oct 2009 17:40:11 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Joel Spolsky]]></category>
		<category><![CDATA[stackoverflow.com]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=953</guid>
		<description><![CDATA[I found this quote in Stackoverflow Podcast #68 quite funny in its extreme dislike of parallel programming in C&#8230; Thanks to the community transcripts wiki: Spolsky: Quite probably. I mean C is a car, it&#8217;s very dangerous – it doesn&#8217;t have seatbelts, but it&#8217;s very powerful because it goes very fast. In fact, I&#8217;d go [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2008/10/stackoverflowlogo250hq2.png"><img class="alignleft size-full wp-image-300" style="margin: 5px 10px;" title="stackoverflowlogo250hq2" src="http://jakob.engbloms.se/wp-content/uploads/2008/10/stackoverflowlogo250hq2.png" alt="stackoverflowlogo250hq2" width="47" height="61" /></a>I found this quote in <a href="http://blog.stackoverflow.com/2009/09/podcast-68/">Stackoverflow Podcast #68 </a>quite funny in its extreme dislike of parallel programming in C&#8230;</p>
<p><span id="more-953"></span>Thanks to the <a href="https://stackoverflow.fogbugz.com/default.asp?W29083">community transcripts wiki</a>:</p>
<blockquote><p><strong>Spolsky: </strong>Quite probably. I mean C is a car, it&#8217;s very dangerous – it doesn&#8217;t have seatbelts, but it&#8217;s very powerful because it goes very fast. In fact, I&#8217;d go so far as to say, unless some people are gonna punch me about this one, but you cannot write multi-threaded code in the C programming language. You just can&#8217;t. Although technically all the capabilities are there, it is <em>beyond</em> the capability of mortal humans – and I know, some of you out there are very smart and you think that you have the capability of writing multi-threaded code in the C programming language, because you&#8217;re hot shit. Well, let me tell you, it is <em>beyond </em>the capability of humans on this planet, for their brains are just not adequate to the task of writing multi-threaded code in <em>most</em> languages, least of all low-level languages like C. It&#8217;s just not gonna work, it&#8217;s just not gonna make you happy. So there.</p></blockquote>
<p>The only problem with this statement is that it means we are all doomed: since all operating systems are written in C, and all low-level libraries, it means that we have no way to build the first level of abstraction needed to provide the higher-level primitives for C# and Python and everything else higher up the stack.</p>
<p>But in general, I think this is a fairly true statement for volume programming.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/953"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/953" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/953" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/953/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>StackOverflow interviews CouchDB</title>
		<link>http://jakob.engbloms.se/archives/830?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/830#comments</comments>
		<pubDate>Tue, 07 Jul 2009 18:29:55 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[multicore software]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[couchDB]]></category>
		<category><![CDATA[Damien Katz]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Jan Lehnard]]></category>
		<category><![CDATA[Jeff Atwood]]></category>
		<category><![CDATA[Joel Spolsky]]></category>
		<category><![CDATA[parallelized software]]></category>
		<category><![CDATA[stackoverflow.com]]></category>
		<category><![CDATA[transactions]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=830</guid>
		<description><![CDATA[Last year, FLOSS Weekly interviewed Jan Lehnard of the CouchDB project. I put up a blog post on this, noting that it was interesting with a scalable parallel program written in Erlang, a true concurrent language. The interview was interesting,  but not very deeply technical. Now, almost a year later, the StackOverflow podcast, number 59, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-237" style="margin: 5px 10px;" title="couchdb" src="http://jakob.engbloms.se/wp-content/uploads/2008/08/couchdb.png" alt="couchdb" width="158" height="96" />Last year, <a href="http://www.twit.tv/floss">FLOSS Weekly </a>interviewed Jan Lehnard of the CouchDB project. I put up a <a href="http://jakob.engbloms.se/archives/236">blog post </a>on this, noting that it was interesting with a scalable parallel program written in Erlang, a true concurrent language. The interview was interesting,  but not very deeply technical. Now, almost a year later, <a href="http://blog.stackoverflow.com/category/podcasts/">the StackOverflow podcast</a>, <a href="http://blog.stackoverflow.com/2009/06/podcast-59/">number 59,</a> interviewed the founder of the project, Damien Katz. This interview goes a bit more into the technical details and what CouchDB is good for and what not, as well as some details on the use and performance of Erlang.</p>
<p><span id="more-830"></span>An interesting point made is that the light-weight user-level threading of the virtual machine in Erlang optimizes for massively threaded performance. The key property is that the context for each thread is very small compared to an OS-level application thread (like pthreads, for example), and this means that the context switch cost is dramatically smaller thanks to less cache and TLB contents needing to be swapped in and out. Thus, for lots of threads, Erlang tends to get more work done per time unit, as there is less execution time lost to friction in the memory system. I am not sure you can emulate this in C using a user-level package. The very small initial stack and heap size of the Erlang VM is partially achieved by the very fact that in a VM, you have more insight into and control over when memory allocation happens, and thus you can more easily do stack and heap grow operations in small units.</p>
<p>Another interesting aspect of Erlang as opposed to C/C++ brought out in the interview is how to do error handling. In Erlang, this is part of the language, while in C/C++, writing code to handle all cases (and handle them correctly) quickly gets painful and overwhelming. Instead in Erlang, you have a system policy to kill any thread that does something bad and restart it. With that simple strategy imposed on you, the code gets much simpler.</p>
<p><img class="alignright size-full wp-image-300" title="stackoverflowlogo250hq2" src="http://jakob.engbloms.se/wp-content/uploads/2008/10/stackoverflowlogo250hq2.png" alt="stackoverflowlogo250hq2" width="47" height="61" />The podcast also brought up <a href="http://stackoverflow.com/questions/299723/can-i-do-transactions-and-locks-in-couchdb">a StackOverflow question about CouchDB </a>that resulted in a good explanation of the concurrency model (optimistic concurrency on entire documents, an nothing smaller or larger than that). Damien Katz came in with some more insights on transactions and CouchDB, in a discussion on how to solve the classic bank account problem: moving money from one account to another. The &#8220;ACID&#8221; solution is to make sure that changes to two accounts are always both done or none done. The CouchDB solution is to put in a record of the account-to-account money transfer (I won&#8217;t use the word &#8220;transaction&#8221; as that is overloaded in this context) in the database, and just go through all records pertaining to a particular account to arrive at its current balance. That does feel more like proper bookkeeping practice, rather than having a single unauditable  balance in an account record&#8230;</p>
<p>Overall, worth its time to listen to.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/830"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/830" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/830" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/830/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Tyranny of Syntax on Stackoverflow</title>
		<link>http://jakob.engbloms.se/archives/681?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/681#comments</comments>
		<pubDate>Mon, 09 Mar 2009 20:51:51 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[CS]]></category>
		<category><![CDATA[Domain-specific languages]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[stackoverflow.com]]></category>
		<category><![CDATA[VBA]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=681</guid>
		<description><![CDATA[The 44th episode of the Stackoverflow podcast contains an interesting discussion on what I have liked to call &#8220;the tyranny of syntax&#8221;.They note that for some reason people are scared of anything that does not look like C, but still lament some of the less good design patterns in C, such as the fact that [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-300" style="margin: 5px;" title="stackoverflowlogo250hq2" src="http://jakob.engbloms.se/wp-content/uploads/2008/10/stackoverflowlogo250hq2.png" alt="stackoverflowlogo250hq2" width="47" height="61" />The <a href="http://itc.conversationsnetwork.org/shows/detail4028.html">44th episode of the Stackoverflow podcast </a>contains an interesting discussion on what I have liked to call &#8220;the tyranny of syntax&#8221;.They note that for some reason people are scared of anything that does not look like C, but still lament some of the less good design patterns in C, such as the fact that closing braces have no annotations as to what is being closed. They also talk about the use of &#8220;little languages&#8221;, and an old favorite song of mine.</p>
<p><span id="more-681"></span></p>
<p>The best bit is the discussion around named parameters and how that was introduced into Visual Basic for Application in Excel &#8212; and at the same time they reduced the argument counts to most functions by replacing them with manipulating properties of objects. I think that approach does make some sense, if you have something that lends itself to that kind of expression. Their comparison of having a single function call with 83 arguments to change the style of text in Word by silently effecting a dialog box, or actually setting each of 83 properties of a dialog box object makes eminent sense&#8230; Sense that applies to simulators as well: in Simics, we do have a system like that, with attributes on all objects in the simulation that can be set to change their behavior and connections. Trying to configure that in the SystemC-style with function calls and constructors from scratch would be a pain, definitely.</p>
<p>Another topic that struck a chord with me was the notion that we are moving towards a world of &#8220;little languages&#8221; built for particular purposes. I definitely think this is the right way to go, as domain-specific languages do make getting particular things done easier. The more general a language is, the worse it is at any particular task. Better then to use a smaller language built to do one thing. As Jeff put it, for databases uses SQL, for text processing using Perl, etc&#8230; Using a multitude of languages is the hallmark of good software design and a natural instinct for a computer scientist.</p>
<p>They also found a <a href="http://www.youtube.com/watch?v=XHosLhPEN3k">YouTube video </a>of the old computer science (CS) song &#8220;<a href="http://www.mmilan.com/write-in-c/">Write in C</a>&#8220;. They do not seem to get that this is a really old song, I remember singing it way back when I was a fresh <a href="http://www.datavetenskap.nu/">undergrad CS student </a>here in Uppsala&#8230; and it was part of the first edition of our nice leather-bound songbook called &#8220;Manualen&#8221;. The lyrics are starting to feel a bit dated, but it is still a very elegant piece of writing that I think took place in the mid-1980s, judging from the other languages referenced.</p>
<p>Anyway, an unusually listen-worthy edition of Stackoverflow.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/681"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/681" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/681" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/681/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-topic: Computer Nostalgia at Stackoverflow</title>
		<link>http://jakob.engbloms.se/archives/303?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/303#comments</comments>
		<pubDate>Fri, 03 Oct 2008 11:31:03 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[history of computing]]></category>
		<category><![CDATA[nostalgia]]></category>
		<category><![CDATA[stackoverflow.com]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=303</guid>
		<description><![CDATA[Strongly recommended thread at stackoverflow: http://stackoverflow.com/questions/102714/what-was-your-first-home-computer is about your first home computer. Some good product shots, and also some really funny things inserted. Tweet]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-300" style="margin-left: 10px; margin-right: 10px;" title="stackoverflowlogo250hq2" src="http://jakob.engbloms.se/wp-content/uploads/2008/10/stackoverflowlogo250hq2.png" alt="" width="47" height="61" /></p>
<p>Strongly recommended thread at stackoverflow: http://stackoverflow.com/questions/102714/what-was-your-first-home-computer is about your first home computer. Some good product shots, and also some really funny things inserted.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/303"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/303" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/303" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/303/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stackoverflow.com &#8212; Worth a Visit!</title>
		<link>http://jakob.engbloms.se/archives/298?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/298#comments</comments>
		<pubDate>Wed, 01 Oct 2008 20:49:50 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[embedded software]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[websites]]></category>
		<category><![CDATA[stackoverflow.com]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=298</guid>
		<description><![CDATA[I have recently discovered stackoverflow.com and I must say it is something I very much recommend. The idea is simple, and the details rich and interesting. Idea: create a site for programmers to ask other programmers questions and get answers Details: make it so that good material gets community filtered, by a scoring system &#8212; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stackoverflow.com"><img class="alignleft size-full wp-image-300" style="border: 0pt none; margin: 5px 10px;" title="stackoverflowlogo250hq2" src="http://jakob.engbloms.se/wp-content/uploads/2008/10/stackoverflowlogo250hq2.png" alt="" width="47" height="61" /></a>I have recently discovered <a href="http://stackoverflow.com/">stackoverflow.com</a> and I must say it is something I very much recommend. The idea is simple, and the details rich and interesting.</p>
<p><span id="more-298"></span>Idea:</p>
<ul>
<li>create a site for programmers to ask other programmers questions and get answers</li>
</ul>
<p>Details:</p>
<ol>
<li>make it so that good material gets community filtered, by a scoring system &#8212; you vote on answers to point out what is good, and the question-poster can select the &#8220;accepted&#8221; answer to the question</li>
<li>really good discussions can morph from discussions to collaborative wiki-style articles when needed, based on some criteria</li>
<li>create a score system to reward involvement and discourage bad behavior. You get points for asking questions, answering questions, etc. In a fairly involved way.</li>
<li>you have questions, answers, and comments on the answers. Interesting hierarchical system that I have not seen elsewhere</li>
<li>you can say &#8220;me too think so&#8221; to existing answers by scoring, rather than filling threads with &#8220;yes sure&#8221;, which other forums tend to do.</li>
</ol>
<p>Conclusion:</p>
<ul>
<li>The mechanisms seem to work pretty well</li>
<li>You do get some questions with hundreds of answers, which kind of hits forum madness and I cannot care to read them all</li>
<li>You can use it for occasional reading and deep research</li>
</ul>
<p>My main issue with the site is really that most questions seem to be related to things that are of little interest to me, especially web development in .net and other things that I am surprised to see are as common as they are! Embedded and linux seems to be quite rare, and people doing large-scale embedded even rarer. Simulation and EDA is non-existent from the looks of it.</p>
<p>But that can all change if more people discover it.</p>
<p>So please go there and check it out!</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/298"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/298" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/298" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/298/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

