<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Sergi Mansilla</title>
  <icon>https://sergimansilla.com/icon.png</icon>
  
  <link href="https://sergimansilla.com/atom.xml" rel="self"/>
  
  <link href="https://sergimansilla.com/"/>
  <updated>2025-11-24T09:13:54.250Z</updated>
  <id>https://sergimansilla.com/</id>
  
  <author>
    <name>Sergi Mansilla</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Refactoring in Go: Using reflection</title>
    <link href="https://sergimansilla.com/blog/refactoring-in-go-using-reflection/"/>
    <id>https://sergimansilla.com/blog/refactoring-in-go-using-reflection/</id>
    <published>2018-08-24T14:51:23.000Z</published>
    <updated>2025-11-24T09:13:54.250Z</updated>
    
    
    <summary type="html">&lt;p&gt;Go’s reflection API is quite the unknown for many developers. In this article, I’ll use it in a familiar scenario to show that it can help you in your day to day coding.&lt;/p&gt;</summary>
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="golang" scheme="https://sergimansilla.com/tags/golang/"/>
    
    <category term="kubernetes" scheme="https://sergimansilla.com/tags/kubernetes/"/>
    
    <category term="refactoring" scheme="https://sergimansilla.com/tags/refactoring/"/>
    
    <category term="reflection" scheme="https://sergimansilla.com/tags/reflection/"/>
    
  </entry>
  
  <entry>
    <title>Refactoring in Go: goroutine concurrency</title>
    <link href="https://sergimansilla.com/blog/refactoring-in-go-goroutine-concurrency/"/>
    <id>https://sergimansilla.com/blog/refactoring-in-go-goroutine-concurrency/</id>
    <published>2018-08-09T19:18:18.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
    <summary type="html">&lt;p&gt;Surprise! I write Go these days.&lt;/p&gt;
&lt;p&gt;Lately I’ve been finding some code out in the wild that uses naive solutions for concurrency. Given the times I’ve seen similar patterns, my theory is that it is probably inspired by basic goroutines example code out there.&lt;/p&gt;</summary>
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="golang" scheme="https://sergimansilla.com/tags/golang/"/>
    
    <category term="refactoring" scheme="https://sergimansilla.com/tags/refactoring/"/>
    
    <category term="concurrency" scheme="https://sergimansilla.com/tags/concurrency/"/>
    
    <category term="goroutines" scheme="https://sergimansilla.com/tags/goroutines/"/>
    
  </entry>
  
  <entry>
    <title>React patterns: Privileged Content</title>
    <link href="https://sergimansilla.com/blog/react-patterns-privileged-content/"/>
    <id>https://sergimansilla.com/blog/react-patterns-privileged-content/</id>
    <published>2018-04-10T12:00:54.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
    <summary type="html">&lt;p&gt;In the last project I worked on, some parts in the page should only be shown to privileged users. As easy as it would be to just add that bit of logic in a &lt;code&gt;render&lt;/code&gt; method, it would not be idiomatic React, and it would also get cumbersome when the validation logic becomes more complex, besides the fact that we would have to add similar logic in many places in the code. DRY, as they say.&lt;/p&gt;</summary>
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="pattern" scheme="https://sergimansilla.com/tags/pattern/"/>
    
    <category term="permission" scheme="https://sergimansilla.com/tags/permission/"/>
    
    <category term="privileged" scheme="https://sergimansilla.com/tags/privileged/"/>
    
    <category term="react" scheme="https://sergimansilla.com/tags/react/"/>
    
  </entry>
  
  <entry>
    <title>Real World Observables</title>
    <link href="https://sergimansilla.com/blog/real-world-observables/"/>
    <id>https://sergimansilla.com/blog/real-world-observables/</id>
    <published>2016-05-03T16:33:21.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
    <summary type="html">&lt;p&gt;Reactive code examples can be mind-blowing. Powerful, succint, robust…they seem to handle many concurrency scenarios without breaking a sweat. But let’s be honest, examples from 30-minute conference talks and short blog posts rarely reflect the messy real world™.&lt;/p&gt;
&lt;p&gt;In any case, developers get all pumped up about reactive goodness and want to use it in their projects. Alas, they quickly find out that it’s not all reactive unicorns and rainbows, and that thinking of state in traditional programs as a sequence of events is not trivial.&lt;/p&gt;
&lt;p&gt;I will attempt to shed some light on how to do that by writing a real world example in a few lines of RxJS: An FTP client.&lt;/p&gt;</summary>
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="nodejs" scheme="https://sergimansilla.com/tags/nodejs/"/>
    
    <category term="ftp" scheme="https://sergimansilla.com/tags/ftp/"/>
    
    <category term="node.js" scheme="https://sergimansilla.com/tags/node-js/"/>
    
    <category term="observables" scheme="https://sergimansilla.com/tags/observables/"/>
    
    <category term="repl" scheme="https://sergimansilla.com/tags/repl/"/>
    
    <category term="rxjs" scheme="https://sergimansilla.com/tags/rxjs/"/>
    
  </entry>
  
  <entry>
    <title>Firefox disabled my extensions</title>
    <link href="https://sergimansilla.com/blog/firefox-disabled-my-extensions/"/>
    <id>https://sergimansilla.com/blog/firefox-disabled-my-extensions/</id>
    <published>2015-08-13T18:25:48.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
    <summary type="html">&lt;p&gt;Firefox—my browser of choice—just updated to version 41 beta. It turns out that from this version on, &lt;a href=&quot;https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox?as=u&amp;utm_source=inproduct&quot;&gt;any extension that hasn’t been signed by Mozilla is disabled automatically&lt;/a&gt;. Firefox didn’t warn me about that. I had to go to the Add-ons panel to check why some of my extensions were not working, only to find that they were disabled. And I can’t seem to find a place in the UI to opt out and allow unsigned extensions in my browser. And, you know, it’s not that I use obscure extensions made by shady developers that don’t care about security. The disabled extensions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://agilebits.com/onepassword&quot;&gt;1password (Agilebits)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.eff.org/Https-Everywhere&quot;&gt;HTTPS Everywhere (EFF)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.eff.org/privacybadger&quot;&gt;Privacy Badger (EFF)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://facebook.github.io/react/blog/2015/08/03/new-react-devtools-beta.html&quot;&gt;React Devtools (Facebook)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    
    <category term="firefox" scheme="https://sergimansilla.com/tags/firefox/"/>
    
    <category term="rant" scheme="https://sergimansilla.com/tags/rant/"/>
    
  </entry>
  
  <entry>
    <title>Making geolocation work on Geeksphone devices</title>
    <link href="https://sergimansilla.com/blog/making-geolocation-work-on-geeksphone-devices/"/>
    <id>https://sergimansilla.com/blog/making-geolocation-work-on-geeksphone-devices/</id>
    <published>2014-05-01T05:28:11.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;&lt;em&gt;This post is written for my own reference, in order to document the steps for getting geolocation working on Geeksphone</summary>
        
      
    
    
    
    
    <category term="firefoxos" scheme="https://sergimansilla.com/tags/firefoxos/"/>
    
    <category term="hardware" scheme="https://sergimansilla.com/tags/hardware/"/>
    
    <category term="android" scheme="https://sergimansilla.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>Extending JavaScript with inline unit tests</title>
    <link href="https://sergimansilla.com/blog/extending-js-inline-unit-tests/"/>
    <id>https://sergimansilla.com/blog/extending-js-inline-unit-tests/</id>
    <published>2013-11-09T20:56:57.000Z</published>
    <updated>2025-11-24T09:13:54.248Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;I’ve been checking out &lt;a href=&quot;http://www.pyret.org/&quot;&gt;Pyret&lt;/a&gt;, the new language from the same guys that made &lt;a</summary>
        
      
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="macros" scheme="https://sergimansilla.com/tags/macros/"/>
    
    <category term="pyret" scheme="https://sergimansilla.com/tags/pyret/"/>
    
    <category term="racket" scheme="https://sergimansilla.com/tags/racket/"/>
    
    <category term="sweetjs" scheme="https://sergimansilla.com/tags/sweetjs/"/>
    
    <category term="testing" scheme="https://sergimansilla.com/tags/testing/"/>
    
  </entry>
  
  <entry>
    <title>Add code coverage to your Node.js projects</title>
    <link href="https://sergimansilla.com/blog/test-coverage-node/"/>
    <id>https://sergimansilla.com/blog/test-coverage-node/</id>
    <published>2013-06-19T19:13:00.000Z</published>
    <updated>2025-11-24T09:13:54.250Z</updated>
    
    
    <summary type="html">&lt;p&gt;&lt;strong&gt;Note: This blog post is inspired on &lt;a href=&quot;http://xseignard.github.io/2013/04/25/quality-analysis-on-node.js-projects-with-mocha-istanbul-and-sonar/&quot;&gt;Xavier Seignard’s blog post&lt;/a&gt;. He gives a longer introduction on it, and integrates it together with &lt;a href=&quot;http://www.sonarqube.org/&quot;&gt;Sonar&lt;/a&gt;. You should check it out.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Code coverage is convenient to get an overview of how well-tested your program is. I’m going to show you how to set up code coverage using &lt;a href=&quot;http://visionmedia.github.io/mocha/&quot;&gt;Mocha&lt;/a&gt;, &lt;a href=&quot;https://github.com/gotwarlost/istanbul&quot;&gt;Istanbul&lt;/a&gt; and &lt;a href=&quot;http://ltp.sourceforge.net/coverage/lcov.php&quot;&gt;LCOV&lt;/a&gt; in two easy steps.&lt;/p&gt;</summary>
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="testing" scheme="https://sergimansilla.com/tags/testing/"/>
    
    <category term="node.js" scheme="https://sergimansilla.com/tags/node-js/"/>
    
    <category term="coverage" scheme="https://sergimansilla.com/tags/coverage/"/>
    
    <category term="istanbul" scheme="https://sergimansilla.com/tags/istanbul/"/>
    
    <category term="lcov" scheme="https://sergimansilla.com/tags/lcov/"/>
    
  </entry>
  
  <entry>
    <title>Virtual list in vanilla JavaScript</title>
    <link href="https://sergimansilla.com/blog/virtual-scrolling/"/>
    <id>https://sergimansilla.com/blog/virtual-scrolling/</id>
    <published>2013-05-12T19:20:28.000Z</published>
    <updated>2025-11-24T09:13:54.250Z</updated>
    
    
    <summary type="html">&lt;p&gt;Let’s say you need to show a scrolling list with millions of rows, or even a reasonably big list with visually complex rows, each one composed by several DOM elements or CSS3 effects.&lt;/p&gt;
&lt;p&gt;If you try to render this the naive way, for example by appending rows into a DOM container with the CSS  &lt;code&gt;overflow&lt;/code&gt; property set to &lt;code&gt;scroll&lt;/code&gt; (or &lt;code&gt;auto&lt;/code&gt;), you will most likely run into performance issues. This is because all the items in the list are cached, thus your memory consumption will certainly go up, and since all the DOM nodes composing the rows of the list are appended in the document, the browser is trying to properly render them all making your CPU pretty busy as you scroll. If these rows change any style say, on hover, you will trigger a &lt;a href=&quot;http://www-archive.mozilla.org/newlayout/doc/reflow.html&quot;&gt;reflow&lt;/a&gt; and the experience will be even more sluggish.&lt;/p&gt;</summary>
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="browser" scheme="https://sergimansilla.com/tags/browser/"/>
    
    <category term="rendering" scheme="https://sergimansilla.com/tags/rendering/"/>
    
    <category term="performance" scheme="https://sergimansilla.com/tags/performance/"/>
    
  </entry>
  
  <entry>
    <title>Implement cursor-swiping in half an afternoon</title>
    <link href="https://sergimansilla.com/blog/swipeselection-in-an-afternoon/"/>
    <id>https://sergimansilla.com/blog/swipeselection-in-an-afternoon/</id>
    <published>2013-02-21T13:21:20.000Z</published>
    <updated>2025-11-24T09:13:54.250Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;If you haven’t seen it yet, I suggest that you take a look at this concept video that made the rounds on the internet some months</summary>
        
      
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="firefox" scheme="https://sergimansilla.com/tags/firefox/"/>
    
    <category term="firefoxos" scheme="https://sergimansilla.com/tags/firefoxos/"/>
    
    <category term="device" scheme="https://sergimansilla.com/tags/device/"/>
    
    <category term="mobile" scheme="https://sergimansilla.com/tags/mobile/"/>
    
    <category term="os" scheme="https://sergimansilla.com/tags/os/"/>
    
  </entry>
  
  <entry>
    <title>The promise of Firefox OS</title>
    <link href="https://sergimansilla.com/blog/promise-of-ffos/"/>
    <id>https://sergimansilla.com/blog/promise-of-ffos/</id>
    <published>2013-02-09T18:57:30.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;“But &lt;em&gt;how&lt;/em&gt; is it going to beat Android or iOS?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That’s the reaction many people have when I tell them that I am working on &lt;a href=&quot;http://www.mozilla.org/en-US/firefoxos/&quot;&gt;Firefox OS&lt;/a&gt;, the new mobile operating system from &lt;a href=&quot;http://www.mozilla.org/en-US/&quot;&gt;Mozilla&lt;/a&gt;. It is a logical reaction. After all, we live in times where every major software company and its mother is releasing a mobile platform, struggling to lure developers into their new proprietary environment, APIs, libraries, etc. And indeed, many of these companies &lt;a href=&quot;http://global.blackberry.com/sites.html&quot;&gt;barely make it&lt;/a&gt; or &lt;a href=&quot;http://www.hpwebos.com/us/&quot;&gt;don’t make it at all&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But Firefox OS will not be directly battling against other mobile platforms. Its main objective is to change the way the world develops mobile apps, and even in the unlikely event that Firefox OS itself disappears in the process, if web-apps become mainstream, it will have succeeded.&lt;/p&gt;</summary>
    
    
    
    
    <category term="Technology" scheme="https://sergimansilla.com/tags/Technology/"/>
    
    <category term="firefox" scheme="https://sergimansilla.com/tags/firefox/"/>
    
    <category term="firefoxos" scheme="https://sergimansilla.com/tags/firefoxos/"/>
    
    <category term="android" scheme="https://sergimansilla.com/tags/android/"/>
    
    <category term="Mobile" scheme="https://sergimansilla.com/tags/Mobile/"/>
    
  </entry>
  
  <entry>
    <title>Moving on</title>
    <link href="https://sergimansilla.com/blog/moving-on/"/>
    <id>https://sergimansilla.com/blog/moving-on/</id>
    <published>2013-01-29T19:04:18.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
    <summary type="html">&lt;p&gt;A little bit more than two years ago I was sitting on a meeting room, listening to Ruben Daniels and Rik Arends, the two founders of the company I was considering to join, &lt;a href=&quot;http://c9.io/&quot;&gt;Cloud9 IDE&lt;/a&gt;. These were two of the smartest, most inspiring people I’ve met, and they were working hard on a ground-breaking concept: a full-fledged development environment that run in the browser, and in the cloud. At the time, that sounded wildly adventurous, to say the least. But the challenges were so many, the concept so revolutionary and the people so inspiring that I joined the company two weeks after that conversation. &lt;/p&gt;</summary>
    
    
    
    
    <category term="life" scheme="https://sergimansilla.com/tags/life/"/>
    
    <category term="Technology" scheme="https://sergimansilla.com/tags/Technology/"/>
    
    <category term="firefoxos" scheme="https://sergimansilla.com/tags/firefoxos/"/>
    
    <category term="cloud9" scheme="https://sergimansilla.com/tags/cloud9/"/>
    
  </entry>
  
  <entry>
    <title>Nodejsconf in Italy</title>
    <link href="https://sergimansilla.com/blog/nodejs-conference-italy-2012/"/>
    <id>https://sergimansilla.com/blog/nodejs-conference-italy-2012/</id>
    <published>2012-11-12T19:08:36.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Last weekend I was at the &lt;a href=&quot;http://nodejsconf.it/&quot;&gt;Node.js conference&lt;/a&gt; in Brescia, Italy. Like every year the organizers</summary>
        
      
    
    
    
    
    <category term="Technology" scheme="https://sergimansilla.com/tags/Technology/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="conference" scheme="https://sergimansilla.com/tags/conference/"/>
    
    <category term="italy" scheme="https://sergimansilla.com/tags/italy/"/>
    
    <category term="nodejs" scheme="https://sergimansilla.com/tags/nodejs/"/>
    
  </entry>
  
  <entry>
    <title>My talk at DynCon 2011</title>
    <link href="https://sergimansilla.com/blog/my-talk-at-dyncon-2011/"/>
    <id>https://sergimansilla.com/blog/my-talk-at-dyncon-2011/</id>
    <published>2011-04-04T17:09:04.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;The video with my talk about &lt;a href=&quot;http://c9.io/&quot;&gt;Cloud9 IDE&lt;/a&gt; at &lt;a href=&quot;http://swdc-central.com/dyncon2011/&quot;&gt;DynCon 2011&lt;/a&gt; is</summary>
        
      
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="conference" scheme="https://sergimansilla.com/tags/conference/"/>
    
    <category term="dyncon" scheme="https://sergimansilla.com/tags/dyncon/"/>
    
    <category term="Talks" scheme="https://sergimansilla.com/tags/Talks/"/>
    
  </entry>
  
  <entry>
    <title>Dynamically generating MIDI in JavaScript</title>
    <link href="https://sergimansilla.com/blog/dynamically-generating-midi-in-javascript/"/>
    <id>https://sergimansilla.com/blog/dynamically-generating-midi-in-javascript/</id>
    <published>2010-11-08T21:09:38.000Z</published>
    <updated>2025-11-24T09:13:54.248Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Last weekend I open-sourced a &lt;a href=&quot;https://github.com/sergi/jsmidi&quot;&gt;small side project&lt;/a&gt; consisting of a JavaScript library that</summary>
        
      
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="audio" scheme="https://sergimansilla.com/tags/audio/"/>
    
    <category term="browser" scheme="https://sergimansilla.com/tags/browser/"/>
    
    <category term="w3c" scheme="https://sergimansilla.com/tags/w3c/"/>
    
    <category term="midi" scheme="https://sergimansilla.com/tags/midi/"/>
    
  </entry>
  
  <entry>
    <title>Writing a JavaScript interpreter for DBN using PEG.js and canvas (Part II)</title>
    <link href="https://sergimansilla.com/blog/writing-a-javascript-interpreter-for-dbn-using-canvas-ii/"/>
    <id>https://sergimansilla.com/blog/writing-a-javascript-interpreter-for-dbn-using-canvas-ii/</id>
    <published>2010-08-20T19:32:04.000Z</published>
    <updated>2025-11-24T09:13:54.250Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;&lt;strong&gt;In this article I build an interpreter for the DBN language from the parsed AST generated by the grammar we defined &lt;a</summary>
        
      
    
    
    
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="canvas" scheme="https://sergimansilla.com/tags/canvas/"/>
    
    <category term="dbn" scheme="https://sergimansilla.com/tags/dbn/"/>
    
    <category term="html5" scheme="https://sergimansilla.com/tags/html5/"/>
    
    <category term="interpreter" scheme="https://sergimansilla.com/tags/interpreter/"/>
    
    <category term="language" scheme="https://sergimansilla.com/tags/language/"/>
    
    <category term="lexer" scheme="https://sergimansilla.com/tags/lexer/"/>
    
    <category term="parser" scheme="https://sergimansilla.com/tags/parser/"/>
    
    <category term="peg" scheme="https://sergimansilla.com/tags/peg/"/>
    
    <category term="pegjs" scheme="https://sergimansilla.com/tags/pegjs/"/>
    
  </entry>
  
  <entry>
    <title>Writing a JavaScript interpreter for DBN using PEG.js and canvas (Part I)</title>
    <link href="https://sergimansilla.com/blog/writing-a-javascript-interpreter-for-dbn-using-canvas-i/"/>
    <id>https://sergimansilla.com/blog/writing-a-javascript-interpreter-for-dbn-using-canvas-i/</id>
    <published>2010-08-03T06:03:43.000Z</published>
    <updated>2025-11-24T09:13:54.250Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;&lt;strong&gt;&lt;em&gt;In this first part of the article, I will define a grammar for DBN (Design By Numbers) and generate a parser for it that</summary>
        
      
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="canvas" scheme="https://sergimansilla.com/tags/canvas/"/>
    
    <category term="dbn" scheme="https://sergimansilla.com/tags/dbn/"/>
    
    <category term="html5" scheme="https://sergimansilla.com/tags/html5/"/>
    
    <category term="interpreter" scheme="https://sergimansilla.com/tags/interpreter/"/>
    
    <category term="language" scheme="https://sergimansilla.com/tags/language/"/>
    
    <category term="lexer" scheme="https://sergimansilla.com/tags/lexer/"/>
    
    <category term="parser" scheme="https://sergimansilla.com/tags/parser/"/>
    
    <category term="peg" scheme="https://sergimansilla.com/tags/peg/"/>
    
    <category term="pegjs" scheme="https://sergimansilla.com/tags/pegjs/"/>
    
    <category term="token" scheme="https://sergimansilla.com/tags/token/"/>
    
  </entry>
  
  <entry>
    <title>GitHub in Catalan</title>
    <link href="https://sergimansilla.com/blog/github-in-catalan/"/>
    <id>https://sergimansilla.com/blog/github-in-catalan/</id>
    <published>2010-07-28T19:34:19.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;This is awesome. From now on, Catalan users of GitHub can use the website in their native language. Thanks to the Github team initiative</summary>
        
      
    
    
    
    
    <category term="Technology" scheme="https://sergimansilla.com/tags/Technology/"/>
    
    <category term="catalan" scheme="https://sergimansilla.com/tags/catalan/"/>
    
    <category term="github" scheme="https://sergimansilla.com/tags/github/"/>
    
    <category term="i18n" scheme="https://sergimansilla.com/tags/i18n/"/>
    
  </entry>
  
  <entry>
    <title>Blog running on Jekyll now</title>
    <link href="https://sergimansilla.com/blog/blog-running-on-jekyll-now/"/>
    <id>https://sergimansilla.com/blog/blog-running-on-jekyll-now/</id>
    <published>2010-04-13T19:35:50.000Z</published>
    <updated>2025-11-24T09:13:54.248Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;That’s right, I couldn’t resist switching to &lt;a href=&quot;http://github.com/mojombo/jekyll&quot;&gt;Jekyll&lt;/a&gt;. I feel so free now! For those who</summary>
        
      
    
    
    
    
    <category term="blog" scheme="https://sergimansilla.com/tags/blog/"/>
    
    <category term="jekyll" scheme="https://sergimansilla.com/tags/jekyll/"/>
    
    <category term="life" scheme="https://sergimansilla.com/tags/life/"/>
    
    <category term="Technology" scheme="https://sergimansilla.com/tags/Technology/"/>
    
  </entry>
  
  <entry>
    <title>ABN Amro to Wesabe script</title>
    <link href="https://sergimansilla.com/blog/abn-amro-to-wesabe-script/"/>
    <id>https://sergimansilla.com/blog/abn-amro-to-wesabe-script/</id>
    <published>2009-02-25T21:37:40.000Z</published>
    <updated>2025-11-24T09:13:54.248Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;&lt;a href=&quot;http://www.wesabe.com/&quot;&gt;Wesabe&lt;/a&gt; is a great service. And a very big part of its greatness resides in the fact that it</summary>
        
      
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
  </entry>
  
  <entry>
    <title>YQL mashup with GWT</title>
    <link href="https://sergimansilla.com/blog/yql-mashup-with-gwt/"/>
    <id>https://sergimansilla.com/blog/yql-mashup-with-gwt/</id>
    <published>2008-11-16T21:40:04.000Z</published>
    <updated>2025-11-24T09:13:54.250Z</updated>
    
    
    <summary type="html">&lt;p&gt;Yahoo came up with YQL a few weeks ago, and I think it is a very interesting idea. It is basically a SQL-like language that allows developers to retrieve structured data from multiple Yahoo web services without having to deal with each service particularities; developers can query any service in a generic way, just like they would do retrieving rows and columns from a SQL database.&lt;/p&gt;</summary>
    
    
    
    
    <category term="programming" scheme="https://sergimansilla.com/tags/programming/"/>
    
    <category term="javascript" scheme="https://sergimansilla.com/tags/javascript/"/>
    
    <category term="gwt" scheme="https://sergimansilla.com/tags/gwt/"/>
    
    <category term="java" scheme="https://sergimansilla.com/tags/java/"/>
    
  </entry>
  
  <entry>
    <title>Solitaire Encryption Algorithm implementation in F#</title>
    <link href="https://sergimansilla.com/blog/solitaire-encryption-algorithm-implementation-in-f/"/>
    <id>https://sergimansilla.com/blog/solitaire-encryption-algorithm-implementation-in-f/</id>
    <published>2008-10-13T19:45:48.000Z</published>
    <updated>2025-11-24T09:13:54.250Z</updated>
    
    
    <summary type="html">&lt;p&gt;I first read about the &lt;a href=&quot;http://www.schneier.com/solitaire.html&quot;&gt;Solitaire algorithm&lt;/a&gt; in the novel &lt;a href=&quot;http://en.wikipedia.org/wiki/Cryptonomicon&quot;&gt;Cryptonomicon&lt;/a&gt;, by Neal Stephenson. Being a geeky kid fascinated by computers I thought that it was a brilliant idea, but my curiosity didn’t go so far as to make me write an implementation of it (you can find a perl version in the book, which by the way I consider to be another great way to encrypt information).&lt;/p&gt;
&lt;p&gt;Solitaire is a &lt;a href=&quot;http://en.wikipedia.org/wiki/Stream_cipher&quot;&gt;Stream Cipher&lt;/a&gt; created by &lt;a href=&quot;http://www.schneier.com/&quot;&gt;Bruce Schneier&lt;/a&gt; and designed to be used with only a deck of cards. No electronic devices are needed and its security is intended to be of military-strength; that means that even if the way to generate&amp;#x2F;decipher messages is manual and might look a bit rudimentary, ideally not even the most powerful government could ever decipher a message generated with Solitaire (although some potential flaws have been &lt;a href=&quot;http://www.ciphergoth.org/crypto/solitaire&quot;&gt;reported&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;So after playing with &lt;a href=&quot;http://research.microsoft.com/fsharp/fsharp.aspx&quot;&gt;F#&lt;/a&gt; lately, I decided to write some non-trivial code in order to see how it suits my coding style and habits, and yet another naive implementation of this curious crypto-algorithm was born.&lt;/p&gt;</summary>
    
    
    
    
    <category term="algorithm" scheme="https://sergimansilla.com/tags/algorithm/"/>
    
    <category term="cryptography" scheme="https://sergimansilla.com/tags/cryptography/"/>
    
    <category term="encryption" scheme="https://sergimansilla.com/tags/encryption/"/>
    
    <category term="fsharp" scheme="https://sergimansilla.com/tags/fsharp/"/>
    
  </entry>
  
  <entry>
    <title>Nth attempt</title>
    <link href="https://sergimansilla.com/blog/nth-attempt/"/>
    <id>https://sergimansilla.com/blog/nth-attempt/</id>
    <published>2008-10-08T19:50:36.000Z</published>
    <updated>2025-11-24T09:13:54.249Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Yes, I am blogging again. But this time I have a plan. My last blog tried to cover too many things, from my life abroad, to ramblings on</summary>
        
      
    
    
    
    
    <category term="life" scheme="https://sergimansilla.com/tags/life/"/>
    
  </entry>
  
</feed>
