<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>Smart Software</title>
    
    <link rel="alternate" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/" />
    <link rel="service.post" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=7693" title="Smart Software" /> 
    <id>tag:typepad.com,2003:weblog-7693</id>
    <updated>2012-05-08T13:08:43Z</updated>
    <subtitle>Musings on Technology, Entrepreneurship and Life</subtitle>
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/smartsoftware" /><feedburner:info uri="smartsoftware" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><entry>
        <title>Continuing Education</title>
        <link rel="alternate" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/05/continuing-education.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=7693/entry_id=6a00d8345242f069e20163055a4508970d" title="Continuing Education" />
        <link rel="replies" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/05/continuing-education.html" thr:count="2" thr:when="2012-05-08T15:53:16Z" />
        <id>tag:typepad.com,2003:post-6a00d8345242f069e20163055a4508970d</id>
        <published>2012-05-08T06:08:43-07:00</published>
        <updated>2012-05-08T16:09:52Z</updated>
        <summary>A large fraction of my time these days is spent viewing online courses. Coursera (featuring courses from Stanford, Berkeley, Michigan, Penn and Princeton) and edX (featuring MIT &amp; Harvard) are spearheading free online access to high-quality top university courses. Udacity, founded by former Stanford professor Sebastien Thrun, is also noteworthy, though the content is not as valuable as the other two. I’ve taken all but one of the Coursera classes. These courses have mostly been computer-science related, though the variety of the subjects taught will soon expand to the humanities and other subjects. For me, the most beneficial part is the overview refresher to the field of artificial intelligence, taught by the leading professors in the field: AI. This was...</summary>
        <author>
            <name>Wes</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://wesnerm.blogs.com/net_undocumented/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>A large fraction of my time these days is spent viewing online courses. Coursera (featuring courses from Stanford, Berkeley, Michigan, Penn and Princeton) and edX (featuring MIT &amp; Harvard) are spearheading free online access to high-quality top university courses. Udacity, founded by former Stanford professor Sebastien Thrun, is also noteworthy, though the content is not as valuable as the other two. </p>  <p>I’ve taken all but one of the Coursera classes. These courses have mostly been computer-science related, though the variety of the subjects taught will soon expand to the humanities and other subjects.</p>  <p>For me, the most beneficial part is the overview refresher to the field of artificial intelligence, taught by the leading professors in the field:</p>  <ul>   <li>AI. This was taught by Norvig (95% of AI courses uses his text) and Thrun </li>    <li>Machine Learning </li>    <li>Natural Language Processing by Manning and Jurafsky </li>    <li>Probabilistic Graphical Models </li>    <li>Game Theory </li>    <li>Computer Vision </li>    <li>Programming a Robotic Car</li>    <li>Introduction to Robotics </li>    <li>Data Mining</li>    <li>Computational Neuroscience </li> </ul>  <p>Some are courses I have already taken before, but, since its been nearly two decades, there has been considerable advances in technology that warrant a second look.   </p>  <p>Another site that I spend a lot of time on is <a href="http://pluralsight-training.net">PluralSight Training (pluralsight-training.net),</a> which has over 200 hardcore developer videos on a range of technology, mostly targeting the Microsoft platform, but also including other popular topics such mobile and cloud computing. At the current rate that I am consuming these PluralSight courses, by end of this year or next, I should be thoroughly familiar with nearly every aspect of the latest Microsoft technologies as well as the the most common mobile, web, and cloud APIs and services. PluralSight has an annual subscription package costing from $299 for web and mobile access to course videos to $499 (which includes assessments and certificates).</p>  <p>I have attempted various study programs over the past decade. For instance, I collected numerous online textbooks to read, but I find that many texts are difficult to go through without the foundation of an introductory course. Online course lectures require less conscious effort and there is also less chance that I will skip over the boring parts.</p>  <p>I marveled at how students have acquired university knowledge at accelerated pace and sought to replicate their high rate of knowledge acquisition. For instance, Scott Young is attempting an <a href="http://www.scotthyoung.com/blog/mit-challenge/">MIT challenge</a>, which is to learn four years of MIT OpenCourseWare material in a period of 12 months. With fourteen courses already completed so far this year, I am well on my way to acquiring another bachelor’s degree worth of knowledge (typically requiring four years) by the end of this year—a feat that I will likely repeat again each upcoming year. I am so excited.</p></div>
</content>


    </entry>
    <entry>
        <title>Rise of Big Data, Machine Learning and Data Mining</title>
        <link rel="alternate" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/rise-of-big-data-machine-learning-and-data-mining.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=7693/entry_id=6a00d8345242f069e20167611dae07970b" title="Rise of Big Data, Machine Learning and Data Mining" />
        <link rel="replies" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/rise-of-big-data-machine-learning-and-data-mining.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345242f069e20167611dae07970b</id>
        <published>2012-01-26T07:16:30-08:00</published>
        <updated>2012-01-26T15:17:15Z</updated>
        <summary>My approach in artificial intelligence have primarily been symbolic, and, in prior posts on AI, I indicated my skepticism on machine learning and other statistical techniques as a valid long-term approach to solving problems. With supervised learning techniques, it was possible to construct a function from inputs to output by learning from data. However, in many cases, particularly neural networks, the function remains a black box in which no model can be extracted out from which one can perform more complicated types of reasoning. This is not entirely true. In reality, neural networks involve a set of matrix calculations, which can be explored, and some techniques such as Bayesian models do offer multi-directional, not just bidirectional, inference in which the...</summary>
        <author>
            <name>Wes</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://wesnerm.blogs.com/net_undocumented/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>My approach in artificial intelligence have primarily been symbolic, and, in prior posts on <a href="http://wesnerm.blogs.com/net_undocumented/2004/06/ai.html">AI</a>, I indicated my skepticism on machine learning and other statistical techniques as a valid long-term approach to solving problems. With supervised learning techniques, it was possible to construct a function from inputs to output by learning from data. However, in many cases, particularly neural networks, the function remains a black box in which no model can be extracted out from which one can perform more complicated types of reasoning. This is not entirely true. In reality, neural networks involve a set of matrix calculations, which can be explored, and some techniques such as Bayesian models do offer multi-directional, not just bidirectional, inference in which the sought probabilities of any node in the graph may be conditioned on any other nodes.</p>  <p>I spoke with a former Harvard classmate of mine, who pursued a PhD in Natural Language Processing at Harvard under the tutelage of Professor Stuart Sheiber, who also interested me in natural language. He went into Microsoft Research after obtaining his degree, only to leave the field of NLP for a director of program management position in the product groups, because he felt that we still don't really understand natural language. Given that natural language processing is the basis of some of my work and I developed effective approaches to incorporating natural language understanding in the products that I develop, the comment was somewhat disheartening. Later, after reviewing his CV, I discovered that his entire focus on natural language processing was focused on statistical techniques, which to me offers easy heuristics but very little explanatory power that only a real model could provide. Also, my focus has been more on natural language manipulation which is more tractable than inference and to watch for any emergent intelligence properties that could reduce the need for searches that inference would entail.</p>  <p>My gradual warming to machine learning techniques is the result of taking Andrew Ng's online courses on Machine Learning. I have read about neural networks independently and encountered many of the techniques multiple times in my applied math and management coursework--Bayesian modeling, Markov models, Decision Trees, Regression, etc--and even recognized their potential in program by including some of these algorithms in my AI libraries, however I never fully appreciated their power.</p>  <p>My warming also mirrors the gradual acceptance of these techniques by industry over the 1990s. Neural networks were initially discredited by a paper in 1970s by a well-known researcher in AI; the limitations on the expressiveness of neural networks were later overcome and the field exploded. In economics, the term data mining was once looked upon with disdain and not regarded as serious research, but the mathematical rigor combined with the growing volume of data of the digital age changed its perception into the one of the hottest subject areas in the discipline. Machine learning reduces the need to discover models yet yield good approximate results.</p>  <p>Peter Norvig, author of <i>AI: A Modern Approach</i>, the leading AI text with 95% market share, recently gave a presentation on the rise of big data and machine learning. He is currently the director of Research at Google, where he applies AI techniques to make sense of the vast amounts of web data crawled by the search engine. Peter Norvig also followed the transition from symbolic AI with his books. His first text on AI, written in 1992, was <i>Paradigms of AI: Case Studies in Common Lisp</i>, incorporating only symbolic approaches; the second text written mentioned earlier consists mostly of non-symbolic approaches. </p>  <p>His work at Google led him to write about the rise of data in the famous paper, <a href="http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/pubs/archive/35179.pdf">The Unreasonable Effectiveness of Data</a>. Statistical approaches have automated and revolutionized natural language parsing and machine translation. In many cases, these proved superior to more expensive, human involved efforts. For instance, Chinese machine translation was automated without a single developer knowing the Chinese language.</p>  <p>In a lecture "<a href="http://www.youtube.com/watch?v=HT540VrCDwg&amp;feature=youtu.be">Innovation in Search and Artificial Intelligence</a>," Peter Norvig describes the rationale behind the movement from previous approaches to automated statistical approaches.</p>  <p>Below, I have included some of his remarks.</p>  <blockquote>   <p>First I want to talk about the way we understand the world and make models of the world and try to get them to our computers and make sense. This is the process of theory formation. Here's a guy. We call him Isaac and he makes some observations of the world. Then he gets an idea an decides to formulate the idea into form of a theory or model.</p>    <p><a href="http://wesnerm.blogs.com/.a/6a00d8345242f069e2016300289dc8970d-pi"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image [4]" border="0" alt="Image [4]" src="http://wesnerm.blogs.com/.a/6a00d8345242f069e2016300289dd2970d-pi" width="508" height="329" /></a></p>    <p>Then you can apply the model to make predictions of the future.</p>    <p><a href="http://wesnerm.blogs.com/.a/6a00d8345242f069e20168e61f20f0970c-pi"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image [2]" border="0" alt="Image [2]" src="http://wesnerm.blogs.com/.a/6a00d8345242f069e2016300289e1b970d-pi" width="507" height="332" /></a></p>    <p>It's great that approach works. But, of course, it could be thousands of years before we got someone who was smart enough to come up with a model like that. We need a process where we can iterate a lot faster--a more agile theory making process to get those kinds of advances.</p>    <p>One of the problems of this approach of formulating theories like that is that essentially all models are wrong, but some are useful.  They all make approximations somehow. They don't model the world completely, but some of them are very useful, like the ones Isaac was using. So if you are going to be wrong anyways, the question is "is there some shortcut so that you can trade off development time to advance much faster, but that may be a little more wrong, but can still be more useful?"</p>    <p>Initially, computer programs were taught to behave in this manner:</p>    <p><a href="http://wesnerm.blogs.com/.a/6a00d8345242f069e20168e61f2166970c-pi"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image [3]" border="0" alt="Image [3]" src="http://wesnerm.blogs.com/.a/6a00d8345242f069e20168e61f216f970c-pi" width="509" height="328" /></a></p>    <p>There's input, output and data, but computer science was this stuff in the middle. In the past few decades, processing power of computers have increased dramatically.</p> </blockquote> He uses this example in many of his lectures. Traditionally, programs were the focus of artificial intelligence, but now the red circle has shifted to data. The program is not longer a custom written component, but a generic learning algorithm (like a neural network) that takes data to learn from in order to produce the appropriate output for each input. The function is effectively determined by training data.   <blockquote>   <p><a href="http://wesnerm.blogs.com/.a/6a00d8345242f069e2016300289e92970d-pi"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Image" border="0" alt="Image" src="http://wesnerm.blogs.com/.a/6a00d8345242f069e20167611dae00970b-pi" width="507" height="328" /></a></p> </blockquote>  <p>As if to emphasize the point, Norvig mentions how it was once believe that certain algorithms were inherently better than others. The improvements were tweaked to incorporate more advanced models or additional variables. However, an interesting phenomenon occurs when more training is fed to each of the algorithm. As the size of data increases by factors of 10X from sample sizes of thousands to billions, the performance rankings of the algorithms change positions. At some point, the behaviors of the algorithms asymptotes, whereby additional data really doesn't add much more information. The simpler algorithms often outperform the more advanced ones.</p></div>
</content>


    </entry>
    <entry>
        <title>Microsoft AI Initiatives</title>
        <link rel="alternate" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/microsoft-ai-initiatives.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=7693/entry_id=6a00d8345242f069e20167610b2a5a970b" title="Microsoft AI Initiatives" />
        <link rel="replies" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/microsoft-ai-initiatives.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345242f069e20167610b2a5a970b</id>
        <published>2012-01-25T01:42:31-08:00</published>
        <updated>2012-01-25T09:43:03Z</updated>
        <summary>Several computer science classes focus on algorithms. These include classes in data structures, artificial intelligence, computer graphics and numerical computing. Some of these data structures are quite involved and I have felt that they should be incorporated inside system libraries. Many of the classical data structures have in the 1990s become a staple of standard libraries such as the Standard Template Library of C++ and with the frameworks included with the Java and .NET runtimes. However, libraries for numerical computing (manipulating matrices and performing statistics), handling artificial intelligence, or doing computationally geometry have still not found themselves as full-class citizens in modern APIs, although 3D graphics do have some presence. There have been some recent activity in developing consumable AI...</summary>
        <author>
            <name>Wes</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term=".NET" />
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://wesnerm.blogs.com/net_undocumented/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>Several computer science classes focus on algorithms. These include classes in data structures, artificial intelligence, computer graphics and numerical computing. </p>  <p>Some of these data structures are quite involved and I have felt that they should be incorporated inside system libraries. Many of the classical data structures have in the 1990s become a staple of standard libraries such as the Standard Template Library of C++ and with the frameworks included with the Java and .NET runtimes. However, libraries for numerical computing (manipulating matrices and performing statistics), handling artificial intelligence, or doing computationally geometry have still not found themselves as full-class citizens in modern APIs, although 3D graphics do have some presence.</p>  <p>There have been some recent activity in developing consumable AI libraries in the past few years at Microsoft.</p>  <p>With SQL Server 2005, Microsoft <a href="http://msdn.microsoft.com/en-us/library/ms345131(v=sql.90).aspx">incorporated various AI and data mining packages</a>: decision trees, association rules, naïve Bayes, sequence clustering, time series, neural nets, and text mining. A few years ago, Microsoft developed the <a href="http://msdn.microsoft.com/en-us/devlabs/hh145003">Windows Solver Foundation</a> libraries that include optimization, solvers, and latent term-rewriting functionality. A <a href="http://www.microsoft.com/mscorp/execmail/2010/05-17HPC.mspx">Technical Computing Initiative</a> was launched, but some of the players involved have left the company and the output from the initiative remains to be seen. It's also not clear the goals of this initiative.</p>  <p>Microsoft had for a long while made available a Speech API, but its recognition capabilities are somewhat weak and frustrating. There is still no general purpose Natural Language API; this is somewhat complicated by the need to support multiple languages.</p>  <p>Recent developer events have introduced new libraries from research: </p>  <ul>   <li><a href="http://research.microsoft.com/en-us/um/cambridge/projects/infernet/">Infer.NET</a> supports probabilistic inference. The application of this library though is quite limited. </li>    <li>A more promising library called <a href="http://www.microsoftpdc.com/2009/SVR32">Semantic Engine</a> includes a range of technologies from Machine Learning, Computer Vision, Natural Language and others.</li> </ul>  <p><a href="http://wesnerm.blogs.com/.a/6a00d8345242f069e2016300162aef970d-pi"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="mse-slide-architecture" border="0" alt="mse-slide-architecture" src="http://wesnerm.blogs.com/.a/6a00d8345242f069e2016300162af9970d-pi" width="487" height="370" /></a></p>  <p>There are some downsides to most of these new libraries. They are based on managed code and currently have restrictions that prohibit non-internal commercial use. </p></div>
</content>


    </entry>
    <entry>
        <title>Leverage in the Software Business</title>
        <link rel="alternate" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/leverage-in-the-software-business.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=7693/entry_id=6a00d8345242f069e2016760f91fed970b" title="Leverage in the Software Business" />
        <link rel="replies" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/leverage-in-the-software-business.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345242f069e2016760f91fed970b</id>
        <published>2012-01-23T16:17:15-08:00</published>
        <updated>2012-01-24T00:18:26Z</updated>
        <summary>It’s a great time to be in the software business, because are many levers available to quickly produce products. Open Source. In recent years, open source has become a true phenomenon. One can find libraries for advanced technologies that are competitive with research offerings from the likes of Google and Microsoft. Even Google relies heavily on open source, which may be a key reason it iterates faster than Microsoft, which develops most of its software in-house. For instance, Chrome, itself based on the WebKit open source project, uses over 80 other open-source libraries credited in it About box. From machine translation to text-to-speech to optical character recognition to computer vision to numerical computing to video processing to GIS, the range...</summary>
        <author>
            <name>Wes</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Entrepreneurship" />
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://wesnerm.blogs.com/net_undocumented/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>It’s a great time to be in the software business, because are many levers available to quickly produce products.</p>  <p><strong>Open Source</strong>. </p>  <p>In recent years, open source has become a true phenomenon. One can find libraries for advanced technologies that are competitive with research offerings from the likes of Google and Microsoft. Even Google relies heavily on open source, which may be a key reason it iterates faster than Microsoft, which develops most of its software in-house. For instance, Chrome, itself based on the WebKit open source project, uses over 80 other open-source libraries credited in it About box. From machine translation to text-to-speech to optical character recognition to computer vision to numerical computing to video processing to GIS, the range of competencies offered from open-source to the new startup is breathtaking. In addition to the traditional source code repositories like SourceForge and CodeProject, many platform and book samples as well as course code offer ready-to-use technology.</p>  <p><strong>Cross-platform languages</strong>. </p>  <p>Several cross-platform solutions have emerged C#/Mono, Qt, Air, HTML and Java to allow the products to be built on one platform such as Windows and quickly migrated to others such as mobile devices and the Mac.</p>  <p><strong>Open Data</strong>.</p>  <p>Beside source code, data (both raw numbers and media files) is available freely from the government, universities and elsewhere. Natural language information is available from the Linguistic Data Consortium. Data for mapping, demographics and nutrition is freely available from the government. Websites like infochimp.com serve as a portal for these types of data files.</p>  <p><strong>Component Libraries</strong>.</p>  <p>For hard to obtain source code and data, there are companies that offer for small sums access to that data. User interface libraries are pervasive. Nuance licenses its speech recognition technology for other companies to use within their products.</p>  <p><strong>Web Services</strong>.</p>  <p>Web APIs potentially offer instant access to valuable services on the Web, though tend to be less stable that OS-specific APIS. Nick Bradbury wrote of the <a href="http://nick.typepad.com/blog/2011/11/the-long-term-failure-of-web-apis.html">long-term failure of Web APIs</a>, because web APIs have to be maintained continuously and any software that relies on them will need to be updated over time and could potentially break in the future.</p>  <p>A software company could provide its own gateway web service to ameliorate this situation, so that the client application should not have to change. Another advantage of this approach is that the company may use GPL code that would otherwise not be commercially viable.</p></div>
</content>


    </entry>
    <entry>
        <title>C# Everywhere</title>
        <link rel="alternate" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/c-everywhere.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=7693/entry_id=6a00d8345242f069e2016760f3e45e970b" title="C# Everywhere" />
        <link rel="replies" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/c-everywhere.html" thr:count="2" thr:when="2012-01-24T16:54:34Z" />
        <id>tag:typepad.com,2003:post-6a00d8345242f069e2016760f3e45e970b</id>
        <published>2012-01-23T07:13:12-08:00</published>
        <updated>2012-01-23T15:13:12Z</updated>
        <summary>Miguel de Icaza, founder of Xamarin, describes his C# Everywhere strategy for Mono. Earlier this year, there was a question of Mono’s survival, when the project was canceled after the Attachmate acquisition. However, the Mono team reconstituted itself under the umbrella of Xamarin, and have regained the rights to sell MonoTouch and MonoDroid. I have standardized on C# years ago because it offers a cleaner and highly productive cross-platform solution than other languages that I have considered. C# is available for all Windows-based platforms. Mono fills in the gap for the other platforms with MonoMac for Mac OS, MonoTouch for iOS, and MonoDroid for Android. C# is used for games through Sony PSSuite, Unity, and XNA. C# is available in...</summary>
        <author>
            <name>Wes</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://wesnerm.blogs.com/net_undocumented/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>Miguel de Icaza, founder of Xamarin, describes his <a href="http://tirania.org/blog/archive/2011/Dec-21.html">C# Everywhere strategy for Mono</a>. Earlier this year, there was a question of Mono’s survival, when the project was canceled after the Attachmate acquisition. However, the Mono team reconstituted itself under the umbrella of Xamarin, and have regained the rights to sell MonoTouch and MonoDroid.</p>  <p>I have standardized on C# years ago because it offers a cleaner and highly productive cross-platform solution than other languages that I have considered. C# is available for all Windows-based platforms. Mono fills in the gap for the other platforms with MonoMac for Mac OS, MonoTouch for iOS, and MonoDroid for Android. C# is used for games through Sony PSSuite, Unity, and XNA. C# is available in the browser with Google NativeClient support. One downside of Mono is that, in platforms that do not support C# natively, build times are considerably slower. Generally, I use C# for both development and for scripts. I don’t really see the strong benefits of using dynamic languages; with C#, I have easier access to and type-checking support for existing .NET libraries.</p>  <p>However, C++ has not been standing still. With the new additions in C++11, C++ has become increasingly tempting with its ruthless efficiency and new support for functional programming including lambda expressions. Most advanced software projects are in C++. Objective C is compatible with C++. Nokia’s Qt framework is a fantastic cross-platform objected-oriented C++ framework, better designed than MFC and supported by a much more polished IDE, QtCreator, than Visual Studio. I have gained enormous respected for the Nokia’s development team from my exposure to Qt and QtCreator. </p>  <p>The new Windows Runtime of Window 8 includes better integration with C++ than .NET with special C++/CX component extensions to the language. Though WinRT is currently limited to supporting Metro-based applications, I suspect over time that WinRT will expand to cover desktop applications and gradually replace the legacy Win32 APIs in future Windows releases.</p>  <p>There’s another candidate language, Adobe Air, that offers multiplatform support for mobile devices (Android, Blackberry, iOS) and desktops (PCs and Mac). The programming language/runtime is used by Balsamiq Mockups. While I am not altogether familiar with it, Air is based on web technologies like HTML, JavaScript, and ActionScript.</p></div>
</content>


    </entry>
    <entry>
        <title>Commenting System</title>
        <link rel="alternate" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/commenting-system.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=7693/entry_id=6a00d8345242f069e20162fffecae3970d" title="Commenting System" />
        <link rel="replies" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/commenting-system.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345242f069e20162fffecae3970d</id>
        <published>2012-01-23T06:20:04-08:00</published>
        <updated>2012-01-23T14:20:04Z</updated>
        <summary>My commenting system was broken for over a year as all comments were going into the spam folder. I am aware of this issue and will respond to comments in previous blog posts. Sorry about the inconvenience.</summary>
        <author>
            <name>Wes</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://wesnerm.blogs.com/net_undocumented/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>My commenting system was broken for over a year as all comments were going into the spam folder. I am aware of this issue and will respond to comments in previous blog posts. Sorry about the inconvenience.</p></div>
</content>


    </entry>
    <entry>
        <title>Conversational Interfaces Redux</title>
        <link rel="alternate" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/conversational-interfaces-redux.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=7693/entry_id=6a00d8345242f069e2016760f383b6970b" title="Conversational Interfaces Redux" />
        <link rel="replies" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/conversational-interfaces-redux.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345242f069e2016760f383b6970b</id>
        <published>2012-01-23T06:09:20-08:00</published>
        <updated>2012-01-23T14:09:20Z</updated>
        <summary>In the past, I have talked about conversational interfaces with posts like the “Turing Test and the Loebner Prize Competition.” My interests are not purely theoretical, as I have actively explored integrating natural language deeply into applications in such ways as interpreting all text inside documents and code files and presenting a conversation stream. The company I founded, SoftPerson, LLC, develops “smart software,” which are desktop applications that utilize mostly symbolic artificial intelligence including natural language processing. The overarching design criteria for my software is the capture of human thought process—human-like reasoning—into the codebase, so that software ultimately acts as an intelligent agent—a “soft person” or a virtual replacement for a human. In a sense, the applications are similar to...</summary>
        <author>
            <name>Wes</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Technology" />
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://wesnerm.blogs.com/net_undocumented/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>In the past, I have talked about conversational interfaces with posts like the “<a href="http://wesnerm.blogs.com/net_undocumented/2006/10/turing_test_and.html">Turing Test and the Loebner Prize Competition</a>.” My interests are not purely theoretical, as I have actively explored integrating natural language deeply into applications in such ways as interpreting all text inside documents and code files and presenting a conversation stream.</p>  <p>The company I founded, SoftPerson, LLC, develops “smart software,” which are desktop applications that utilize mostly symbolic artificial intelligence including natural language processing. The overarching design criteria for my software is the capture of human thought process—human-like reasoning—into the codebase, so that software ultimately acts as an intelligent agent—a “soft person” or a virtual replacement for a human. In a sense, the applications are similar to Siri, which describes itself as a virtual assistant. </p>  <p>(The desktop market may seem mature, but there are many more undiscovered document types and, even in existing categories, there are additional ways of differentiations. Software applications are a high margin business. Despite Microsoft having a monopoly on some desktop application, niche versions of existing types of applications make considerable sums for their owners, and many successful companies are based on a single product: WhiteSmoke, FinalDraft, Moos ProjectViewer, SmartDraw, Quantrix, and Ventuz.)</p>  <p>In a sense, computers have historically been conversational, with a command line console being a form of conversation in which the user communicates to the computer in the computer’s own language with its limited grammar. The trend is moving towards the other end, where the computer understands more and more the language of the user.</p>  <p>The business plan I wrote for SoftPerson in 2002 featured a natural language writing product that incorporated a conversational interface in one of three different writing modes. Rather than feeling forced, the conversation interface was more natural than the one it would replace. The software would become one’s own personal ghostwriter. The plan was a finalist in two national business plan competitions and won prize money in the 2002 New Venture Championship competition held in Portland, Oregon. I have been working on this product for some amount of time. It includes a natural language parser that is an improvement on the Link parser from Carnegie Mellon University; however, the parser may be switched to the Stanford parser, which is more accurate, for a licensing fee. </p>  <p>I won’t talk much about the aforementioned product for intellectual property reasons, but I did look into the possibility of creating a graphics program by simply describing the desired image through words or sketching or other forms of input just as much as one would dictate to a human artist. In effect, the computer becomes one’s own personal artist.</p>  <p>Wouldn’t it be great if a computer can dynamically produce any image a person would so desired? How much more versatile could software be if it could render arbitrary scenes depending on the context as part of their operation instead of canned photographs? In addition to the complexity of determining meaning through words, a large library of graphical assets would be needed in mathematical form. A recent <a href="http://www.ted.com/talks/blaise_aguera_y_arcas_demos_photosynth.html">TED video of PhotoSynth</a> (at 3:40) actually suggests that these assets can be data-mined from tagged Flicker images using computer vision techniques.</p>  <p>In the course of posing this question and researching the practicality of it in 2002, I discovered existing research called <a href="http://www.wordseye.com/login?sid=5646&amp;page=0">Word’s Eye</a> that utilizes a conversational interface to construct images. The technology is described in the research paper <a href="http://dl.acm.org/citation.cfm?id=383316">WordsEye: Automatic Text-to-Scene Conversion System</a>, but more accessible descriptions and examples are available in the following Creators Project blog post, “<a href="http://www.thecreatorsproject.com/blog/wordseye-is-an-artistic-software-designed-to-depict-language">Wordseye Is An Artistic Software Designed To Depict Language</a>.”</p>  <p><a href="http://wesnerm.blogs.com/.a/6a00d8345242f069e20162fffea9c8970d-pi"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="coyne3_detail_em" border="0" alt="coyne3_detail_em" src="http://wesnerm.blogs.com/.a/6a00d8345242f069e20162fffea9e0970d-pi" width="599" height="564" /></a></p>  <p>The above is an example of an uncanny WordsEye rendering an scene based on a text description. The graphics were licensed from a library of 3D model and are transformed to fit into the scene. This can be taken a step further to produce <a href="http://www.amazon.com/Non-Photorealistic-Rendering-Bruce-Gooch/dp/1568811330">non-photorealistic rendering effects</a>.</p></div>
</content>


    </entry>
    <entry>
        <title>Online Courses</title>
        <link rel="alternate" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/online-courses.html" />
        <link rel="service.edit" type="application/atom+xml" href="http://www.typepad.com/t/atom/weblog/blog_id=7693/entry_id=6a00d8345242f069e20168e58c7414970c" title="Online Courses" />
        <link rel="replies" type="text/html" href="http://wesnerm.blogs.com/net_undocumented/2012/01/online-courses.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d8345242f069e20168e58c7414970c</id>
        <published>2012-01-16T04:05:00-08:00</published>
        <updated>2012-01-16T12:05:00Z</updated>
        <summary>There have been video-taped lectures on the web for the past decade since the arrival of video-sharing sites. Early on, I watched a number of them. Some were computer science lectures from the University of Washington Professional Master Program, sponsored by Microsoft, like Data Mining. However, for the most part, I avoided these video-based lectures or simply played them in the background (learning via osmosis). My issues with video lectures were manifold: Time. Video lectures consume a considerable amount of time, one to three hours. Not designed for online consumption. The video is a taping of an in-person lecture. Often times, relevant material in the blackboard or notes slide are not even visible. Not self-contained. Additional readings are required. Instead,...</summary>
        <author>
            <name>Wes</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://wesnerm.blogs.com/net_undocumented/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>There have been video-taped lectures on the web for the past decade since the arrival of video-sharing sites. Early on, I watched a number of them. Some were computer science lectures from the University of Washington Professional Master Program, sponsored by Microsoft, like Data Mining.</p>  <p>However, for the most part, I avoided these video-based lectures or simply played them in the background (learning via osmosis). My issues with video lectures were manifold:</p>  <ol>   <li>Time. Video lectures consume a considerable amount of time, one to three hours.</li>    <li>Not designed for online consumption. The video is a taping of an in-person lecture. Often times, relevant material in the blackboard or notes slide are not even visible.</li>    <li>Not self-contained. Additional readings are required.</li> </ol>  <p>Instead, I would read through lecture presentation and notes for a course from MIT’s OpenCourseWare and other university programs. However, the retention of terminology and information from reading slides is weak. Slides typically have little content and explanation—just bullet points and diagrams, and the amount of time spent reviewing the presentation is a small fraction of the time watching a lecture—not enough to think deeply about a topic. Lecture notes can help, but they are often dry and usually not available.</p>  <p>Led by Andrew Ng, Professors at Stanford in fall 2011 launched three unofficial non-credit courses over the fall directed at the worldwide online audience. These also included regular homework and exams. About a hundred thousand students signed up for each course with over ten thousand fully completing all the requirements . </p>  <ul>   <li><a href="http://ai-class.com">Artificial Intelligence class</a></li>    <li><a href="http://db-class.com">Introduction to Databases class</a></li>    <li><a href="http://ml-class.com">Machine Learning class</a></li> </ul>  <p> I took part in all three and found them to be high quality and as effective as regular courses. The Stanford online course lectures have become my sole hobby.</p>  <ol>   <li>Streamlined videos. Videos are delivered in small chunks with dead time edited out and an option for accelerated viewing.</li>    <li>Optimized for online. Professors speak directly to the camera. Lecture notes are clearly viewable on top a white background instead of a distant blackboard.</li>    <li>Course progress. Viewed videos and completed homeworks are marked.</li>    <li>Community forums. Students communicate with each other and with the course staff.</li> </ol>  <p>The courses are taught by prominent professors in their field. Peter Norvig, Google director of R&amp;D and author of <em>AI: A Modern Approach </em>used by 95% of students, teaches AI alongside Sebastien Thrun, an expert in robotics. The courses are somewhat less rigorous than the official Stanford classes and come complete with a certificate of accomplishment. In the AI class, I received congratulatory mail for perfect homework scores and towards the end an invitation to job placement program for the top 1000 students out of about an estimated 36,000 students. I easily obtained a perfect score on ML and DB class assignments. </p>  <p>Stanford initiated other less optimized offerings in previous years such as <a href="http://see.stanford.edu/see/courses.aspx">Stanford Education Everywhere (SEE)</a> and Stanford’s <a href="http://classx.stanford.edu/ClassX">Class X</a>, where are videotaped lectures of courses targeted to Stanford’s professional program: The courses are still available for viewing. In addition to the three Stanford courses earlier, I watched through Introduction to Robotics, Program Analysis and Optimization, iPhone Application Development.</p>  <p>There are currently <a href="http://www.class-central.com/">sixteen Stanford course planned for the winter quarter</a> using the same interactive system in computer science, entrepreneurship, engineering and medicine, of which I plan to take as many as possible.</p>  <p><a href="http://web.mit.edu/newsoffice/2011/mitx-education-initiative-1219.html">MITX</a> is an upcoming online course program by MIT along the same vein, extending beyond the OpenCourseWare program.</p></div>
</content>


    </entry>
 
</feed><!-- ph=1 -->

