<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>mobile racing with desktop monitors</description><title>Luca Matteis</title><generator>Tumblr (3.0; @lmatteis)</generator><link>http://lucaa.org/</link><item><title>Apps Script lets you build powerful HTTP APIs</title><description>&lt;p&gt;I heard of &lt;a href="https://developers.google.com/apps-script/"&gt;Apps Script&lt;/a&gt; a while ago. Sometimes an interesting news item appears on my Google+ feed, showing some cool functionality that you can achieve with these so called &amp;#8220;scripts&amp;#8221;. I never dug deeper than that, I felt it was just some automation that you could do with your spreadsheets, it was nothing special.&lt;/p&gt;
&lt;p&gt;I couldn&amp;#8217;t be more wrong.&lt;br/&gt;&lt;br/&gt;You write server-side JavaScript that runs on Google’s servers. You even get a nice HTML5 interface for writing such code. This script can do a whole lot of things. It can use most of Google’s APIs: CloudSQL, BigQuery, Spreadsheets, you name it. The &lt;a href="https://developers.google.com/apps-script/defaultservices"&gt;API&lt;/a&gt;s are quite simple to use. The very cool thing is that you can choose to execute such script using a simple HTTP request, and it will respond promptly. In essence a Script can become a tiny web server.&lt;/p&gt;
&lt;p&gt;For example, imagine I have this code in my Script:&lt;/p&gt;
&lt;pre&gt;function doGet(e) {&lt;br/&gt;  var output = ContentService.createTextOutput()&lt;br/&gt;  output.setMimeType(ContentService.MimeType.TEXT)&lt;br/&gt;  output.setContent('Hello World!')&lt;br/&gt;  return output&lt;br/&gt;}&lt;/pre&gt;
&lt;p&gt;Whenever you save the project, you get a URL you can use to make this script run (such as &lt;a href="https://script.google.com/macros/s/AKfy..."&gt;https://script.google.com/macros/s/AKfy&amp;#8230;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;As you can see the &lt;strong&gt;doGet(e)&lt;/strong&gt; function is called whenever my script is accessed through an HTTP GET request. The &lt;strong&gt;e&lt;/strong&gt; argument contains information about the request (query parameters and such). And in the content I’m simply setting a mime-type for the response - this will be set directly in my HTTP response header. You can of course use &lt;strong&gt;doPost(e)&lt;/strong&gt; as well for incoming POST requests; yes you can upload files too!&lt;/p&gt;
&lt;h3&gt;Storage&lt;/h3&gt;
&lt;p&gt;Cool so now we have a little HTTP server that can answer to our requests, and can do all kinds of funky things with Google’s services. Let’s try and deal with persistency a bit. Like say we want to store some data, so that subsequent requests can access this information!&lt;/p&gt;
&lt;p&gt;Well that couldn’t be easier thanks to &lt;a href="https://developers.google.com/apps-script/scriptdb"&gt;ScriptDB&lt;/a&gt;, a minimal API Google has available specifically for this functionality. It’s basically a JavaScript object storage - any data-structure available in JS can also be stored in ScriptDB. I love it! I feel like all storage abstractions should directly map to the language’s standard data-structure. Here’s an example of how ScriptDB works (yes, that’s semicolon-less JavaScript):&lt;/p&gt;
&lt;pre&gt;var sam = {&lt;br/&gt;    name: 'Sam',&lt;br/&gt;    age: 33,&lt;br/&gt;    hobbies: ['soccer', 'movies'],&lt;br/&gt;    son: {&lt;br/&gt;      name: 'Dimitri',&lt;br/&gt;      age: 18&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;var db = ScriptDb.getMyDb()&lt;br/&gt;db.save(sam)&lt;/pre&gt;
&lt;p&gt;It’s important to note that each script gets its own database, so the persistency happens at the Script’s level. The limitation are a bit annoying. Only 50mb for regular account. But I think there’s ways to increase that, like if you get a Google Apps account. This is not meant for any binary data - there&amp;#8217;s Google Drive for that - so 50mb might be enough for most apps.&lt;/p&gt;
&lt;p&gt;Of course if you need a large database, then &lt;a href="https://developers.google.com/apps-script/service_bigquery"&gt;BigQuery&lt;/a&gt; would be a better fit. Personally I prefer the simple API approach of ScriptDB.&lt;/p&gt;
&lt;h3&gt;Let’s go a bit deeper&lt;/h3&gt;
&lt;p&gt;Well that was easy! We created a web-server that stored stuff in Google’s database. What now? How do we use all these goodies? One thing that comes to mind is that I’d want to build a JSON API of some sort. So let’s start by outputting some JSON!&lt;/p&gt;
&lt;pre&gt;function doGet(e) {&lt;br/&gt;  var output = ContentService.createTextOutput()&lt;br/&gt;  output.setMimeType(ContentService.MimeType.JSON)&lt;br/&gt;  var content = { Foo: 'Bar' }&lt;br/&gt;  output.setContent(JSON.stringify(content))&lt;br/&gt;  return output&lt;br/&gt;}&lt;/pre&gt;
&lt;p&gt;So whenever I access my deployed Script URL I should get a nice JSON (with correct mime-type headers): &lt;strong&gt;{&amp;#8220;Foo&amp;#8221;:&amp;#8221;Bar&amp;#8221;}&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is very useful, but wouldn’t it be more awesome if I could use this data directly from within my HTML website? Unfortunately I cannot directly make an Ajax request to this Script’s URL because it lives on Google’s domain, and cross-site Ajax requests are a well known security issue, and are not allowed in web-browsers.&lt;/p&gt;
&lt;p&gt;Don’t worry, &lt;a href="http://en.wikipedia.org/wiki/JSONP"&gt;JSONP&lt;/a&gt; to the rescue. If you wrap the JSON inside a regular function, this data can be fetched directly within your HTML page, no matter what domain it is on.&lt;/p&gt;
&lt;pre&gt;var callback = e.parameter.callback&lt;br/&gt;var jsonString = JSON.stringify(content)&lt;br/&gt;output.setContent(callback + '(' + jsonString + ');')&lt;/pre&gt;
&lt;p&gt;And then you call your Script URL adding the&amp;#160;?callback=test query parameter: &lt;a href="https://script.google.com/macros/s/AK../exec"&gt;https://script.google.com/macros/s/AK../exec&lt;/a&gt;&lt;strong&gt;?callback=test&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Abstractions getting higher and higher&lt;/h3&gt;
&lt;p&gt;So we can write HTTP JSON APIs using server-side JavaScript and the richness of Google’s Services. This is mind blowing. The easiness of use and the complexity that it abstracts, is outstanding.&lt;/p&gt;
&lt;p&gt;This allows us to build really complex apps, with less and less effort. I imagine myself &lt;a href="http://lucaa.org/post/27983862986/interface-is-all-that-matters"&gt;concentrating on the user interface&lt;/a&gt; of my product. Building all the HTML/CSS that I need, and &lt;a href="https://medium.com/design-startups/a174d76e282f"&gt;going deep on the user experience&lt;/a&gt; without worrying much about the backend. When I need persistency I can simply write an Apps Script, with a JSON API, and immediately feed into Google’s most powerful services.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://news.ycombinator.com/item?id=4909541"&gt;Comments on Hacker News&lt;/a&gt;&lt;/p&gt;</description><link>http://lucaa.org/post/37781725138</link><guid>http://lucaa.org/post/37781725138</guid><pubDate>Wed, 12 Dec 2012 06:03:00 -0500</pubDate></item><item><title>Lisboa!</title><description>&lt;p&gt;Lisbon was great. I went there to attend &lt;a href="http://2012.lxjs.org/"&gt;LXJS&lt;/a&gt;, which turned out to be a really awesome conference about JavaScript. What I liked about the conference is that it was very casual, but at the same time it had lots of quality speakers, the top-notch of the Node.js community.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-ncMZ-cmEYGc/UGxpAFSSxpI/AAAAAAAABFg/16ePtj5i2gw/s1000/DSCF0446.JPG"&gt;&lt;img alt="image" src="https://lh3.googleusercontent.com/-ncMZ-cmEYGc/UGxpAFSSxpI/AAAAAAAABFg/16ePtj5i2gw/s500/DSCF0446.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh5.googleusercontent.com/-73ozS7jtEtI/UGxo-9qtw7I/AAAAAAAABFc/j8zIXHQFQsE/s1000/DSCF0461.JPG"&gt;&lt;img alt="image" src="https://lh5.googleusercontent.com/-73ozS7jtEtI/UGxo-9qtw7I/AAAAAAAABFc/j8zIXHQFQsE/s500/DSCF0461.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lisboa is a small city compared to Rome, but it delivers very efficiently. A public transport system that allows you to reach most of the city with a daily pass of just 5 euros.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-ukJ1yPAiJOo/UGxoPENuBDI/AAAAAAAABDc/kVsstF5hVI4/s1000/DSCF0300.JPG"&gt;&lt;img alt="image" src="https://lh3.googleusercontent.com/-ukJ1yPAiJOo/UGxoPENuBDI/AAAAAAAABDc/kVsstF5hVI4/s500/DSCF0300.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-73kZkuheEIU/UGxoRRvNWsI/AAAAAAAABDs/Qti1PooVYOs/s1000/DSCF0315.JPG"&gt;&lt;img alt="image" src="https://lh3.googleusercontent.com/-73kZkuheEIU/UGxoRRvNWsI/AAAAAAAABDs/Qti1PooVYOs/s500/DSCF0315.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="center"&gt;They really had great food at this bar. Typical Portuguese cuisine&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh4.googleusercontent.com/-vD-ysEIJTZM/UGxohO_DVQI/AAAAAAAABEM/_PNIwkjSIUw/s1000/DSCF0378.JPG"&gt;&lt;img alt="image" src="https://lh4.googleusercontent.com/-vD-ysEIJTZM/UGxohO_DVQI/AAAAAAAABEM/_PNIwkjSIUw/s500/DSCF0378.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="center"&gt;Some skateboarders and an interesting pink guy&lt;/p&gt;
&lt;p class="center"&gt;&lt;a href="https://lh5.googleusercontent.com/-2zL1ijSgUuQ/UGxopVK3-3I/AAAAAAAABEk/UWCmrkL1_9s/s1000/DSCF0406.JPG"&gt;&lt;img alt="image" src="https://lh5.googleusercontent.com/-2zL1ijSgUuQ/UGxopVK3-3I/AAAAAAAABEk/UWCmrkL1_9s/s500/DSCF0406.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-s4wB1tc4Suo/UGxosxDP6rI/AAAAAAAABE0/Rn-MYybTJqA/s1000/DSCF0407.JPG"&gt;&lt;img alt="image" src="https://lh3.googleusercontent.com/-s4wB1tc4Suo/UGxosxDP6rI/AAAAAAAABE0/Rn-MYybTJqA/s500/DSCF0407.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh6.googleusercontent.com/-dECjwp6FDzQ/UGxo3dwEIAI/AAAAAAAABFE/AT6YhcTdpFc/s1000/DSCF0423.JPG"&gt;&lt;img alt="image" src="https://lh6.googleusercontent.com/-dECjwp6FDzQ/UGxo3dwEIAI/AAAAAAAABFE/AT6YhcTdpFc/s500/DSCF0423.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-XYH5YcF5ixU/UGxpA9p7H9I/AAAAAAAABFs/6WUkQ-9BXrE/s1000/DSCF0525.JPG"&gt;&lt;img alt="image" src="https://lh3.googleusercontent.com/-XYH5YcF5ixU/UGxpA9p7H9I/AAAAAAAABFs/6WUkQ-9BXrE/s500/DSCF0525.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="center"&gt;Portuguese beauty? Maybe not Portuguese :)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh4.googleusercontent.com/-6SccdWIl6iE/UGxpDw2AtCI/AAAAAAAABF0/medCxBqxPW0/s1000/DSCF0648.JPG"&gt;&lt;img alt="image" src="https://lh4.googleusercontent.com/-6SccdWIl6iE/UGxpDw2AtCI/AAAAAAAABF0/medCxBqxPW0/s500/DSCF0648.JPG"/&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://lucaa.org/post/32810214537</link><guid>http://lucaa.org/post/32810214537</guid><pubDate>Wed, 03 Oct 2012 12:49:00 -0400</pubDate></item><item><title>Got my new toy today. A Fujifilm X10. Was lucky enough to shoot...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_maid7oqXsF1qz73s3o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Got my new toy today. A Fujifilm X10. Was lucky enough to shoot a praying mantis laying on my mosquito tent. It was actually praying! &lt;/p&gt;</description><link>http://lucaa.org/post/31742227484</link><guid>http://lucaa.org/post/31742227484</guid><pubDate>Mon, 17 Sep 2012 15:09:00 -0400</pubDate></item><item><title>Forget About The Backend Stack</title><description>&lt;p&gt;I think I&amp;#8217;ve shown &lt;a href="http://lucaa.org/post/27983862986/interface-is-all-that-matters"&gt;how important user interface is&lt;/a&gt; for me. Most of my web development happens in the Browser. This is essentially where I concentrate most of my time, trying to make my interface work well on all platforms and devices.&lt;/p&gt;
&lt;p&gt;When I&amp;#8217;m finished with this part, then I have to worry about the data, the authentication, and everything that revolves around persistency. I rely on a backend - which is basically a server located somewhere - for the &lt;strong&gt;state &lt;/strong&gt;of my application.&lt;/p&gt;
&lt;p&gt;And this sucks, because now I have to go find a good server where I can keep all this state on. Sometimes I use App Engine, which works great and it&amp;#8217;s mostly free, sometimes I use Heroku running some Node.js server.&lt;/p&gt;
&lt;p&gt;But it&amp;#8217;s still a different code base which I have to maintain. And it&amp;#8217;s kind of unrelated to my app if you think about it. My app is my interface, which I&amp;#8217;ve built using HTML/CSS and JavaScript. I shouldn&amp;#8217;t have to worry about how to develop and maintain all of the state for my app in another codebase - my interface already manages that.&lt;/p&gt;
&lt;p&gt;With powerful frontend frameworks such as &lt;a href="http://angularjs.org/"&gt;AngularJS&lt;/a&gt; and &lt;a href="http://backbonejs.org/"&gt;BackboneJS&lt;/a&gt;, I can literally build the entire logics of my app using very well engineered frontend code. I can abstract the state of my app using Models, and allow all of this logic to exist directly in my browser, and not somewhere on my backend.&lt;/p&gt;
&lt;p&gt;This way I can literally choose different backends for different purposes. For example, geo-spatial data is better stored on an instance of GeoCouch. My frontend app will therefore know how to communicate with this instance whenever it needs that type of data. I do the same for full text search. I have a backend setup just for this - and I query everything I need using old school Ajax, which is of course abstracted underneath an MVC (Model-View-Controller) layer.&lt;/p&gt;
&lt;p&gt;Thanks to new tech coming along such &lt;a href="http://en.wikipedia.org/wiki/Cross-origin_resource_sharing"&gt;CORS&lt;/a&gt; and JSONP (ok not so new) I think this is quickly becoming the new face of web development. Allowing you to forget about your backend stack, and concentrate more on your frontend, which is usually the thing you should be worrying more about anyway.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://news.ycombinator.com/item?id=4532176"&gt;Comments on HN&lt;/a&gt;&lt;/p&gt;</description><link>http://lucaa.org/post/31725799959</link><guid>http://lucaa.org/post/31725799959</guid><pubDate>Mon, 17 Sep 2012 08:18:00 -0400</pubDate><category>web development</category></item><item><title>Being a perv</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_macbxeksWz1qz73s3o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Being a perv&lt;/p&gt;</description><link>http://lucaa.org/post/31519964989</link><guid>http://lucaa.org/post/31519964989</guid><pubDate>Fri, 14 Sep 2012 08:56:00 -0400</pubDate></item><item><title>New Camera</title><description>&lt;p&gt;I&amp;#8217;ve been looking for a new camera. The one I&amp;#8217;ve been using on my current iPhone 3gs is bad. It can take decent pictures with good light, but in places with little light, it&amp;#8217;s just really bad. The new iPhone (5) is going to come out next week, and that&amp;#8217;s going to have a pretty decent camera on it - I&amp;#8217;m not looking for anything fancy, just as long as it can take decent pictures, I&amp;#8217;m happy.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_ma2y5v9Gy41qz76dl.jpg"/&gt;&lt;/p&gt;
&lt;p class="center"&gt;Zeus shot with my iPhone 3gs &lt;/p&gt;
&lt;p&gt;Interesting thing is that you can also buy lenses for the iPhone, which will dramatically improve picture quality.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_ma2y9zCMIH1qz76dl.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;That seems like quite an exaggerated lens, but it&amp;#8217;s certainly doable to use your iPhone to take decent quality pictures.&lt;/p&gt;</description><link>http://lucaa.org/post/31191540937</link><guid>http://lucaa.org/post/31191540937</guid><pubDate>Sun, 09 Sep 2012 07:23:00 -0400</pubDate></item><item><title>Cibarsi.com</title><description>&lt;p&gt;After about a couple of months of really intense work, I&amp;#8217;m happy to show off one of my latest creations: &lt;a href="http://www.cibarsi.com/"&gt;cibarsi.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m9x7k0tGZp1qz76dl.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Essentially it&amp;#8217;s a site that allows small restaurant owners to build their own site, without any technical skills. Think of it as &lt;a href="https://about.me/"&gt;about.me&lt;/a&gt; for restaurants. The issue is that if you own a restaurant and you want to communicate and interact with your online users, you &lt;em&gt;need&lt;/em&gt; a website.&lt;/p&gt;
&lt;p&gt;But the whole &amp;#8220;building a website&amp;#8221; scenario sucks. You&amp;#8217;re stuck with having to contact professionals to build it, and you end up spending thousands of euros in the process. You end up with something that you basically have no control of, and every time you want to make specific changes to your menu or anything else, you have to waste time and energy to contact your &amp;#8220;webmaster&amp;#8221;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m9x7xjNfIW1qz76dl.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;(Little sign I found in a small restaurant in New York. This is when the idea of Cibarsi sparked in my head)&lt;/p&gt;
&lt;p&gt;Cibarsi gets rid of all this extra boilerplate and puts you in charge of everything. With a very basic interface you can edit your menu, change the color schema, add new images, etc. And in the end you get this very basic webpage where you can show off your restaurant and make it visible to your online clients.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s an Italian thing, and restaurants over here are a big deal. It means that there&amp;#8217;s lots of money floating around in the restaurant community. And for small restaurant owners to spend 5-10 euros a month on something they have &lt;em&gt;total&lt;/em&gt; control of, is a pretty good deal.&lt;/p&gt;</description><link>http://lucaa.org/post/30987423130</link><guid>http://lucaa.org/post/30987423130</guid><pubDate>Thu, 06 Sep 2012 05:07:00 -0400</pubDate></item><item><title>Awesome trip on top of the Vesuvius with some friends! The ride...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m9x3jpYGVH1qz73s3o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Awesome trip on top of the Vesuvius with some friends! The ride up the hill was not that bad. Then we also ended up visiting &lt;a href="http://en.wikipedia.org/wiki/Pompeii"&gt;Pompeii&lt;/a&gt;.&lt;/p&gt;</description><link>http://lucaa.org/post/30985640495</link><guid>http://lucaa.org/post/30985640495</guid><pubDate>Tue, 04 Sep 2012 03:31:00 -0400</pubDate></item><item><title>Comparing The Best Agile Tools</title><description>&lt;p&gt;Recently I&amp;#8217;ve been trying to track down some tools that would help me and my team with the process of building software. There&amp;#8217;s so many things involved with development, that it gets really easy to forget to do things.&lt;/p&gt;
&lt;p&gt;Sometimes you simply get lazy and skip certain steps - maybe you forget to test certain parts of your app, or you write a feature just for the sake of getting it out there, without any proper architecture behind it.&lt;/p&gt;
&lt;p&gt;This is when I think &lt;em&gt;Agile Methodologies&lt;/em&gt; become really important. I&amp;#8217;d like to think of them as a set of rules that you follow in order for you (and your users) to stay happy.&lt;/p&gt;
&lt;p&gt;The idea is that you organize yourself, and your team, so that these rules became a daily routine. That everything flows and becomes this transparent thing in your company, where you just do it without much effort. Similarly to how you got used to opening your Text Editor to write something, you&amp;#8217;ll have to get used to Agile Methodologies to build software.&lt;/p&gt;
&lt;p&gt;As for anything that you&amp;#8217;re trying to learn, the best idea is to lessen the burden and give yourself a basic environment to help you train in. Agile tools give you this workflow, with rules to follow in order to build your app, so it&amp;#8217;s a good start to choose a good tool with solid features.&lt;/p&gt;
&lt;p&gt;I know some of you are probably saying that being Agile isn&amp;#8217;t about the tools you use but about how you do things. However, as an agile beginner myself, I think using something with strict workflows involved, would help me, and my colleagues, switch to the agile mindset more easily.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools available&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There are so many tools available that it would&amp;#8217;ve taken me years to review all of them, so instead I decided to obtain some of the best names in the industry, and see what they have to offer.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pivotaltracker.com/"&gt;Pivotal Tracker&lt;/a&gt;. They provide a very guided &lt;a href="http://www.pivotaltracker.com/features#workflow"&gt;workflow&lt;/a&gt; that emphasizes rapid delivery and lots of feedback. Each iteration allows you to show your clients exactly what has been delivered for that given sprint. This level of guidance is important to become trained in continuous deployment and allow it to be part of your development process. It gives you a backlog to organize &lt;em&gt;user stories &lt;/em&gt;- these are requirements expressed from the customer’s point of view (not from yours) - and a very intuitive interface for managing their priority.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.atlassian.com/software/greenhopper/overview"&gt;GreenHopper&lt;/a&gt; (Atlassian). Offers same SCRUM principles as Pivotal. Also very guided sprints. It seems like it has less features compared to PT, but overall they&amp;#8217;re quite similar. You can export very nice graphs to visualize team process and identify bottlenecks.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.blossom.io/"&gt;Blossom&lt;/a&gt;. This seems quite promising. It&amp;#8217;s in its early stages. Can&amp;#8217;t seem to find much about how it manages SCRUM. I can&amp;#8217;t find a way to setup sprints, so this feature is probably left for you to setup, which isn&amp;#8217;t ideal.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://basecamp.com/"&gt;Basecamp&lt;/a&gt;. This tool looks amazing for organizing your high-level work. But it doesn&amp;#8217;t go into the details of actual coding and, for this case, setting up sprints. Ideally an agile tool should provide mechanisms to guide you through the SCRUM process, so not being able to satisfy this need is a negative aspect if you&amp;#8217;re looking for something with very guided workflows.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://trello.com/"&gt;Trello&lt;/a&gt;. They simply provide a nice virtual board where you can drag items around and it kind of puts everybody on the same page. This is nice, but again, if you want a guided workflow for SCRUM, this doesn&amp;#8217;t give you much.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;. Like Basecamp and Trello, GitHub leaves you in charge of setting up your own workflow for doing SCRUM. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Low level comparison&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re looking for something with really guided workflows, my list breaks down to just two tools.&lt;/p&gt;
&lt;pre&gt;            Pivotal     GreenHopper
            Tracker     (Atlassian)

guided
workflow       x             

user
stories        x             x
(bug 
tracking)

backlogs       x             x

manual
sprint                       x

user
assignment     x             x

automatic
sprint         x
calculation

charts         x             x

estimating
stories        x

git/svn
integration    x             x

GitHub
integration    x

third-party             (can only integrate
integrations   x         with Atlassian tools) 

            (through        (through Atlassian
help-desk   third-party         tools)
            integrations) 
&lt;/pre&gt;
&lt;p&gt;All in all, Pivotal Tracker just seems to be much more of a complete product. The &lt;a href="http://www.pivotaltracker.com/features"&gt;video on their website&lt;/a&gt; shows you in great detail the process of managing stories and turning them into working software.&lt;/p&gt;
&lt;p&gt;With weekly iterations and constant communication between developers and product owners, it truly covers the most important aspects of Agile development, through a simple and interactive workflow.&lt;/p&gt;
&lt;p&gt;Finding a product that will accomodate all of your needs is impossible. You need to find what works for you and your team. Personally, if you&amp;#8217;re getting started with Agile, I think Pivotal is a really good choice. Combined with GitHub for code versioning, and &lt;a href="http://www.uservoice.com/"&gt;User Voice&lt;/a&gt; for users&amp;#8217; feedback, you can fully maximize your productivity with simple and interactive processes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://news.ycombinator.com/item?id=4316746"&gt;Comments on Hacker News&lt;/a&gt;.&lt;/p&gt;</description><link>http://lucaa.org/post/28405992396</link><guid>http://lucaa.org/post/28405992396</guid><pubDate>Tue, 31 Jul 2012 07:51:00 -0400</pubDate><category>agile</category><category>agile development</category><category>agile methodologies</category><category>scrum development</category><category>scrum</category></item><item><title>Interface Is All That Matters</title><description>&lt;p&gt;Whenever I begin writing a new Web Application I get all freaked out about choosing my development stack. What database? What language? How should I design my API? Will I need to make it performant? All this incredible amount of bullshit that doesn&amp;#8217;t really matter at the end of the day, all that matters is the final product and the user experience, and I really want to concentrate on that instead of the technicalities.&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t get me wrong. I love talking technology. Trying to figure out what things will make my life easier in the long run is a really interesting topic, but it&amp;#8217;s also very subjective. It&amp;#8217;s hard to predict what&amp;#8217;s going to happen to your app 2 or 3 months after you developed it. Users might have different needs and you might end up having to re-think your system. Plus technology changes so rapidly that you&amp;#8217;ll eventually end up with something that is outdated.&lt;/p&gt;
&lt;p&gt;So I decided to not worry about the future. I decided to develop apps using technologies that will make my life as simple as possible, today. Basically I try to avoid anything that gets in the way of me working on the user experience.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a great quote from Bret Victor about how important User Interface is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Interface matters to me more than anything else, and it always has. I just never realized that. I&amp;#8217;ve spent a lot of time over the years desperately trying to think of a &amp;#8220;thing&amp;#8221; to change the world. I now know why the search was fruitless &amp;#8212; things don&amp;#8217;t change the world. People change the world by using things. The focus must be on the &amp;#8220;using&amp;#8221;, not the &amp;#8220;thing&amp;#8221;. Now that I&amp;#8217;m looking through the right end of the binoculars, I can see a lot more clearly, and there are projects and possibilities that genuinely interest me deeply.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;What stack should you use? &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is surely the million dollar question. Essentially I think that you should use whatever you feel most comfortable with. For example, I like working with JSON - I find it to be a perfect data structure for representing data and I can easily interact with it using any language - so I&amp;#8217;ll try and use a database that supports JSON (CouchDB or MongoDB). I also like very much JavaScript, and since we still can&amp;#8217;t program computers using other senses such as our voice or vision, we must use a programming language, so I choose JS as it allows me to work with JSON in a very straightforward way.&lt;/p&gt;
&lt;p&gt;There you go. Find reasons why you should use certain technologies compared to others. Even if it&amp;#8217;s simply because you like Ruby better than PHP - it really doesn&amp;#8217;t matter, just be smart.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m7q2izYzI41qz76dl.png"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Use the Cloud!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Cloud has made it even easier for us to abstract the technicalities from our development. It&amp;#8217;s amazing how you can essentially feed into the power of complicated and powerful databases (such as Google&amp;#8217;s BigQuery) through a simple REST call. This is a cheap and smart solution for storing your data. &lt;/p&gt;
&lt;p&gt;Also, why buy an entire Amazon server that you basically have to maintain, when you could easily use services independently. Need search? Amazon Search! Need a Database? Google BigQuery. Need a Web Server? IrisCouch. This allows you to rapidly build your interface and rely on these cloud services for specific functionalities, without being bothered with tedious technology decisions.&lt;/p&gt;</description><link>http://lucaa.org/post/27983862986</link><guid>http://lucaa.org/post/27983862986</guid><pubDate>Tue, 08 May 2012 11:19:00 -0400</pubDate></item><item><title>Gene Banks' Data</title><description>&lt;p&gt;Gene banks, as described by Wikipedia, are a type of biorepository which preserve genetic material. In plants, this could be by freezing cuts from the plant, or stocking the seeds. Gene banks hold a very important value for our future, specifically with our planet undergoing environmental changes, allowing us to access and use specific seeds that would otherwise be lost in nature.&lt;/p&gt;
&lt;p&gt;The value of these seeds is obviously important, but the ability to access these seeds is also critical. In fact, without a proper information access system these seeds would be lost in gene banks the same way they would&amp;#8217;ve been lost in nature. Fortunately the top gene banks in the world do a good job in storing and managing their data, through internal software systems maintained by IT units.&lt;/p&gt;
&lt;p&gt;However you can imagine that not all gene banks do a good job in managing their data. Some systems are as ugly as Excel spreadsheets or Word documents, located on regular desktop computers, copied around different machines, without any proper backup process or disaster recovery routine. Imagine losing this data: the location the seeds were collected in; the date; the characteristics of the plant. Without this data the seeds become useless, so it is very important that gene banks take responsibility in managing their data correctly.&lt;/p&gt;
&lt;p&gt;Also another important issue is that this data might not be accessible through the internet. Either the gene banks have little internet connectivity, or they simply don&amp;#8217;t have the software to allow them to publish their data online.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Accessing data across different gene banks&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;All this inconsistency between different gene banks information systems, is not beneficial for people that are trying to access this data. A system must be built that would gather all the data from all the different gene banks and make it accessible in a consistent way.&lt;/p&gt;
&lt;p&gt;This is not an easy task. It&amp;#8217;s like locating and gathering all the information on the internet about movies, and making it searchable in a consistent way. You could scrape data from different sites such as imdb and rottentomatoes, but you would still need to normalize part of the data. For example imdb uses stars for rating movies; rottentomatoes uses numbers. So you either convert stars into numbers, or you&amp;#8217;re stuck with two pieces of information that are semantically the same, but syntactically different.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Possible solutions&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If gene banks use the same seed management system, instead of something they built on their own, then the data is bound to be stored using a standard schema. Gathering and searching this data would then be simple and it would make it much more accessible.&lt;/p&gt;
&lt;p&gt;This would be the ideal scenario, but unfortunately forcing everyone to use a specific system will not work. There&amp;#8217;s always going to be someone more comfortable with building their own solutions. This is how business has always worked. A single system cannot accomodate everyone&amp;#8217;s needs.&lt;/p&gt;
&lt;p&gt;Another interesting approach would be to adopt a standard schema and have the gene banks publish their data online using microformats. This is something already being adopted for other information across the web, so it makes sense to be using it for the data held inside gene banks as well.&lt;/p&gt;</description><link>http://lucaa.org/post/27982042415</link><guid>http://lucaa.org/post/27982042415</guid><pubDate>Sun, 25 Mar 2012 10:34:00 -0400</pubDate><category>genebank</category><category>seeds</category><category>gene bank</category></item><item><title>JavaScript On The Server</title><description>&lt;p&gt;Over the past couple of years the language that has really made an impression over the others has been JavaScript. We can find clues of its burst of popularity everywhere; GitHub&amp;#8217;s most famous and HackerNews&amp;#8217; most discussed language. It&amp;#8217;s obvious JavaScript has made an impact on how we develop and interact with websites.&lt;/p&gt;
&lt;p&gt;But why? Why are all these cool things coming out from this particularly annoying little scripting language? Why is everyone so excited about it? Frankly, I don&amp;#8217;t think it&amp;#8217;s part of the language&amp;#8217;s syntax - as your Computer Scientist teacher in college might have told you, a programming language is just a tool that we use to perform a task, and the syntax is just a way to let us perform that task and it shouldn&amp;#8217;t get in our way. Well, then it must be something else, right? Particularly for JavaScript, I would say its popularity is mostly due to the fact that it&amp;#8217;s embedded in the browser, which is by far the most used application on a personal computer.&lt;/p&gt;
&lt;p&gt;This little but important fact leads to an enormous amount of information related to the language being constantly shared over the internet. Think of blogs, code snippets, questions, tutorials etc. All this makes a language extremely popular. The amount of data on the internet related to a particular language is also proportionally related to the amount of programmers you&amp;#8217;ll find that know how to use that language. This leads to more developers and therefore more innovation.&lt;/p&gt;
&lt;p&gt;There you go, the secret JavaScript ingredient is the casual existence of the Web Browser on peoples computers that made interpreting scripts possible without the overhead of installing compilers or IDEs.&lt;/p&gt;
&lt;p&gt;However, even with this extreme jump in popularity, JavaScript was always referred to as a client-side language or frontend language, it took a while before it entered the main-stream. Web-development has always been a matter of developing with JavaScript on the client-side and then using some other language on the server. This methodology is really inconsistent to me, but apparently people are still accustomed to it.&lt;/p&gt;
&lt;p&gt;Of course I&amp;#8217;m not saying that people should drop their Java/PHP/Python environment - technologies and languages should be used wherever they are best fit - I&amp;#8217;m saying that people should consider trying out JavaScript on the server. If you think about it, you end up with a code-base written in one language; this points to all sorts of maintainability improvements on the overall project.&lt;/p&gt;
&lt;p&gt;What are your thoughts on the subject? Will your next project use JavaScript on the server or will you use the same old PHP framework? Try and innovate, use different things and different languages, all the time. Don&amp;#8217;t get stuck with a boring Java framework.&lt;/p&gt;</description><link>http://lucaa.org/post/28004983742</link><guid>http://lucaa.org/post/28004983742</guid><pubDate>Thu, 04 Aug 2011 17:23:00 -0400</pubDate></item></channel></rss>
