<?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>HCoder.org &#187; programming</title>
	<atom:link href="http://hcoder.org/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://hcoder.org</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Thu, 09 Feb 2012 22:15:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Pragmatic Thinking &amp; Learning, Wikis and Javascript</title>
		<link>http://hcoder.org/2011/10/24/pragmatic-thinking-learning-wikis-and-javascript/</link>
		<comments>http://hcoder.org/2011/10/24/pragmatic-thinking-learning-wikis-and-javascript/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 21:36:25 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[pet]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[wikis]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1207</guid>
		<description><![CDATA[After so much &#8220;slacking&#8221; (just posting book summaries) I&#8217;m trying to go back to regular blogging. Remember my summary of Pragmatic Thinking &#38; Learning? There are many exercises and pieces of advice in that book that I have been trying to practice. One of the things I decided to go for was having a personal [...]]]></description>
			<content:encoded><![CDATA[<p>After so much &#8220;slacking&#8221; (just posting book summaries) I&#8217;m trying to go back to regular blogging. Remember <a href="http://hcoder.org/2011/10/10/book-summary-pragmatic-thinking-learning/">my summary of Pragmatic Thinking &amp; Learning</a>? There are many exercises and pieces of advice in that book that I have been trying to practice. One of the things I decided to go for was having a <a href="http://en.wikipedia.org/wiki/Personal_wiki">personal wiki</a>. One of the reasons being, in all honesty, that I had always wanted to have one. Another reason being that my pet TODO application, <a href="https://bitbucket.org/emanchado/bubug/wiki/Home">Bubug</a>, had finally died after some Debian update (some retarded Ruby module broke compatibility with the version I was using, or something; couldn&#8217;t care to investigate). And yet another reason, well, to have a new small pet project and follow my obsession with learning Javascript, and especially <a href="http://nodejs.org/">Node</a>. And that I wanted to give <a href="https://no.de/">Joyent&#8217;s free Node service</a> a try!</p>
<p>But enough with the reasons. It&#8217;s starting to look like it was a pretty useful mini-project. Not just because I learned a bit more Javascript, the excellent <a href="http://expressjs.com/">express</a> web development framework and other things, but also because the result itself, even though it didn&#8217;t take long to develop (and it was pretty fun, even!), feels useful. It feels like a nice place to put all my notes, TODOs, random ideas for projects, etc. A similar feeling of freedom as when I started using my first <a href="http://en.wikipedia.org/wiki/Moleskine">Moleskine</a>. Not that I would ditch paper for computer-<em>anything</em>, but it&#8217;s useful and freeing in its own way, for specific purposes.</p>
<p>About the technology, I used the <a href="http://en.wikipedia.org/wiki/Markdown">Markdown</a> format for the pages thanks to the <a href="https://github.com/evilstreak/markdown-js">markdown-js library</a> (it&#8217;s really nice that the module has an intermediate tree format that you can parse to add your own stuff before converting to HTML, like e.g. wikipage links!), <a href="http://expressjs.com/">express</a> for the whole application structure and <a href="http://code.google.com/p/js-test-driver/">js-test-driver</a> + <a href="http://cjohansen.no/en/javascript/jstdutil_a_ruby_wrapper_over_jstestdriver">jsautotest</a> + a bit of syntax sugar from <a href="http://sinonjs.org/">Sinon.js</a> for the tests (but looking forward to trying out <a href="http://busterjs.org/">Buster.js</a> when it&#8217;s released!). The deployment to Joyent&#8217;s Node.js SmartMachine was reasonably easy. Actually, it was pretty easy once I figured the following:</p>
<ul>
<li>You must not forget to listen in the correct port, with <code class="syntax javascript">server.listen(process.env.PORT || 8001)</code></li>
<li>There are a couple of pretty useful <a href="http://wiki.joyent.com/display/node/Getting+Started+with+a+Node.js+SmartMachine#GettingStartedwithaNode.jsSmartMachine-SSHaccess">Node.js-related command-line utilities</a> to check logs, restart applications and so on</li>
<li>The configuration of the application can be done via <code class="syntax">npm config</code>, see <a href="http://wiki.joyent.com/display/node/npm+Integration">npm integration on Joyent&#8217;s Wiki</a></li>
</ul>
<p>If you&#8217;re curious to see the code, play with it or use it yourself, take a peek to the <a href="https://github.com/emanchado/Wiki-toki">Wiki-Toki repository</a> on GitHub. Happy hacking!</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1207&amp;md5=666f11f6b9488a0fae815494decab83b" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/10/24/pragmatic-thinking-learning-wikis-and-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://hcoder.org/?flattrss_redirect&amp;id=1207&amp;md5=666f11f6b9488a0fae815494decab83b" type="text/html" />
	</item>
		<item>
		<title>Book review: Javascript Web Applications</title>
		<link>http://hcoder.org/2011/09/20/book-review-javascript-web-applications/</link>
		<comments>http://hcoder.org/2011/09/20/book-review-javascript-web-applications/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 20:42:17 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1168</guid>
		<description><![CDATA[This is my review of &#8220;Javascript Web Applications&#8221; by Alex MacCaw, part of the O&#8217;Reilly Blogger Review Program (in a nutshell: you can choose an ebook from a given selection, and you get it for free if you make a review and post it in any consumer site). It&#8217;s a book about using Javascript to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oreilly.com/bloggers/"><img src="http://cdn.oreilly.com/bloggers/blogger-review-badge-200.png" alt="I review for the O'Reilly Blogger Review Program" width="200" height="150" align="right" border="0" /></a> This is my review of &#8220;<a href="http://shop.oreilly.com/product/0636920018421.do">Javascript Web Applications</a>&#8221; by <a href="http://alexmaccaw.co.uk/">Alex MacCaw</a>, part of the O&#8217;Reilly Blogger Review Program (in a nutshell: you can choose an ebook from a given selection, and you get it for free if you make a review and post it in any consumer site). It&#8217;s a book about using Javascript to write (mostly) client-side web applications. The book cover says &#8220;jQuery Developers&#8217; Guide to Moving State to the Client&#8221;, which is somewhat misleading: although most examples that could be written with jQuery <em>are</em> written with jQuery, it&#8217;s a book that anyone interested in Javascript can use, enjoy and learn from, regardless of their library of choice. It doesn&#8217;t even assume you know jQuery, and there&#8217;s a whole appendix dedicated to introducing the reader to the library, should she need it.</p>
<h2>Structure</h2>
<p>The book teaches how to write web applications using Javascript, always following the MVC pattern. It&#8217;s divided in four parts:</p>
<ol>
<li>The first two chapters serve as an introduction to both the MVC pattern and the Javascript language. Although this book is not aimed at total Javascript newbies, you don&#8217;t have to know that much to follow the book. For example, it explains prototypes and constructor functions.</li>
<li>Chapters 3 to 5 cover the implementation details of MVC in Javascript (one chapter for the Model, another for the Controller and the last one about the View).</li>
<li>Chapters 6 to 10 cover many practicalities of client-side web development, like dependency management, unit testing, debugging, interesting browser APIs and deployment tips.</li>
<li>The last three chapters cover Javascript libraries: Spine, Backbone and JavascriptMVC.</li>
</ol>
<p>Additionally, there are three appendices covering <a href="http://jquery.org">jQuery</a>, <a href="http://lesscss.org/">Less</a> and CSS3.</p>
<h2>Highlights and references</h2>
<ul>
<li>Chapter 10 (&#8220;Deploying&#8221;) is full of very good tips and information.</li>
<li>Both the Backbone and the JavascriptMVC chapters were brilliant, looking forward to use any of them soon.</li>
<li>All the <a href="https://github.com/maccman/book-assets">example code</a> is on GitHub.</li>
<li>Page 24: &#8220;The secret to making large Javascript applications is not make large Javascript applications&#8221;.</li>
<li><a href="http://plugins.jquery.com/project/HJS">HJS plugin</a> for jQuery for a nice syntax to create classes.</li>
<li><a href="https://github.com/kriskowal/es5-shim">ES5-shim</a> for browsers that don&#8217;t support Ecmascript 5 yet.</li>
<li>Chapter 2 was a very good introduction about events. removeEventListener (p. 41), stopPropagation/preventDefault (p. 43), list of properties (p. 44), load vs. DOMContentLoaded (p. 45), delegating events (p. 46) and custom events (p. 47-49), among others.</li>
<li>Reference to <a href="http://michaux.ca/articles/javascript-namespacing">blog post about namespacing</a>.</li>
<li>Object.create discussed on page 55.</li>
<li>Using URL hash for URLs on pages 82, 83.</li>
<li>Didn&#8217;t really understand the explanation for the HTML5 history API on p. 85. Alternatively, see the <a href="http://dev.opera.com/articles/view/introducing-the-html5-history-api/">HTML5 history API</a> on Dev Opera.</li>
<li>Very interesting file API on p. 103 and p. 111. Forget the drag-n-drop (<a href="http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html">reason</a>) and the copy/paste.</li>
<li>Tips about when to load your Javascript on p. 156.</li>
<li>The JavascriptMVC chapter was brilliant, see p. 208-213 for the class syntax (nicer and more compact, supports this._super()), p. 210 for instrospection and namespaces, p. 211, 212 for model attributes and observables, and p. 213 for setters. Very cool server encapsulation on p. 215. Type conversion and CRUD events on p. 218. JMVC views on p. 219. Templated actions and final example on p. 226-228.</li>
</ul>
<p>Note that all page references are pages in the PDF file, not pages in the book!</p>
<h2>Wrapping up</h2>
<p>This book is packed with very practical information and <em>a lot</em> of code that will teach you how to write applications in Javascript. It builds up from relatively simple code to more advanced stuff, including tips, use of libraries, etc. It&#8217;s one of those books that makes you want to play with all the stuff you&#8217;re learning, and try it all in your next project.</p>
<p>However, sometimes the amount of code makes the book hard to read. Some parts (eg. beginning of the chapter about controllers) are a bit tiring as you have to read and understand so much code, esp. if you&#8217;re not that used to reading more-or-less advanced Javascript. It also lacks information about some important tools like <a href="http://www.opera.com/dragonfly/">Dragonfly</a> (it almost feels like there&#8217;s nothing for developing with Opera) or <a href="http://code.google.com/p/js-test-driver/">js-test-driver</a>.</p>
<p>In summary, this is the perfect book if you know <em>a bit</em> of Javascript and want to learn modern techniques and libraries that will get you started in <em>serious</em> client-side programming. <em>Especially</em> if you are one of those server-side programmers that don&#8217;t like Javascript but has to use it anyway (because despite all its warts, it&#8217;s a really nice language!). If you&#8217;re a Javascript wizard and you have been developing client-side code for years, this book may not be for you.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1168&amp;md5=083124645c164fd06570fbd5e5ccfc84" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/09/20/book-review-javascript-web-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://hcoder.org/?flattrss_redirect&amp;id=1168&amp;md5=083124645c164fd06570fbd5e5ccfc84" type="text/html" />
	</item>
		<item>
		<title>First steps with Scala</title>
		<link>http://hcoder.org/2011/03/28/first-steps-with-scala/</link>
		<comments>http://hcoder.org/2011/03/28/first-steps-with-scala/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 20:46:55 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=900</guid>
		<description><![CDATA[So I had promised to write a bit more about my initial experience with Scala. Here it is. In my previous post I had explained why Scala in the first place, and I had mentioned that almost all of my knowledge comes from having read a bit of &#8220;Programming Scala&#8220;. Some of my highlights: It [...]]]></description>
			<content:encoded><![CDATA[<p>So <a href="http://hcoder.org/2011/03/20/the-quest-to-learn-a-new-programming-language/">I had promised</a> to write a bit more about my initial experience with Scala. Here it is.</p>
<p>In my previous post I had explained why Scala in the first place, and I had mentioned that almost all of my knowledge comes from having read a bit of &#8220;<a href="http://programming-scala.labs.oreilly.com/">Programming Scala</a>&#8220;. Some of my highlights:</p>
<ul>
<li>It has a <a href="http://en.wikipedia.org/wiki/REPL">REPL</a> for experiments.</li>
<li>Immutable variables (see &#8220;<a href="http://programming-scala.labs.oreilly.com/ch02.html#VariableDeclarationsAndDefinitions">Variable Declarations</a>&#8220;).</li>
<li>Type inference (see &#8220;<a href="http://programming-scala.labs.oreilly.com/ch02.html#InferringTypes">Inferring Type Information</a>&#8220;).</li>
<li>The Option type (see &#8220;<a href="http://programming-scala.labs.oreilly.com/ch02.html#OptionSomeNone">Option, Some, and None: Avoiding nulls</a>&#8220;).</li>
<li>The handy <em>import</em> syntax (see &#8220;<a href="http://programming-scala.labs.oreilly.com/ch02.html#Importing">Importing Types and Their Members</a>&#8220;).</li>
<li>The flexible syntax that allows for DSLs (see &#8220;<a href="http://programming-scala.labs.oreilly.com/ch03.html#_methods_without_parentheses_and_dots">Methods Without Parentheses and Dots</a>&#8221; and &#8220;<a href="http://programming-scala.labs.oreilly.com/ch03.html#_domain_specific_languages">Domain-Specific Languages</a>&#8220;).</li>
<li>The flexible <em>for</em> loop (see &#8220;<a href="http://programming-scala.labs.oreilly.com/ch03.html#ForComprehensions">Scala for Comprehensions</a>&#8220;).</li>
<li>Pattern matching (see &#8220;<a href="http://programming-scala.labs.oreilly.com/ch03.html#PatternMatching">Pattern Matching</a>&#8220;, and make sure you don&#8217;t miss the examples with <a href="http://programming-scala.labs.oreilly.com/ch03.html#MatchingOnType">types</a>, <a href="http://programming-scala.labs.oreilly.com/ch03.html#MatchingOnSequences">sequences</a>, <a href="http://programming-scala.labs.oreilly.com/ch03.html#MatchingOnTuples">tuples with guards</a> or <a href="http://programming-scala.labs.oreilly.com/ch03.html#MatchingOnCaseClasses">case classes</a>).</li>
<li>Traits (see chapter 4, &#8220;<a href="http://programming-scala.labs.oreilly.com/ch04.html">Traits</a>&#8220;).</li>
<li>The nice XML library that comes with Scala (see chapter 10, &#8220;<a href="http://programming-scala.labs.oreilly.com/ch10.html">Herding XML in Scala</a>&#8220;).</li>
</ul>
<p>And note that I haven&#8217;t read <em>that much</em> of the book. In particular, I expect to like a lot of things about the functional aspects of Scala (described in chapter 8, &#8220;<a href="http://programming-scala.labs.oreilly.com/ch08.html">Functional Programming in Scala</a>&#8220;).</p>
<p>That&#8217;s about learning the basics of the language. When I tried to make a small application to access the <a href="http://www.flickr.com/services/api/">Flickr API</a>, things worked really smoothly, which is always encouraging: using <a href="https://github.com/scalaj/scalaj-http">scalaj-http</a> for the HTTP requests is a breeze, and parsing the resulting XML to get the interesting pieces was also pretty straightforward. Another nice surprise was the <a href="http://www.scalatest.org/">ScalaTest</a> library.</p>
<p>Only when I had to start writing a bit more &#8220;real-world&#8221; code, I had to use some Java libraries. And I have to say, that was by far <a href="https://github.com/emanchado/Flickr-Memories/commit/27a76a6d1887bf0db7cafe821c9f43f808d0bfe3">the worst part</a> of programming in Scala. I only had to make some very simple date calculations, but that turned out to take more or less as long as the rest of the code I had written. Or at least, much more frustration. To write that small piece of code, I had to learn some API that didn&#8217;t make any sense to me; it took me a while to find the right, non-deprecated way of doing things; and all along I felt that the designers of that API were more focused on how proud they were of their &#8220;correct&#8221;, decoupled design that on making it simple and practical for the actual programmers using that library. My impression of the JavaMail library wasn&#8217;t actually much better, but at least the first thing I copied and pasted worked well enough.</p>
<p>And before I finish, I wanted to mention a couple of things about tools. Although I&#8217;m currently using Emacs, I did give Eclipse and NetBeans a try. Probably those tools are not for me, so take my experience with a pinch of salt, but I found them really confusing or they didn&#8217;t work at all for some reason. However, <a href="https://github.com/haxney/scala-mode">Scala mode</a> and <a href="https://github.com/aemoncannon/ensime">ensime</a> for Emacs worked well for my, for now, limited needs, and frankly, I&#8217;d rather stay with Emacs that having to edit code in Eclipse or some other editor.</p>
<p>I still have several things pending, like finishing the Scala book, trying out <a href="http://code.google.com/p/simple-build-tool/">sbt</a>, experiment more with ensime and the Scala mode and write a library to access the <a href="http://dev.opera.com/articles/view/introducing-the-opera-link-api/">Opera Link API</a>. But it looks like it&#8217;s going to be a lot of fun :-)</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=900&amp;md5=098f9fd40cc82246f30ec880db3bec2b" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/03/28/first-steps-with-scala/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://hcoder.org/?flattrss_redirect&amp;id=900&amp;md5=098f9fd40cc82246f30ec880db3bec2b" type="text/html" />
	</item>
		<item>
		<title>The quest to learn a new programming language</title>
		<link>http://hcoder.org/2011/03/20/the-quest-to-learn-a-new-programming-language/</link>
		<comments>http://hcoder.org/2011/03/20/the-quest-to-learn-a-new-programming-language/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 12:40:37 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[functional]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=887</guid>
		<description><![CDATA[Some time ago I realised I wasn&#8217;t all that excited about any programming language. All the languages I knew were, for some reason or another, annoying and I didn&#8217;t really feel like having any pet projects. That, combined with the idea that learning new stuff is good, pushed me to try and learn some new [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago I realised I wasn&#8217;t all that excited about any programming language. All the languages I knew were, for some reason or another, annoying and I didn&#8217;t really feel like having any pet projects. That, combined with the idea that learning new stuff is good, pushed me to try and learn some new programming language.</p>
<p>Choosing one was actually kind of a problem: it had to be &#8220;mainstream&#8221; enough that it wouldn&#8217;t just be a theoretical exercise (I wanted to use it to write actual code, not just to learn it) and yet different enough to what I was used to. It also had to be &#8220;stable&#8221; enough that I didn&#8217;t have to install it from sources or follow the development of the compiler/interpreter. That didn&#8217;t really leave me a lot of options, I thought. The only ones I could think of, really, were Haskell, Go, Lisp and Scala.</p>
<p><strong>Haskell</strong> I had tried to learn, and I more or less failed. I did learn the basics and I tried to start writing a Sudoku solver with it, but I got demoralised quite quickly. I felt it was a bit too exotic for actual work, and it was a bit of a downer that it took me <em>so long</em> to write some simple unit tests for some basic code I started to write (I couldn&#8217;t get my head around the type system and I was fighting with something really silly for many hours). <strong>Go</strong>, well, I didn&#8217;t even start learning because the <a href="http://golang.org/doc/install.html">Go installation instructions</a> totally freaked me out. Not that I didn&#8217;t <em>understand</em> them, but the idea of fetching the sources of the compiler just to learn a programming language turned me off. And don&#8217;t get me started with the name of the compiler (dependent on the architecture, no less!), the separate linking step or the 90s-style &#8220;.out&#8221; file name for the binaries. So that left me with Lisp and Scala.</p>
<p><strong>Lisp</strong>, I did know a bit. I had learned some basic Lisp at the university, and liked it quite a bit back then. I had also read part of the excellent &#8220;<a href="http://www.paulgraham.com/onlisp.html">On Lisp</a>&#8221; and I thought it was really cool. I still had my doubts <em>I</em> could use for actual work, but I was willing to give it a try. So I borrowed the (also excellent) book &#8220;<a href="http://oreilly.com/catalog/9781593272814">Land of Lisp</a>&#8221; from a friend and started reading, trying to learn a bit. The process wasn&#8217;t too bad, but I had the increasing feeling that in the end it would be too exotic for me, and I found the syntax too annoying. I was learning some practical Lisp, but it was taking really long to learn interesting things. And when those interesting things came, I felt they were too obscure for me, and I needed a lot of thinking to even understand the examples. But I decided to give it a try anyway, and I went ahead and tried to write some simple code to use some web service (the final goal was to write some example code for the <a href="http://dev.opera.com/articles/view/introducing-the-opera-link-api/">Link API</a>). In this case, the deal breaker was that the OAuth library I found depended on an <em>obscene</em> number of Lisp packages, many of which were recommended to be downloaded directly from <a href="https://github.com/">GitHub</a> (srsly? <em>fuck this shit</em>).</p>
<p>That left me with <strong>Scala</strong>. I had mixed feelings about it. At a first glance it looked interesting, but it was compiled, related to Java and more or less centred on concurrency. I tried to learn Scala by reading &#8220;<a href="http://programming-scala.labs.oreilly.com/">Programming Scala</a>&#8220;, which turned out to be more fun and productive than I had anticipated. I&#8217;m considering buying the &#8220;dead tree&#8221; version, but I have so many books to read that I don&#8217;t know <em>when</em> I&#8217;ll do that. So, what did I like about Scala so much? It made me feel like when I learned Ruby: it had fairly powerful features (pattern matching, traits, type inference, others I forget about) but with a readable, easy to understand syntax. It&#8217;s like the Robin Hood of programming languages, stealing features only available in impossible-to-understand languages, and bringing them to the masses. It also felt good <em>liking</em> a statically typed language, I didn&#8217;t think that was possible for me anymore :-)</p>
<p>But enough for now. Some other day I&#8217;ll write some more details about Scala and about my pet project <a href="https://github.com/emanchado/Flickr-Memories">FlickrMemories</a>.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=887&amp;md5=c24c0a0269c27d79f37b471300d939ff" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/03/20/the-quest-to-learn-a-new-programming-language/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" href="http://hcoder.org/?flattrss_redirect&amp;id=887&amp;md5=c24c0a0269c27d79f37b471300d939ff" type="text/html" />
	</item>
		<item>
		<title>Sucky Typo update</title>
		<link>http://hcoder.org/2008/08/19/sucky-typo-update/</link>
		<comments>http://hcoder.org/2008/08/19/sucky-typo-update/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 21:19:00 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[typo]]></category>
		<category><![CDATA[upgrading]]></category>
		<category><![CDATA[woes]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[The other day I was talking about upgrading Typo. The update itself went well, true, and the site was up and running without too much downtime, but then I started using it again&#8230; and I have noticed two things so far (both about writing posts) that I really dislike: First, the good old editor is [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I was talking about <a href="http://hcoder.org/2008/08/07/">upgrading Typo</a>. The update itself went well, true, and the site was up and running without <em>too much</em> downtime, but then I started using it again&#8230; and I have noticed two things so far (both about writing posts) that I really dislike:</p>
<p>First, the good old editor is not there anymore: the Typo editor used to be really good, because on the left hand side you had a very reliable and easy to use textarea with Wiki syntax (you can choose which exact syntax you want), and on the right hand side you had a &#8220;live preview&#8221; of your post, automatically updated with Ajax, that showed you how the post was going to look like. Well, that&#8217;s <strong>gone</strong>. Now there are two options: some retarded <span class="caps">WYSIWYG</span> box, that I tried to use and failed, and some good old textarea&#8230; <em>without the damn live preview</em>. That <strong>sucks</strong> big time, because there is <em>no other preview</em> (that I have seen: <strong>please</strong> enlighten me if there is indeed one), so I just blindly write things in a Wiki format, and <strong>hope</strong> that it&#8217;s going to look OK when I press &#8220;Publish&#8221;.</p>
<p>Second, I was playing with the Wiki format for the articles, and I changed it to &#8220;Markdown&#8221; (I always mix &#8220;Textile&#8221; with &#8220;Markdown&#8221;, and never remember which is which; the one I prefer is Textile). After I hit &#8220;Save&#8221;, not only the next article was parsed in Markdown format by default, but <strong>every single blog post</strong>. It&#8217;s like, you select the parser the system is going to use to interpret your whole blog. How retarded is that? Once you have written posts, it doesn&#8217;t make sense to change their syntax (unless you do it manually editing the post itself). <strong>Clearly</strong> the format is a property of each blog post, not of the whole blog installation.</p>
<p>Not everything is bad though: it seems that now you finally have a &#8220;Draft&#8221; concept, so I can start writing a blog post and just save as a draft, instead of unticking the &#8220;Online&#8221; property and saving as a normal post. Also, the drafts are saved <em>automatically</em>, so I don&#8217;t have to remember to hit &#8220;Save&#8221; from time to time just in case the browser crashes or I hit something stupid and erase the contents of the post. Yay for that.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=38&amp;md5=b284396e75d48636ba7cd3f7a7ec5828" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2008/08/19/sucky-typo-update/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="http://hcoder.org/?flattrss_redirect&amp;id=38&amp;md5=b284396e75d48636ba7cd3f7a7ec5828" type="text/html" />
	</item>
	</channel>
</rss>

