<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Computed·Blg - Programming</title>
    <link>http://blog.computedby.com/</link>
    <description>Technology experiments &amp;  survey</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.5 - http://www.s9y.org/</generator>
    <pubDate>Tue, 17 Apr 2012 14:41:11 GMT</pubDate>

    <image>
        <url>http://blog.computedby.com/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Computed·Blg - Programming - Technology experiments &amp;  survey</title>
        <link>http://blog.computedby.com/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>The Semicolon Wars</title>
    <link>http://blog.computedby.com/archives/199-The-Semicolon-Wars.html</link>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/199-The-Semicolon-Wars.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=199</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=199</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via Christian Babski&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;http://blog.computedby.com/uploads/wtf.png&quot; /&gt; &lt;/p&gt; 
&lt;p&gt; &lt;a href=&quot;http://www.americanscientist.org/issues/pub/the-semicolon-wars&quot; target=&quot;_as&quot;&gt;Here&lt;/a&gt;(@American Scientist) is an interesting and rather complete article on programming language [evolution,war] with some infographics on programming history and methods. It is not that technical, making the reading accessible to any one.&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 18 Apr 2012 14:23:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/199-guid.html</guid>
    <category>c</category>
<category>c++</category>
<category>cobol</category>
<category>fortran</category>
<category>language</category>
<category>lisp</category>
<category>pascal</category>
<category>programming</category>
<category>smalltalk</category>

</item>
<item>
    <title>HTML5: A blessing or a curse?</title>
    <link>http://blog.computedby.com/archives/198-HTML5-A-blessing-or-a-curse.html</link>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/198-HTML5-A-blessing-or-a-curse.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=198</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=198</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a target=&quot;_dev&quot; href=&quot;http://www.develop-online.net/&quot;&gt;develop&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;div class=&quot;lead_text&quot;&gt; 
&lt;p&gt;Develop looks at the platform with ambitions to challenge Adobe&#039;s ubiquitous Flash web player&lt;br /&gt;&lt;/p&gt; 
&lt;div id=&quot;page_left&quot;&gt; 
&lt;div class=&quot;article&quot;&gt; 
&lt;div class=&quot;square_image&quot;&gt;&lt;img width=&quot;184&quot; height=&quot;184&quot; title=&quot;HTML5: A blessing or a curse?&quot; alt=&quot;HTML5: A blessing or a curse?&quot; src=&quot;https://www.develop-online.net/static/images/features/1624/184_1895_HTML5-logo.jpg?i=1334324748&quot; /&gt; &lt;br /&gt;&lt;/div&gt; 
&lt;/div&gt; 
&lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;Initially heralded as the future of 
browser gaming and the next step beyond the monopolised world of Flash, 
HTML5 has since faced criticism for being tough to code with and 
possessing a string of broken features.&lt;/p&gt; 
&lt;p&gt;The coding platform, the fifth iteration of the HTML standard, was 
supposed to be a one stop shop for developers looking to create and 
distribute their game to a multitude of platforms and browsers, but 
things haven’t been plain sailing.&lt;/p&gt; 
&lt;p&gt;Not just including the new HTML mark-up language, but also 
incorporating other features and APIs such as CSS3, SVG and JavaScript, 
the platform was supposed to allow for the easy insertion of features 
for the modern browser such as video and audio, and provide them without
 the need for users to install numerous plug-ins.&lt;/p&gt; 
&lt;p&gt; And whilst this has worked to a certain degree, and a number of 
companies such as Microsoft, Apple, Google and Mozilla under the W3C 
have collaborated to bring together a single open standard, the problems
 it possesses cannot be ignored.&lt;/p&gt; 
&lt;p&gt;&lt;a target=&quot;_dv&quot; href=&quot;https://www.develop-online.net/features/1624/HTML5-A-blessing-or-a-curse&quot;&gt;Access to the full article&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt; &lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 17 Apr 2012 12:39:16 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/198-guid.html</guid>
    <category>flash</category>
<category>html</category>
<category>programming</category>
<category>web</category>

</item>
<item>
    <title>Paranoid Shelter - [Implementation Code]</title>
    <link>http://blog.computedby.com/archives/196-Paranoid-Shelter-Implementation-Code.html</link>
            <category>Computed·By</category>
            <category>Physical computing</category>
            <category>Programming</category>
            <category>Software</category>
    
    <comments>http://blog.computedby.com/archives/196-Paranoid-Shelter-Implementation-Code.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=196</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=196</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;By &lt;a target=&quot;_cby&quot; href=&quot;http://www.computedby.com&quot;&gt;Computed·By&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;Paranoid Shelter is a recent installation / architectural device that &lt;a href=&quot;http://www.fabric.ch/&quot; target=&quot;_blank&quot;&gt;fabric&amp;#160;|&amp;#160;ch&lt;/a&gt; finalized later in 2011 after a 6 months residency at the &lt;a href=&quot;http://www.epfl-ecal-lab.ch/&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;EPFL-ECAL Lab&lt;/span&gt;&lt;/a&gt; in Renens (Switzerland). It was realized with the support of &lt;a href=&quot;http://www.prohelvetia.ch/Home.20.0.html?&amp;amp;L=4&quot; target=&quot;_blank&quot;&gt;Pro Helvetia&lt;/a&gt;, the &lt;a href=&quot;http://www.bak.admin.ch/index.html?lang=fr&quot; target=&quot;_blank&quot;&gt;OFC&lt;/a&gt;, the &lt;a href=&quot;http://www.lausanne.ch/view.asp?domId=64200&amp;amp;language=E&quot; target=&quot;_blank&quot;&gt;City of Lausanne&lt;/a&gt; and the &lt;a href=&quot;http://www.vd.ch/themes/culture/&quot; target=&quot;_blank&quot;&gt;State of Vaud&lt;/a&gt;.
 It was initiated and first presented as sketches back in 2008 (!), in 
the context of a colloquium about surveillance at the Palais de Tokyo in
 Paris. &lt;/p&gt; 
&lt;div&gt; &lt;/div&gt; 
&lt;div&gt; 
&lt;p&gt;Being created in the context of a theatrical collaboration with french writer and essayist &lt;a href=&quot;http://ericsadin.org/&quot; target=&quot;_blank&quot;&gt;Eric Sadin&lt;/a&gt; around his books about contemporary surveillance (&lt;a href=&quot;http://ericsadin.org/node/21&quot; target=&quot;_blank&quot;&gt;Surveillance globale&lt;/a&gt;&amp;#160;and&amp;#160;&lt;a href=&quot;http://ericsadin.org/node/12&quot;&gt;Globale paranoïa&lt;/a&gt;&amp;#160;--both published back in 2009--), &lt;span&gt;Paranoid Shelter&lt;/span&gt;
 revisits the old figure/myth of the architectural shelter, articulated 
by the use of surveillance technologies as building blocks.&lt;/p&gt; 
&lt;p&gt;Additionnal information on the overall project can be found through the two following links: &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a target=&quot;_bf&quot; href=&quot;http://blog.fabric.ch/index.php?/archives/2228-Paranoid-Shelter-Globale-Surveillance.html&quot;&gt;Paranoid Shelter - (Globale Surveillance)&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a target=&quot;_bf&quot; href=&quot;http://blog.fabric.ch/index.php?/archives/2243-Paranoid-Shelter-Globale-Surveillance.html&quot;&gt;(Paranoid Shelter) - Globale Surveillance &lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img width=&quot;500&quot; height=&quot;333&quot; src=&quot;http://blog.fabric.ch/uploads/image/DSC01328_b_s.jpg&quot; /&gt;&lt;/p&gt; 
&lt;p&gt; 
&lt;iframe width=&quot;500&quot; height=&quot;375&quot; frameborder=&quot;0&quot; src=&quot;http://player.vimeo.com/video/39674753?title=0&amp;amp;byline=0&amp;amp;portrait=0&quot;&gt;&lt;/iframe&gt; 
&lt;/p&gt; 
&lt;p&gt;&lt;span style=&quot;font-size: smaller;&quot;&gt;&lt;em&gt;A&amp;#160;compressed preview and short of the play by &lt;/em&gt;&lt;/span&gt;&lt;span style=&quot;font-size: smaller;&quot;&gt;&lt;a href=&quot;http://www.nohista.org/&quot;&gt;&lt;em&gt;NOhista&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;/div&gt; 
&lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;&lt;a name=&quot;result_box&quot;&gt;&lt;/a&gt;On the first
technical drawings and sketches of the Paranoid Shelter project, the
entire system was just looking like a (big) mess of wires, sensors
and video cameras, all concentrated on a pretty tiny space where humans
will have difficulties to move in. The entire space is consciously
organised around tracking methods/systems, the space being delimited
by 3 [augmented] posts which host a set of sensors, video cameras and
microphones. It includes networked [power over ethernet] video cameras,
microphones and a set of wireless ambient sensors (giving the ability
of measuring temperature, O2 and CO2 gaz concentration, current
atmospheric pressure, light, etc...).&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;http://blog.computedby.com/uploads/tech_box_publication.png&quot; /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img width=&quot;501&quot; height=&quot;333&quot; src=&quot;http://blog.computedby.com/cby/images/196_1334248342_1.jpg&quot; /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;Based on a real-time analysis of major
sensors hardware, the system is able to control DMX lights, a set of
two displays (one LCD screen and one projector) and to produce sound
through a dynamically generated text to speech process.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;All programs were developed using
&lt;a target=&quot;_of&quot; href=&quot;http://www.openframeworks.cc/&quot;&gt;openFrameworks&lt;/a&gt; enhanced by a set of dedicated in-house C++ libraries
in order to be able to capture networked camera video flow, control
any &lt;a target=&quot;_dmx&quot; href=&quot;http://en.wikipedia.org/wiki/DMX512&quot;&gt;DMX&lt;/a&gt; compatible piece of hardware and collect &lt;a target=&quot;_libelium&quot; href=&quot;http://www.libelium.com/&quot;&gt;wireless Libelum sensor&lt;/a&gt;&#039;s
data. Sound analysis programs, LCD display program and the main
program are all connected to each other via a local network. The main
program is in charge of collecting other program&#039;s data, performing
the global analysis of the system&#039;s activity, recording system&#039;s raw
information to a database and controlling system&#039;s [re]actions
(lights, display).&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;The overall system can act in an
[autonomous] way by controlling the entire installation behavior
while it can also be remotely controlled when used on stage,
in the context of a theater play.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;&lt;img width=&quot;500&quot; height=&quot;333&quot; src=&quot;http://blog.computedby.com/cby/images/196_1334248343_2.jpg&quot; /&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;Collecting all sensor&#039;s flows is one of
the basic task. Cameras are used to track movements, microphones
measure sound activity and sensors collect a set of ambient
parameters. Even if data capture consists in some basic network based
tasks, it is easily raised to upper complexity level when each data
collection should occur simultaneously, in real-time, [without,with]
a [limited,acceptable] delay. Major raw data analysis have to occur
directly after data acquisition in order to minimize the time-shift
in the system&#039;s space awareness. This first level of data analysis
brings out mainly frequencies information, quantity of activity and
2D location tracking (from the point of view of each camera). Every
single piece of raw information is systematically recorded in a
dedicated database : it reduces system&#039;s memory footprint (by keeping
it almost constant) without loosing any activity information. From
time to time the system can access these recorded information in its
post-analysis process, when required, mainly to add a time-scale
dimension on the global activity that occurred in the monitored
space. Time isolated information can be interpreted in a rough and
basic way, while time composition of the same information or a set of
information may bring additional meanings by verifying information
consistency over time (of course, it could be in a negative or a
positive way, by confirming or refuting a first level deduced
activity information). Another level of analysis can be reached by
taking in account the spacial distribution of sensors in the overall
installation. The system is then able to compute 3D information
getting an awareness of activities within the space it is monitoring.
It generates a second level of data analysis, spatialised, that will
increase the global understanding of captured data by the system.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;Recorded activities are made available
to the [audience,visitors] through a wifi access point. Networked
cameras can be accessed in real time, giving the ability to humans to
see some of the system&#039;s [inputs]. Thus, network activity is also
monitored as another sign of human presence, the system can then
[detect] activity elsewhere than in its dedicated space.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;&lt;img width=&quot;500&quot; height=&quot;333&quot; src=&quot;http://blog.computedby.com/cby/images/196_1334248344_3.jpg&quot; /&gt;&lt;/p&gt; 
&lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;Whatever how numerous are collected
data, the system faces a real problem when it comes to the
interpretation of these data while not having benefit of a human
brain. Events that are quite obvious to humans, do not mean anything
to computers and softwares. In order to avoid the use of some
artificial neural networks simulation (which may still be a good
option to explore), I have decided to compute a limited set of
parameters, all based on previously analysed data, only computed
lately when the system may decide to react to perceived activities.
It defines a kind of global [mood] of the system, based on which it
will [decide] whether to be aggressive (from a human point of view)
by making the global tracking activity [noticeable] by humans
evolving in the installation&#039;s space, or by focusing tracking sensors
on a given area or by trying to enhance some sensor&#039;s information
analysis, whether to settle in a kind of silent mode. 
&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;Moreover, the evolution of these
parameters are also studied in time, making the [mood] evolving in
a human way, increasing and decreasing [analogically]. System&#039;s
[mood] may be wrong or [unjustified,weird] from a human point of
view, but that&#039;s where [multi-dimensional] software becomes
interesting. Beyond a certain complexity, by adding computation
layers on top of each over, having written every single line of code
does not allow the programmer to predict precisely what next system&#039;s
[re]action will be.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;We did reach here monitoring system
limitations which is obviously [interpretation,comprehension]. As long as automatic
system can not correctly [understand] data, humans will need to be in
the loop, making all these monitoring systems quite useless [as
expert system], except for producing an enormous quantity of data
that still need to be post-analysed by a human brain. As the system
is producing an important set of heteregeneous data, a set of rules
may suggest to the system some sort of data correlation. These rules
should not be too [tights,precises] in order to avoid producing
obvious system&#039;s interpretation, while keeping them slightly [out of 
focus] may allow [smart,astonishing] conclusion being produced. So
there&#039;s rooms here for additional implementation of the data analysis
processes that can still completely change the way the entire
installation [can,may] behave.&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 12 Apr 2012 17:22:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/196-guid.html</guid>
    
</item>
<item>
    <title>MIT Project Aims to Deliver Printable, Mass-Market Robots</title>
    <link>http://blog.computedby.com/archives/192-MIT-Project-Aims-to-Deliver-Printable,-Mass-Market-Robots.html</link>
            <category>Innovation&amp;Society</category>
            <category>Programming</category>
            <category>Technology</category>
    
    <comments>http://blog.computedby.com/archives/192-MIT-Project-Aims-to-Deliver-Printable,-Mass-Market-Robots.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=192</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=192</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a href=&quot;http://www.wired.com&quot; target=&quot;_wired&quot;&gt;Wired&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://www.wired.com/gadgetlab/2012/04/print-your-own-mit-robot/printable_robots_01/&quot; rel=&quot;attachment wp-att-95313&quot;&gt;&lt;img style=&quot;width: 554px; height: 369px;&quot; title=&quot;Printable_robots_01&quot; src=&quot;http://blog.computedby.com/cby/images/192_1334248261_0.jpg&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;font size=&quot;1&quot;&gt;Insect printable robot. &lt;em&gt;Photo: Jason Dorfman, CSAIL/MIT&lt;/em&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;Printers can make &lt;a href=&quot;http://www.wired.com/gadgetlab/2012/01/sculpteo-3d-printing-app/&quot;&gt;mugs&lt;/a&gt;, &lt;a href=&quot;http://www.wired.com/gadgetlab/2011/07/chocolate-3-d-printer-arrives-at-last/&quot;&gt;chocolate&lt;/a&gt; and even &lt;a href=&quot;http://www.wired.com/rawfile/2010/07/gallery-bio-printing/&quot;&gt;blood vessels&lt;/a&gt;. Now, MIT scientists want to add robo-assistants to the list of printable goodies.&lt;/p&gt; 
&lt;p&gt;Today, MIT announced a new project, “An Expedition in Computing 
Printable Programmable Machines,” that aims to give everyone a chance to
 have his or her own robot.&lt;/p&gt; 
&lt;p&gt;Need help peering into that unreasonably hard-to-reach cabinet, or 
wiping down your grimy 15th-story windows? Walk on over to robo-Kinko’s 
to print, and &lt;a href=&quot;http://web.mit.edu/newsoffice/2012/print-your-own-robots-0403.html&quot;&gt;within 24 hours&lt;/a&gt; you could have a fully programmed working origami bot doing your dirty work.&lt;/p&gt; 
&lt;p&gt;“No system exists today that will take, as specification, your 
functional needs and will produce a machine capable of fulfilling that 
need,” MIT robotics engineer and project manager Daniela Rus said.&lt;/p&gt; 
&lt;p&gt;Unfortunately, the very earliest you’d be able to get your hands on 
an almost-instant robot might be 2017. The MIT scientists, along with 
collaborators at Harvard University and the University of Pennsylvania, 
received a $10 million grant from the National Science Foundation for 
the 5-year project. Right now, it’s at very early stages of development.&lt;/p&gt; 
&lt;p&gt;So far, the team has prototyped two mechanical helpers: an 
insect-like robot and a gripper. The 6-legged tick-like printable robot 
could be used to check your basement for gas leaks or to play with your 
cat, Rus says. And the gripper claw, which picks up objects, might be 
helpful in manufacturing, or for people with disabilities, she says.&lt;br /&gt; &lt;span id=&quot;more-95290&quot;&gt;&lt;/span&gt;&lt;/p&gt; 
&lt;div id=&quot;attachment_3840&quot; class=&quot;wp-caption alignright&quot; style=&quot;width: 210px;&quot;&gt;&lt;a href=&quot;http://www.wired.com/gadgetlab/2012/04/print-your-own-mit-robot/printable_robots_02-1/&quot; rel=&quot;attachment wp-att-95329&quot;&gt;&lt;img width=&quot;200&quot; height=&quot;300&quot; title=&quot;Printable_robots_02-1&quot; src=&quot;http://blog.computedby.com/cby/images/192_1334248263_1.jpg&quot; /&gt;&lt;/a&gt; 
&lt;p class=&quot;wp-caption-text&quot;&gt;&lt;em&gt;&lt;font size=&quot;1&quot;&gt;Printable gripper. &lt;em&gt;Photo: Jason Dorfman, CSAIL/MIT&lt;/em&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;p&gt;The two prototypes cost about $100 and took about 70 minutes to 
build. The real cost to customers will depend on the robot’s 
specifications, its capabilities and the types of parts that are 
required for it to work.&lt;/p&gt; 
&lt;p&gt;The researchers want to create a one-size-fits-most platform to 
circumvent the high costs and special hardware and software often 
associated with robots. If their project works out, you could go to a 
local robo-printer, pick a design from a catalog and customize a robot 
according to your needs. Perhaps down the line you could even order-in 
your designer bot through an app.&lt;/p&gt; 
&lt;p&gt;Their approach to machine building could “democratize access to 
robots,” Rus said. She envisions producing devices that could detect 
toxic chemicals, aid science education in schools, and help around the 
house.&lt;/p&gt; 
&lt;p&gt;Although bringing robots to the masses sounds like a great idea (a 
sniffing bot to find lost socks would come in handy), there are still 
several potential roadblocks to consider — for example, how users, 
especially novice ones, will interact with the printable robots.&lt;/p&gt; 
&lt;p&gt;“Maybe this novice user will issue a command that will break the 
device, and we would like to develop programming environments that have 
the capability of catching these bad commands,” Rus said.&lt;/p&gt; 
&lt;p&gt;As it stands now, a robot would come pre-programmed to perform a set 
of tasks, but if a user wanted more advanced actions, he or she could 
build up those actions using the bot’s basic capabilities. That advanced
 set of commands could be programmed in a computer and beamed wirelessly
 to the robot. And as voice parsing systems get better, Rus thinks you 
might be able to simply tell your robot to do your bidding.&lt;/p&gt; 
&lt;p&gt;Durability is another issue. Would these robots be single-use only? 
If so, trekking to robo-Kinko’s every time you needed a bot to look 
behind the fridge might get old. These are all considerations the 
scientists will be grappling with in the lab. They’ll have at least five
 years to tease out some solutions.&lt;/p&gt; 
&lt;p&gt;In the meantime, it’s worth noting that other&amp;#160;other groups are also building robots using printers. German engineers &lt;a href=&quot;http://www.fraunhofer.de/en/press/research-news/2011/november/high-tech-spider.html&quot;&gt;printed a white robotic spider last year&lt;/a&gt;. The arachnoid carried a camera and equipment to assess chemical spills.&lt;/p&gt; 
&lt;p&gt;And at Drexel University, paleontologist Kenneth Lacovara and mechanical engineer James Tangorra are&amp;#160;trying to create &lt;a href=&quot;http://www.drexel.edu/now/news-media/releases/archive/2012/February/3D-Printing-Technology-Robotic-Dinosaurs/&quot;&gt;a robotic dinosaur from dino-bone replicas&lt;/a&gt;.
 The 3-D-printed bones are scaled versions of laser-scanned fossils. By 
the end of 2012, Lacovara and Tangorra hope to have a fully mobile 
robotic dinosaur, which they want to use to study how dinosaurs, like 
large sauropods, moved.&lt;/p&gt; 
&lt;p&gt;Lancovara thinks the MIT project is an exciting and promising one: 
“If it’s a plug-and-play system, then it’s feasible,” he said. But 
“obviously, it [also] depends on the complexity of the robot.” He’s seen
 complex machines with working gears printed in one piece, he says.&lt;/p&gt; 
&lt;p&gt;Right now, the MIT researchers are developing an API that would 
facilitate custom robot design and writing algorithms for the assembly 
process and operations.&lt;/p&gt; 
&lt;p&gt;If their project works out, we could all have a bot to call our own in a few years. Who said print was dead?&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 05 Apr 2012 10:22:31 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/192-guid.html</guid>
    <category>3d printing</category>
<category>innovation&amp;society</category>
<category>programming</category>
<category>robot</category>
<category>technology</category>

</item>
<item>
    <title>Fake ID holders beware: facial recognition service Face.com can now detect your age</title>
    <link>http://blog.computedby.com/archives/189-Fake-ID-holders-beware-facial-recognition-service-Face.com-can-now-detect-your-age.html</link>
            <category>Innovation&amp;Society</category>
            <category>Programming</category>
            <category>Software</category>
    
    <comments>http://blog.computedby.com/archives/189-Fake-ID-holders-beware-facial-recognition-service-Face.com-can-now-detect-your-age.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=189</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=189</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a target=&quot;_vb&quot; href=&quot;http://venturebeat.com&quot;&gt;VB&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;Facial-recognition platform &lt;a href=&quot;http://face.com/&quot; target=&quot;_blank&quot;&gt;Face.com&lt;/a&gt;
 could foil the plans of all those under-age kids&amp;#160;looking to score some 
booze. Fake IDs might not fool anyone for much longer, because Face.com 
claims its new application programming interface&amp;#160;(API) can be used to 
detect a person’s age by scanning a photo.&lt;/p&gt; 
&lt;p&gt;With its facial recognition system, Face.com has built two Facebook 
apps that can scan photos and tag them for you. The company also offers 
an API for developers to use its facial recognition technology in the 
apps they build.&lt;/p&gt; 
&lt;p&gt;Its latest update to the API can scan a photo and supposedly 
determine a person’s minimum age, maximum age, and estimated age. It 
might not be spot-on&amp;#160;accurate, but it could get close enough to 
determine your age group.&lt;/p&gt; 
&lt;p&gt;“Instead of trying to define what makes a person young or old, 
we&amp;#160;provide our algorithms with a ton of data and the system can reverse 
engineer what makes someone young or old,” Face.com chief&amp;#160;executive&amp;#160;Gil 
Hirsch told VentureBeat in an interview.&amp;#160;”We use the&amp;#160;general structure 
of a face to determine age. As humans, our features are either heighten 
or soften depending on the age. Kids have&amp;#160;round, soft faces and as we 
age, we have elongated faces.”&lt;/p&gt; 
&lt;p&gt;The algorithms also take wrinkles, facial smoothness, and other 
telling age signs into account&amp;#160;to place each scanned face into a general
 age group. The accuracy, Hirsch told me, is determined by how old a 
person looks, not necessarily how old they actually are. The API also 
provides a confidence level on how well it could determine the age, 
based on image quality and how the person looks in photo, i.e. if they 
are turned to one side or are making a strange face.&lt;/p&gt; 
&lt;p&gt;&lt;img width=&quot;515&quot; height=&quot;417&quot; class=&quot;aligncenter size-full wp-image-409937&quot; title=&quot;face.com facial recognition&quot; src=&quot;http://blog.computedby.com/cby/images/189_1334248258_0.png&quot; alt=&quot;face.com facial recognition&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;“Adults are much harder to figure out [their age], especially 
celebrities.&amp;#160;On average, humans are much better at detecting ages than 
machines,” said Hirsch.&lt;/p&gt; 
&lt;p&gt;The hope is to build the technology into apps that restrict or tailor
 content based on age. For example the API could be built into a Netflix
 app, scan a child’s face when they open the app, determine they’re too 
young to watch The Hangover, and block it. Or — and this is where the 
tech could get futuristic and creepy — a display with a camera could 
scan someone’s face when they walk into a store and deliver ads based on
 their age.&lt;/p&gt; 
&lt;p&gt;In addition to the age-detection feature, Face.com says it has 
updated its API with 30 percent better facial recognition accuracy 
and&amp;#160;new recognition algorithms.&amp;#160;The updates were announced Thursday 
and&amp;#160;the API is available for any developer to use.&lt;/p&gt; 
&lt;p&gt;One developer has already used the API to build app called &lt;a href=&quot;http://itunes.apple.com/app/age-meter/id508973129?ign-mpt=uo%3D6&amp;amp;mt=8&quot; target=&quot;_blank&quot;&gt;Age Meter&lt;/a&gt;,
 which is available in the Apple App Store. On its iTunes page, the 
entertainment-purposes-only&amp;#160;app shows pictures of Justin Bieber and 
Barack Obama with approximate ages above their photos.&lt;/p&gt; 
&lt;p&gt;Other companies in this space include&amp;#160;Cognitec, with its &lt;a href=&quot;http://www.cognitec-systems.de/FaceVACS-SDK.19.0.html&quot; target=&quot;_blank&quot;&gt;FaceVACS software development kit&lt;/a&gt;, and Bayometric, which offers&amp;#160;&lt;a href=&quot;http://www.bayometric.com/products/Face-Recognition-SDK.htm&quot; target=&quot;_blank&quot;&gt;FaceIt Face Recognition&lt;/a&gt;. Google has also developed facial-recognition technology for &lt;a href=&quot;http://venturebeat.com/2011/10/18/android-4-0-is-here-live-from-googles-ice-cream-sandwich-launch/&quot; target=&quot;_blank&quot;&gt;Android 4.0&lt;/a&gt; and &lt;a href=&quot;http://venturebeat.com/2011/12/29/apple-facial-recognition-patent/&quot; target=&quot;_blank&quot;&gt;Apple applied for a facial&amp;#160;recognition&amp;#160;patent&lt;/a&gt;&amp;#160;last year.&lt;/p&gt; 
&lt;p&gt;The technology behind scanning someone’s picture, or even their face,
 to figure out their age still needs to be developed for complete 
accuracy. But, the day when bouncers and liquor store cashiers can use 
an app to scan a fake ID’s holder’s face, determine that they are 
younger than the legal drinking age, and refuse to sell them wine 
coolers may not be too far off.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 30 Mar 2012 15:33:43 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/189-guid.html</guid>
    <category>API</category>
<category>facial recognition</category>
<category>innovation&amp;society</category>
<category>programming</category>
<category>software</category>

</item>
<item>
    <title>TRON... in 219 bytes</title>
    <link>http://blog.computedby.com/archives/188-TRON...-in-219-bytes.html</link>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/188-TRON...-in-219-bytes.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=188</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=188</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via Christian Babski&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;http://blog.computedby.com/cby/images/188_1334248258_0.png&quot; /&gt; &lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; You can have an &lt;a target=&quot;_tron&quot; href=&quot;http://alokmenghrajani.github.com/tron/&quot;&gt;explanation&lt;/a&gt;  from the authors of this short piece of code.&lt;/p&gt; 
&lt;p&gt;Or just &lt;a target=&quot;_tron&quot; href=&quot;http://alokmenghrajani.github.com/tron/tron.html&quot;&gt;play it&lt;/a&gt; (i, j, k or l to start)&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 30 Mar 2012 10:09:48 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/188-guid.html</guid>
    
</item>
<item>
    <title>How a web application can download and store over 2GB without you even knowing it</title>
    <link>http://blog.computedby.com/archives/186-How-a-web-application-can-download-and-store-over-2GB-without-you-even-knowing-it.html</link>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/186-How-a-web-application-can-download-and-store-over-2GB-without-you-even-knowing-it.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=186</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=186</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a target=&quot;_jc&quot; href=&quot;http://jclaes.blogspot.com/&quot;&gt;Jef Claes&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt; I have been experimenting with the &lt;a href=&quot;http://www.w3.org/TR/html5/offline.html&quot;&gt;HTML5 offline application cache&lt;/a&gt; some more over the last few days, doing boundary tests in an attempt to learn more about browser behaviour in edge cases.&lt;br /&gt; &lt;br /&gt;
One of these experiments was testing the cache quota.&lt;br /&gt; &lt;br /&gt;
Two weeks ago, I blogged about &lt;a href=&quot;http://jclaes.blogspot.com/2012/03/html5-offline-web-applications-as.html&quot;&gt;generating and serving an offline application manifest using ASP.NET MVC&lt;/a&gt;. I reused that code to add hundreds of 7MB PDF files to the cache.&lt;br /&gt; &lt;/p&gt; 
&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; ActionResult Manifest()
{     
    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; cacheResources = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; List&amp;lt;&lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;&amp;gt;();
    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; n = 300; &lt;span class=&quot;rem&quot;&gt;// Play with this number&lt;/span&gt;

    &lt;span class=&quot;kwrd&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; i = 0; i &amp;lt; n; i++)
        cacheResources.Add(&lt;span class=&quot;str&quot;&gt;&quot;Content/&quot;&lt;/span&gt; + Url.Content(&lt;span class=&quot;str&quot;&gt;&quot;book.pdf?&quot;&lt;/span&gt; + i));

    &lt;span class=&quot;kwrd&quot;&gt;var&lt;/span&gt; manifestResult = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; ManifestResult(&lt;span class=&quot;str&quot;&gt;&quot;1&quot;&lt;/span&gt;)
    {
        NetworkResources = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt;[] { &lt;span class=&quot;str&quot;&gt;&quot;*&quot;&lt;/span&gt; },
        CacheResources = cacheResources
    };

    &lt;span class=&quot;kwrd&quot;&gt;return&lt;/span&gt; manifestResult;
}&lt;span style=&quot;font-family: &#039;Times New Roman&#039;;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
I initially tried adding 1000 PDF files to the cache, but this threw an 
error: Chrome failed to commit the new cache to the storage, because the
 quota would be exceeded.&lt;br /&gt; &lt;br /&gt;
After lowering the number of files several times, I hit the sweet spot. I
 could add 300 PDF files to the cache without breaking it.&lt;br /&gt; 
&lt;div&gt; &lt;br /&gt;&lt;/div&gt; 
&lt;div&gt;
Looking into &lt;em&gt;chrome://appcache-internals/&lt;/em&gt;, I can see the size of the cache being a whopping &lt;strong&gt;2.2GB&lt;/strong&gt; now for one single web application.&lt;/div&gt; 
&lt;div&gt; &lt;br /&gt;&lt;/div&gt; 
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;a href=&quot;http://2.bp.blogspot.com/-0Ktx0DtzqRI/T27rKCIB3dI/AAAAAAAABQE/nJZqHiBoMvw/s1600/appcache-internals.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img width=&quot;330&quot; border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://blog.computedby.com/cby/images/186_1334248256_0.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt; 
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;br /&gt;&lt;/div&gt; 
&lt;div&gt;
As a user, I had no idea that the website I&#039;m browsing is downloading a 
suspicious amount of data in the background. Chrome (17.0.963.83), nor 
any other desktop browser that I know of, warns me. I would expect the 
browser to ask for my permission when a website wants to download and 
store such an excessive amount of data on my machine.&lt;br /&gt; &lt;br /&gt;
Something else I noticed, is that other sites now fail to commit 
anything to the application cache due to the browser-wide quota being 
exceeded. I&#039;m pretty sure this &#039;first browsed, first reserved&#039; approach 
will be a source of frustration in the future.&lt;br /&gt;
To handle this scenario we could use the applicationCache API to listen for quota errors, and inform the user to browse to &lt;em&gt;chrome://appcache-internals/&lt;/em&gt;
 and remove other caches in favor of the new one. This feels sketchy 
though; shouldn&#039;t the browser intervene in a more elegant way here?&lt;/div&gt; 
&lt;div&gt; &lt;br /&gt;&lt;/div&gt; 
&lt;div&gt; 
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt; &lt;a href=&quot;http://3.bp.blogspot.com/-hh-FTCiP658/T27rnNRPGUI/AAAAAAAABQM/ux5lYqLfI40/s1600/exceedquote.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img width=&quot;400&quot; border=&quot;0&quot; height=&quot;137&quot; src=&quot;http://blog.computedby.com/cby/images/186_1334248257_1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt; 
&lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 30 Mar 2012 09:47:52 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/186-guid.html</guid>
    
</item>
<item>
    <title>Android and Linux re-merge into one operating system</title>
    <link>http://blog.computedby.com/archives/179-Android-and-Linux-re-merge-into-one-operating-system.html</link>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/179-Android-and-Linux-re-merge-into-one-operating-system.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=179</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=179</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a target=&quot;_zdnet&quot; href=&quot;http://www.zdnet.com&quot;&gt;ZDNet&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;Android has always been Linux, but for years the Android project went its own way and its code wasn’t merged back into the main Linux tree. Now,&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.zdnet.com/blog/open-source/linus-torvalds-on-android-the-linux-fork/9426&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;much sooner than Linus Torvalds&lt;/a&gt;, Linux’s founder and lead developer, had expected,&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://kernelnewbies.org/Linux_3.3&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Android has officially merged back into Linux’s mainline&lt;/a&gt;.&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;The fork between Android and Linux all began in the fall of 2010, “&lt;a href=&quot;http://arstechnica.com/open-source/reviews/2009/02/an-introduction-to-google-android-for-developers.ars&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Google engineer Patrick Brady stated that Android is not Linux&lt;/a&gt;” That was never actually the case.&lt;a href=&quot;http://practical-tech.com/operating-system/androidlinux-kernel-fight-continues/3074/&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Android has always been Linux&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;at heart.&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;At the same time though Google did take Android in a direction that wasn’t compatible with the mainstream Linux kernel. As&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.kroah.com/log/linux/what_greg_does.html&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Greg Kroah-Hartman, the maintainer of the stable Linux kernel&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;for the Linux Foundation and head of the&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.linuxdriverproject.org/foswiki/bin/view&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Linux Driver Project&lt;/a&gt;, wrote in&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;em style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: italic; font-size: 12px; font-family: inherit; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;http://www.kroah.com/log/linux/android-kernel-problems.html&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Android and the Linux kernel community&lt;/a&gt;&lt;/em&gt;, “The Android kernel code is more than just the few weird drivers that were in the drivers/staging/androidsubdirectory in the kernel. In order to get a working Android system, you need the new lock type they have created, as well as hooks in the core system for their security model. In order to write a driver for hardware to work on Android, you need to properly integrate into this new lock, as well as sometimes the bizarre security model. Oh, and then there’s the totally-different framebuffer driver infrastructure as well.” That flew like a lead balloon in Android circles.&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;This disagreement sprang from several sources. One was that Google’s&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.linux.com/news/embedded-mobile/mobile-linux/344486-garretta-linuxcon-talk-emphasizes-lessons-learned-from-androidkernel-saga&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Android developers had adopted their own way to address power issues&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;with&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/reference/android/os/PowerManager.WakeLock.html&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;WakeLocks&lt;/a&gt;. The other cause, as Google open source engineering manager Chris DiBona pointed out, was that Android’s programmers were so busy working on Android device specifics that they had done a&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.zdnet.com/blog/open-source/dibona-google-will-hire-two-android-coders-to-work-with-kernelorg/6274&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;poor job of co-coordinating with the Linux kernel developers&lt;/a&gt;.&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;The upshot was that developer circles have had many heated words over what’s the right way of handling Android specific code in Linux. The upshot of the dispute was that&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b0a0ccfad85b3657fe999805df65f5cfe634ab8a&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Torvalds dropped the Android drivers from the main Linux kernel in late 2009&lt;/a&gt;.&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;Despite these disagreements, there was never any danger as one claim had it in March 2011, that Android was somehow in danger of being sued by Linux because of&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.gnu.org/licenses/gpl-2.0.html&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Gnu General Public License, version 2 (GPLv2)&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;violations. As&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.zdnet.com/blog/open-source/android-linux-fud-debunked/8549&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Linus himself said at the time, claims that the Android violated the GPL were “totally bogus.&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;We’ve always made it very clear that the kernel system call interfaces do not in any way result in a derived work as per the GPL, and the kernel details are exported through the kernel headers to all the normal glibc interfaces too.”&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;Over the last few months though, as Torvalds explained last fall, that while “there’s still a lot of merger to be done … eventually Android and Linux would come back to a common kernel, but it will probably not be for four to five years.” Kroah-Hartman added at the time that one problem is that “Google’s Android team is very small and over-subscribed to so they’re resource restrained It would be cheaper in the long run for them to work with us.” Torvalds then added that “We’re just going different directions for a while, but in the long run the sides will come together so I’m not worried.”&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;In the event the re-merger of the two went much faster than expected. At the 2011 Kernel Summit in Prague in late October, the Linux kernel developers “agreed that the bulk of the&lt;a href=&quot;http://lwn.net/Articles/472984&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Android kernel code should probably be merged into the mainline.&lt;/a&gt;” To help this process along, the&lt;a href=&quot;http://elinux.org/Android_Mainlining_Project&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Android Mainlining Project&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;was formed.&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;Things continued to go along much faster then anyone had foreseen. By December, Kroah-Hartman could write, “by the&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://plus.google.com/111049168280159033135/posts/5WfyJ1GAFXM&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;3.3 kernel release, the majority of the Android code will be merged&lt;/a&gt;, but more work is still left to do to better integrate the kernel and userspace portions in ways that are more palatable to the rest of the kernel community. That will take longer, but I don’t foresee any major issues involved.” He was right.&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;Today, you can compile the Android code in Linux 3.3 and it will boot. Still, as Kroah-Hartman warned,&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://elinux.org/Android_Mainlining_Project#Patch.2FFeature_Status_Chart&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;WakeLocks, still aren’t in the main kernel&lt;/a&gt;, but even that’s getting worked on. For all essential purposes, Android and Linux are back together again.&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;&lt;strong&gt;Related Stories:&lt;/strong&gt;&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;&lt;a href=&quot;http://www.zdnet.com/blog/open-source/linus-torvalds-on-android-the-linux-fork/9426&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Linus Torvalds on Android, the Linux fork&lt;/a&gt;&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;&lt;a href=&quot;http://www.zdnet.com/blog/open-source/linus-torvalds-on-android-the-linux-fork/9426&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;It’s time Google starts paying for Android updates&lt;/a&gt;&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;&lt;a href=&quot;http://www.zdnet.com/blog/open-source/google-open-source-guru-says-android-code-will-be-in-linux-kernel-in-time/5992&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Google open source guru says Android code will be in Linux kernel in time&lt;/a&gt;&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;&lt;a href=&quot;http://www.zdnet.com/blog/open-source/does-googles-android-violate-linuxs-copyright/8497&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;Does Google’s Android violate Linux’s Copyright?&lt;/a&gt;&lt;/p&gt; 
&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; border-width: 0px; font-weight: normal; font-style: normal; font-size: 12px; font-family: Verdana,sans-serif; vertical-align: baseline; color: #252525; font-variant: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: #ffffff;&quot;&gt;&lt;a href=&quot;http://www.zdnet.com/blog/open-source/does-googles-android-violate-linuxs-copyright/8497&quot; style=&quot;margin: 0px; padding: 0px; border-width: 0px; font-weight: inherit; font-style: inherit; font-size: 12px; font-family: inherit; vertical-align: baseline; color: #005399; cursor: pointer; text-decoration: none;&quot;&gt;2011: The year of the Android OS&lt;/a&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 23 Mar 2012 12:29:57 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/179-guid.html</guid>
    <category>android</category>
<category>linux</category>
<category>os</category>
<category>programming</category>

</item>
<item>
    <title>Research in Programming Languages</title>
    <link>http://blog.computedby.com/archives/174-Research-in-Programming-Languages.html</link>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/174-Research-in-Programming-Languages.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=174</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=174</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a target=&quot;_ti&quot; href=&quot;http://tagide.com&quot;&gt;Tagide&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;em&gt;&lt;font size=&quot;1&quot;&gt;By Crista Videira Lopes &lt;/font&gt;&lt;/em&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Is there still research to be done in Programming Languages?&lt;/strong&gt;
 This essay touches both on the topic of programming languages and on 
the nature of research work. I am mostly concerned in analyzing this 
question in the context of Academia, i.e. within the expectations of 
academic programs and research funding agencies that support research 
work in the STEM disciplines (&lt;span class=&quot;st&quot;&gt;Science, Technology, Engineering, and Mathematics&lt;/span&gt;). This is not the only possible perspective, but it is the one I am taking here.&lt;/p&gt; 
&lt;p&gt;&lt;span id=&quot;more-416&quot;&gt;&lt;/span&gt;PLs are dear to my heart, and a 
considerable chunk of my career was made in that area. As a designer, 
there is something fundamentally interesting in designing a language of 
any kind. It’s even more interesting and gratifying when people actually
 start exercising those languages to create non-trivial software 
systems. As a user, I love to use programming languages that I haven’t 
used before, even when the languages in question make me curse every 
other line.&lt;/p&gt; 
&lt;p&gt;But the truth of the matter is that ever since I finished &lt;a href=&quot;ftp://ftp.ccs.neu.edu/pub/people/crista/publications/thesis/index.html&quot;&gt;my Ph.D.&lt;/a&gt;
 in the late 90s, and especially since I joined the ranks of Academia, I
 have been having a hard time convincing myself that research in PLs is a
 worthy endeavor. I feel really bad about my rational arguments against 
it, though. Hence this essay. Perhaps by the time I am done with it I 
will have come to terms with this dilemma.&lt;/p&gt; 
&lt;p&gt;Back in the 50s, 60s and 70s, programming languages were a BigDeal, 
with large investments, upfront planning, and big drama on 
standardization committees (Ada was the epitome of that model). Things 
have changed dramatically during the 80s. Since the 90s, a considerable 
percentage of new languages that ended up being very popular were 
designed by lone programmers, some of them kids with no research 
inclination, some as a side hobby, and without any grand goal other than
 either making some routine activities easier or for plain hacking fun. 
Examples:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;PHP, by Rasmus Lerdorf circa 1994, “originally used for tracking 
visits to his online resume, he named the suite of scripts ‘Personal 
Home Page Tools,’ more frequently referenced as ‘PHP Tools.’ ” [&lt;a href=&quot;http://www.php.net/manual/en/history.php.php&quot;&gt;1&lt;/a&gt;] PHP is a marvel of how a horrible language can become the foundation of large numbers of applications… for a second time! &lt;a href=&quot;http://www.dreamsongs.com/RiseOfWorseIsBetter.html&quot;&gt;Worse is Better&lt;/a&gt; redux. According one &lt;a href=&quot;http://langpop.com/&quot;&gt;informal but interesting survey&lt;/a&gt;, PHP is now the 4th most popular programming language out there, losing only to C, Java and C++.&lt;/li&gt; 
&lt;li&gt;JavaScript, by Brendan Eich circa 1995, “Plus, I had to be done in ten days or something worse than JS would have happened.” [&lt;a href=&quot;http://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1021&quot;&gt;2&lt;/a&gt;]
 According to that same survey, JavaScript is the 5th most popular 
language, and I suspect it is climbing up that rank really fast. It may 
be #1 by now.&lt;/li&gt; 
&lt;li&gt;Python, by Guido van Rossum circa 1990, “I was looking for a ‘hobby’
 programming project that would keep me occupied during the week around 
Christmas.” [&lt;a href=&quot;http://www.python.org/doc/essays/foreword/&quot;&gt;3&lt;/a&gt;] Python comes at #6, and its strong adoption by scientific computing communities is well know.&lt;/li&gt; 
&lt;li&gt;Ruby, by Yukihiro “Matz” Matsumoto circa 1994, “I wanted a scripting
 language that was more powerful than Perl, and more object-oriented 
than Python. That’s why I decided to design my own language.” [&lt;a href=&quot;http://linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html&quot;&gt;4&lt;/a&gt;] At #10 in that survey.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Compare this mindset with the context in which the the older well-known programming languages emerged:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Fortran, 50s, originally developed by IBM as part of their core business in computing machines.&lt;/li&gt; 
&lt;li&gt;Cobol, late 50s, designed by a large committee from the onset, sponsored by the DoD.&lt;/li&gt; 
&lt;li&gt;Lisp, late 50s, main project occupying 2 professors at MIT and their
 students, with the grand goal of producing an algebraic list processing
 language for artificial intelligence work, also funded by the DoD.&lt;/li&gt; 
&lt;li&gt;C, early 70s, part of the large investment that Bell Labs was doing in the development of Unix.&lt;/li&gt; 
&lt;li&gt;Smalltalk, early 70s, part of a large investment that Xerox did in “inventing the future” of computers.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Back then, developing a language processor was, indeed, a very big 
deal. Computers were slow, didn’t have a lot of memory, the language 
processors had to be written in low-level assembly languages… it wasn’t 
something someone would do in their rooms as a hobby, to put it mildly. 
Since the 90s, however, with the emergence of PCs and of decent 
low-level languages like C, developing a language processor is no longer
 a BigDeal. Hence, languages like PHP and JavaScript.&lt;/p&gt; 
&lt;p&gt;There is a lot of fun in designing new languages, but this fun is not
 an exclusive right of researchers with, or working towards, Ph.Ds. 
Given all the knowledge about programming languages these days, anyone 
can do it. And many do. And here’s the first itchy point: &lt;em&gt;there 
appears to be no correlation between the success of a programming 
language and its emergence in the form of someone’s doctoral or 
post-doctoral work. &lt;/em&gt;This bothers me a lot, as an academic. It 
appears that deep thoughts, consistency, rigor and all other things we 
value as scientists aren’t that important for mass adoption of 
programming languages. But then again, &lt;a href=&quot;http://www.dreamsongs.com/RiseOfWorseIsBetter.html&quot;&gt;I’m not the first to say it&lt;/a&gt;.
 It’s just that this phenomenon is hard to digest, and if you really 
grasp it, it has tremendous consequences. If people (the potential 
users) don’t care about conceptual consistency, why do we keep on trying
 to achieve that?&lt;/p&gt; 
&lt;p&gt;To be fair, some of those languages designed in the 90s as side 
projects, as they became important, eventually became more rigorous and 
consistent, and attracted a fair amount of academic attention and 
industry investment. For example, the Netscape JavaScript hacks quickly 
fell on Guy Steele’s lap resulting in the &lt;a href=&quot;http://en.wikipedia.org/wiki/ECMAScript&quot;&gt;ECMAScript specification&lt;/a&gt;.
 Python was never a hack even if it started as a Christmas hobby. Ruby 
is a fun language and quite elegant from the beginning. PHP… well… it’s 
fun for possibly the wrong reasons. But the core of the matter is that 
“the right thing” was not the goal. It seems that &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;em&gt;a reliable implementation of a language that addresses an important practical need&lt;/em&gt;&lt;/span&gt;
 is the key for the popularity of a programming language. But being 
opportunistic isn’t what research is supposed to be about… (or is it?)&lt;/p&gt; 
&lt;p&gt;Also to be fair, not all languages designed in the 90s and later 
started as side projects. For example, Java was a relatively large 
investment by Sun Microsystems. So was .NET later by Microsoft.&lt;/p&gt; 
&lt;p&gt;And, finally, all of these new languages, even when created over a 
week as someone’s pet project, sit on the shoulders of all things that 
existed before. This leads me to the second itch: &lt;em&gt;one striking 
commonality in all modern programming languages, especially the popular 
ones, is how little innovation there is in them&lt;/em&gt;! Without exception,
 including the languages developed in research groups, they all feel 
like mashups of concepts that already existed in programming languages 
in 1979, wrapped up in their own idiosyncratic syntax. (I lied: 
exceptions go to aspects and monads both of which came in the 90s)&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://tagide.com/blog/?attachment_id=544&quot; rel=&quot;attachment wp-att-544&quot;&gt;&lt;img width=&quot;300&quot; height=&quot;225&quot; class=&quot;alignright size-medium wp-image-544&quot; title=&quot;PLs&quot; src=&quot;http://blog.computedby.com/cby/images/174_1332347999_0.jpg&quot; /&gt;&lt;/a&gt;So
 one pertinent question is: given that not much seems to have emerged 
since 1979 (that’s 30+ years!), is there still anything to &lt;em&gt;innovate&lt;/em&gt; in programming languages? Or have we reached the asymptotic plateau of innovation in this area?&lt;/p&gt; 
&lt;p&gt;I need to make an important detour here on the nature of research.&lt;/p&gt; 
&lt;h3&gt;&amp;lt;Begin Detour&amp;gt;&lt;/h3&gt; 
&lt;p&gt;Perhaps I’m completely off; perhaps &lt;em&gt;producing innovative new software&lt;/em&gt; &lt;em&gt;is not a goal of [STEM] research&lt;/em&gt;.
 Under this approach, any software work is dismissed from STEM pursuits,
 unless it is necessary for some specific goal — like if you want to 
study some far-off galaxy and you need an IT infrastructure to collect 
the data and make simulations (S for Science); or if you need some glue 
code for piecing existing systems together (T for Technology); or if you
 need to improve the performance of something that already exists (E for
 Engineering); or if you are a working on some Mathematical model of 
computation and want to make your ideas come to life in the form of a 
language (M for Mathematics). This is an extreme submissive view of 
software systems, one that places software in the back sit of STEM and 
that denies the existence of value in research in/by software itself. If
 we want to lead something on our own, let’s just… do empirical studies 
of technology or become biologists/physicists/chemists/mathematicians or
 make existing things perform better or do theoretical/statistical 
models of universes that already exist or that are created by others. 
Right?&lt;/p&gt; 
&lt;p&gt;I confess I have a dysfunctional relationship with this idea. 
Personally, I can’t be happy without creating software things, but I 
have been able to make my scientist-self function both as a cold-minded 
analyst and, at times, as an expert passenger in someone else’s research
 project. The design work, for me, has moved to sabbatical time, 
evenings and weekends; I don’t publish it [much] other than the code 
itself and some informal descriptions. And yet, I loathe this situation.&lt;/p&gt; 
&lt;p&gt;I loathe it because it’s is clear to me that software systems are something very, &lt;em&gt;very&lt;/em&gt;
 special. Software revolutionized everything in unexpected ways, 
including the methods and practices that our esteemed colleagues in the 
“hard” sciences hold near and dear for a very long time. The evolution 
of information technology in the past 60 years has been &lt;u&gt;way&lt;/u&gt; off from 
what our colleagues thought they needed. Over and over again, software 
systems have been created that weren’t part of any scientific project, 
as such, and that ended up playing a central role in Science. Instead of
 trying to mimic our colleagues’ traditional practices, “computer 
scientists” ought to be showing the way to a new kind of science — maybe
 &lt;em&gt;that &lt;/em&gt;&lt;a href=&quot;http://www.wolframscience.com/nksonline/page-1?firstview=1&quot;&gt;new kind of science&lt;/a&gt; or &lt;a href=&quot;http://www.amazon.com/Sciences-Artificial-Herbert-Simon/dp/0262691914&quot;&gt;that one&lt;/a&gt;
 or maybe something else. I dare to suggest that the something else is 
related to the design of things that have software in them. It should 
not be called Science. It is a bit like Engineering, but it’s not it 
either because we’re not dealing [just] with physical things. Technology
 doesn’t cut it either. It needs a new name, something that denotes “the
 design of things with software in them.” I will call it Design for 
short, even though that word is so abused that it has lost its meaning.&lt;/p&gt; 
&lt;h3&gt;&amp;lt;Suspend Detour&amp;gt;&lt;/h3&gt; 
&lt;p&gt;Let’s assume, then, that it’s acceptable to create/design new things —
 innovate — in the context of doctoral work. Now comes the real hard 
question.&lt;/p&gt; 
&lt;p&gt;If anyone — researchers, engineers, talented kids, summer interns — 
can design and&amp;#160; implement programming languages, what are the actual 
hard goals that &lt;em&gt;doctoral research work&lt;/em&gt; in programming languages seeks that distinguishes it from what anyone can do?&lt;/p&gt; 
&lt;p&gt;Let me attempt to answer these questions, first, with some well-known goals of language design:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Performance — one can always have more of this; certain application 
domains need it more than others. This usually involves having to come 
up with interesting data structures and algorithms for the 
implementation of PLs that weren’t easy to devise.&lt;/li&gt; 
&lt;li&gt;Human Productivity — one can always want more of this. There is no 
ending to trying to make development activities easier/faster.&lt;/li&gt; 
&lt;li&gt;Verifiability — in some domains this is important.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;There are other goals, but they are second-order. For example, 
languages may also need to catch up with innovations in hardware design —
 multi-core comes to mind. This is a second-order goal, the real goal 
behind it is to increase performance by taking advantage of potentially 
higher-performing hardware architectures.&lt;/p&gt; 
&lt;p&gt;In other words, someone wanting to do doctoral research work in 
programming languages ought to have one or more of these goals in mind, 
and — very important — &lt;em&gt;ought to be ready to demonstrate how his/her ideas meet those goals&lt;/em&gt;.
 If you tell me that your language makes something run faster, consume 
less energy, makes some task easier or results in programs with less 
bugs, the scientist in me demands that you show me the data that 
supports such claims.&lt;/p&gt; 
&lt;p&gt;A lot of research activity in programming languages falls under the 
performance goal, the Engineering side of things. I think everyone in 
our field understands what this entails, and is able to differentiate 
good work from bad work under that goal. But a considerable amount of 
research activities in programming languages invoke the human 
productivity argument; entire sub-fields have emerged focusing on the 
engineering of languages that are believed to increase human 
productivity. So I’m going to focus on the human productivity goal. The 
human productivity argument touches on the core of what attracts most of
 us to creating things: having a direct positive effect on other people.
 It has been carelessly invoked since the beginning of Computer Science.
 (I highly recommend &lt;a href=&quot;http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-onward2010.pdf&quot;&gt;this excellent essay&lt;/a&gt; by Stefan Hanenberg published at Onward! 2010 with a critique of software science’s neglect of human factors)&lt;/p&gt; 
&lt;p&gt;Unfortunately, this argument is the hardest to defend. In fact, I am yet to see the first study that &lt;em&gt;convincingly demonstrates&lt;/em&gt;
 that a programming language, or a certain feature of programming 
languages, makes software development a more productive process. If you 
know of such study, please point me to it. I have seen many &lt;a href=&quot;http://en.wikipedia.org/wiki/Observational_study&quot;&gt;observational studies&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Experimental_control&quot;&gt;controlled experiments&lt;/a&gt; that try to do it [&lt;a href=&quot;http://page.mi.fu-berlin.de/prechelt/Biblio/jccpprt_computer2000.pdf&quot;&gt;5&lt;/a&gt;, &lt;a href=&quot;http://infoscience.epfl.ch/record/138586/files/dubochet2009coco.pdf&quot;&gt;6&lt;/a&gt;, &lt;a href=&quot;http://dl.acm.org/citation.cfm?id=279140&quot;&gt;7&lt;/a&gt;, &lt;a href=&quot;http://dl.acm.org/citation.cfm?id=359800&amp;amp;CFID=39593267&amp;amp;CFTOKEN=95540901&quot;&gt;8&lt;/a&gt;, &lt;a href=&quot;http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-oopsla2010.pdf&quot;&gt;9&lt;/a&gt;, &lt;a href=&quot;http://haskell.cs.yale.edu/?post_type=publication&amp;amp;p=366&quot;&gt;10&lt;/a&gt;, among many]. I think those studies are &lt;em&gt;really&lt;/em&gt;
 important, there ought to be more of them, but they are always very 
difficult to do [well]. Unfortunately, they always fall short of giving 
us any definite conclusions because, even when they are done right, &lt;a href=&quot;http://en.wikipedia.org/wiki/Correlation_does_not_imply_causation&quot;&gt;correlation does not imply causation&lt;/a&gt;.
 Hence the never-ending ping-pong between studies that focus on the same
 thing and seem to reach opposite conclusions, best known in the health 
sciences. We are starting to see that ping-pong in software science too,
 for example &lt;a href=&quot;http://dl.acm.org/citation.cfm?id=279140&quot;&gt;7&lt;/a&gt; vs &lt;a href=&quot;http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-oopsla2010.pdf&quot;&gt;9&lt;/a&gt;.
 But at least these studies show some correlations, or lack thereof, 
given specific experimental conditions, and they open the healthy 
discussion about what conditions should be used in order to get 
meaningful results.&lt;/p&gt; 
&lt;p&gt;I have seen even more research and informal articles about 
programming languages that claim benefits to human productivity without 
providing any evidence for it whatsoever, other than the authors’ or the
 community’s intuition, at best based on rational deductions from 
abstract beliefs that have never been empirically verified. Here is &lt;a href=&quot;http://www.haskell.org/haskellwiki/Why_Haskell_Matters&quot;&gt;one&lt;/a&gt; that surprised me because I have the highest respect for the academic soundness of Haskell. Statements like this “&lt;em&gt;Haskell
 programs have fewer bugs because Haskell is: pure [...], strongly typed
 [...], high-level [...], memory managed [...], modular [...] [...] 
There just isn’t any room for bugs!&lt;/em&gt;” are nothing but wishful 
thinking. Without the data to support this claim, this statement is 
deceptive; while it can be made informally in a blog post designed to 
evangelize the crowd, it definitely should not be made in the context of
 doctoral work unless that work provides &lt;em&gt;solid evidence&lt;/em&gt; for such a strong statement.&lt;/p&gt; 
&lt;p&gt;That article is not an outlier. The Internets are full of articles 
claiming improved software development productivity for just about every
 other language. No evidence is ever provided, the argumentation is 
always either (a) deducted from principles that are supposed to be true 
but that have never been verified, or (b) extrapolated from ad-hoc, 
highly biased, severely skewed personal experiences.&lt;/p&gt; 
&lt;p&gt;This is the main reason why I stopped doing research in Programming 
Languages in any official capacity. Back when I was one of the main 
evangelists for AOP I realized at some point that I had crossed the line
 to saying things for which I had very little evidence. I was simply… 
evangelizing, i.e. convincing others of an idea that I believed 
strongly. At some point I felt I needed empirical evidence for what I 
was saying. But providing evidence for the human productivity argument 
is damn hard! My scientist self cannot lead doctoral students into that 
trap, a trap that I know too well.&lt;/p&gt; 
&lt;p&gt;Moreover, designing and executing the experiments that lead to 
uncovering such evidence requires a lot of time and a whole other set of
 skills that have absolutely nothing to do with the time and skills for 
actually designing programming languages. We need to learn the methods 
that experimental psychologists use. And, in the end of all that work, 
we will be lucky if we unveil correlations but we will not be able to 
draw any definite conclusions, which is… depressing.&lt;/p&gt; 
&lt;p&gt;But without empirical evidence of any kind, and from a scientific 
perspective, unsubstantiated claims pertaining to, say, Haskell&amp;#160; or 
AspectJ (which are mostly developed and used by academics and have been 
the topic of many PhD dissertations) are as good as unsubstantiated 
claims pertaining to, say, PHP (which is mostly developed and used by 
non-academics).&amp;#160; The PHP community is actually very honest when it comes
 to stating the benefits of using the language. For example, here is an &lt;a href=&quot;http://blogs.agriya.com/benefits-of-php&quot;&gt;honest-to-god set of reasons for using PHP&lt;/a&gt;.
 Notice that there are no claims whatsoever about PHP leading to less 
bugs or higher programmer productivity (as if anyone would dare to state
 that!); they’re just pragmatic reasons. (Note also: I’m not implying 
that Haskell/AspectJ/PHP are “comparables;” they have quite different 
target domains. I’m just comparing the narratives surrounding those 
languages, the “stories” that the communities tell within themselves and
 to others)&lt;/p&gt; 
&lt;p&gt;OK, now that I made 823 enemies by pointing out that the claims about
 human productivity&amp;#160; surrounding languages that have emerged in academic
 communities — and therefore ought to know better — are unsubstantiated,
 PLUS 865 enemies by saying that empirical user studies are inconclusive
 and depressing… let me try to turn my argument around.&lt;/p&gt; 
&lt;p&gt;Is the high bar of &lt;em&gt;scientific evidence&lt;/em&gt; killing innovation in programming languages? Is this what’s causing the asymptotic behavior? It certainly is what’s keeping &lt;em&gt;me&lt;/em&gt;
 away from that topic, but I’m just a grain of sand. What about the work
 of many who propose intriguing new design ideas that are then shot down
 in peer-review committees because of the lack of evidence?&lt;/p&gt; 
&lt;p&gt;This ties back to my detour on the nature of research.&lt;/p&gt; 
&lt;h2&gt;&amp;lt;Join Detour&amp;gt; Design experimentation vs. Scientific evidence&lt;/h2&gt; 
&lt;p&gt;So, we’re back to whether design innovation per se is an admissible 
first-order goal of doctoral work or not. And now that question is 
joined by a counterpart: is the provision of scientific evidence really 
required for doctoral work in programming languages?&lt;/p&gt; 
&lt;p&gt;If what we have in hand is not Science, we need to be careful not to 
blindly adopt methods that work well for Science, because that may kill 
the essence of our discipline. In my view, that essence has been the 
radical, fast-paced, off the mark design experimentation enabled by 
software. This rush is fairly incompatible with the need to provide 
scientific evidence for the design “hopes.”&lt;/p&gt; 
&lt;p&gt;I’ll try a parallel: drug design, the modern-day equivalent of 
alchemy. In terms of research it is similar to software: partly based on
 rigor, partly on intuitions, and now also on automated tools that 
simply perform an enormous amount of logical combinations of molecules 
and determine some objective function. When it comes to deployment, 
whoever is driving that work better put in place a plan for actually 
testing the theoretical expectations in the context of actual people. 
Does the drug really do what it is supposed to do without any harmful 
side effects? We require scientific evidence for the claimed value of 
experimental drugs. Should we require scientific evidence for the value 
of experimental software?&lt;/p&gt; 
&lt;p&gt;The parallel diverges significantly with respect to the consequences 
of failure. A failure in drug design experimentation may lead to people 
dying or getting even more sick. A failure in software design 
experimentation is only a big deal if the experiment had a huge 
investment from the beginning and/or pertains to safety-critical 
systems. There are still some projects like that, and for those, seeking
 solid evidence of their benefits before deploying the production 
version of the experiment is a good thing. But not all software systems 
are like that. Therefore the burden of scientific evidence may be too 
much to bear. It is also often the case that over time, the enormous 
amount of testing by real use is enough to provide assurances of all 
kinds.&lt;/p&gt; 
&lt;p&gt;One good example of design experimentation being at odds with scientific evidence is &lt;a href=&quot;http://www.w3.org/History/1989/proposal.html&quot;&gt;the proposal that Tim Berners-Lee made to CERN regarding the implementation of the hypertext system&lt;/a&gt;
 that became the Web. Nowhere in that proposal do we find a plan for 
verification of claims. That’s just a solid good proposal for an 
intriguing “linked information system.” I can imagine TB-L’s manager 
thinking: “hmm, ok, this is intriguing, he’s a smart guy, he’s not 
asking that many resources, let’s have him do it and see what comes of 
it. If nothing comes of it, no big deal.” Had TB-L have to devise a 
scientific or engineering assessment plan for that system beyond “in the
 second phase, we’ll install it on many machines” maybe the world would 
be very different today, because he might have gotten caught in the 
black hole of trying to find quantifiable evidence for something that 
didn’t need that kind of validation.&lt;/p&gt; 
&lt;p&gt;Granted, this was not a doctoral topic proposal; it was a proposal 
for the design and implementation of a very concrete system with 
software in it, one that (1) clearly identified the problem, (2) built 
on previous ideas, including the author’s own experience, (3) had some 
intriguing insights in it, (4) stated expected benefits and potential 
applications — down to the prediction of search engines and graph-based 
data analysis. Should a proposal like TB-L’s be rejected if it were to 
be a doctoral topic proposal? When is an unproven design idea doctoral 
material and other isn’t? If we are to accept design ideas without 
validation plans as doctoral material, how do we assess them?&lt;/p&gt; 
&lt;h2&gt;Towards the discipline of Design&lt;/h2&gt; 
&lt;p&gt;In order to do experimental design research AND be scientifically honest at the same time, one needs to let go of &lt;em&gt;claims&lt;/em&gt;
 altogether. In that dreadful part of a topic proposal where the 
committee asks the student “what are your claims?” the student should 
probably answer “none of interest.” In experimental design research, one
 can have &lt;em&gt;hopes&lt;/em&gt; or &lt;em&gt;expectations&lt;/em&gt; about the effects of the system, and those must be clearly articulated, but very few &lt;em&gt;certainties&lt;/em&gt;
 will likely come out of such type of work. And that’s ok! It’s very 
important to be honest. For example, it’s not ok to claim “my language 
produces bug-free programs” and then defend this with a deductive 
argument based on unproven assumptions; but it’s ok to state “I expect 
that my language produces programs with fewer bugs [but I don&#039;t have 
data to prove it].” &lt;a href=&quot;http://www.w3.org/History/1989/proposal.html&quot;&gt;TB-L’s proposal&lt;/a&gt; was really good at being honest.&lt;/p&gt; 
&lt;p&gt;Finally, here is an attempt at establishing a rigorous criteria for 
design assessment in the context of doctoral and post-doctoral research:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;: how important and surprising is the 
problem and how good is its description? The problem space is, perhaps, 
the most important component for a piece of design research work. If the
 design is not well grounded in an interesting and important problem, 
then perhaps it’s not worth pursuing as research work. If it’s a old 
hard problem, it should be formulated in a surprising manner. Very 
often, the novelty of a design lies not in the design itself but in its 
designer seeing the problem differently. So — surprise me with the 
problem. Show me insights on the nature of the problem that we don’t 
already know.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Potential&lt;/strong&gt;: what intriguing possibilities are 
unveiled by the design? Good design research work should open up doors 
for new avenues of exploration.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Feasibility&lt;/strong&gt;: good design research work should be 
grounded on what is possible to do. The ideas should be demonstrated in 
the form of a working system.&lt;/li&gt; 
&lt;li&gt;Additionally, design research work, like any other research work, needs to be placed in a solid &lt;strong&gt;context&lt;/strong&gt; of what already exists.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This criteria has two consequences that I really like: first, it 
substantiates our intuitions about proposals such as TB-L’s “linked 
information system” being a fine piece of [design] research work; 
second, it substantiates our intuitions on the difference of languages 
like Haskell vs. languages like PHP. I leave that as an exercise to the 
reader!&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;http://tagide.com/blog/?attachment_id=573&quot; rel=&quot;attachment wp-att-573&quot;&gt;&lt;img width=&quot;300&quot; height=&quot;225&quot; class=&quot;aligncenter size-medium wp-image-573&quot; title=&quot;PLsWant&quot; src=&quot;http://blog.computedby.com/cby/images/174_1332348000_1.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Coming to terms&lt;/h2&gt; 
&lt;p&gt;I would love to bring design back to my daytime activities. I would 
love to let my students engage in designing new things such as new 
programming languages and environments — I have lots of ideas for what I
 would like to do in that area! I believe there is a path to 
establishing a set of rigorous criteria regarding the assessment of 
design that is different from scientific/quantitative validation. All 
this, however, doesn’t depend on me alone. If my students’ papers are 
going to be shot down in program committees because of the lack of 
validation, then my wish is a curse for them. If my grant proposals are 
going to be rejected because they have no validation plan other than 
“and then we install it in many machines” or “and then we make the 
software open source and free of charge” then my wish is a curse for me.
 We need buy-in from a much larger community — in a way, &lt;em&gt;reverse the trend of placing software research under the auspices of science and engineering [alone]&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt;This, however, should only be done &lt;em&gt;after&lt;/em&gt; the community 
understands what science and scientific methods are all about (the 
engineering ones — everyone knows about them). At this point there is 
still a severe lack of understanding of science within the CS community.
 Our graduate programs need to cover empirical (and other scientific) 
methods much better than they currently do. If we simply continue to 
ignore the workings of science and the burden of scientific proof, we 
end up continuing to make careless religious statements about our 
programming languages and systems that simply will lead nowhere, under 
the misguided impression that we are scientists because the name says 
so.&lt;/p&gt; &lt;span class=&quot;st&quot;&gt;&lt;em&gt;Copyright © Crista Videira Lopes. All rights reserved.&lt;br /&gt;
Note: this is a work-in-progress essay. I may update it from time to time. &lt;a target=&quot;_tic&quot; href=&quot;http://tagide.com/blog/2012/03/research-in-programming-languages/#comments&quot;&gt;Feedback welcome&lt;/a&gt;.&lt;/em&gt;&lt;/span&gt; 
    </content:encoded>

    <pubDate>Tue, 13 Mar 2012 10:50:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/174-guid.html</guid>
    <category>programming</category>
<category>programming language</category>

</item>
<item>
    <title>MOTHER artificial intelligence forces nerds to do the chores… or else</title>
    <link>http://blog.computedby.com/archives/169-MOTHER-artificial-intelligence-forces-nerds-to-do-the-chores-or-else.html</link>
            <category>Hardware</category>
            <category>Innovation&amp;Society</category>
            <category>Network</category>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/169-MOTHER-artificial-intelligence-forces-nerds-to-do-the-chores-or-else.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=169</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=169</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;span id=&quot;intelliTxt&quot;&gt; 
&lt;p&gt;Via &lt;a target=&quot;_sg&quot; href=&quot;http://www.slashgear.com&quot;&gt;Slash Gear&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt; -----&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;If you’ve ever been inside a dormitory full of 
computer science undergraduates, you know what horrors come of young men
 free of responsibility. To help combat the lack of homemaking skills in
 nerds everywhere, a group of them &lt;a href=&quot;http://www.lvl1.org/2012/02/15/mother/&quot; target=&quot;_blank&quot;&gt;banded together to create MOTHER&lt;/a&gt;,
 a combination of home automation, basic artificial intelligence and 
gentle nagging designed to keep a domicile running at peak efficiency. 
And also possibly kill an entire crew of space truckers if they should 
come in contact with a xenomorphic alien – but that code module hasn’t 
been installed yet.&lt;/p&gt; 
&lt;p&gt;&lt;img width=&quot;500&quot; height=&quot;435&quot; class=&quot;aligncenter size-full wp-image-214668&quot; title=&quot;6882537117_f71a26d489&quot; src=&quot;http://blog.computedby.com/cby/images/169_1332347995_0.jpg&quot; /&gt;&lt;span id=&quot;more-214662&quot;&gt;&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;The project comes from the LVL1 Hackerspace, a group of like-minded 
programmers and engineers.&amp;#160;The&amp;#160;aim is to create an AI suited for a home 
environment that detect issues and gets its users (i.e. the people &lt;em&gt;living &lt;/em&gt;in
 the home) to fix it. Through an array of digital sensors, MOTHER knows 
when the trash needs to be taken out, when the door is left unlocked, et
 cetera. If something isn’t done soon enough, &lt;del&gt;she&lt;/del&gt; it can even
 disable the Internet connection for individual computers. MOTHER can 
notify users of tasks that need to be completed through a standard 
computer, phones or email, or stock ticker-like displays. In addition, 
MOTHER can use video and audio tools to recognize individual users, 
adjust the lighting, video or audio to their tastes, and generally keep 
users informed and creeped out at the same time.&lt;/p&gt; 
&lt;p&gt;MOTHER’s abilities are technically limitless – since it’s all based 
on open source software, those with the skill, inclination and hardware 
components can add functions at any time. Some of the more humorous 
additions already in the project include an&amp;#160;instant&amp;#160;dubstep command. You
 can build your own MOTHER (boy, there’s a&amp;#160;sentence&amp;#160;I never thought I’d 
be writing) by &lt;a href=&quot;http://api.viglink.com/api/click?format=go&amp;amp;key=2b0adaafa9ad8a29fede7758fada1730&amp;amp;loc=http%3A%2F%2Fwww.pcworld.com%2Farticle%2F250382%2Fai_mother_nags_you_to_take_out_the_trash.html&amp;amp;v=1&amp;amp;libid=1329863127431&amp;amp;out=http%3A%2F%2Fwiki.lvl1.org%2FMOTHER&amp;amp;title=A.I.%20MOTHER%20Nags%20You%20to%20Take%20Out%20the%20Trash%20%7C%20PCWorld&amp;amp;txt=MOTHER%20Wiki%20entry&amp;amp;jsonp=vglnk_jsonp_13298652004621&quot; target=&quot;_blank&quot;&gt;reading through the official Wiki&lt;/a&gt;
 and assembling the right software, sensors, servers and the like. Or 
you could just invite your mom over and take your lumps. Your choice.&lt;/p&gt;&lt;/span&gt; 
    </content:encoded>

    <pubDate>Thu, 23 Feb 2012 10:39:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/169-guid.html</guid>
    <category>ai</category>
<category>arduino</category>
<category>hardware</category>
<category>innovation&amp;society</category>
<category>network</category>
<category>programming</category>
<category>sensors</category>

</item>
<item>
    <title>Computer Algorithm Used To Make Movie For Sundance Film Festival</title>
    <link>http://blog.computedby.com/archives/162-Computer-Algorithm-Used-To-Make-Movie-For-Sundance-Film-Festival.html</link>
            <category>Innovation&amp;Society</category>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/162-Computer-Algorithm-Used-To-Make-Movie-For-Sundance-Film-Festival.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=162</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=162</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a href=&quot;http://singularityhub.com&quot; target=&quot;_sh&quot;&gt;Singularity Hub&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;Indie movie makers can be a strange bunch, pushing the envelope of 
their craft and often losing us along the way. In any case, if you’re 
going to produce something unintelligible anyway, why not let a computer
 do it? Eve Sussmam and the &lt;a href=&quot;http://www.rufuscorporation.com/wowpr.htm&quot;&gt;Rufus Corporation&lt;/a&gt;
 did just that. She and lead actor Jeff Wood traveled to the Kazakhstan 
border of the Caspian Sea for two years of filming. But instead of a 
movie with a beginning, middle and end, they shot 3,000 individual and 
unrelated clips. To the clips they added 80 voice-overs and 150 pieces 
of music, mixed it all together and put it in a computer. A program on 
her Mac G5 tower, known at Rufus as the “serendipity machine,” then 
splices the bits together to create a final product.&lt;/p&gt; 
&lt;p&gt;As you might imagine, the resultant film doesn’t always make sense. But that’s part of the fun! As the Rufus Corporation &lt;a href=&quot;http://www.rufuscorporation.com/wowpr.htm&quot;&gt;writes on their website&lt;/a&gt;, “The unexpected juxtapositions create a sense of suspense alluding to a story that the viewer composes.”&lt;/p&gt; 
&lt;p&gt;It’s a clever experiment even if some viewers end up wanting to gouge
 their eyes out after a sitting. And there is some method to their 
madness. The film, titled “whiteonwhite:algorithnoir,” is centered on a 
geophysicist named Holz (played by Wood) who’s stuck in a gloomy, 
1970’s-looking city operated by the New Method Oil Well Cementing 
Company. Distinct scenes such as wire tapped conversations or a job 
interview for Mr. Holz are (hopefully) woven together by distinct 
voiceovers and dialogues. When the scenes and audio are entered into the
 computer they’re tagged with keywords. The program then pieces them 
together in a way similar to Pandora’s stringing together of like music.
 If a clip is tagged “white,” the computer will randomly select from 
tens of other clips also having the “white” tag. The final product is 
intended to be a kind of “dystopian futuropolis.” What that means, 
however, changes with each viewing as no two runs are the same.&lt;/p&gt; 
&lt;p&gt;Watching the following trailer, I actually got a sense…um, I think…of a story.&lt;/p&gt; 
&lt;p&gt;
&lt;iframe width=&quot;550&quot; height=&quot;310&quot; frameborder=&quot;0&quot; src=&quot;http://www.youtube.com/embed/t4nv0RHNu_Y&quot;&gt;&lt;/iframe&gt; 
&lt;/p&gt; 
&lt;p&gt;Rufus Corporation says the movie was “inspired by Suprematist quests 
for transcendence, pure space and artistic higher ground.” I have no 
idea what that means but I hope they’ve achieved it. Beautiful things 
can happen when &lt;a href=&quot;http://singularityhub.com/2011/10/11/electric-sheep-stunning-visual-creatures-spawned-by-thousands-of-computers-while-they-sleep/&quot;&gt;computers create art&lt;/a&gt;.
 And it’s only a matter of time before people attempt the same sort of 
thing with novel writing. Just watching the trailer, it’s hard to tell 
if the movie’s any good or not. I missed the showings at the Sundance 
Film Festival, but even so, they probably didn’t resemble the trailer 
anyway. And that’s okay, because that’s the whole point.&lt;/p&gt; [image credits: Rufus Corporation and PRI via YouTube]&lt;br /&gt;
[video credit: PRI via YouTube]


&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 13 Feb 2012 19:16:46 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/162-guid.html</guid>
    <category>innovation&amp;society</category>
<category>movie</category>
<category>programming</category>

</item>
<item>
    <title>It's Kinect day! The Kinect For Windows SDK v1 is out!</title>
    <link>http://blog.computedby.com/archives/161-Its-Kinect-day!-The-Kinect-For-Windows-SDK-v1-is-out!.html</link>
            <category>Hardware</category>
            <category>Programming</category>
            <category>Software</category>
    
    <comments>http://blog.computedby.com/archives/161-Its-Kinect-day!-The-Kinect-For-Windows-SDK-v1-is-out!.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=161</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=161</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a target=&quot;_channel9&quot; href=&quot;http://channel9.msdn.com/&quot;&gt;Channel 9&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;As everyone reading this blog, and those in the Kinect for Windows
 space, knows today is a big day. From what was a cool peripheral for 
the XBox 360 last year, the Kinect for Windows SDK and now dedicated 
Kinect for Windows hardware device, has taken the world by storm. In the
 last year we&#039;ve seen some simply amazing ideas and projects, many 
highlighted here in the Kinect for Windows Gallery, from health to 
education, to music expression to simply just fun.&lt;/p&gt; 
&lt;p&gt;And that was all with beta software and a device meant for a gaming console.&lt;/p&gt; 
&lt;p&gt;With a fully supported, allowed for use in commercial products, dedicated device and updated SDK, today the world changes again.&lt;/p&gt; 
&lt;p&gt;Welcome to the Kinect for Windows SDK v1!&lt;/p&gt; 
&lt;h2&gt;&lt;a href=&quot;http://blogs.msdn.com/b/kinectforwindows/archive/2012/01/31/kinect-for-windows-is-now-available.aspx&quot;&gt;Kinect for Windows is now Available!&lt;/a&gt;&lt;/h2&gt; 
&lt;blockquote&gt; 
&lt;p&gt;On January 9th, Steve Ballmer &lt;a href=&quot;http://www.microsoft.com/presspass/exec/steve/2012/01-09CES.mspx&quot;&gt;announced at CES&lt;/a&gt; that we would be shipping Kinect for Windows on February 1st. I am very pleased to report that today version 1.0 of our &lt;a href=&quot;http://www.microsoft.com/en-us/kinectforwindows/develop/new.aspx&quot;&gt;SDK and runtime&lt;/a&gt;
 were made available for download, and distribution partners in our 
twelve launch countries are starting to ship Kinect for Windows 
hardware, enabling companies to start to deploy their solutions. The 
suggested retail price is $249, and later this year, we will offer 
special academic pricing of $149 for &lt;a href=&quot;http://www.microsoft.com/education/en-us/buy/Pages/eligible.aspx&quot;&gt;Qualified Educational Users&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;In the three months since we released Beta 2, we have made many improvements to our SDK and runtime, including:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;Support for up to four Kinect sensors plugged into the same computer &lt;/li&gt; 
&lt;li&gt;Significantly
 improved skeletal tracking, including the ability for developers to 
control which user is being tracked by the sensor &lt;/li&gt; 
&lt;li&gt;Near Mode for
 the new Kinect for Windows hardware, which enables the depth camera to 
see objects as close as 40 centimeters in front of the device &lt;/li&gt; 
&lt;li&gt;Many API updates and enhancements in the managed and unmanaged runtimes &lt;/li&gt; 
&lt;li&gt;The latest Microsoft Speech components (V11) are now included as part of the SDK and runtime installer &lt;/li&gt; 
&lt;li&gt;Improved “far-talk” acoustic model that increases speech recognition accuracy &lt;/li&gt; 
&lt;li&gt;New
 and updated samples, such as Kinect Explorer, which enables developers 
to explore the full capabilities of the sensor and SDK, including audio 
beam and sound source angles, color modes, depth modes, skeletal 
tracking, and motor controls &lt;/li&gt; 
&lt;li&gt;A commercial-ready installer which
 can be included in an application’s set-up program, making it easy to 
install the Kinect for Windows runtime and driver components for 
end-user deployments. &lt;/li&gt; 
&lt;li&gt;Robustness improvements including driver stability, runtime fixes, and audio fixes &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;More details can be found &lt;a href=&quot;http://www.microsoft.com/en-us/kinectforwindows/develop/new.aspx&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;If you&#039;re like me, you want to know more about what&#039;s new... So here&#039;s a snip from the &lt;a href=&quot;http://download.microsoft.com/download/A/8/C/A8CE7F28-7265-42B8-BB26-10F014C15E11/ReleaseNotes.htm&quot; target=&quot;_blank&quot;&gt;Kinect for Windows SDK v1 Release Notes&lt;/a&gt;;&lt;/p&gt; 
&lt;blockquote&gt; 
&lt;h4&gt;5. Changes since the Kinect for Windows SDK Beta 2 release&lt;/h4&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Support for up to 4 Kinect sensors&lt;/strong&gt;
 plugged into the same computer, assuming the computer is powerful 
enough and they are plugged in to different USB controllers so that 
there is enough bandwidth available. (As before, skeletal tracking can 
only be used on one Kinect per process. The developer can choose which 
Kinect sensor.) &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;· &lt;strong&gt;Skeletal Tracking&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;The
 Kinect for Windows Skeletal Tracking system is now tracking subjects 
with results equivalent to the Skeletal Tracking library available in 
the November 2011 Xbox 360 Development Kit. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;The Near Mode feature is now available.&lt;/strong&gt; It is only functional on Kinect for Windows Hardware; see the &lt;a href=&quot;http://go.microsoft.com/fwlink/?LinkID=242090&quot;&gt;Kinect for Windows Blog post&lt;/a&gt; for more information. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Robustness improvement including driver stability, runtime and audio fixes.&lt;/strong&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;API Updates and Enhancements&lt;/strong&gt; 
&lt;ul&gt; 
&lt;li&gt;See a blog post detailing migration information from Beta 2 to v1.0 here: &lt;a href=&quot;http://go.microsoft.com/fwlink/?LinkID=239910&quot;&gt;Migrating from Beta 2&lt;/a&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Many renaming changes to both the managed and native APIs for consistency and ease of development. Changes include: 

&lt;ul&gt; 
&lt;li&gt;Consolidation of managed and native runtime components into a minimal set of DLLs &lt;/li&gt; 
&lt;li&gt;Renaming of managed and native APIs to align with product team design guidelines &lt;/li&gt; 
&lt;li&gt;Renaming of headers, libs, and references assemblies &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Significant managed API improvements: 

&lt;ul&gt; 
&lt;li&gt;Consolidation of namespaces into Microsoft.Kinect &lt;/li&gt; 
&lt;li&gt;Improvements to DepthData object &lt;/li&gt; 
&lt;li&gt;Skeleton data is now serializable &lt;/li&gt; 
&lt;li&gt;Audio API improvements, including the ability to connect to a specific Kinect on a computer with multiple Kinects &lt;/li&gt; 
&lt;li&gt;Improved error handling &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Improved initialization APIs, including addition the Initializing state into the Status property and StatusChanged events &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Set
 Tracked Skeleton API support is now available in native and managed 
code. Developers can use this API to lock on to 1 or 2 skeletons, among 
the possible 6 proposed. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Mapping APIs: The 
mapping APIs on KinectSensor that allow you to map depth pixels to color
 pixels have been updated for simplicity of usage, and are no longer 
restricted to 320x240 depth format. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;The 
high-res RGB color mode of 1280x1024 has been replaced by the similar 
1280x960 mode, because that is the mode supported by the official Kinect
 for Windows hardware. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Frame event 
improvements. Developers now receive frame events in the same order as 
Xbox 360, i.e. color then depth then skeleton, followed by an 
AllFramesReady event when all data frames are available. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Managed API Updates &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Correct FPS for High Res Mode&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;ColorImageFormat.RgbResolution1280x960Fps15 to ColorImageFormat.RgbResolution1280x960Fps12&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Enum Polish&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Added Undefined enum value to a few Enums: ColorImageFormat, DepthImageFormat, and KinectStatus&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Depth Values&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;DepthImageStream now defaults IsTooFarRangeEnabled to true (and removed the property).&lt;/p&gt; 
&lt;p&gt;Beyond
 the depth values that are returnable (800-4000 for DepthRange.Default 
and 400-3000 for DepthRange.Near), we also will return the following 
values:&lt;/p&gt; 
&lt;p&gt;DepthImageStream.TooNearDepth (for things that we know are less than the DepthImageStream.MinDepth)&lt;/p&gt; 
&lt;p&gt;DepthImageStream.TooFarDepth (for things that we know are more than the DepthImageStream.MaxDepth)&lt;/p&gt; 
&lt;p&gt;DepthImageStream.UnknownDepth (for things that we don’t know.)&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Serializable Fixes for Skeleton Data&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;We’ve added the SerializableAttribute on Skeleton, JointCollection, Joint and SkeletonPoint&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Mapping APIs&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Performance improvements to the existing per pixel API.&lt;/p&gt; 
&lt;p&gt;Added a new API for doing full-frame conversions:&lt;/p&gt; 
&lt;p&gt;public
 void MapDepthFrameToColorFrame(DepthImageFormat depthImageFormat, 
short[] depthPixelData, ColorImageFormat colorImageFormat, 
ColorImagePoint[] colorCoordinates);&lt;/p&gt; 
&lt;p&gt;Added KinectSensor.MapSkeletonPointToColor()&lt;/p&gt; 
&lt;p&gt;public ColorImagePoint MapSkeletonPointToColor(SkeletonPoint skeletonPoint, ColorImageFormat colorImageFormat);&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Misc&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Renamed Skeleton.Quality to Skeleton.ClippedEdges&lt;/p&gt; 
&lt;p&gt;Changed return type of SkeletonFrame.FloorClipPlane to Tuple&amp;lt;int, int, int, int&amp;gt;.&lt;/p&gt; 
&lt;p&gt;Removed SkeletonFrame.NormalToGravity property.&lt;/p&gt; 
&lt;p&gt;· &lt;strong&gt;Audio &amp;amp; Speech&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;The
 Kinect SDK now includes the latest Microsoft Speech components (V11 
QFE). Our runtime installer chain-installs the appropriate runtime 
components (32-bit speech runtime for 32-bit Windows, and both 32-bit 
and 64-bit speech runtimes for 64-bit Windows), plus an updated English 
Language pack (en-us locale) with improved recognition accuracy. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Updated acoustic model that improves the accuracy in the confidence numbers returned by the speech APIs &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Kinect Speech Acoustic Model has now the same icon and similar description as the rest of the Kinect components &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Echo
 cancellation will now recognize the system default speaker and attempt 
to cancel the noise coming from it automatically, if enabled. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Kinect Audio with AEC enabled now works even when no sound is coming from the speakers. Previously, this case caused problems. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Audio initialization has changed: 

&lt;ul&gt; 
&lt;li&gt;C++ code must call NuiInitialize before using the audio stream &lt;/li&gt; 
&lt;li&gt;Managed code must call KinectSensor.Start() before KinectAudioSource.Start() &lt;/li&gt; 
&lt;li&gt;It takes about 4 seconds after initialize is called before audio data begins to be delivered &lt;/li&gt; 
&lt;li&gt;Audio/Speech samples now wait for 4 seconds for Kinect device to be ready before recording audio or recognizing speech. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;p&gt;· &lt;strong&gt;Samples&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;A sample browser has been added, making it easier to find and view samples. A link to it is installed in the Start menu. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;ShapeGame
 and KinectAudioDemo (via a new KinectSensorChooser component) 
demonstrate how to handle Kinect Status as well as inform users about 
erroneously trying to use a Kinect for Xbox 360 sensor. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;The
 Managed Skeletal Viewer sample has been replaced by Kinect Explorer, 
which adds displays for audio beam angle and sound source 
angle/confidence, and provides additional control options for the color 
modes, depth modes, skeletal tracking options, and motor control. Click 
on “(click for settings)” at the bottom of the screen for all the bells 
and whistles. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;Kinect Explorer (via an 
improved SkeletonViewer component) displays bones and joints 
differently, to better illustrate which joints are tracked with high 
confidence and which are not. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;KinectAudioDemo no longer saves unrecognized utterances files in temp folder. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;ul&gt; 
&lt;li&gt;An example of AEC and Beam Forming usage has been added to the KinectAudioDemo application. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/ul&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;strong&gt;Redistributable Kinect for Windows Runtime package&lt;/strong&gt; 
&lt;ul&gt; 
&lt;li&gt;There
 is a redist package, located in the redist subdirectory of the SDK 
install location. This redist is an installer exe that an application 
can include in its setup program, which installs the Kinect for Windows 
runtime and driver components. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;/li&gt; 
&lt;/ul&gt; 
&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Tue, 07 Feb 2012 11:34:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/161-guid.html</guid>
    <category>hardware</category>
<category>programming</category>
<category>SDK</category>
<category>software</category>

</item>
<item>
    <title>A New Mathematics for Computing</title>
    <link>http://blog.computedby.com/archives/157-A-New-Mathematics-for-Computing.html</link>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/157-A-New-Mathematics-for-Computing.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=157</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=157</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a target=&quot;_input&quot; href=&quot;http://h30565.www3.hp.com&quot;&gt;Input Output&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;-----&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;We live in a world where digital technology is so advanced that even &lt;a href=&quot;http://h30565.www3.hp.com/t5/Feature-Articles/Science-Fiction-s-Take-on-the-Future-of-Computers-Visionaries/ba-p/556&quot; target=&quot;_blank&quot;&gt;what used to be science fiction&lt;/a&gt;
 looks quaint. (Really, Kirk, can you download Klingon soap operas on 
that communicator?) Yet underlying it all is a mathematical theory that 
dates back to 1948.&lt;/p&gt; 
&lt;p&gt;That year, &lt;a href=&quot;http://www.thocp.net/biographies/shannon_claude.htm&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Claude Shannon&lt;/a&gt; published the foundational information theory paper, &lt;em&gt;&lt;a href=&quot;http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;A&lt;/a&gt; &lt;/em&gt;&lt;em&gt;&lt;a href=&quot;http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Mathematical Theory of Communication&lt;/a&gt;&lt;/em&gt;&lt;em&gt; &lt;/em&gt;(PDF)&lt;em&gt;.&lt;/em&gt; Shannon’s work underlies communications channels as diverse as proprietary wireless networks and leads on printed circuits.&lt;/p&gt; 
&lt;p&gt;Yet in Shannon’s time, as we all know, there were no personal 
computers, and the only guy communicating without a desk telephone was 
Dick Tracy. In our current era, the number of transistors on chips has 
gotten so dense that the potential limits of Moore’s Law are routinely 
discussed. &lt;a href=&quot;http://h30565.www3.hp.com/t5/Feature-Articles/What-Does-x86-Need-to-Compete-With-RISC/ba-p/1222&quot; target=&quot;_blank&quot;&gt;Multi-core processors&lt;/a&gt;,
 once beyond the dreams of even supercomputers, are now standard on 
consumer laptops. Is it any wonder then, that even Shannon’s foresighted
 genius may have reached its limits?&lt;/p&gt; 
&lt;p&gt;&lt;img border=&quot;0&quot; align=&quot;left&quot; src=&quot;http://h30565.www3.hp.com/t5/image/serverpage/image-id/320i263307BB66A30D49/image-size/small?v=mpbl-1&amp;amp;px=-1&quot; alt=&quot;heyman_math_amit-new-photo.jpg&quot; title=&quot;heyman_math_amit-new-photo.jpg&quot; /&gt;It’s a question being pondered by academic computer scientists like Caltech’s &lt;a href=&quot;http://users.cms.caltech.edu/%7Eschulman/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Leonard Schulman&lt;/a&gt; and &lt;a href=&quot;http://www.cs.ucla.edu/%7Esahai/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Amit Sahai&lt;/a&gt;
 of UCLA. They and their colleagues are trying to update Shannon’s work 
by re-designing the fundamentals of channel communications.&lt;/p&gt; 
&lt;p&gt;From the Internet to a child’s game of telephone, the challenge in 
communications is to relay a message accurately, without losing any of 
it to noise. Prior to Shannon, the answer was a cumbersome redundancy. 
Imagine a communications channel as a conveyer belt, with every message 
as a pile of loose diamonds: If you send hundreds of piles down the 
belt, some individual diamonds might fall off, but at least you get most
 of the diamonds through quickly. If you wrap every single diamond in 
bubble wrap, you won’t lose any individual diamonds, but now you can’t 
send as many in the same amount of time.&lt;/p&gt; 
&lt;p&gt;Shannon’s conceptual breakthrough was to realize you could wrap the 
entire pile in bubble wrap and save the correction for the very end. “It
 was a complete revolution,” says Schulman, “You could get better and 
better reliability without actually slowing down the communications.”&lt;/p&gt; 
&lt;p&gt;In its simplest form, Shannon’s idea of global error correction is 
what we know as a “parity check” or “check sum,” in which a section of 
end digits should be an accurate summation of all the preceding digits. 
(In a more technical scheme: The message is a string n-bits long. It is 
mapped to another, longer string of code words. If you know what the 
Hamming distance—the difference in their relative positions—should be, 
you can determine reliability.)&lt;/p&gt; 
&lt;p&gt;&lt;img border=&quot;0&quot; align=&quot;left&quot; src=&quot;http://h30565.www3.hp.com/t5/image/serverpage/image-id/322i946B1A2F7D1C35CF/image-size/small?v=mpbl-1&amp;amp;px=-1&quot; alt=&quot;heyman_math_Schulman.JPG&quot; title=&quot;heyman_math_Schulman.JPG&quot; /&gt;That
 work holds up today. The problem comes with how the information is 
sent. “In classical Shannon communications theory, there’s a transmitter
 and a receiver, but there’s little or no interaction,” says Schulman. 
Despite Shannon’s background as a scientist at Bell Labs, his scheme 
employs a one-way communication method that’s more UPS than AT&amp;amp;T: 
The transmitter sends a big package of information, but the receiver can
 only respond, “Got” or “Not Got/Re-send.”&lt;/p&gt; 
&lt;p&gt;Starting back as far as the late 1970s, researchers in the emerging field of &lt;a href=&quot;http://en.wikipedia.org/wiki/Communication_complexity&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;communication complexity&lt;/a&gt;
 were beginning to ask themselves: Could you do what Shannon did, if 
your communication were more of a dialogue than a monologue?&lt;/p&gt; 
&lt;p&gt;What was a theoretical question then is becoming a real-world problem
 today. With faster chips and multi-core processes, communications 
channels are becoming two-way, with small messages going back and forth.
 Yet error correction still assumes big messages going in one direction.
 “How on earth are you going to bubble wrap all these things together, 
if what you say depends on what I said to you?” says Schulman.&lt;/p&gt; 
&lt;p&gt;The answer is to develop an “interactive” form of error correction. 
In essence, a message sent using classic Shannon error correction is 
like a list of commands, “Go Left, Go Right, Go Left again, Go Right…” 
Like a suffering dinner date, the receiver only gets a chance to reply 
at the end of the string.&lt;/p&gt; 
&lt;p&gt;By contrast, an interactive code sounds like a dialog between sender and receiver:&lt;/p&gt; 
&lt;blockquote&gt;“Going left.”


&lt;p&gt;“Going left too.”&lt;/p&gt; 
&lt;p&gt;“Going right.”&lt;br /&gt; “Going left instead.”&lt;/p&gt; 
&lt;p&gt;“Gzzing zzzztt.”&lt;/p&gt; 
&lt;p&gt;“Huh?”&lt;/p&gt; 
&lt;p&gt;“Going left too.”&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;The underlying mathematics for making this conversation highly 
redundant and reliable is a “tree code.” To the lay person, tree codes 
resemble a branching graph. To a computer scientist they are “a set of 
structured binary strings, in which the metric space looks like a tree,”
 says Schulman, who wrote the original paper laying out their design in 
1993.&lt;/p&gt; 
&lt;p&gt;&lt;img border=&quot;0&quot; align=&quot;middle&quot; src=&quot;http://h30565.www3.hp.com/t5/image/serverpage/image-id/324i6D734D321FFC0E7C/image-size/original?v=mpbl-1&amp;amp;px=-1&quot; alt=&quot;heyman_shannon_510px.png&quot; title=&quot;heyman_shannon_510px.png&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;“Consider a graph that describes every possible sequence of words you
 could say in your lifetime. For every word you say, there’s thousands 
of possibilities for the next word,” explains Amit Sahai, “A tree code 
describes a way of labeling this graph, where each label is an 
instruction. The ways to label the graph are infinite, but remarkably 
Leonard showed there is actually one out there that’s useful.”&lt;/p&gt; 
&lt;p&gt;Tree codes can branch to infinity, a dendritic structure which allows
 for error correction at multiple points. It also permits tree codes to 
remember entire sequences; how the next reply is encoded depends on the 
entire history of the conversation. As a result, a tree code can perform
 mid-course corrections. It’s as if you think you’re on your way to 
London, but increasingly everyone around you is speaking French, and 
then you realize, “Oops, I got on at the wrong Chunnel station.”&lt;/p&gt; 
&lt;p&gt;The result is that instructions are not only conveyed faster; they’re
 acted on faster as well, with real-time error correction. There’s no 
waiting to discover too late that an entire string requires re-sending. 
In that sense, tree codes could help support the parallel processing 
needs of multi-core machines. They could also help in the increasingly 
noisy environments of densely packed chips. “We already have chip-level 
error correction, using parity checks,” says Schulman. But once again, 
there’s the problem of one-way transmission, in which an error is only 
discovered at the end. By contrast, a tree code, “gives you a check sum 
at every stage of a long interaction,” says Schulman.&lt;/p&gt; 
&lt;p&gt;Unfortunately, those very intricacies are why interactive 
communications aren’t coming to a computer near you anytime soon. 
Currently, tree codes are in the proof of concept phase. “We can start 
from that math and show they exist, without being able to say: here is 
one,” says Schulman. One of the primary research challenges is to make 
the error correction as robust as possible.&lt;/p&gt; 
&lt;p&gt;One potential alternative that may work much sooner was just 
published by Sahai and his colleagues. They modified Schulman’s work to 
create a code that, while not quite the full theoretical ideal of a tree
 code, may actually perform nearly up to that ideal in real-world 
applications. “It’s not perfect, but for most purposes, if the 
technology got to where you needed to use it, you could go ahead with 
that,” says Schulman, “It’s a really nice piece of progress.”&lt;/p&gt; 
&lt;p&gt;Sahai, Schulman, and other researchers are still working to create 
perfect tree codes. “As a mathematician, there’s something that gnaws at
 us,” says Sahai, “We do want to find the real truth—what is actually 
needed for this to work.” They look to Shannon as their inspiration. 
“Where we are now is exactly analogous to what Shannon did in that first
 paper,” Schulman says, “He proved that good error correcting codes 
could exist, but it wasn’t until the late 1960s that people figured out 
how to use algebraic methods to do them, and then the field took off 
dramatically.”&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 27 Jan 2012 11:27:00 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/157-guid.html</guid>
    
</item>
<item>
    <title>The faster-than-fast Fourier transform</title>
    <link>http://blog.computedby.com/archives/148-The-faster-than-fast-Fourier-transform.html</link>
            <category>Programming</category>
    
    <comments>http://blog.computedby.com/archives/148-The-faster-than-fast-Fourier-transform.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=148</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=148</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;Via &lt;a target=&quot;_po&quot; href=&quot;http://www.physorg.com&quot;&gt;PhysOrg&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt; -----&lt;br /&gt;&lt;/p&gt; 
&lt;p&gt;The Fourier transform is one of the most fundamental concepts in the information sciences. It’s a method for representing an irregular signal — such as the voltage fluctuations in the wire that connects an MP3 player to a loudspeaker — as a combination of pure frequencies. It’s universal in signal processing, but it can also be used to compress image and audio files, solve differential equations and price stock options, among other things.&lt;/p&gt; 
&lt;p&gt;The reason the Fourier transform is so prevalent is an algorithm 
called the fast Fourier transform (FFT), devised in the mid-1960s, which
 made it practical to calculate Fourier transforms on the fly. Ever 
since the FFT was proposed, however, people have wondered whether an 
even faster algorithm could be found.&lt;/p&gt; 
&lt;p&gt;At the Association for Computing Machinery’s Symposium on Discrete 
Algorithms (SODA) this week, a group of MIT researchers will present a 
new algorithm that, in a large range of practically important cases, 
improves on the fast Fourier transform. Under some circumstances, the 
improvement can be dramatic — a tenfold increase in speed. The new 
algorithm could be particularly useful for image compression, enabling, 
say, smartphones to wirelessly transmit large video files without 
draining their batteries or consuming their monthly bandwidth 
allotments.&lt;/p&gt; 
&lt;p&gt;Like the FFT, the new algorithm works on digital signals. A digital 
signal is just a series of numbers — discrete samples of an analog 
signal, such as the sound of a musical instrument. The FFT takes a 
digital signal containing a certain number of samples and expresses it 
as the weighted sum of an equivalent number of frequencies.&lt;/p&gt; 
&lt;p&gt;“Weighted” means that some of those frequencies count more toward the
 total than others. Indeed, many of the frequencies may have such low 
weights that they can be safely disregarded. That’s why the Fourier 
transform is useful for compression. An eight-by-eight block of pixels 
can be thought of as a 64-sample signal, and thus as the sum of 64 
different frequencies. But as the researchers point out in their new 
paper, empirical studies show that on average, 57 of those frequencies 
can be discarded with minimal loss of image quality.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Heavyweight division&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Signals whose Fourier transforms include a relatively small number of
 heavily weighted frequencies are called “sparse.” The new algorithm 
determines the weights of a signal’s most heavily weighted frequencies; 
the sparser the signal, the greater the speedup the algorithm provides. 
Indeed, if the signal is sparse enough, the algorithm can simply sample 
it randomly rather than reading it in its entirety.
&lt;/p&gt; 
&lt;p&gt;“In nature, most of the normal signals are sparse,” says Dina Katabi,
 one of the developers of the new algorithm. Consider, for instance, a 
recording of a piece of chamber music: The composite signal consists of 
only a few instruments each playing only one note at a time. A 
recording, on the other hand, of all possible instruments each playing 
all possible notes at once wouldn’t be sparse — but neither would it be a
 signal that anyone cares about.&lt;/p&gt; 
&lt;p&gt;The new algorithm — which associate professor Katabi and professor 
Piotr Indyk, both of MIT’s Computer Science and Artificial Intelligence 
Laboratory (CSAIL), developed together with their students Eric Price 
and Haitham Hassanieh — relies on two key ideas. The first is to divide a
 signal into narrower slices of bandwidth, sized so that a slice will 
generally contain only one frequency with a heavy weight.&amp;#160;&lt;/p&gt; 
&lt;p&gt;In signal processing, the basic tool for isolating particular 
frequencies is a filter. But filters tend to have blurry boundaries: One
 range of frequencies will pass through the filter more or less intact; 
frequencies just outside that range will be somewhat attenuated; 
frequencies outside that range will be attenuated still more; and so on,
 until you reach the frequencies that are filtered out almost perfectly.&lt;/p&gt; 
&lt;p&gt;If it so happens that the one frequency with a heavy weight is at the
 edge of the filter, however, it could end up so attenuated that it 
can’t be identified. So the researchers’ first contribution was to find a
 computationally efficient way to combine filters so that they overlap, 
ensuring that no frequencies inside the target range will be unduly 
attenuated, but that the boundaries between slices of spectrum are still
 fairly sharp.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Zeroing in&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;Once they’ve isolated a slice of spectrum, however, the researchers 
still have to identify the most heavily weighted frequency in that 
slice. In the SODA paper, they do this by repeatedly cutting the slice 
of spectrum into smaller pieces and keeping only those in which most of 
the signal power is concentrated. But in an&amp;#160;&lt;a href=&quot;http://arxiv.org/abs/1201.2501v1&quot; target=&quot;_blank&quot;&gt;as-yet-unpublished paper&lt;/a&gt;,
 they describe a much more efficient technique, which borrows a 
signal-processing strategy from 4G cellular networks. Frequencies are 
generally represented as up-and-down squiggles, but they can also be 
though of as oscillations; by sampling the same slice of bandwidth at 
different times, the researchers can determine where the dominant 
frequency is in its oscillatory cycle.&lt;/p&gt; Two University of Michigan researchers — Anna Gilbert, a professor of
 mathematics, and Martin Strauss, an associate professor of mathematics 
and of electrical engineering and computer science — had previously 
proposed an algorithm that improved on the FFT for very sparse signals. 
“Some of the previous work, including my own with Anna Gilbert and so 
on, would improve upon the fast &lt;a href=&quot;http://www.physorg.com/tags/fourier+transform/&quot; rel=&quot;tag&quot; class=&quot;textTag&quot;&gt;Fourier transform&lt;/a&gt;
 algorithm, but only if the sparsity k” — the number of heavily weighted
 frequencies — “was considerably smaller than the input size n,” Strauss
 says. The MIT researchers’ algorithm, however, “greatly expands the 
number of circumstances where one can beat the traditional FFT,” Strauss
 says. “Even if that number k is starting to get close to n — to all of 
them being important — this &lt;a href=&quot;http://www.physorg.com/tags/algorithm/&quot; rel=&quot;tag&quot; class=&quot;textTag&quot;&gt;algorithm&lt;/a&gt; still gives some improvement over FFT.”

&lt;p&gt; &lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 19 Jan 2012 11:16:56 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/148-guid.html</guid>
    <category>algorythm</category>
<category>coding</category>
<category>fft</category>
<category>programming</category>

</item>
<item>
    <title>HTML bringing to us old boot sessions</title>
    <link>http://blog.computedby.com/archives/147-HTML-bringing-to-us-old-boot-sessions.html</link>
            <category>Programming</category>
            <category>Software</category>
            <category>Technology</category>
    
    <comments>http://blog.computedby.com/archives/147-HTML-bringing-to-us-old-boot-sessions.html#comments</comments>
    <wfw:comment>http://blog.computedby.com/wfwcomment.php?cid=147</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.computedby.com/rss.php?version=2.0&amp;type=comments&amp;cid=147</wfw:commentRss>
    

    <author>nospam@example.com (Christian Babski)</author>
    <content:encoded>
    &lt;p&gt;&lt;a target=&quot;_rp&quot; href=&quot;http://www.therestartpage.com/&quot;&gt;The Restart Page&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,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&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;For anyone of us who thinks that past was better... or to show to new comers that, some time ago, a computer device was not supposed to be always switched on!&lt;br /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 17 Jan 2012 11:33:44 +0000</pubDate>
    <guid isPermaLink="false">http://blog.computedby.com/archives/147-guid.html</guid>
    
</item>

</channel>
</rss>
