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

<channel>
	<title>Regular Geek &#187; Programming</title>
	<atom:link href="http://regulargeek.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://regulargeek.com</link>
	<description>Where programming, the internet and social media collide.</description>
	<lastBuildDate>Fri, 11 May 2012 12:56:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<cloud domain='regulargeek.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>HTML5’s Value For Mobile Event Apps</title>
		<link>http://regulargeek.com/2012/05/11/html5s-value-for-mobile-event-apps/</link>
		<comments>http://regulargeek.com/2012/05/11/html5s-value-for-mobile-event-apps/#comments</comments>
		<pubDate>Fri, 11 May 2012 12:56:27 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Mobile application development]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=4192</guid>
		<description><![CDATA[This is a guest post from Krister Ungerboeck, the CEO of Ungerboeck Software International. The most successful event planners have started using mobile technology to more quickly connect with customers and meet their needs. New mobile applications can drive business to their websites and help them provide better service. Yet, current mobile technology has several [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://commons.wikipedia.org/wiki/File:HTML5_Badge.svg" target="_blank"><img class="zemanta-img-inserted zemanta-img-configured alignleft" title="W3C HTML5 Badge in SVG." src="http://regulargeek.com/wordpress/wp-content/uploads/2012/05/300px-HTML5_Badge.svg_.png" alt="W3C HTML5 Badge in SVG." width="150" height="150" /></a></p>
<p><em>This is a guest post from Krister Ungerboeck, the CEO of <a href="http://ungerboeck.com/home.aspx">Ungerboeck Software International</a>.</em></p>
<p>The most successful event planners have started using mobile technology to more quickly connect with customers and meet their needs. New <a class="zem_slink" title="Mobile application development" href="http://en.wikipedia.org/wiki/Mobile_application_development" rel="wikipedia" target="_blank">mobile applications</a> can drive business to their websites and help them provide better service. Yet, current mobile technology has several deficiencies that make it not only expensive to implement, but it also limits the types of devices that can access a particular app.</p>
<p><a class="zem_slink" title="HTML5" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-xhtml-syntax.html" rel="homepage" target="_blank">HTML5</a> coding aims to change all of that. By developing websites and applications using HTML5, marketers will be able to interact with all mobile users, regardless of the device they are using. This brings many benefits to event planners and others in the industry.</p>
<h2>Better Connection Between Companies and Customers</h2>
<p>HTML5 will allow for more interaction between users and websites through more dynamic interactive apps. This means that companies harnessing HTML5 technology will have a better opportunity to connect with their clients through mobile applications. For instance, a company can create a virtual personal assistant to help their customers plan events. Event planners that provide such a service to their clients will likely convert them to repeat customers.</p>
<h2>Immediate Access for Users Across Platforms</h2>
<p>HTML5 is compatible with all devices and operating systems, giving every customer with a mobile device access to the app and thus increasing its effectiveness as a marketing tool. Instead of creating an app that can only be used by a certain mobile device type (Android, iPhone, etc.), creating an app with HTML5 ensures that every customer has access, no matter what mobile platform they have.</p>
<h2>Better Linking Capabilities</h2>
<p>One of the primary problems with native apps is the difficulty of deep linking from a specific part of the app to another. Linking in apps and on mobile web devices is almost non-existent, yet it can be a valuable tool for marketing. HTML5 allows linking to be integrated into apps as easily as on a traditional website, which provides many more opportunities for the events industry to use mobile apps.</p>
<h2>Search Engine Inclusion</h2>
<p>Creating a traditional app for your company is valuable for your business because it keeps your organization connected with your clients through their mobile devices; however, it doesn’t provide any visibility for your site with search engines. The major search engines do not crawl through these apps, so they do not help drive organic traffic to your website. In order to get that traffic, you need a secondary HTML version of the content contained in the application. You can bypass that extra step with HTML5 apps, as the HTML code is already contained within the app. For example, when a user uses Google as their mobile browser and your app is HTML5 based, it will be ranked higher in search results because Google can understand the code.</p>
<p>HTML5 is still relatively new in the world of mobile apps, but it appears to have a strong future. Those event planning companies that want to make their mobile apps as accessible as possible to all potential customers should embrace this new platform when creating mobile applications to connect with customers.</p>
<p><em><strong>Editor&#8217;s Note:</strong> As someone who has attended conferences that developed native iPhone and Android event apps, the benefits of HTML5 are very intriguing. App development is much more expensive, especially for a short duration event. HTML5 is likely a faster and cheaper application development option.</em></p>
<p><em>This is a guest post from Krister Ungerboeck. Krister is the CEO of <a href="http://ungerboeck.com/home.aspx">Ungerboeck Software International</a>, a trusted provider of comprehensive <a href="http://ungerboeck.com/topics/event-management-software.aspx">event management software</a> solutions.</em></p>
<h6 class="zemanta-related-title">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.prweb.com/releases/sencha/touch/prweb4157334.htm" target="_blank">Sencha Unveils Sencha Touch: The First HTML5 Mobile Application Framework</a> (prweb.com)</li>
<li class="zemanta-article-ul-li"><a href="http://regulargeek.com/2012/02/29/mobile-development-job-trends-february-2012/" target="_blank">Mobile Development Job Trends &#8211; February 2012</a> (regulargeek.com)</li>
<li class="zemanta-article-ul-li"><a href="http://doctorfox.wordpress.com/2012/05/10/what-are-the-best-tools-for-mobile-app-development/" target="_blank">What are the Best Tools For Mobile Application Development?</a> (doctorfox.wordpress.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/?px"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=8884c6a4-5bf9-484d-8351-08748792fe6d" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2012/05/11/html5s-value-for-mobile-event-apps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Q&amp;A With Opa Creator Henri Binsztok</title>
		<link>http://regulargeek.com/2012/04/30/a-qa-with-opa-creator-henri-binsztok/</link>
		<comments>http://regulargeek.com/2012/04/30/a-qa-with-opa-creator-henri-binsztok/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 16:30:50 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Alex Payne]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[Opa]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=4161</guid>
		<description><![CDATA[I recently attended the PhillyETE conference and there were a number of interesting talks. In particualar, I was a big fan of the talk from Alex Payne regarding Emerging Programming Languages. One of the languages that I found interesting, Opa, seemed more than just a language, and conveniently someone emailed me about it. That someone [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://opalang.org/"><img class="size-full wp-image-4162 alignleft" title="Opa logo" src="http://regulargeek.com/wordpress/wp-content/uploads/2012/04/opa-cloud-logo-s.png" alt="" width="66" height="43" /></a>I recently attended the <a href="http://phillyemergingtech.com/2012/">PhillyETE</a> conference and there were a number of interesting talks. In particualar, I was a big fan of the talk from <a class="zem_slink" title="Alex Payne" href="http://www.al3x.net/" rel="homepage" target="_blank">Alex Payne</a> regarding <a href="http://phillyemergingtech.com/2012/system/presentations/Payne_Philly_ETE_2012_slides.pdf">Emerging Programming Languages</a>. One of the languages that I found interesting, <a href="http://opalang.org/">Opa</a>, seemed more than just a language, and conveniently someone emailed me about it. That someone is Henri Binsztok, the CEO of <a href="http://mlstate.com/" target="_blank">mlstate.com</a> and creator of Opa. Given that Opa is probably unknown to many readers, I figured I would get some basic questions answered by Henri. Henri described Opa in one line, &#8220;It puts together the actors of <a class="zem_slink" title="Erlang (programming language)" href="http://www.erlang.org" rel="homepage" target="_blank">Erlang</a>, the type safety of ML and lots of automation to make web app development easy.&#8221;</p>
<h2>Why a new language for web development?</h2>
<p><strong>Henri:</strong> This a very good question, as many developers appreciate the comfort of a well-known programming language. So, to rephrase it just a bit: Why a new language, and not a framework? Because the things Opa do are easier for developers than what a framework on an existing language can provide. For instance, the typed &#8220;power rangers&#8221; of Opa is a unique language feature that makes strong <a class="zem_slink" title="Type system" href="http://en.wikipedia.org/wiki/Type_system" rel="wikipedia" target="_blank">static typing</a> easy to use for everybody.</p>
<p>You can write in Opa:<br />
x = { field: y, another: z }<br />
a = { field: b }</p>
<p>Then write a function that accesses x.field or a.field, with type-safety and without prior annotation or definition. This alone makes a new language worthwhile! And although it may look simple to implement, it&#8217;s a very complex problem since it breaks type principality. We see frameworks as an intermediate step between two generations of a language: one that is too generic and doesn&#8217;t quite match the domain, and one that was designed for this domain, but doesn&#8217;t exist yet at the time the framework is started.<br />
And we made Opa that new generation for web development.</p>
<h2>How does Opa work?</h2>
<p><strong>Henri:</strong> Opa is basically two things: A compiler that does many things and a runtime platform. The compiler mostly:</p>
<ol>
<li>Type checks the code for the whole application</li>
<li>If typing is correct, identifies which parts of the application run on the server, and which parts run on the client (we call this step: &#8220;slicing&#8221;)</li>
<li>Translates all client-side code from Opa to JavaScript</li>
<li>Compiles all server-side code from Opa to native code</li>
<li>Generates a standalone application binary by putting together the runtime platform as a library, the native code of the app, and the client-side resources (including the generated JavaScript).</li>
</ol>
<p>The runtime platform performs the tasks of a web server, an application server, include the standard library of Opa (which you can consult at <a href="http://doc.opalang.org/api" target="_blank">http://doc.opalang.org/api</a>) and even has its own database engine. For the latter, Opa also has a very advanced support for <a class="zem_slink" title="MongoDB" href="http://www.mongodb.org/" rel="homepage" target="_blank">MongoDb</a> which makes it the preferred database for production-grade Opa applications.</p>
<h2>What does the typical application developer need to do differently?</h2>
<p><strong>Henri:</strong> The only thing you have to learn to develop in Opa is the Opa language itself. All aspects (front-end code, back-end code, database code) are written in Opa and there is almost no configuration left to do. Compared to writing JavaScript and especially Ajax calls (or continuations by hand with Node.js) and Tomcat/Java, Opa is much easier.</p>
<h2>Why are Actors (and your reference to Erlang) important?</h2>
<p><strong>Henri:</strong> Erlang is a fantastic example of why new programming languages bring fresh air. The actors model is an essential part in modern (social) web applications. All the &#8220;real-time&#8221; web features, and client-to-client communication in general is programmed easily with actors. Web chats, games, social sharing applications, etc. rely on these features. In Opa, we make it simpler than ever:</p>
<ol>
<li>Define the types of messages: type message = this (or that)</li>
<li>Create the actor: instance = Network.network(message) Network.cloud(&#8220;name&#8221;)</li>
<li>Program the behavior of messages received: Network.add_callback(callback, instance)</li>
<li>Send messages: Network.broadcast(message, instance)</li>
</ol>
<p>You can create as many actors as you want, between clients and servers, different servers, or different clients.</p>
<h2>If static typing is so good, why not just move to Java on the server?</h2>
<p><strong>Henri:</strong> The typing system of Opa is more advanced than that of Java, and the core of the language is tailored for the web application features. For instance, Java will only get closures in Java 7 while this has been a key feature of Opa since the early prototypes 5 years ago. That said, Java has a vibrant ecosystem and it would make sense to support the JVM as one the platforms for Opa. The same Opa application could be then compiled either to its current native backend, or the JVM. It&#8217;s a complex task &#8211; but we are looking for contributors in that space to make things happen faster!</p>
<h2>How does someone get started? Interesting links, documentation and tutorials?</h2>
<p><strong>Henri:</strong> There are more and more links and tutorials about Opa on the web. But as a general resource, I&#8217;d suggest to start from <a href="http://doc.opalang.org/" target="_blank">http://doc.opalang.org</a> which hosts a manual, the API documentation and a handy reference card. Adam Koprowski and I are now busy writing the forthcoming book &#8220;Hands on Opa&#8221; that will be published by O&#8217;Reilly this summer!</p>
<h2>What is the one thing (or 3 things) that make Opa stand out for web development?</h2>
<p><strong>Henri:</strong> It&#8217;s always hard to sum up such an amount of work in one thing. But I&#8217;d say it&#8217;s that we refined the approach of what a web application programming language should be to an unprecedented extent. Try it out and make your own opinion!</p>
<h6 class="zemanta-related-title">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://regulargeek.com/2012/02/17/web-and-scripting-programming-language-job-trends-february-2012/" target="_blank">Web And Scripting Programming Language Job Trends &#8211; February 2012</a> (regulargeek.com)</li>
<li class="zemanta-article-ul-li"><a href="http://www.sitepoint.com/have-you-tried-opa/" target="_blank">Have you tried Opa?</a> (sitepoint.com)</li>
<li class="zemanta-article-ul-li"><a href="http://blog.opalang.org/2012/04/one-web-app-one-language.html" target="_blank">One Web App = One Language</a> (opalang.org)</li>
<li class="zemanta-article-ul-li"><a href="http://www.rackspace.com/blog/opa-aims-to-reinvent-development-for-the-cloud/" target="_blank">The Official Rackspace Blog &#8211; Opa Aims to rethink Development for the Cloud</a> (rackspace.com)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=b3629445-3e11-463e-80df-2e979d145e8e" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2012/04/30/a-qa-with-opa-creator-henri-binsztok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips For Developing Multilingual Software Applications</title>
		<link>http://regulargeek.com/2012/04/25/tips-for-developing-multilingual-software-applications/</link>
		<comments>http://regulargeek.com/2012/04/25/tips-for-developing-multilingual-software-applications/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 12:31:17 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[application development]]></category>
		<category><![CDATA[Christian Arno]]></category>
		<category><![CDATA[Globalization]]></category>
		<category><![CDATA[internationalization]]></category>
		<category><![CDATA[Lingo24]]></category>
		<category><![CDATA[localization]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=4140</guid>
		<description><![CDATA[This is a guest post from Christian Arno, the founder of Lingo24. Why is software localization important? The very nature of software applications means they can usually be accessed, bought and downloaded regardless of geographic location. The World Wide Web provides potential access to a truly global market but a monolingual application is one with limited [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a guest post from Christian Arno, the founder of <a class="zem_slink" title="Lingo24" href="http://www.lingo24.com" rel="homepage" target="_blank">Lingo24</a>.</em></p>
<h2>Why is software localization important?</h2>
<p>The very nature of software applications means they can usually be accessed, bought and downloaded regardless of geographic location. The World Wide Web provides potential access to a truly global market but a monolingual application is one with limited appeal.</p>
<p>To a certain extent, English remains the lingua franca of the business and online world but the fact remains that the majority of the global population speaks no English at all. Of those that do, many speak it as a second language and multilingual users prefer to use applications in their own native language. Imagine a French student who speaks passable English. If your English language application has a specific appeal and no French language equivalent exists, he might well decide to use your application. If there a rival application of similar function and quality that is also available in French however, he is far more likely to go for that.</p>
<h2>Localization and the simship model</h2>
<p><a href="http://en.wikipedia.org/wiki/Internationalization_and_localization" target="_blank">Localization</a> (often abbreviated in computing circles to L10n, with the 10 representing the number of letters between the &#8220;L&#8221; and the &#8220;n&#8221;) is simply the process of adapting a piece of software for use in another locale. Essentially, this means releasing a number of separate products with each tailored for use within its own target market.</p>
<p>These individual localized apps certainly don&#8217;t have to be designed independently however. The source code largely remains the same but linguistic translation will often be required and certain cultural and legal issues such as copyright and taste may also have to be addressed.</p>
<p>Building flexibility into the design should allow you to adapt the app subsequently without too many problems. At the time of initial release you might only want a single version, with the option to produce localized versions when circumstances and market research dictates. There are various issues that can be partially catered for during the design and development stage. Some written languages or scripts tend to take more space on the screen for example and areas with fixed dimensions such as dialog boxes can be sized to allow a subsequent expansion of text.</p>
<p>Alternatively, you may wish to release several versions simultaneously. The simship (simultaneous shipment) model is common within the gaming industry and, given that successful apps can tend to go viral, spreading by virtual &#8220;word of mouth,&#8221; it can be a tremendous asset to have localized versions ready to go at the same time.</p>
<h2>Internationalized apps</h2>
<p><a href="http://en.wikipedia.org/wiki/Internationalization_and_localization" target="_blank">Internationalization</a> (also known as i18n for the same reason localization is L10n) takes things a step further, with a single application able to cater to users in different languages.</p>
<p>The most common method is to have a language selection option the first time a user accesses the application. This then serves as a portal to the relevant user interface and content. This is not the only solution. It is possible to have multiple languages present on the same screen for example but this tends to be a messier and more confusing way of doing things.</p>
<h2>Issues of translation</h2>
<p>Linguistic translation is not the only issue to think about but it is perhaps the most important. Good quality translation is integral to the quality of a localized, multilingual or internationalized app and the services of native speaking translators will usually be required. Automatic translation programs can be great tools under certain circumstances but they are prone to contextual mistakes and should never be solely relied upon.</p>
<p>The user interface (<a class="zem_slink" title="User interface" href="http://en.wikipedia.org/wiki/User_interface" rel="wikipedia" target="_blank">UI</a>), input and display are all obvious areas for translation but other aspects such as product documentation and online help files will also need to be addressed.</p>
<h2>What about graphics?</h2>
<p>Some images work more or less universally while others may have different connotations in different areas. An envelope is generally recognized as a symbol for mail while a thumbs up sign can mean &#8220;okay&#8221; in the western world but is more likely to mean &#8216;man&#8217; or &#8216;male&#8217; in Japan and is an obscene gesture in Thailand and Iran. Additionally, some images that may be perfectly acceptable in one culture can cause offence in another.</p>
<p>In addition to translating the text and making sure any images are culturally relevant and sensitive, you should also ensure that the formats for currencies, units of measurement, time and dates are all correct for the target market. In the US, for example, the date is expressed in the Middle-endian fashion (month/day/year) but most of the rest of the world uses the Little-endian format (day/month/year).</p>
<p>There is a lot to consider when it comes to developing localized and multilingual software applications. Given the potential benefits in terms of opening up new markets and sales, however, it is a process that is more than worth the effort.</p>
<p><em>This was a guest post from Christian Arno. Christian is the founder of Lingo24, a leading <a href="http://www.lingo24us.com/" target="_blank">translation service provider</a> across Europe, Asia and the Americas. Launched in 2001, Lingo24 has worked its way to becoming the web&#8217;s favorite translation company, working with more than four thousand translators and clients in over sixty countries. Follow Christian (<a href="http://twitter.com/l24ca" target="_blank">@l24ca</a>) and Lingo24 (<a href="http://twitter.com/lingo24" target="_blank">@Lingo24</a>) on Twitter.</em></p>
<h6 class="zemanta-related-title">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://blogs.adobe.com/globalization/en/the-multilingual-web/" target="_blank">The Multilingual Web</a> (blogs.adobe.com)</li>
<li class="zemanta-article-ul-li"><a href="http://blogs.adobe.com/globalization/en/dynamic-language-delivery-for-adobes-mobile-applications/" target="_blank">Dynamic Language Delivery for Adobe&#8217;s Mobile Applications</a> (blogs.adobe.com)</li>
<li class="zemanta-article-ul-li"><a href="http://blog.wikimedia.org/2012/04/23/niklas-laxstrom-language-engineer-and-wikimedian/" target="_blank">Niklas Laxström, language engineer and Wikimedian</a> (wikimedia.org)</li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=120f8fa9-3646-4157-aca0-8f60682115af" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2012/04/25/tips-for-developing-multilingual-software-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Is The Web Really Just Links Or Is It Evolving?</title>
		<link>http://regulargeek.com/2012/01/08/is-the-web-really-just-links-or-is-it-evolving/</link>
		<comments>http://regulargeek.com/2012/01/08/is-the-web-really-just-links-or-is-it-evolving/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 14:02:49 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Abstraction layer]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[DataSift]]></category>
		<category><![CDATA[Dave Winer]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Gnip]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=4005</guid>
		<description><![CDATA[Lately, Dave Winer has been doing a lot of thinking. Dave has been around for a while, so when he starts thinking about interesting questions, we should all be listening. However, I am not saying that we should be agreeing with him, just reading and forming opinions. First, Dave complains about mobile apps and how [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, <a href="http://scripting.com/" target="_blank">Dave Winer</a> has been doing a lot of thinking. Dave has been around for a while, so when he starts thinking about interesting questions, we should all be listening. However, I am not saying that we should be agreeing with him, just reading and forming opinions. First, <a href="http://scripting.com/stories/2011/12/14/enoughWithTheAppsAlready.html" target="_blank">Dave complains about mobile apps</a> and how they are not what the web is about:</p>
<blockquote><p>And all this business about apps is a real spoiler for suspension of disbelief. I&#8217;m clicking a link, expecting to learn more about what I was reading (that was certainly the author&#8217;s intent) but instead I get an ad for an app. If I seriously consider it, I&#8217;ve lost my train of thought. If I actually take the detour and install it, I&#8217;ve lost bigtime. The best way to minimize the loss is hit the Back button and skip it. But that&#8217;s a loss too. I clicked the link for a reason. And that was thwarted.</p></blockquote>
<p>The main concept here is that if you provide links in your mobile application, then you should be linking to some information about the topic you were reading, not an advertisement for a different app. By itself, this complaint seems to be a bit of a stretch. However, <a href="http://scripting.com/stories/2011/12/31/theUninternet.html" target="_blank">he follows with another post a few weeks later that really explains his issue</a>:</p>
<blockquote><p>Every time around the loop, since then, the Internet has served as the antidote to the controls that the tech industry would place on users. Every time, the tech industry has a rationale, with some validity, that wide-open access would be a nightmare. But eventually we overcome their barriers, and another layer comes on.</p></blockquote>
<p>Basically, Dave is seeing these mobile apps as trying to kill the web. If the app is trying to control interactivity by only supplying a &#8220;walled garden&#8221;, similar to what <a class="zem_slink" title="Facebook" href="http://facebook.com" rel="homepage" target="_blank">Facebook</a> is doing, then the user really loses the power of the web. The core idea of linking gets lost in this scenario. However, what if the web is more than just links?</p>
<p>Prior to the last few years, people were very document-centric and reading <a class="zem_slink" title="HTML" href="http://en.wikipedia.org/wiki/HTML" rel="wikipedia" target="_blank">HTML</a> pages from a PC. Now, we have mobile devices that allow you to use the web whenever you want no matter where you are. We also had web applications that did not allow you to take your information elsewhere or integrate with other applications. Now, many applications use your <a class="zem_slink" title="Twitter" href="http://twitter.com" rel="homepage" target="_blank">Twitter</a> or Facebook login in order to authenticate, and then post statuses or even create events in Facebook.</p>
<p>In order to support all of this integration, the web is evolving. The web is no longer just HTML. Last summer, <a href="http://regulargeek.com/2011/06/15/the-rise-of-the-api-the-future-of-the-web/" target="_blank">I wrote about the rise of the API</a>:</p>
<blockquote><p>As the web evolves, much of that evolution will be powered by application <a class="zem_slink" title="Application programming interface" href="http://en.wikipedia.org/wiki/Application_programming_interface" rel="wikipedia" target="_blank">APIs</a>. Some of the APIs will be application specific, like the Twitter API, and others will be more generic like the various <a class="zem_slink" title="Semantic Web" href="http://semanticweb.org" rel="homepage" target="_blank">semantic web</a> standards. All of these available APIs allow programmers to create more interesting applications, and potentially a new API layer on top of what already exists. What this means in the long term is that we are finally getting to the point where the semantic web had hoped to be, linking data between various applications and hopefully doing something interesting.</p></blockquote>
<p>A web of links can be limiting when looking at applications. When looking at reading a news story, links make sense, but reading articles is only part of the web. By looking at the data available, we are starting to create a more interactive and informative web. <a href="http://techcrunch.com/2011/12/30/a-web-of-apps/" target="_blank">Sarah Perez at TechCrunch thinks this could be moving towards a web of apps</a>, but that post is more focused on mobile apps. As I said previously, mobile apps tend to be limiting in their own ways.</p>
<p>Think about the possibilities of using the various APIs that are available. I am not just talking about the social network APIs, I am talking about things like Freebase, a huge collection of data, or even data aggregator/providers like <a href="http://gnip.com/" target="_blank">Gnip</a> and <a class="zem_slink" title="DataSift" href="http://datasift.net/" rel="homepage" target="_blank">DataSift</a>. Using these services, developers can build interesting applications using data from various sources without worrying about what the Twitter API looks like.</p>
<p>These types of services provide a level of abstraction that developers are used to. First, you get the core APIs, then you start abstracting those APIs into something easier to use. Once concerns about low-level APIs are removed, developers can focus on being more productive with the new <a class="zem_slink" title="Abstraction layer" href="http://en.wikipedia.org/wiki/Abstraction_layer" rel="wikipedia" target="_blank">abstraction layer</a> and start solving real problems. Once developers focus on real problems, that is when the real fun begins.</p>
<p>So, is the web just a bunch of links or are we finally getting a layer of abstraction on top of all of the web applications. This layer of abstraction is a normal evolution for developers, and we just need to ensure this is translated into more interesting applications.</p>
<h6 class="zemanta-related-title">Related articles from RegularGeek:</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://regulargeek.com/2011/10/16/twitter-should-cut-the-sms-cord/" target="_blank">Twitter Should Cut The SMS Cord</a></li>
<li class="zemanta-article-ul-li"><a href="http://regulargeek.com/2011/12/24/a-look-back-and-a-look-ahead-at-2012/" target="_blank">A Look Back And A Look Ahead At 2012</a></li>
<li class="zemanta-article-ul-li"><a href="http://regulargeek.com/2011/12/10/plus-or-like-choose-your-sharing-weapon/" target="_blank">Plus Or Like, Choose Your Sharing Weapon</a></li>
</ul>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=3fe4904f-78f3-4fee-9e95-1cab521a9a66" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2012/01/08/is-the-web-really-just-links-or-is-it-evolving/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What Happened To The 9 Programming Languages To Watch in 2011</title>
		<link>http://regulargeek.com/2011/12/19/review-of-the-9-programming-languages-to-watch-in-2011/</link>
		<comments>http://regulargeek.com/2011/12/19/review-of-the-9-programming-languages-to-watch-in-2011/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 12:00:05 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Job Trends]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Clojure]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[objective c]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[r]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[scheme]]></category>
		<category><![CDATA[TIOBE Index]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3967</guid>
		<description><![CDATA[Last year, I wrote a post entitled 9 Programming Languages To Watch In 2011. Now that 2011 is basically over, let&#8217;s see what happened to these languages over the course of the year. As a reminder, these languages were selected because I expected to see larger than average movement, either up or down. So, there [...]]]></description>
			<content:encoded><![CDATA[<p>Last year, I wrote a post entitled <a href="http://regulargeek.com/2010/12/11/9-programming-languages-to-watch-in-2011/">9 Programming Languages To Watch In 2011</a>. Now that 2011 is basically over, let&#8217;s see what happened to these languages over the course of the year. As a reminder, these languages were selected because I expected to see larger than average movement, either up or down. So, there is no Java, Ruby, <a class="zem_slink" title="Python (programming language)" href="http://www.python.org/" rel="homepage">Python</a> or Objective-C. There are no other typically mainstream languages in this list.</p>
<p>First, here are the comments I had on each language:</p>
<ol>
<li><strong><a title="Lua (programming language)" href="http://www.lua.org/" rel="homepage">Lua</a></strong> – The language is seeing some good activity on <a class="zem_slink" title="GitHub" href="http://github.com" rel="homepage">GitHub</a> and <a class="zem_slink" title="Stack Overflow" href="http://stackoverflow.com/" rel="homepage">StackOverflow</a>. It has a solid Tiobe ranking, but more importantly, jobs for Lua are becoming available. The relative trend for Lua is a great indicator that it is ready to go mainstream.</li>
<li><strong><a href="http://www.r-project.org/" target="_blank">R</a></strong> – With data analysis and big data becoming a part of every web startup, languages catering to the data crowd will become popular. The job trend data will be the most interesting part to watch here.</li>
<li><strong><a title="Clojure" href="http://clojure.org/" rel="homepage">Clojure</a></strong> – While not popular within the Tiobe index, it is popular in some programming circles. In particular, its job trend growth is showing that it could be posed for a big year of adoption.</li>
<li><strong><a href="http://golang.org/" target="_blank">Go</a></strong> – Only Tiobe really shows this as a popular language. It is not ranked well in the Dataist Tier, and job trends are not very reliable yet. However, with a parent of Google it may not need purely organic growth.</li>
<li><strong><a href="http://www.erlang.org/" target="_blank">Erlang</a></strong> – This has been around for a few years and has decent trends all around. With the continued growth of real-time technologies like XMPP (<a class="zem_slink" title="Ejabberd" href="http://www.process-one.net/en/ejabberd/" rel="homepage">eJabberd</a> specifically), <a class="zem_slink" title="Pubsubhubbub" href="http://code.google.com/p/pubsubhubbub/" rel="homepage">PubSubHubbub</a> and others, 2011 could be a year where it becomes the next Python.</li>
<li><strong><a href="http://www.scala-lang.org/" target="_blank">Scala</a></strong> – This is one of the interesting trends. Scala has a very good showing in the Dataist Tier, but is not really ranked in the Tiobe index. With the solid job growth trends and popular adopters (i.e. Twitter), Scala could gain a serious amount of acceptance.</li>
<li><strong><a title="Groovy (programming language)" href="http://groovy.codehaus.org/" rel="homepage">Groovy</a></strong> – More than anything, I believe Groovy missed its window of opportunity. It is a solid scripting language with decent job growth trends, but how can it differentiate itself from Ruby, Python, Erlang and Scala?</li>
<li><strong><a href="http://en.wikipedia.org/wiki/Scheme_(programming_language)" target="_blank">Scheme</a></strong> – For whatever reason, this language refuses to go away and has even picked up some interest. Without decent job growth, we could be another year away from Scheme breaking out again, at least 30 years after it broke out the first time.</li>
<li><strong><a href="http://en.wikipedia.org/wiki/ActionScript" target="_blank">ActionScript</a></strong> – ActionScript is included in this list because of its high ranking on Tiobe and the Dataist Tier. However, the job trends do not point to good things for the language. It could be a temporary slump, so you should keep an eye on it next year.</li>
</ol>
<div>So, what happened in 2011? The job trends give us some level of corporate demand. One minor note is that the job data is somewhat noisy and difficult to grab for some languages. Go and R are not in the list because of the difficulty of getting any reasonably sane job demand. Scheme is still included, but it is still fairly noisy data. The following chart shows the <a href="http://www.indeed.com/jobtrends?q=lua,+scheme,+actionscript,+erlang,+groovy,+scala,+clojure&amp;l=" target="_blank">raw demand for the remaining languages</a>:</div>
<div><a href="http://www.indeed.com/jobtrends?q=lua,+scheme,+actionscript,+erlang,+groovy,+scala,+clojure&amp;l="><img class="aligncenter size-full wp-image-3977" title="Indeed Job Trends" src="http://regulargeek.com/wordpress/wp-content/uploads/2011/12/indeedJobTrends.png" alt="" width="540" height="300" /></a></div>
<div>As you can see, ActionScript continues its decline, and it has started to decline more rapidly. Scheme, even with the noisy data, is fairly flat. Groovy is showing solid growth over the past few years, and Scala demand seems to be increasing quickly. Lua is only showing slight growth, outpacing Erlang and Clojure.</div>
<div></div>
<div>Now, let&#8217;s take a look at the <a href="http://www.indeed.com/jobtrends?q=lua,+scheme,+actionscript,+erlang,+groovy,+scala,+clojure&amp;l=&amp;relative=1" target="_blank">relative job growth of these languages</a>:</div>
<div><a href="http://www.indeed.com/jobtrends?q=lua,+scheme,+actionscript,+erlang,+groovy,+scala,+clojure&amp;l=&amp;relative=1"><img class="aligncenter size-full wp-image-3979" title="Indeed Relative Job Growth" src="http://regulargeek.com/wordpress/wp-content/uploads/2011/12/indeedRelativeJobGrowth.png" alt="" width="540" height="300" /></a></div>
<div>This is where things get interesting. As you can see, both Lua and Clojure seem to be exploding, but that does not yet translate into large job demand. Also growing rapidly, and at almost the same rate, are Scala, Erlang and Groovy. Scheme and ActionScript have no relative growth compared to the others, as is expected.</div>
<div></div>
<div>The <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" target="_blank">TIOBE Index for December 2011</a> was recently updated, so it also provides a good comparison. In addition, I compared the activity from GitHub and StackOverflow in order to get a broader picture of activity.</div>
<div>
<ul>
<li><strong>Go</strong> (Tiobe: 34 , Change: -13): The TIOBE rank crashed, going down 13 places. The relative activty on StackOverflow and GitHub decreased as well. Even though Google is the source of the language, it does not seem to be grabbing a lot of more mainstream attention.</li>
<li><strong>R</strong> (Tiobe: 24, Change: +2): The TIOBE rank increased a few places. The StackOverflow and GitHub activity decrease a slight amount, but nothing significant. Given that R is not really considered a general purpose language, its popularity is still somewhat surprising.</li>
<li><strong><a title="Lua (programming language)" href="http://www.lua.org/" rel="homepage">Lua</a></strong> (Tiobe: 21, Change: +6): The TIOBE rank increased solidly, though not as quickly as others. The GitHub and StackOverflow activity decreased a bit, contradicting the TIOBE index. However, the job trends above are very good, so we should continue to watch Lua in the coming year.</li>
<li><strong>Scheme</strong> (Tiobe: 30, Change: -1): Not surprisingly, the TIOBE rank did not change much. The StackOverflow and GitHub activity did not change much either. With the growth of some of these other languages, the need for Scheme is not really obvious anymore. In addition, the job trends are not positive for Scheme either.</li>
<li><strong>ActionScript</strong> (Tiobe: 50-100, Change: -&gt;13): As can be expected, the TIOBE rank for ActionScript declined a lot as it dropped out of the top 50 and into the 50-100 bracket. The job demand shows a similar downward trend. StackOverflow and GitHub activity did not change too much however. I would guess that 2012 will not be a good year for ActionScript.</li>
<li><strong>Erlang</strong> (Tiobe: 29, Change: +20): Showing possibly the biggest gains of the year, the TIOBE rank increased a ton moving up 20 places. The StackOverflow and GitHub activity did not match this growth. The job trend information is definitely showing positive signs, so Erlang is a language to keep an eye on.</li>
<li><strong><a title="Groovy (programming language)" href="http://groovy.codehaus.org/" rel="homepage">Groovy</a></strong> (Tiobe: 45, Change: +&gt;5): The TIOBE rank increase is somewhat unknown as Groovy makes an appearance in the top 50. StackOverflow and GitHub activity increased as well. The big difference is shown in the job demand, where Groovy has shown really solid growth trends.</li>
<li><strong>Scala</strong> (Tiobe: 50-100, Change: 0): Given that Scala did not break out of the 50-100 tier on the TIOBE index, we cannot estimate growth there. Overall, the relative activity on GitHub and StackOverflow did not change much either. The job trends show a different picture as job demand definitely grows at a solid rate.</li>
<li><strong><a title="Clojure" href="http://clojure.org/" rel="homepage">Clojure</a></strong> (Tiobe: 50-100, Change: +?): Clojure moved from the 100+ tier on TIOBE to the 50-100 tier, so there is some solid but unknown growth there. Oddly, the activity did not grow much on StackOverflow or GitHub. The raw job trend information is not great, but the relative growth trends are fantastic. Closure could have a big year in 2012.</li>
</ul>
<div>So, what&#8217;s in store for 2012? Well, I am planning to review more programming language data to get a better idea on trends and mainstream adoption. If you have an idea for other data sources besides TIOBE, Indeed, GitHub and StackOverflow, please let me know in the comments.</div>
</div>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=5c81b9fa-5f0e-4d2c-8137-dafce6250637" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/12/19/review-of-the-9-programming-languages-to-watch-in-2011/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Giving Thanks To Arcane Programming Languages</title>
		<link>http://regulargeek.com/2011/11/24/giving-thanks-to-arcane-programming-languages/</link>
		<comments>http://regulargeek.com/2011/11/24/giving-thanks-to-arcane-programming-languages/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 12:00:11 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Algol 60]]></category>
		<category><![CDATA[BCPL]]></category>
		<category><![CDATA[Clipper]]></category>
		<category><![CDATA[Dylan]]></category>
		<category><![CDATA[Eiffel]]></category>
		<category><![CDATA[Factor]]></category>
		<category><![CDATA[Forth]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Inform]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[KRL]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[Modula-2]]></category>
		<category><![CDATA[NATURAL]]></category>
		<category><![CDATA[Oberon]]></category>
		<category><![CDATA[Programming language]]></category>
		<category><![CDATA[prolog]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[REXX]]></category>
		<category><![CDATA[SNOBOL]]></category>
		<category><![CDATA[Tcl]]></category>
		<category><![CDATA[UNITY]]></category>
		<category><![CDATA[Verilog]]></category>
		<category><![CDATA[WebGL]]></category>
		<category><![CDATA[XQuery]]></category>
		<category><![CDATA[Yorick]]></category>
		<category><![CDATA[Zsh]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3906</guid>
		<description><![CDATA[Like many software developers, I have toyed with many languages over the years. Some languages have grown in popularity and others have waned. Today, I would like to give thanks to those esoteric, arcane, rare and industry changing languages in a nice A-Z listing. Some are old, some are new, some are popular, some are [...]]]></description>
			<content:encoded><![CDATA[<p>Like many software developers, I have toyed with many languages over the years. Some languages have grown in popularity and others have waned. Today, I would like to give thanks to those esoteric, arcane, rare and industry changing languages in a nice A-Z listing. Some are old, some are new, some are popular, some are not and some are just plain odd. However, without people trying to create these languages, we would never see any innovation. So, let&#8217;s give thanks to all these languages.</p>
<ul>
<li><strong>A is for <a href="http://en.wikipedia.org/wiki/ALGOL_60" target="_blank">Algol 60</a></strong>, which can be considered the father of structured programming languages.</li>
<li><strong>B is for <a class="zem_slink" title="BCPL" href="http://en.wikipedia.org/wiki/BCPL" rel="wikipedia">BCPL</a></strong>, which we can blame for the travesty that is C.</li>
<li><strong>C is for <a href="http://en.wikipedia.org/wiki/Clipper_(programming_language)" target="_blank">Clipper</a></strong>, and we hope you never used it.</li>
<li><strong>D is for <a href="http://en.wikipedia.org/wiki/Dylan_(programming_language)" target="_blank">Dylan</a></strong>, which is like LISP without parentheses.</li>
<li><strong>E is for <a href="http://en.wikipedia.org/wiki/Eiffel_(programming_language)" target="_blank">Eiffel</a></strong>, which has some cool features that still are not in Java.</li>
<li><strong>F is for <a href="http://en.wikipedia.org/wiki/Factor_(programming_language)" target="_blank">Factor</a> and <a href="http://en.wikipedia.org/wiki/Forth_(programming_language)" target="_blank">Forth</a></strong>, because everyone loves stacks.</li>
<li><strong>G is for <a href="http://en.wikipedia.org/wiki/Go_(programming_language)" target="_blank">Go</a></strong>, as proof of what happens when <a href="http://en.wikipedia.org/wiki/Rob_Pike">Rob Pike</a> and <a class="zem_slink" title="Ken Thompson" href="http://en.wikipedia.org/wiki/Ken_Thompson" rel="wikipedia">Ken Thompson</a> get bored.</li>
<li><strong>H is for <a href="http://en.wikipedia.org/wiki/Haskell_(programming_language)" target="_blank">Haskell</a></strong>, one of a host of <a class="zem_slink" title="Functional programming" href="http://en.wikipedia.org/wiki/Functional_programming" rel="wikipedia">functional languages</a>.</li>
<li><strong>I is for <a href="http://en.wikipedia.org/wiki/Inform" target="_blank">Inform</a></strong>, giving life to interactive fiction.</li>
<li><strong>J is for <a href="http://en.wikipedia.org/wiki/Java_(programming_language)" target="_blank">Java</a></strong>, because so few languages start with J.</li>
<li><strong>K is for <a href="http://en.wikipedia.org/wiki/KRL_(programming_language)" target="_blank">KRL</a></strong>, a frame-based knowledge representation language.</li>
<li><strong>L is for <a href="http://en.wikipedia.org/wiki/Lisp_(programming_language)" target="_blank">LISP</a></strong>, because we love our silly parentheses.</li>
<li><strong>M is for <a class="zem_slink" title="Modula" href="http://en.wikipedia.org/wiki/Modula" rel="wikipedia">Modula</a>-2</strong>, mainly because you probably didn&#8217;t know there was a Modula or a successor named Modula-3.</li>
<li><strong>N is for <a href="http://en.wikipedia.org/wiki/NATURAL" target="_blank">NATURAL</a></strong>, which I have never actually seen used, just discussed.</li>
<li><strong>O is for <a href="http://en.wikipedia.org/wiki/Oberon_(programming_language)" target="_blank">Oberon</a></strong>, because <a href="http://en.wikipedia.org/wiki/Objective-C" target="_blank">Objective-C</a> gets too much publicity already.</li>
<li><strong>P is for <a href="http://en.wikipedia.org/wiki/Prolog" target="_blank">Prolog</a></strong>, progamming logic never seemed so fun.</li>
<li><strong>Q is for <a href="http://en.wikipedia.org/wiki/Qt_(framework)" target="_blank">Qt</a></strong>, although it is more of an application framework.</li>
<li><strong>R is for <a href="http://en.wikipedia.org/wiki/REXX" target="_blank">REXX</a></strong>, an interpreted glue language inflicted upon us by IBM.</li>
<li><strong>S is for <a class="zem_slink" title="SNOBOL" href="http://en.wikipedia.org/wiki/SNOBOL" rel="wikipedia">SNOBOL</a></strong>, one of the first string processing and manipulation languages.</li>
<li><strong>T is for <a href="http://en.wikipedia.org/wiki/Tcl" target="_blank">Tcl</a></strong>, which eventually grew a <a href="http://en.wikipedia.org/wiki/Tk_(framework)" target="_blank">Tk</a> appendage.</li>
<li><strong>U is for <a href="http://en.wikipedia.org/wiki/UNITY_(programming_language)" target="_blank">UNITY</a></strong>, because parallelism is cool and flow control is for the weak.</li>
<li><strong>V is for <a href="http://en.wikipedia.org/wiki/Verilog" target="_blank">Verilog</a></strong>, a hardware description language.</li>
<li><strong>W is for <a class="zem_slink" title="WebGL" href="http://en.wikipedia.org/wiki/WebGL" rel="wikipedia">WebGL</a></strong>, bringing <a class="zem_slink" title="OpenGL" href="http://en.wikipedia.org/wiki/OpenGL" rel="wikipedia">OpenGL</a> to <a class="zem_slink" title="JavaScript" href="http://en.wikipedia.org/wiki/JavaScript" rel="wikipedia">JavaScript</a>.</li>
<li><strong>X is for <a class="zem_slink" title="XQuery" href="http://en.wikipedia.org/wiki/XQuery" rel="wikipedia">XQuery</a></strong>, because even XML needs a programming language.</li>
<li><strong>Y is for <a href="http://en.wikipedia.org/wiki/Yorick_(programming_language)" target="_blank">Yorick</a></strong>, and all those graphs and simulations.</li>
<li><strong>Z is for <a href="http://en.wikipedia.org/wiki/Zsh" target="_blank">Zsh</a></strong>, one of the many Unix shells.</li>
</ul>
<p>Lastly, many thanks to Wikipedia for the <a href="http://en.wikipedia.org/wiki/History_of_programming_languages" target="_blank">&#8220;History of Programming Languages&#8221;</a>, <a href="http://en.wikipedia.org/wiki/List_of_programming_languages" target="_blank">&#8220;List of Programming Languages&#8221;</a>, <a href="http://en.wikipedia.org/wiki/Timeline_of_programming_languages" target="_blank">&#8220;Timeline of Programming Languages&#8221;</a> and much information about the languages themselves.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=5251ea3e-8d1d-41d0-8e2f-bfeaa07bca01" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/11/24/giving-thanks-to-arcane-programming-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Researching NoSQL Is No Different Than The Early RDBMS Market</title>
		<link>http://regulargeek.com/2011/11/10/researching-nosql-is-no-different-than-the-early-rdbms-market/</link>
		<comments>http://regulargeek.com/2011/11/10/researching-nosql-is-no-different-than-the-early-rdbms-market/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 14:00:53 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[RDBMS]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3637</guid>
		<description><![CDATA[How quickly we forget what the dark ages of RDBMS was like. Researching NoSQL solutions is not much different than researching RDBMS software in the mid-90s. Each solution had their problems, some of them severe, and most of the problems would be fixed within a few short release cycles. So, the current problem is how [...]]]></description>
			<content:encoded><![CDATA[<p>How quickly we forget what the dark ages of <a class="zem_slink" title="Relational database management system" href="http://en.wikipedia.org/wiki/Relational_database_management_system" rel="wikipedia">RDBMS</a> was like. Researching <a class="zem_slink" title="NoSQL" href="http://en.wikipedia.org/wiki/NoSQL" rel="wikipedia">NoSQL</a> solutions is not much different than researching RDBMS software in the mid-90s. Each solution had their problems, some of them severe, and most of the problems would be fixed within a few short release cycles. So, the current problem is how to research appropriate solutions for such an immature market like the NoSQL solutions.</p>
<p>First, you need to figure out <a href="http://nosql.mypopescu.com/post/12155791736/nosql-elevator-pitch-parade" target="_blank">whether NoSQL fits your problem</a>:</p>
<blockquote>
<ul>
<li>Do your data needs include massive scalability in a system that supports a highly distributed set of nodes resilient to network outages and inconsistency? Then you might consider NoSql alternatives.</li>
<li>Do you need a DBMS that doesn’t try to force you into static data schemas? Do you need the utmost of data model flexibility? Then you might consider NoSql alternatives.</li>
<li>Is your database going to be filled with a truly massive number of objects with very simply query requirements? Is throughput an absolute priority down to the milliseconds? Then you might consider NoSql alternatives.</li>
<li>Is your database going to be hit with a truly fantastic amount of write activity? Then you might consider NoSql alternatives.</li>
<li>Would your solution benefit greatly from the utmost in maintenance and administration simplicity? Then you might consider NoSql alternatives.</li>
</ul>
</blockquote>
<p>If you talk to any traditional RDBMS developer, they will say that none of these points really require a NoSQL solution or that some of the issues are more related to design problems instead of data storage issues. Those talking points aside, there is some reason that these types of issues keep coming up. Traditional RDBMS systems that are being used at scale require significant administration and an administrator who is very good at their job. One of the reasons that people are using NoSQL solutions in these scenarios is that you do not need to be an experienced <a class="zem_slink" title="Oracle Corporation" href="http://oracle.com" rel="homepage">Oracle</a> cluster DBA, you can just be a well-read software engineer.</p>
<p>One difference between RDBMS and NoSQL solutions is that you really need to understand how you are going to use the database. For an RDBMS, this was not a concern because they are meant as general data storage. The various NoSQL solutions have different purposes. Document stores are different than object stores which are different than the other storage models. The topic of choosing the appropriate type of solution is worthy of its own blog post, so I won&#8217;t cover it here. The important thing to note is that each storage model has advantages and disadvantages, so choosing the right solution can make your implementation much smoother.</p>
<p>However, there are other things you need to think about when researching NoSQL solutions. NoSQL is an immature market, so there are other issues that you need to be aware of. First, there is the <a href="http://nosql.mypopescu.com/post/12466059249/anonymous-post-dont-use-mongodb" target="_blank">anonymous rant about MongoDB</a> that has been heavily talked about this week. The following is a condensed version of the issues in the rant:</p>
<blockquote>
<ul>
<li>MongoDB issues writes in unsafe ways by default in order to win benchmarks: If you don’t issue getLastError(), MongoDB doesn’t wait for any confirmation from the database that the command was processed.</li>
<li>MongoDB can lose data in many startling ways: Recovery on corrupt database was not successful, pre transaction log. Replication between master and slave had gaps in the oplogs, causing slaves to be missing records the master had. Yes, there is no checksum, and yes, the replication status had the slaves current</li>
<li>MongoDB requires a global write lock to issue any write</li>
<li>MongoDB’s sharding doesn’t work that well under load: Adding a shard under heavy load is a nightmare. Mongo either moves chunks between shards so quickly it DOSes the production traffic, or refuses to more chunks altogether.</li>
<li>mongos is unreliable: The mongod/config server/mongos architecture is actually pretty reasonable and clever. Unfortunately, mongos is complete garbage. Under load, it crashed anywhere from every few hours to every few days.</li>
<li>MongoDB actually once deleted the entire dataset: MongoDB 1.6, in replica set configuration, would sometimes determine the wrong node (often an empty node) was the freshest copy of the data available. It would then DELETE ALL THE DATA ON THE REPLICA (which may have been the 700GB of good data) AND REPLICATE THE EMPTY SET&#8230; They fixed this in 1.8.</li>
<li>Things were shipped that should have never been shipped: Things with known, embarrassing bugs that could cause data problems were in “stable” releases—and often we weren’t told about these issues until after they bit us&#8230; The response was to send up a hot patch and that they were calling an RC internally, and then run that on our data.</li>
<li>Replication was lackluster on busy servers: Replication would often, again, either DOS the master, or replicate so slowly that it would take far too long and the oplog would be exhausted (even with a 50G oplog).</li>
</ul>
</blockquote>
<p>Obviously, this is a long list of problems, but you will notice that the version numbers are varied, while MongoDB v2.0.1 has already been released and v1.8 was originally released in February 2011, which points out that some of this information could just be old. More than anything, the post seems like a list of issues over several versions. And that is part of the problem when reading posts like this. If you try to think what Oracle was like prior to v7, you probably don&#8217;t remember, but if you ask an experienced DBA they can tell you horror stories. Things were not all that rosy when RDBMS systems were trying to mature.</p>
<p>This is also the nature of software, it has defects and typically severe defects when the software is first released. NoSQL is still leading edge technology, so you have to assume you are taking some risks when you try to implement your storage solution with one of those products. To put this into more obvious terms, one of the most successful pieces of software sucked until it got past v3.1 and that was Microsoft Windows.</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=2963533e-66d2-4b8f-b2ea-fb9684765ca5" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/11/10/researching-nosql-is-no-different-than-the-early-rdbms-market/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confusion As A Usability Defect</title>
		<link>http://regulargeek.com/2011/10/23/confusion-as-a-usability-defect/</link>
		<comments>http://regulargeek.com/2011/10/23/confusion-as-a-usability-defect/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 12:36:24 +0000</pubDate>
		<dc:creator>Rob Diana</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Michael Bolton]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[Software testing]]></category>
		<category><![CDATA[Test script]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Usability testing]]></category>

		<guid isPermaLink="false">http://regulargeek.com/?p=3796</guid>
		<description><![CDATA[As a software engineer, you should always be looking for the location of the next defect or at least clues that something is wrong. The problem is that most developers have been trained to wait for feedback from the QA team. In many cases, the QA team is following a script or has been trained [...]]]></description>
			<content:encoded><![CDATA[<p>As a software engineer, you should always be looking for the location of the next defect or at least clues that something is wrong. The problem is that most developers have been trained to wait for feedback from the <a class="zem_slink" title="Quality assurance" href="http://en.wikipedia.org/wiki/Quality_assurance" rel="wikipedia">QA</a> team. In many cases, the QA team is following a script or has been trained on how to use the system, so some clues get lost in the familiarity.</p>
<p><a href="http://www.developsense.com/blog/" target="_blank">Michael Bolton</a> has an interesting post regarding <a href="http://www.developsense.com/blog/2011/10/confusion-as-an-oracle/" target="_blank">confusion as an oracle</a>:</p>
<blockquote><p>James peered over his glasses. &#8220;When you&#8217;re <em>confused</em>,&#8221; he said, &#8220;that&#8217;s a sign that there&#8217;s something <em>confusing</em> going on. I gave you a confusing product to test. Confusion might not be fun, but it&#8217;s a natural consequence when you’re dealing with a confusing product.” James was tacitly suggesting that Jon&#8217;s confusion cound be used as an <em>oracle</em>—a heuristic principle or mechanism by which we recognize a problem.</p></blockquote>
<p>When the QA team is confused, that points to potential issues and should be used as a heuristic. The confusion could be from a few sources. First, the test script could be out of sync with the user interface in such a way that is not obvious how the tester should proceed. This can happen with any application that is evolving throughout the development lifecycle. Second, you could have someone that has not been trained on the application as the tester. This can quickly be remedied by providing the appropriate information on how to use the application. It could also point to an incomplete test script, meaning someone new cannot execute the test script without additional instruction.</p>
<p>Another reason the QA team could be confused is because the application is confusing. This is not a good sign and should be seen as a warning to the development team. Most likely there is a usability defect in the application. For some teams, usability defects do not exist and usability issues get added to the list of things to do. This is a big mistake when developing web applications. Almost a year ago <a href="http://regulargeek.com/2010/12/08/applying-krugs-usability-rules-to-startups/" target="_blank">I wrote about Krug&#8217;s usability rules</a>:</p>
<blockquote><p>The first two Krug rules of usability are very related:</p>
<ol>
<li>Don’t make me think – as far as is humanly possible, when I look at a web page it should be self-evident, obvious, self-explanatory.</li>
<li>It doesn’t matter how many times I have to click, as long as each click is a mindless unambiguous choice.</li>
</ol>
</blockquote>
<p>I love the &#8220;don&#8217;t make me think&#8221; rule. If you design your application with this rule in mind, you will get past most usability problems. However, if you are a startup and developing for a large userbase, you may have slightly more concerns. Mark Evans <a href="http://www.markevanstech.com/2011/10/20/i-get-it/" target="_blank">wrote recently about a rule of thumb &#8220;I get it&#8221;</a>:</p>
<blockquote><p>But if you push aside the entrepreneurial enthusiasm, a startup’s success prospects depend on a compelling idea and, as important, the ability to quickly get potential users to say &#8221;Yes, I get it&#8221;. This means being crystal clear what the service or product does, and the value propositions/benefits being delivered.</p></blockquote>
<blockquote><p>The product/service needs to fill a need or convince users it meets a need they didn&#8217;t know they had. Getting users on board has to be user-friendly and efficient. And the product/service has to delight.</p></blockquote>
<p>If you are following these basic principles, your product should not be confusing. I am a big believer in making things simple for users, because it means they will enjoy (or at least not hate) using the system. This is obviously a good thing, but more importantly, users will look for other ways to use your application.</p>
<p>So, why should a &#8220;confusing&#8221; application have usability defects tracked? If an application is confusing, that means it is going to be difficult to use. When an application is difficult to use, people stop using it because they can not see the benefits to using the system.</p>
<p>Usability is also hard to define, but if you look at Krug&#8217;s rules you will see that the user should not have to find the right thing to do, it should be fairly obvious. But, what about prior to production? You don&#8217;t have typical users on the system, so how do you determine usability? One thing I have seen is that the length of the test script can be a good trigger for something being too difficult.</p>
<p>Let&#8217;s assume you have manual testing being completed. Ignoring the test case setup instructions, how many steps are required to test one feature? This is similar to the number of clicks heuristic, but it is the number of actions a user must take in order to complete a task. You could say the number is something like 7 but that is not entirely useful. I have used &#8220;Why&#8221; as my metric of choice. If you ask &#8220;why do I need to complete this step?&#8221; and there is no obvious or definable reason, then you likely are introducing unnecessary steps to the task. If you can eliminate these issues, your application usability should improve.</p>
<p>To really make your application simpler, make sure your QA team starts questioning things in the beginning of the process. Someone writes the test script, and it could be the QA tester themselves. The developer and the tester should go through the test script and ask &#8220;why&#8221; for each step. This will proactively remove any stumbling blocks in the plan and have a much more usable system after it passes QA testing.</p>
<p>Are there any tips or tricks you have for improving usability?</p>
<div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Enhanced by Zemanta" href="http://www.zemanta.com/"><img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=29986c95-a68f-41eb-a457-32c022c49cf3" alt="Enhanced by Zemanta" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://regulargeek.com/2011/10/23/confusion-as-a-usability-defect/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.620 seconds -->

