<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Inficron technology news</title>
    <link>http://www.inficron.com/news/</link>
    <description>Inficron updates tech news, reviews, and analysis.</description>
    <language>en</language>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>blosxom/2.1.2</generator>

  <item>
    <title>Multithreading web apps with cross browser Web Workers</title>
    <pubDate>Mon, 05 Mar 2012 23:54:00 -0500</pubDate>
    <link>http://www.inficron.com/news/2012/03/05/fn1331009246-8085</link>
    <category></category>
    <guid isPermaLink="false">/news/1331009246-8085</guid>
    <description>&lt;img src=&quot;/nwimages/n57xrr0b.jpg&quot; height=&quot;149&quot; width=&quot;250&quot; alt=&quot;Multithreading web apps with cross browser Web Workers&quot; class=&quot;leftimg&quot; /&gt;One of the most useful and underused features of HTML5 is Web Workers. Generally, Javascript programs are severely limited by its single threaded model. You can&apos;t do any complex time consuming process or you will block the UI thread, making the browser unresponsive to the user. Web workers allow developers to run ongoing processes in a separate thread, providing huge performance gains and enabling applications that were previously not possible. Unfortunately there is still no cross browser support for web workers, and thus they have been of little value to production applications. Until now.

&lt;br&gt;&lt;br&gt;A neat &lt;a href=&quot;https://github.com/TamerRizk/worker&quot; target=&quot;_blank&quot;&gt;cross-browser trick&lt;/a&gt; enables web workers by falling back to a hidden Silverlight application that performs threading when it is not available in the browser. Since Silverlight has a large cross-browser adoption and 100% adoption across browsers that do not support web workers, this solution is usable in production applications where browser compatibility and uniform user experience are key. Lets create a cross browser Web Worker using this technique.

&lt;br&gt;&lt;br&gt;We will create two files, main.html which hosts the user interface code, and worker.js which will perform compute intensive operations in another thread, and return them to main.html in real time. In main.html we will need to embed a hidden Silverlight object to help browsers that do not support Web Workers:

&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;prettyprint&quot;&gt; &amp;lt;div id=&quot;silverlightControlHost&quot; style=&quot;display:none;&quot;&amp;gt;
     &amp;lt;object id=&quot;obj&quot; data=&quot;data:application/x-silverlight-2,&quot; type=&quot;application/x-silverlight-2&quot; width=&quot;1&quot; height=&quot;1&quot;&amp;gt;
          &amp;lt;param name=&quot;source&quot; value=&quot;ss.xap&quot;/&amp;gt;
          &amp;lt;param name=&quot;onError&quot; value=&quot;onSilverlightError&quot; /&amp;gt;
          &amp;lt;param name=&quot;background&quot; value=&quot;white&quot; /&amp;gt;
          &amp;lt;param name=&quot;onLoad&quot; value=&quot;onSilverlightLoad&quot; /&amp;gt;
          &amp;lt;param name=&quot;onunLoad&quot; value=&quot;this.Content.sl.close()&quot; /&amp;gt;
          &amp;lt;param name=&quot;minRuntimeVersion&quot; value=&quot;3.0.40818.0&quot; /&amp;gt;
          &amp;lt;param name=&quot;autoUpgrade&quot; value=&quot;true&quot; /&amp;gt;
          &amp;lt;!-- for browsers that don&apos;t have it --&amp;gt;
          &amp;lt;a href=&quot;http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.60310.0&quot; style=&quot;text-decoration: none;&quot;&amp;gt;&amp;lt;img src=&quot;http://go.microsoft.com/fwlink/?LinkId=161376&quot; alt=&quot;Get Microsoft Silverlight&quot; style=&quot;border-style: none;&quot;/&amp;gt;&amp;lt;/a&amp;gt;
     &amp;lt;/object&amp;gt;
     &amp;lt;iframe id=&quot;_sl_historyFrame&quot; style=&quot;visibility:hidden;height:0px;width:0px;&quot;&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;

&lt;br&gt;&lt;br&gt;Let&apos;s also add some functionality to main.html to test multi-threaded Javascript: 	

&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;prettyprint&quot;&gt;
&amp;lt;input type=&quot;button&quot; value=&quot;Click me ten times!&quot; onclick=&quot;doClick();&quot;/&amp;gt;
&amp;lt;div id=&quot;test&quot;&amp;gt;0&amp;lt;/div&amp;gt;
&amp;lt;div id=&quot;output&quot;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;

&lt;br&gt;&lt;br&gt;Now at the bottom of the main.js right before the closing tag let&apos;s add a &lt;script type=&quot;text/javascript&quot;&gt; ? &lt;/script&gt; block for our code. First we will want to see if this browser supports workers.

&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;prettyprint&quot;&gt; var worker;
hasWorker = function() {
   return (typeof(Worker) != &quot;undefined&quot;) ? true : false;
};
&lt;/pre&gt;

&lt;br&gt;&lt;br&gt;If Web Workers are enabled we set it up as usual, otherwise make sure the SL object is rendered:

&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;prettyprint&quot;&gt; if(hasWorker){
     worker = new Worker(&quot;worker.js&quot;);
     worker.onmessage = workermessage;
 }else{
    document.getElementById(&quot;silverlightControlHost&quot;).style.display = &quot;block&quot;;
 }
&lt;/pre&gt;

&lt;br&gt;&lt;br&gt;If native Web Workers are not present, we will need to set up an equivalent SL worker:

&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;prettyprint&quot;&gt;
onSilverlightLoad = function(){
     if(hasWorker) return;
     worker = document.getElementById(&quot;obj&quot;);
 worker.Content.sl.worker(document.location.href.replace(/\/[^\/]+$/,&apos;&apos;)+&quot;/worker.js&quot;);
};

onSilverlightError = function(sender, args) {
     throw new Error(args.ErrorType+&quot;: &quot;+args.ErrorCode);
};
&lt;/pre&gt;

&lt;br&gt;&lt;br&gt;We need to do something on worker message:

&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;prettyprint&quot;&gt;
workermessage = function(msg){
     var o = document.getElementById(&quot;output&quot;);
     o.innerHTML = o.innerHTML + &quot; &quot; + (hasWorker ? msg.data : msg);
};
&lt;/pre&gt;

&lt;br&gt;&lt;br&gt;Finally don&apos;t forget about our test:

&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;prettyprint&quot;&gt;
doClick = function(){
     var o = document.getElementById(&quot;test&quot;);
     var i = parseInt(o.innerHTML, 10) + 1;
     o.innerHTML= i;
     if(i&amp;gt;10)
          worker.terminate();
}
&lt;/pre&gt;

&lt;br&gt;&lt;br&gt;So now that we have a functional interface, we need to create the worker.js script that does all the work behind the scenes. First let&apos;s check if this browser has native workers like we did in main.html:

&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;prettyprint&quot;&gt;
hasWorker = function() {
   return (typeof(Worker) != &quot;undefined&quot;) ? true : false;
};

onmessage = function(msg){
     terminate = hasWorker ? msg.data.match(/stop/i) : msg.match(/stop/i);
}
&lt;/pre&gt;

&lt;br&gt;&lt;br&gt;Now let&apos;s create an arbitrary computation in a self executing function:

&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;prettyprint&quot;&gt;
(function(){
     var i = 1000000;
     var x = 0;
     var y = 0;
     while(--i&amp;gt;0){
          x = Math.floor(Math.ceil(Math.random()*1000000)/(Math.ceil(Math.random()*1000)+1));
          if(x%19==0)
               y+=x;
     }
     hasWorker ? postMessage(y) : workermessage(y);
     arguments.callee();
})();
&lt;/pre&gt;

&lt;br&gt;&lt;br&gt;Our program is finished. Loading main.html starts the computation, and continues to perform it asynchronously while we press the button. After hitting the button ten times, the worker gets the stop message and terminates itself. Finally, cross browser Javascript multi-threading for your client side cryptography, AI, and ray tracing applications! Here&apos;s a &lt;a href=&quot;http://www.inficron.com/worker/&quot;&gt;demo&lt;/a&gt; of multithreading right in your browser! The Silverlight plugin is an &lt;a href=&quot;https://github.com/TamerRizk/worker&quot; target=&quot;_blank&quot;&gt;open source project&lt;/a&gt; on GitHub.</description>
  </item>
  <item>
    <title>Choosing a platform to power your business</title>
    <pubDate>Sat, 28 Jan 2012 08:24:00 -0500</pubDate>
    <link>http://www.inficron.com/news/2012/01/28/fn1327757062-5270</link>
    <category></category>
    <guid isPermaLink="false">/news/1327757062-5270</guid>
    <description>&lt;img src=&quot;/nwimages/choosing-a-platform-to-power-your-business.jpg&quot; height=&quot;166&quot; width=&quot;250&quot; alt=&quot;Choosing a platform to power your business&quot; class=&quot;leftimg&quot; /&gt;Linux. Its everywhere. More than 90% of the world&apos;s supercomputers use it. It powers over 60% of the internet&apos;s webservers such as Google and Amazon. And it&apos;s probably running your smartphone. Even the Mac&apos;s Darwin foundation has the same roots as Linux. Yet all too often we see Linux disregarded by small businesses in their initial technology strategy, because they feel it is unfamiliar. Unfortunately, this is the very demographic that would benefit from Linux the most.

&lt;br&gt;&lt;br&gt;Although Linux has zero software licensing costs, it is widely renowned for its performance, stability, and security. Linux handles a large number of simultaneous processes effortlessly and is well known for its ability to run for years without crashing, making it an ideal choice for businesses that cannot afford downtime. Linux&apos;s flexibility is unsurpassed. Its trim enough to power Android smartphones and scalable enough to run NASA&apos;s supercomputers.

&lt;br&gt;&lt;br&gt;Linux is open source. That means that you have the ability to tweak it to fit your application, on an as needed basis. There are literally hundreds of thousands of high quality addons to choose from for everything from accounting to DNA sequencing. What&apos;s more, there is no commercial vendor trying to lock you into their technology stack and licensing arrangements.

&lt;br&gt;&lt;br&gt;Linux is known for its superior quality. Based on Unix, Linux has been tried and tested for over 30 years with very little exploitation in comparison to its counterparts. Its inherent multi user architecture promotes security through trust segregation and permissions. A vibrant community continuously reviews and updates the open source code base, protecting it from vulnerabilities and obsolesce.

&lt;br&gt;&lt;br&gt;To business users and decision makers Linux may often be the lesser known operating system. However, its low total cost of ownership, inherent security, vendor freedom and engineering flexibility make it a better, if not obvious, choice for many business applications.</description>
  </item>
  <item>
    <title>Moving to the Cloud</title>
    <pubDate>Fri, 20 Jan 2012 14:43:00 -0500</pubDate>
    <link>http://www.inficron.com/news/2012/01/20/fn1327088615-225</link>
    <category></category>
    <guid isPermaLink="false">/news/1327088615-225</guid>
    <description>&lt;img src=&quot;/nwimages/moving-to-the-cloud.png&quot; height=&quot;178&quot; width=&quot;250&quot; alt=&quot;Moving to the Cloud&quot; class=&quot;leftimg&quot; /&gt;Over the last half a decade, several factors have contributed to a radical shift in how businesses view IT. It budgets have been cut dramatically in the face of recession, IT expectations of internet savvy employees have soared, and a growing community are providing cost effective cloud automation of everything from sales to HR.

&lt;br&gt;&lt;br&gt;Unfortunately, organizations looking for a substantial ROI are disappointed by diminished returns resulting from the true cost of managing an exploding number of disparate applications spanning multiple sites, often outside corporate control. Furthermore, many companies have valid questions about security, privacy, and access to their valuable corporate data.

&lt;br&gt;&lt;br&gt;The solution is to find a medium between internal IT and cookie cutter cloud services in a model that enables you to control a unified IT infrastructure for your businesses while reigning in costs. This can be accomplished by combining enterprise software solutions with a managed application delivery service running on servers dedicated to your organization.

&lt;br&gt;&lt;br&gt;The advantages are obvious. With a proven suite of enterprise software that may be incrementally integrated across dedicated servers, your IT immediately grows with your organization. Your application service provider may utilize traffic engineering and access controls to make the network a seamless part of your organization enabling you to outsource IT applications and data without giving up ownership and control. And having a complete picture of your unified IT infrastructure, users, applications and data enable you to capitalize on business process automation opportunities unique to your organization.</description>
  </item>
  <item>
    <title>Results of the SOPA blackout</title>
    <pubDate>Thu, 19 Jan 2012 05:18:00 -0500</pubDate>
    <link>http://www.inficron.com/news/2012/01/19/fn1326968111-3097</link>
    <category></category>
    <guid isPermaLink="false">/news/1326968111-3097</guid>
    <description>&lt;img src=&quot;/nwimages/results-of-the-sopa-blackout.jpg&quot; height=&quot;147&quot; width=&quot;250&quot; alt=&quot;Results of the SOPA blackout&quot; class=&quot;leftimg&quot; /&gt;Congratulations to the internet community. The SOPA/PIPA blackout was a huge success. At least eighteen new senators announced their opposition, dealing a severe blow to supporters of the bills. Popular sites such as Google, Wikipedia, Flickr, Boing Boing, and our very own Inficron.com suspended or altered web services to create awareness about the proposed legislation that would disrupt the innovative online landscape and bring about an end to the Internet as we know it.&lt;br&gt;&lt;br&gt;In total, 75,000 sites are reported by fightforthefuture.org to have participated in the blackout. As a result, millions of people have expressed solidarity in the opposition, and it looks like online freedom may just prevail.</description>
  </item>
  <item>
    <title>Public perception</title>
    <pubDate>Thu, 19 Jan 2012 05:09:00 -0500</pubDate>
    <link>http://www.inficron.com/news/2012/01/19/fn1326967759-3924</link>
    <category></category>
    <guid isPermaLink="false">/news/1326967759-3924</guid>
    <description>&lt;img src=&quot;/nwimages/public-perception.jpg&quot; height=&quot;192&quot; width=&quot;250&quot; alt=&quot;Public perception&quot; class=&quot;leftimg&quot; /&gt;Never before has there been a time where individuals and organizations had so much control over the flow of information about them as they do today. Instantaneous communication via social media, precision advertising, and organic content indexed at lightening speeds. However, public relations on the Internet is a double edged sword. One mistake may completely obliterate profit margins and archive negative publicity for years to come. Following a few guidelines when developing your brand online will help to create a favorable environment for delivering your message.

&lt;br&gt;&lt;br&gt;Develop and share content that is useful. When people learn from and publicize content, the source&apos;s reputation is enhanced as a specialist. Encourage sharing of your content and engage those that are sharing in conversation.

&lt;br&gt;&lt;br&gt;Listen to your audience. Their undertones are a strong predictor of public sentiment about your brand and provide valuable insight on how to tune your message.

&lt;br&gt;&lt;br&gt;Be helpful and expect nothing in return. People have a natural affinity to the good guy willing to lend a hand to others for noble reasons, such as the betterment of the community in which you are participating and the personal growth of its members.

&lt;br&gt;&lt;br&gt;Be professional, never aggressive. The Internet is a very public forum where inevitably every word is scrutinized and all too often misconstrued, sometimes intentionally. Play it safe. Be as professional as you would be if you were visiting clients at their office. Do not allow yourself to be drawn into argument and never belittle another organization or individual.

&lt;br&gt;&lt;br&gt;Be prompt, friendly and courteous. The Internet has a short attention span and a long memory. Respond to people right away and your brand will be perceived to be attentive and energetic. Say hello and goodbye, as you would in real life, as opposed to appearing and disappearing from conversations. Give thanks and praise, often, and your brand will be recognized fondly.

&lt;br&gt;&lt;br&gt;Keep it real. People have developed a knack for seeing through generic spam and are generally tired of being bombarded with marketing hype. Establishing a brand online is about developing a personal connection with your audience, so that they know you identify with them, and they in turn identify with you.</description>
  </item>
  <item>
    <title>Thoughts on SOPA/PIPA</title>
    <pubDate>Thu, 19 Jan 2012 05:04:00 -0500</pubDate>
    <link>http://www.inficron.com/news/2012/01/19/fn1326967442-2918</link>
    <category></category>
    <guid isPermaLink="false">/news/1326967442-2918</guid>
    <description>&lt;img src=&quot;/nwimages/thoughts-on-sopapipa.jpg&quot; height=&quot;250&quot; width=&quot;250&quot; alt=&quot;Thoughts on SOPA/PIPA&quot; class=&quot;leftimg&quot; /&gt;Powerful special interests are attempting to force legislation for tighter control of the Internet, because they believe such legislation will preserve their power. The bill they have sponsored, SOPA, not only has severe consequences for the Internet, it doesn&apos;t even achieve their objectives. SOPA, under the innocuous banner &quot;Stop Online Piracy Act&quot; will have the following repercussions:

&lt;br&gt;&lt;br&gt;1) Make organizations, such as Google, Facebook, Digg and Reddit liable to censor user generated content. Censoring billions of records for billions of possible violations is expensive. One of these companies has already stated that it may be forced to shut down as a result of the financial burden caused by SOPA. Other companies may have to scale back the services they offer for free, or otherwise charge for them.

&lt;br&gt;&lt;br&gt;2) Provide well financed trade groups such the MPAA and RIAA with leverage to shape the future of the internet for the benefit of the organizations they represent, by threatening closure of services that they believe are not in their interest.

&lt;br&gt;&lt;br&gt;3) Create a high barrier to entry for start-ups and a rough legal landscape for small businesses. If SOPA was implemented 10 years ago, there is a high probability that we would not have many of the online services we take for granted such as YouTube and Pandora.

&lt;br&gt;&lt;br&gt;4) The probable dissolution of DNS caused by the natural circumvention of blocked sites will result in wide array of security problems, bleeding the digital economy of integrity.

&lt;br&gt;&lt;br&gt;The internet creates market efficiencies that forces industries to adapt, thus pushing forward progress for humanity as a whole. Public freedoms should not be curtailed and the Internet, built by the masses, should not be destroyed, so that a powerful few may have a false sense of security that their business models are sustainable without technological evolution.</description>
  </item>
  </channel>
</rss>

