<?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>enthusiast developer who codes front and back end solutions, photographer and Adobe Certified Expert, Lightroom 3 zigotica.com smeseguer.com</description><title>reprogramming myself</title><generator>Tumblr (3.0; @zigotica)</generator><link>http://zigotica.tumblr.com/</link><item><title>Checklist to install multiuser development environment in OS X Mountain Lion</title><description>&lt;p&gt;This list in not exhaustive, just my bare minimum for frontend purposes. I’m not dealing with Rails, PostgreSQL, MongoDB or other server tools since it’s not my day-to-day use. Just yet. It’s surprising that you need so many console tools these days to do frontend, but things fall apart, and most of them really improve your performance in many ways.&lt;/p&gt;
&lt;p&gt;Installation for one or multiple users would be the same, but there are tasks we will perform as admin user so that we can share part of the environment across multiple users, who will only need to configure personal data (Git, $PATH, Sublime or other editor, …). We are using Mountain Lion but the following should work the same in older systems, down to at least Leopard or Snow Leopard.&lt;/p&gt;
&lt;h1&gt;Developer environment installation by admin user:&lt;/h1&gt;
&lt;ul&gt;&lt;li&gt;If we are going to use the complete Apple developers set up, including iOS simulators, we need to install XCode (from the Mac Store), then open it, preferences, downloads, install command line tools and the needed simulators.&lt;/li&gt;
&lt;li&gt;If we don’t need iOS simulators, just go to &lt;a href="https://developer.apple.com/downloads"&gt;&lt;a href="https://developer.apple.com/downloads"&gt;https://developer.apple.com/downloads&lt;/a&gt;&lt;/a&gt; and download, then install the Command line tools for your system. It’s around 200Kb only.&lt;/li&gt;
&lt;li&gt;Open a Terminal window and check if you have properly installed build tools:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;which gcc&lt;/pre&gt;
&lt;p&gt;(it should return /usr/bin/gcc)&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Then we will install &lt;a href="http://mxcl.github.com/homebrew/"&gt;homebrew&lt;/a&gt;, a nice package manager for OS X, from the terminal:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;ruby -e "$(curl -fsSL &lt;a href="https://raw.github.com/mxcl/homebrew/go"&gt;https://raw.github.com/mxcl/homebrew/go&lt;/a&gt;)"&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;We are going to install &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt; now to have a control version in our projects without the need of a centralised repository:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;brew install git&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Update homebrew now:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;brew update&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Install &lt;a href="http://rbenv.org/"&gt;rbenv&lt;/a&gt; to manage different versions of Ruby:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;brew install rbenv&lt;/pre&gt;
&lt;p&gt;To use Homebrew&amp;#8217;s directories rather than ~/.rbenv add to your profile:&lt;/p&gt;
&lt;pre&gt;export RBENV_ROOT=/usr/local/var/rbenv&lt;/pre&gt;
&lt;p&gt;Then&lt;/p&gt;
&lt;pre&gt;brew install ruby-build&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;We are going to install &lt;a href="http://compass-style.org/"&gt;Compass&lt;/a&gt;, a CSS framework that uses Sass stylesheets (make sure you code your Sass with &amp;#8216;compass watch&amp;#8217; running in a terminal tab):&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;sudo gem install compass&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Install &lt;a href="http://nodejs.org/"&gt;node&lt;/a&gt;, several development tools are distributed as &lt;a href="https://npmjs.org/"&gt;npm&lt;/a&gt; these days:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;brew install node&lt;/pre&gt;
&lt;p&gt;We recommend prepending the following path to your PATH environment variable to have npm-installed binaries picked up: /usr/local/share/npm/bin&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;We love &lt;a href="http://gruntjs.com/"&gt;Grunt&lt;/a&gt;, a Javascript task runner. We use it to build our frontend files, minimize, JSlint and several other features:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;npm install -g grunt&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://phantomjs.org/"&gt;PhantomJS&lt;/a&gt; is used to create files from Javascript in terminal, in one of our favorite tools, named &lt;a href="https://github.com/zigotica/grunticon"&gt;Grunticon&lt;/a&gt; (allows us to throw SVG icons into a folder and convert them into datauri inside your CSS, with PNG fallback). No more sprites :-)&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;brew install phantomjs&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Install &lt;a href="http://nanoc.ws/"&gt;nanoc&lt;/a&gt;, a nice static site generator&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;sudo gem install nanoc&lt;/pre&gt;
&lt;p&gt;If we need the preview server of nanoc we need to install it::&lt;/p&gt;
&lt;pre&gt;sudo gem install adsf&lt;/pre&gt;
&lt;p&gt;We can use other preview servers, like Apache from our system, MAMP or even a LiveReload server.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Install &lt;a href="http://www.mamp.info/"&gt;MAMP&lt;/a&gt;, which lets you have Apache, MySQL and PHP environment in a second.&lt;/li&gt;
&lt;li&gt;We are going to configure /etc/hosts file according to this tutorial: &lt;a href="http://zigotica.tumblr.com/post/12963774869/how-to-use-vhosts-in-wordpress-development"&gt;How to use vhosts in Wordpress development&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Install &lt;a href="https://itunes.apple.com/es/app/go2shell/id445770608?mt=12"&gt;Go2Shell&lt;/a&gt; (from the Mac Store), which opens a terminal window to the current directory in Finder. We just need to drag the app to the icons bar in Finder.&lt;/li&gt;
&lt;li&gt;We install Chrome now, with LiveReload, Web Developer, YSlow plugins.&lt;/li&gt;
&lt;/ul&gt;&lt;h1&gt;Developer environment config for each non admin users:&lt;/h1&gt;
&lt;p&gt;We have most of the environment set up ready, we just need some personal configurations. These will be performed by each non-admin user of the machine:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Open Finder and customize sidebars&lt;/li&gt;
&lt;li&gt;We are heading to our personal folder ~/ and create an Applications folder. We are going to use this to install our programs, since /Applications will be used by programs installed by the system or admin for all users.&lt;/li&gt;
&lt;li&gt;Install &lt;a href="http://db.tt/mdUrUR2"&gt;Dropbox&lt;/a&gt; (disclaimer, this is a recommendation link, both you and me will get extra space). Dropbox will let you have some Gb of your data backed up in the cloud and synchronized across your computers. It will require admin permissions to the folders in order to be installed.&lt;/li&gt;
&lt;li&gt;Open /Applications folder and drag the app to the icons bar in Finder.&lt;/li&gt;
&lt;li&gt;If you’re like me and prefer your finder to reveal hidden files, open Terminal and type:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;defaults write com.apple.finder AppleShowAllFiles -bool YES&lt;/pre&gt;
&lt;pre&gt;killall Finder&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Copy your public/private SSH keys from an older computer. If it’s the first time you need these (Git, for instance), just &lt;a href="http://support.beanstalkapp.com/customer/portal/articles/68154-generating-and-adding-ssh-keys-on-mac-os-x"&gt;create your keys&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To configure your Git user, we can copy ~/.gitconfig from an older computer into ~/ or:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;git config --global &lt;a href="http://user.name/"&gt;user.name&lt;/a&gt; "Your name"&lt;/pre&gt;
&lt;pre&gt;git config --global user.email your@email.com&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Install SublimeText2 into our personal ~/Applications. You can buy it too! Or use Textmate, vim or whatever.&lt;/li&gt;
&lt;li&gt;We need to create a folder for our binaries, type this in Terminal:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;mkdir ~/bin&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;We are enabling Sublime access from terminal, pointing to a symlink in our bin (beware, link takes to the Sublime we just installed in our ~/Applications)&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;ln -s ~/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl ~/bin/subl&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;If we open a new terminal window or tab (cmd+t) we should be able to open Sublime by typing&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;subl&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Install Sublime user prefs from an old computer, or use mine if you like them &lt;a href="https://gist.github.com/zigotica/4954546"&gt;&lt;a href="https://gist.github.com/zigotica/4954546"&gt;https://gist.github.com/zigotica/4954546&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Install the package with color and typography settings (I keep a copy in Dropbox), usually found in&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;“~/Library/Application Support/Sublime Text 2/Packages/Color Scheme - Default”&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Install Package Control from View &amp;gt; Show console, following &lt;a href="http://wbond.net/sublime_packages/package_control/installation"&gt;these instructions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;We can now install these packages from Package control: Emmet (previously known as Zen code), SuperCalculator (nice for px/em conversions), GitGutter (awesome, to see changes in gutter from last Git commit)&lt;/li&gt;
&lt;li&gt;Install your .bash_profile from an old computer into ~/ or &lt;a href="https://gist.github.com/zigotica/4523081"&gt;&lt;a href="https://gist.github.com/zigotica/4523081"&gt;https://gist.github.com/zigotica/4523081&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Now you check if your .bash_profile includes PATH to our bin, grunt, and other tools:&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;export PATH=~/bin:/usr/local/share/npm/bin:/usr/local/share/npm/lib/node_modules/grunt/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Alternatively, much better approach is separate each path into a specific var (thanx &lt;a href="http://twitter.com/happywebcoder"&gt;@happywebcoder&lt;/a&gt; for the tip):&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;export MY_BIN_PATH="~/bin"&lt;/pre&gt;
&lt;pre&gt;export PATH="$MY_BIN_PATH:$PATH"&lt;/pre&gt;
&lt;pre&gt;export NPM_BIN_PATH="/usr/local/share/npm/bin"&lt;/pre&gt;
&lt;pre&gt;export PATH="$NPM_BIN_PATH:$PATH"&lt;/pre&gt;
&lt;pre&gt;export GRUNT_BIN_PATH="/usr/local/share/npm/lib/node_modules/grunt/bin"&lt;/pre&gt;
&lt;pre&gt;export PATH="$GRUB_BIN_PATH:$PATH"&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Open Chrome and authenticate with your login/password in order to start sync&amp;#8217;ing our favorites, plugins, and so on.&lt;/li&gt;
&lt;li&gt;If we are going to develop responsive sites (or sites adapted to be viewed in mobile gadgets) you will want to install &lt;a href="http://html.adobe.com/edge/inspect/"&gt;Adobe Edge Inspect&lt;/a&gt; which lets you synchronize what you see in your browser to your mobile device, instantly, and even inspect your device for a debug session.&lt;/li&gt;
&lt;/ul&gt;&lt;h1&gt;Other programs you may like:&lt;/h1&gt;
&lt;p&gt;I don’t work nor get anything from the following, I just think they are awesome apps:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;We love &lt;a href="http://totalfinder.binaryage.com/"&gt;TotalFinder&lt;/a&gt;, your Finder with Tabs! Buy it, it’s worth it.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://getcloudapp.com/"&gt;CloudApp&lt;/a&gt; is an awesome service that stores screen captures and other files in the cloud.&lt;/li&gt;
&lt;li&gt;Buy and install &lt;a href="http://panic.com/transmit/"&gt;Transmit FTP&lt;/a&gt;, but don’t forget to use Git locally :-)&lt;/li&gt;
&lt;li&gt;Buy and install &lt;a href="http://mizage.com/divvy/"&gt;Divvy&lt;/a&gt; a cool app that lets you manage your windows size very easily with shortcuts.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://zigotica.tumblr.com/post/44635681352</link><guid>http://zigotica.tumblr.com/post/44635681352</guid><pubDate>Tue, 05 Mar 2013 18:15:00 +0100</pubDate><category>osx</category><category>development</category><category>environment</category><category>grunt</category><category>homebrew</category><category>phantomjs</category><category>nodejs</category><category>gruntjs</category><category>adobe edge inspect</category><category>total finder</category><category>divvy</category><category>cloudapp</category><category>npm</category><category>git</category><category>xcode</category><category>command line tools</category><category>rbenv</category><category>compass</category><category>grunticon</category><category>nanoc</category><category>mamp</category><category>vhost</category><category>go2shell</category><category>dropbox</category><category>sublime text 2</category><category>.bash_profile</category></item><item><title>iOS phone number styling</title><description>&lt;p&gt;iOS has an automatic feature to detect phone numbers and link them to a phone call by clicking on them.&lt;/p&gt;
&lt;p&gt;The problem with this is twofold:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Many false positives &lt;/li&gt;
&lt;li&gt;Style for these numbers is really ugly (ugly as in default link style).&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;OPTION 1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you want to avoid this feature you can add the following meta in your pages:&lt;/p&gt;
&lt;pre&gt;&amp;lt;meta name = "format-detection" content = "telephone=no"&amp;gt;
&lt;/pre&gt;
&lt;p&gt;which will avoid the phone to make calls to ALL phone numbers in your page. To reactivate this key functionality in some of the numbers, you need to add a link around each telephone number in your page, manually, using tel: as the beginning of the href, as in:&lt;/p&gt;
&lt;pre&gt;&amp;lt;a hef="tel:1234567890"&amp;gt;1234567890&amp;lt;/a&amp;gt;&lt;/pre&gt;
&lt;p&gt;Then we just need to style the special links:&lt;/p&gt;
&lt;pre&gt;a[href^="tel:"] {color: inherit !important; background-color: inherit !important;}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;OPTION 2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since in some projects you will not be able to wrap numbers manually and you still want to style what iOS uses as phone numbers, you can do it the other way around. Let&amp;#8217;s leave the OS add the special link for us (will not add the special meta that avoids this feature) and style how it looks. First you need to know how iOS links the numbers to the phone. Before:&lt;/p&gt;
&lt;pre&gt;1234567890&lt;/pre&gt;
&lt;p&gt;After:&lt;/p&gt;
&lt;pre&gt;&amp;lt;a hef="tel:1234567890" x-apple-data-detectors="true" x-apple-data-detectors-result="1"&amp;gt;
1234567890&amp;lt;/a&amp;gt;&lt;/pre&gt;
&lt;p&gt;As you can see iOS wraps the number into a link with special attributes. Now you can just style them using attribute selector:&lt;/p&gt;
&lt;pre&gt;a[x-apple-data-detectors=true] {color: inherit !important; background-color: inherit !important;}&lt;/pre&gt;</description><link>http://zigotica.tumblr.com/post/42179771616</link><guid>http://zigotica.tumblr.com/post/42179771616</guid><pubDate>Sun, 03 Feb 2013 12:35:00 +0100</pubDate><category>iOs</category><category>CSS</category><category>phone</category><category>meta</category><category>x-apple-data-detectors</category></item><item><title>Add custom poster frame to youtube video without the API.</title><description>&lt;p&gt;&lt;span&gt;The trick is adding the iframe in a comment. Javascript reads comment contents and saves iframe definition to a var. When user clicks on the image, javascript overwrites container innerHTML using the iframe defined in the comments.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="https://gist.github.com/4438876"&gt;&lt;a href="https://gist.github.com/4438876"&gt;https://gist.github.com/4438876&lt;/a&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;This code is also valid in browsers not supporting window.postMessage (API uses postMessage).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/39555368768</link><guid>http://zigotica.tumblr.com/post/39555368768</guid><pubDate>Thu, 03 Jan 2013 10:11:00 +0100</pubDate><category>javascript</category><category>youtube</category><category>API</category><category>iframe</category><category>poster-frame</category><category>image</category><category>window.postMessage</category><category>postMessage</category></item><item><title>Untilted*: Code literacy for kids, a link dump </title><description>&lt;a href="http://bomberstudios.com/post/38820513486/code-literacy-for-kids-a-link-dump"&gt;Untilted*: Code literacy for kids, a link dump &lt;/a&gt;: &lt;p&gt;&lt;a href="http://bomberstudios.com/post/38820513486/code-literacy-for-kids-a-link-dump" class="tumblr_blog"&gt;bomberstudios&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;

&lt;h2&gt;Books&lt;/h2&gt; &lt;ul&gt;&lt;li&gt;
&lt;a href="http://books.google.es/books/about/Mindstorms.html?id=HhIEAgUfGHwC&amp;redir_esc=y"&gt;Mindstorms: Children, Computers, And Powerful Ideas&lt;/a&gt;: a &lt;strong&gt;must&lt;/strong&gt; read.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://csunplugged.org"&gt;Computer Science Unplugged&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.laurenipsum.org"&gt;Lauren Ipsum&lt;/a&gt;, “A story about computer science
and other improbable things.”&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Projects / Platforms&lt;/h2&gt; &lt;h3&gt;Mozilla Hackasaurus&lt;/h3&gt; &lt;ul&gt;&lt;li&gt;
&lt;a href="http://hackasaurus.org/en-US/"&gt;Mozilla Hackasaurus&lt;/a&gt;: “Hackasaurus makes it easy to mash up and…&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;

&lt;p&gt;amazing compilation&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/38858829197</link><guid>http://zigotica.tumblr.com/post/38858829197</guid><pubDate>Wed, 26 Dec 2012 09:53:33 +0100</pubDate></item><item><title>Mrmamba Sysadmin: Sistema de backup sencillo: Web y Mysql a Dropbox</title><description>&lt;a href="http://mrmamba.stack-overflow.net/post/37708262525/sistema-de-backup-sencillo-web-y-mysql-a-dropbox"&gt;Mrmamba Sysadmin: Sistema de backup sencillo: Web y Mysql a Dropbox&lt;/a&gt;: &lt;p&gt;Awesome post by &lt;a class="tumblr_blog" href="http://mrmamba.stack-overflow.net/post/37708262525/sistema-de-backup-sencillo-web-y-mysql-a-dropbox"&gt;mrmamba&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Siempre es necesario tener backup de nuestros sitios, pero a veces es algo costoso y da mucha pereza gestionar el mismo, que si hacer ssh aquí o allí, etc.&lt;/p&gt;
&lt;p&gt;Comparto con todos una solución sencilla para gestionar el backup de un sitio web y su base de datos haciendo uso de Dropbox, rsync y tareas…&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://zigotica.tumblr.com/post/37708556110</link><guid>http://zigotica.tumblr.com/post/37708556110</guid><pubDate>Tue, 11 Dec 2012 12:46:38 +0100</pubDate><category>dropbox</category><category>backup</category><category>mysql</category><category>rsync</category><category>mysqldump</category><category>archive</category><category>cron</category></item><item><title>SpainJS 2012 in a post</title><description>&lt;p&gt;&lt;span&gt;Finally a Javascript event in Spain. I was tempted to organize one with some friends, but in the middle of the process we knew about this idea from the organizers of previous Rails conferences and also an attempt at Teambox to organize one as well in Barcelona. We postponed the idea, and frankly, the results for this first event in Madrid have been excellent. Kudos to the team!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;THURSDAY&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Workshops were cool. I could only attend the afternoon workshops, but they were really worth it. I was not asked for the registration ticket, which surprised me a lot since there were quite a lot of twits about only accepting registered users being allowed.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Dani Mata&lt;/strong&gt; (&lt;a href="https://twitter.com/danimataonrails" target="_blank"&gt;@danimataonrails&lt;/a&gt;) talked about using Node.js, Express, Sequalize and Jade to create an API that would serve JSON. It was quite interesting, high level from the first moment, but given there was a bad wifi conection that made it slow to download all the dependencies and that I later had a mysql problem I was not able to finish the examples. Quite good anyway. Slides and code here: &lt;a href="http://danimata.com/spainjs/" target="_blank"&gt;&lt;span&gt;&lt;a href="http://danimata.com/spainjs/"&gt;http://danimata.com/spainjs/&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Guillermo Gutiérrez&lt;/strong&gt; (&lt;a href="https://twitter.com/ggalmazor" target="_blank"&gt;@ggalmazor&lt;/a&gt;) managed a refactoring Dojo. Being my first dojo I can only say it was fun, worth it and inspiring. I suppose dojos are better with a smaller groups (at least not all strangers), but it was real fun, so fun I even went for a stint. Gotta do more of these. PDF here: &lt;a href="https://t.co/18N2BhzI" target="_blank"&gt;&lt;a href="https://t.co/18N2BhzI"&gt;https://t.co/18N2BhzI&lt;/a&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;For next year I would suggest the organization to force Camon to provide a better connection, during workshops wifi is more important than at the event talks. It was not on pair with the workshop contents. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;FRIDAY&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Registration&lt;/strong&gt; process next day was a bit slow and chaotic. Separation between conference ticket and conference + dinner should have been made before the room entrance, there was place enough to separate those into two different spaces. Once inside we faced the problem of getting a decent wifi connection, more on that in the final words. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Vicent Martí&lt;/strong&gt; (&lt;/span&gt;&lt;a href="https://twitter.com/tanoku" target="_blank"&gt;@tanoku&lt;/a&gt;) from github talked about github’s robot, hubot, and how cool it is to perform all kinds of tasks, scripts, domotic integrations, laughing at your coworkers and many more. Not much code was shown (the comic style in slides was gorgeous) but when it was, it fitted well, explaning in few lines how every task is a module with a name, a regexp and a callback. Hubot is opensourced, so you should give it a try. The talk was fun and inspiring. Slides here: &lt;a href="https://speakerdeck.com/u/tanoku/p/intergalactic-javascript-robots-from-outer-space" target="_blank"&gt;&lt;span&gt;&lt;a href="https://speakerdeck.com/u/tanoku/p/intergalactic-javascript-robots-from-outer-space"&gt;https://speakerdeck.com/u/tanoku/p/intergalactic-javascript-robots-from-outer-space&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Jeremy Ashkenas&lt;/strong&gt; (&lt;a href="https://twitter.com/jashkenas" target="_blank"&gt;@jashkenas&lt;/a&gt;) the creator of Backbone and CoffeeScript talked about the evolution of javascript (specifically, Harmony) and the benefits of using CoffeeScript. I’m not a big fan of compilers, but I have to agree that he knows how to lead a group with his speech, very dynamic, to the point. I liked the splats and soaks examples, and the fact that you can show the inner codefile using &amp;#8212;tokens or &amp;#8212;nodes options. Slides and code here: &lt;a href="http://cl.ly/HwNW" target="_blank"&gt;&lt;span&gt;&lt;a href="http://cl.ly/HwNW"&gt;http://cl.ly/HwNW&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Karolina Szczur&lt;/strong&gt; (&lt;a href="https://twitter.com/karolinaszczur" target="_blank"&gt;@karolinaszczur&lt;/a&gt;) from nodejitsu talked about simplicity in design, more specifically in CSS writing via frameworks. I don’t think I understood the point of the talk. She seems very good designer, but her presentation lacked focus. I know CSS, I use frameworks, I use compass. She talked about 3 frameworks, leaving many behind, she talked about CSS generators and then about Sass, which are quite incompatible from my point of view. Sorry, I don’t buy it.  Slides here: &lt;a href="https://speakerdeck.com/u/karolinaszczur/p/the-pursuit-of-simplicity" target="_blank"&gt;&lt;span&gt;&lt;a href="https://speakerdeck.com/u/karolinaszczur/p/the-pursuit-of-simplicity"&gt;https://speakerdeck.com/u/karolinaszczur/p/the-pursuit-of-simplicity&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Jakob Mattsson&lt;/strong&gt; (&lt;a href="https://twitter.com/jakobmattsson" target="_blank"&gt;@jakobmattsson&lt;/a&gt;) from Burt started with an unfortunate joke about Berlusconni and Francisco Franco. Really, out of place and not fun at all. Then he talked about something he really knows: writting a RESTful API with Node.js. The speech was nice, lots of tips, tricks and suggestions of other middleware like connect and code examples of how to use node, express, connect, mongoose together, in a lot of code slides too. I wrote down this sentence: “db schemaless is a lie”. Slides here: &lt;a href="https://speakerdeck.com/u/jakobmattsson/p/writing-restful-web-services-using-nodejs" target="_blank"&gt;&lt;span&gt;&lt;a href="https://speakerdeck.com/u/jakobmattsson/p/writing-restful-web-services-using-nodejs"&gt;https://speakerdeck.com/u/jakobmattsson/p/writing-restful-web-services-using-nodejs&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Horia Dragomir&lt;/strong&gt; (&lt;a href="https://twitter.com/hdragomir" target="_blank"&gt;@hdragomir&lt;/a&gt;) from Wooga was the man of the day (shared honour with Vicent Martí). He gave a speech on how to create fast mobile UIs, with plenty of code examples, short and to the point, like using event bubbling, HTML5 APIs, touch events, viewport scaling, and so on. If that wasn’t enough, he is very enthousiastic and dynamic, making the after lunch hour very easy to handle. Top. Slides here: &lt;a href="https://speakerdeck.com/u/hdragomir/p/fast-mobile-uis" target="_blank"&gt;&lt;span&gt;&lt;a href="https://speakerdeck.com/u/hdragomir/p/fast-mobile-uis"&gt;https://speakerdeck.com/u/hdragomir/p/fast-mobile-uis&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Tomás Corral&lt;/strong&gt; (&lt;a href="https://twitter.com/amischol" target="_blank"&gt;@amischol&lt;/a&gt;) from Softonic was the poorest talk on friday and maybe the whole event. Language was by far the main struggle for him, since he knows his stuff, but English wasn’t helping. Subject was not very well chosen, either. Minimization of code is important but I don’t think it gives for more than a 10 minutes talk, and the examples were all about semicolons, using variables and concatenating strings. I would have preferred him to talk about javascript architecture, since he knows how to write that (he is the author of hydra.js). Slides here: &lt;a href="http://www.slideshare.net/amischol/less-is-more-13574571" target="_blank"&gt;&lt;span&gt;&lt;a href="http://www.slideshare.net/amischol/less-is-more-13574571"&gt;http://www.slideshare.net/amischol/less-is-more-13574571&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Christian Kvalheim&lt;/strong&gt; (&lt;a href="https://twitter.com/christkv" target="_blank"&gt;@christkv&lt;/a&gt;) from 10gen talked about a Pacman game clone written in Node.js. The presentation was fine, going from the evolution of the original game to the challenges he faced while cloning it for web and techniques used (Node.js, Akihabara, SoundJS, websockets and MongoDB), also what is in horizon with WebGL and so on.  He also demo’ed the game. I am not a big fan of gaming, but the inners were interesting. Slides here: &lt;a href="https://speakerdeck.com/u/christkv/p/mongoman-a-nodejs-powered-pacman-clone" target="_blank"&gt;&lt;span&gt;&lt;a href="https://speakerdeck.com/u/christkv/p/mongoman-a-nodejs-powered-pacman-clone"&gt;https://speakerdeck.com/u/christkv/p/mongoman-a-nodejs-powered-pacman-clone&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Friday night dinner&lt;/strong&gt; and party was excellent. Sala Garibaldi was a wise choice, center of town unlike last year in Rails conference, held in Florida Park itself (far from anything else). As usual, dinner was standed, ala cocktail style, good for talking with anyone. And the Jamón guy was there again. Good. A bit expensive, but I assume you pay for the networking more than the food.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;SATURDAY&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Ramón Corominas&lt;/strong&gt; (&lt;a href="https://twitter.com/ramoncorominas" target="_blank"&gt;@ramoncorominas&lt;/a&gt;) is a &lt;/span&gt;&lt;span&gt;W3C&amp;#8217;s WCAG WG member. He gave a talk on WAI-ARIA to create accessible sites. I personally don’t buy the subject, but he also gave terrible examples of javascript being used to connect WAI-ARIA to form inputs. Either he did so to show a (doubtfully) simpler code or he does not know how event managers and event bubbling work. A pity, since the other stuff seems interesting, these weighted too much for me. Slides and code: &lt;a href="http://ramoncorominas.com/spainjs/#spainjs" target="_blank"&gt;&lt;span&gt;&lt;a href="http://ramoncorominas.com/spainjs/#spainjs"&gt;http://ramoncorominas.com/spainjs/#spainjs&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Alex MacCaw &lt;/strong&gt;(&lt;a href="https://twitter.com/maccman" target="_blank"&gt;@maccman&lt;/a&gt;) from stripe and creator of spine.js gave an excellent talk on perceived speed and how to improve it for a better user experience, giving real world examples on how other sites or apps trick about it: twitter, facebook, instagram or a cool blog system named &lt;a href="https://svbtle.com/" target="_blank"&gt;&lt;span&gt;&lt;a href="https://svbtle.com/"&gt;https://svbtle.com/&lt;/a&gt;&lt;/span&gt;&lt;/a&gt; The three steps to improve perceived speed by using an async UI are: rendering on client (batch DOM updates), store state and data on client and only then communicate with server asyncronously. Also nice trick on the questions about unit testing UI and REST API separately. Slides here: &lt;a href="https://speakerdeck.com/u/maccman/p/asyncronous-web-interfaces" target="_blank"&gt;&lt;span&gt;&lt;a href="https://speakerdeck.com/u/maccman/p/asyncronous-web-interfaces"&gt;https://speakerdeck.com/u/maccman/p/asyncronous-web-interfaces&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Keith Norman&lt;/strong&gt; (&lt;a href="https://twitter.com/keithnorm" target="_blank"&gt;@keithnorm&lt;/a&gt;) was very inspiring. He talked about the process started with his colleagues at Groupon to share code between Node.js and the browser. That is, writting javascript once and use it both on client and server sides. Showed us how they were using browserify to convert coffee/backbone code in server to allow node+express to run it. Very good, maybe the man of the day, but that one is tight, saturday talks were frankly top level, I might give it a draw with Nuria Ruiz, Alex MacCaw and Javier Arévalo. Slides here: &lt;a href="http://keithnorm.com/spainjs-pipedream/#/" target="_blank"&gt;&lt;span&gt;&lt;a href="http://keithnorm.com/spainjs-pipedream/#/"&gt;http://keithnorm.com/spainjs-pipedream/#/&lt;/a&gt;&lt;/span&gt;&lt;/a&gt; and a demo &lt;a href="https://github.com/keithnorm/SpainJS-Pipedream-Demo" target="_blank"&gt;&lt;span&gt;&lt;a href="https://github.com/keithnorm/SpainJS-Pipedream-Demo"&gt;https://github.com/keithnorm/SpainJS-Pipedream-Demo&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Nuria Ruiz &lt;/strong&gt;(&lt;a href="https://twitter.com/pantojacoder" target="_blank"&gt;@pantojacoder&lt;/a&gt;) explained us the processes started at tuenti to improve performance through changing how they load javascript and templates. The thumbs up on the talk are not only the solutions they arrived to (which improved the speed of next tuenti version by an incredible 500%) but also the explainations on the process and how they discarded other options to finally chose YUI lazy loading with Handlebars templating. Oh, and keep it in a post it next to you: measure everything. I have the honor to have chatted with her about oceanography and research vessels, remembering old times when we (separately) were one month on board doing science stuff. Old times, go beat that! :-) Slides here: &lt;a href="https://speakerdeck.com/u/nuria_ruiz/p/client_side_rendering_is_not_so_easy" target="_blank"&gt;&lt;span&gt;&lt;a href="https://speakerdeck.com/u/nuria_ruiz/p/client_side_rendering_is_not_so_easy"&gt;https://speakerdeck.com/u/nuria_ruiz/p/client_side_rendering_is_not_so_easy&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Brian McKenna&lt;/strong&gt; (&lt;a href="https://twitter.com/puffnfresh" target="_blank"&gt;@puffnfresh&lt;/a&gt;) presented Roy, a javascript compiler. Since I am not a big fan of compilers I took that time to do some networking, so I can not give my opinion on this one, other than my admiration goes for those who innovate, and that seems to be the case. Slides here: &lt;a href="http://brianmckenna.org/files/presentations/spainjs-roy/" target="_blank"&gt;&lt;span&gt;&lt;a href="http://brianmckenna.org/files/presentations/spainjs-roy/"&gt;http://brianmckenna.org/files/presentations/spainjs-roy/&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Javier Arévalo&lt;/strong&gt; (&lt;a href="https://twitter.com/TheJare" target="_blank"&gt;@TheJare&lt;/a&gt;) kicked youngsters arses. If you ever thought “viejunos” (older people) should go home and let 20yo do the job, think twice. This guy knows his stuff. He deeply went through the use of different strategies, HTML5 APIs, WebGL, audio, events, performance… Nice talk indeed, more than one and two attendees paid the tickets just to see him in action, and they were not defeated. Slides here: &lt;a href="http://www.iguanademos.com/Jare/docs/html5/SpainJS2012/" target="_blank"&gt;&lt;span&gt;&lt;a href="http://www.iguanademos.com/Jare/docs/html5/SpainJS2012/"&gt;http://www.iguanademos.com/Jare/docs/html5/SpainJS2012/&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Jonathan Azoff&lt;/strong&gt; (&lt;a href="https://twitter.com/azoff" target="_blank"&gt;@azoff&lt;/a&gt;) presented &lt;a href="http://azoff.github.com/tacion.js/" target="_blank"&gt;tacion&lt;/a&gt;, an app that pushes sync’ed content to an audience using websockets and a jQuery mobile presentation. Very cool idea. He went through some of the code. The nice part is being opensource and using pusher.com which I did not know of yet. As a slightly negative side, it needs improving on the case scenario where the driver of the talk wants to let users run the content but up to a point protect certain pages. Powerpoint is dead. Slides here: &lt;a href="http://azoff.github.com/tacion.js/examples/spain.js/#slide=0&amp;amp;step=0" target="_blank"&gt;&lt;span&gt;&lt;a href="http://azoff.github.com/tacion.js/examples/spain.js/#slide=0&amp;amp;step=0"&gt;http://azoff.github.com/tacion.js/examples/spain.js/#slide=0&amp;amp;step=0&lt;/a&gt;&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Final words&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Overall the event was very impressive, well organized, nice talks, nice people… I would probably force lightning talks to be more technical and less “this is my product, buy it”  but the event is good. Florida Park seems a good place for me, having lunch in the grass is a win. The worst part of the event was this (in my humble opinion): once there, we found out that people at home was following the event via streamming. This being a lack of respect to the attendees, it also swallowed some big chunk of the bandwith. I suggest next year organizers to register every talk in video and upload them online two weeks after the event, edited with sponsors’ logos, improved sound, and so on. Every one would win. Oh, and please choose another ISP, Movistar clearly is not up to the standards or they simply laughed at you, I hope you will not pay the bill. Thank you anyway for such a great event, one of the best I’ve attended, see you next year!&lt;/span&gt;&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/26896304116</link><guid>http://zigotica.tumblr.com/post/26896304116</guid><pubDate>Tue, 10 Jul 2012 11:27:00 +0200</pubDate><category>javascript</category><category>event</category><category>madrid</category><category>conference</category></item><item><title>Mrmamba Sysadmin: Obtener datos del hardware en Linux</title><description>&lt;a href="http://mrmamba.stack-overflow.net/post/20342625542/obtener-datos-del-hardware-en-linux"&gt;Mrmamba Sysadmin: Obtener datos del hardware en Linux&lt;/a&gt;: &lt;p&gt;(creo que voy a terminar compartiendo todos los posts de MrMamba…)&lt;/p&gt;
&lt;p&gt;&lt;a class="tumblr_blog" href="http://mrmamba.stack-overflow.net/post/20342625542/obtener-datos-del-hardware-en-linux"&gt;mrmamba&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Siempre es interesante poder obtener todos los datos posibles de nuestra máquina Linux sin tener que abrirle las “tripas” o reiniciar y mirar en la BIOS.&lt;/p&gt;
&lt;p&gt;Vamos a conocer algunas formas de obtener toda la información del harware de nuestra máquina.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;lshw&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;por ejemplo podemos saber datos como el…&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://zigotica.tumblr.com/post/21330993611</link><guid>http://zigotica.tumblr.com/post/21330993611</guid><pubDate>Wed, 18 Apr 2012 19:36:14 +0200</pubDate></item><item><title>Mrmamba Sysadmin: Backup mysql en caliente y envío por mail</title><description>&lt;a href="http://mrmamba.stack-overflow.net/post/9889405949/backup-mysql-en-caliente-y-envio-por-mail"&gt;Mrmamba Sysadmin: Backup mysql en caliente y envío por mail&lt;/a&gt;: &lt;p&gt;&lt;a class="tumblr_blog" href="http://mrmamba.stack-overflow.net/post/9889405949/backup-mysql-en-caliente-y-envio-por-mail"&gt;mrmamba&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hace tiempo un buen amigo me comentó que necesitaba hacer un backup regular de la BBDD Mysql de su tienda y recibirlo por correo electrónico. Rebuscando por internet encontré una forma bastante elegante de hacerlo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;#!/bin/bash&lt;/p&gt;
&lt;p&gt;&lt;em&gt;fecha=`date +”%Y-%b-%d”`&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;mysqldump —user root —password=12345…&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;</description><link>http://zigotica.tumblr.com/post/21153181306</link><guid>http://zigotica.tumblr.com/post/21153181306</guid><pubDate>Sun, 15 Apr 2012 18:43:19 +0200</pubDate></item><item><title>Path, Love &amp; Hate</title><description>&lt;p&gt;I love Path app. I admit first version didn&amp;#8217;t call me at all, actually I uninstalled after just few minutes. But this version 2 is simple yet powerful, with the basic social needs all together. I love its basic user interface, cool Add (+) menu, having to slide between 3 main pages,  and some other little subtleties which improve user experience (that analog clock is awesome). However none of my previous comments will help improve the app, so I decided to write some lines on the few things that would make it more usable (or less misleading).&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Links inside comments are not clickable and cannot be copied. Text can&amp;#8217;t be copied either.&lt;/li&gt;
&lt;li&gt;When you look for friend and add them, you dont know what you are accepting nor who will be seeing what. Are you accepting that they see your stream or that you will see theirs? If it&amp;#8217;s the former, then there&amp;#8217;s an issue here (why would someone want to see streams from people that just invited you?). If it&amp;#8217;s the latter, there&amp;#8217;s no way to &amp;#8220;follow&amp;#8221; someone without them accepting you but then both are following each other. Honestly, following directions should be easier to understand.&lt;/li&gt;
&lt;li&gt;Oh, and friendship invites should be on your activity screen.&lt;/li&gt;
&lt;li&gt;When you receive an email notification from someone inviting you to share your paths, there is no link to that person&amp;#8217;s path, just an invitation to download the app. Senseless, who&amp;#8217;s this Xavi below in the picture? No way to know.&lt;br/&gt;&lt;img alt="No link in email invites?" src="http://cl.ly/2H1Z2r3p3E3b3U2o140Q/Captura%20de%20pantalla%202011-12-08%20a%20las%2013.59.03.png"/&gt;&lt;/li&gt;
&lt;li&gt;When you comment on someone else&amp;#8217;s photo and later someone else comments on the same image, the notification you receive says something like &amp;#8220;hey, x commented on YOUR photo&amp;#8221;. Misleading and wrong, see yourself (the image below and comments are real, I just cut part of the image to make it more clear):&lt;br/&gt;&lt;br/&gt;&lt;img alt="example: commenting on someone else's image" src="http://f.cl.ly/items/410e1B1a0T1r460z0w2A/Captura%20de%20pantalla%202011-12-08%20a%20las%2015.34.22.png"/&gt;&lt;br/&gt;&lt;br/&gt;On the image above from Ale Muñoz, I added a comment and waited for a reply. When I got the notification on my iPhone notification center, it says Your photo. &lt;br/&gt;&lt;br/&gt;&lt;img alt="misleading notification" src="http://f.cl.ly/items/3u3D0t0Q1B3V302s322V/Captura%20de%20pantalla%202011-12-08%20a%20las%2015.21.50.png"/&gt;&lt;/li&gt;
&lt;li&gt;There&amp;#8217;s no way to differentiate my updates from my friends&amp;#8217; updates. Background and font color are the same. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I hope this post can eventually help improve the app, which is already awesome, but if the issues above are not just my imagination, the app can still have room for improvement. &lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/13921788633</link><guid>http://zigotica.tumblr.com/post/13921788633</guid><pubDate>Fri, 09 Dec 2011 02:51:07 +0100</pubDate><category>app</category><category>path</category><category>ui</category><category>ux</category><category>review</category><category>design</category></item><item><title>Instagram Engineering: What Powers Instagram: Hundreds of Instances, Dozens of Technologies</title><description>&lt;a href="http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances-dozens-of"&gt;Instagram Engineering: What Powers Instagram: Hundreds of Instances, Dozens of Technologies&lt;/a&gt;: &lt;p&gt;&lt;a href="http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances-dozens-of" class="tumblr_blog"&gt;instagram-engineering&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One of the questions we always get asked at meet-ups and conversations with other engineers is, “what’s your stack?” We thought it would be fun to give a sense of all the systems that power Instagram, at a high-level; you can look forward to more in-depth descriptions of some of these systems in…&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://zigotica.tumblr.com/post/13664046116</link><guid>http://zigotica.tumblr.com/post/13664046116</guid><pubDate>Sat, 03 Dec 2011 05:02:35 +0100</pubDate></item><item><title>How to use vhosts in Wordpress development</title><description>&lt;p&gt;Wordpress development has some pitfalls, one of them being that it stores the domain in the database to reference all inner links. So if you develop locally, you have to replace all instances of localhost in the database before you upload to production. Lame. &lt;/p&gt;
&lt;p&gt;What follows is a little trick I use lately, nothing new I guess, but it might help your workflow. The idea is to create a virtual host locally with the same name of the production domain. Since local and production hosts will share the same name, you don&amp;#8217;t have to worry about replacing strings in the database when you sync the code/database. Enough talking, here&amp;#8217;s the method.&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Edit /etc/hosts and add a new entry for the new development site, named after the production domain:&lt;br/&gt;&lt;code&gt;127.0.0.1    &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create a vhosts folder inside apache folder (if you&amp;#8217;re using MAMP, this is typically /Applications/MAMP/conf/apache).&lt;/li&gt;
&lt;li&gt;Add a .conf file inside the vhosts folder, named after the production domain.  In our example this will be &lt;a href="http://www.example.com.conf"&gt;www.example.com.conf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Content of this file will be the definition of the virtual host, name and path to local files:&lt;br/&gt;&lt;code&gt;&amp;lt;virtualhost *:80&amp;gt;&lt;br/&gt;    ServerName &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt;&lt;br/&gt;    DocumentRoot "/your/local/path/www.example.com/"&lt;br/&gt;&amp;lt;/virtualhost&amp;gt;&lt;/code&gt;&lt;br/&gt;Note the use of &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt; as ServerName.&lt;/li&gt;
&lt;li&gt;Change apache&amp;#8217;s httpd.conf to automatically include all configuration files from the vhosts folder (add this at the very bottom):&lt;br/&gt;&lt;code&gt; NameVirtualHost *:80&lt;br/&gt; Include /Applications/MAMP/conf/apache/vhosts/*.conf&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Now, the idea is that you are telling your system that &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt; resides in the 127.0.0.1 IP so you wouldn&amp;#8217;t reach the production site. When you need to work locally, you use the line of the /etc/hosts to cheat your computer, start apache and check your code changes at &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt; (it will show you the local environment). When you need to visit the live domain you comment that line, point your browser to &lt;a href="http://www.example.com"&gt;www.example.com&lt;/a&gt; and you will reach the production site. &lt;/p&gt;
&lt;p&gt;You will probably need to add a fork in Wordpress config.php file to handle different user/pwd combo at development or production levels, something like:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;define('DB_NAME', 'whatever_your_db_name_is');&lt;br/&gt; if($_SERVER['SERVER_ADDR'] == '127.0.0.1') { // development&lt;br/&gt;     define('DB_USER', 'development_db_username');&lt;br/&gt;     define('DB_PASSWORD', 'development_db_password');&lt;br/&gt; }&lt;br/&gt; else { // production&lt;br/&gt;     define('DB_USER', 'production_db_username');&lt;br/&gt;     define('DB_PASSWORD', 'production_db_password');&lt;br/&gt; } &lt;/code&gt;&lt;br/&gt;User here does not refer to the Wordpress user but the user connecting to the MySQL.&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/12963774869</link><guid>http://zigotica.tumblr.com/post/12963774869</guid><pubDate>Fri, 18 Nov 2011 11:35:00 +0100</pubDate><category>apache</category><category>localhost</category><category>vhost</category><category>wordpress</category></item><item><title>You Don't Know JavaScript</title><description>&lt;a href="http://www.w2lessons.com/2011/04/you-dont-know-javascript.html?utm_source=javascriptweekly&amp;utm_medium=email"&gt;You Don't Know JavaScript&lt;/a&gt;</description><link>http://zigotica.tumblr.com/post/12648741795</link><guid>http://zigotica.tumblr.com/post/12648741795</guid><pubDate>Fri, 11 Nov 2011 19:27:59 +0100</pubDate></item><item><title>Things to do before launching a Wordpress site</title><description>&lt;p&gt;Once you have installed Wordpress in your server, you MUST make some changes to make it less prone to attacks. Security is never 100% garanteed but these can help a lot:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Keep your Wordpress and plugins updated.&lt;/li&gt;
&lt;li&gt;Install and configure the following plugins: &lt;a href="http://akismet.com/"&gt;Akismet&lt;/a&gt;, &lt;a href="http://wordpress.org/extend/plugins/login-lock/"&gt;Login Lock&lt;/a&gt;, &lt;a href="http://wordpress.org/extend/plugins/wordpress-file-monitor/"&gt;Wordpress File Monitor&lt;/a&gt;, &lt;a href="http://wordpress.org/extend/plugins/exploit-scanner/"&gt;Exploit Scanner&lt;/a&gt;, &lt;a href="http://wordpress.org/extend/plugins/wp-security-scan/"&gt;WP Security Scan&lt;/a&gt;, &lt;a href="http://wordpress.org/extend/plugins/backwpup/"&gt;BackWPUp&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Deactivate and uninstall any plugin you are not using.&lt;/li&gt;
&lt;li&gt;Delete install.php file. You don&amp;#8217;t need it anymore.&lt;/li&gt;
&lt;li&gt;Some .htaccess rules: &lt;a href="http://codex.wordpress.org/Combating_Comment_Spam/Denying_Access#Deny_Access_to_No_Referrer_Requests"&gt;protect against non referrer spam&lt;/a&gt;, protect against bad bots, &lt;a href="http://altlab.com/htaccess_tutorial.html"&gt;prevent hotlinking&lt;/a&gt;, prevent access to wp-config.php and maybe install &lt;a href="http://perishablepress.com/5g-firewall-beta/"&gt;5G firewall&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;PHP or filesystem improvements may include: &lt;a href="http://www.wpbeginner.com/wp-tutorials/the-right-way-to-remove-wordpress-version-number/"&gt;removing wordpress version number&lt;/a&gt; in your functions.php, &lt;a href="http://api.wordpress.org/secret-key/1.1/"&gt;adding auth keys&lt;/a&gt; to the config file and chmod important files such as .htaccess and wp-config.php accordingly (0644).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Make changes one step at a time. Hope these help.&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/12282248384</link><guid>http://zigotica.tumblr.com/post/12282248384</guid><pubDate>Thu, 03 Nov 2011 13:48:00 +0100</pubDate><category>wordpress</category><category>security</category><category>.htaccess</category><category>plugin</category><category>spam</category></item><item><title>Writing Modular JavaScript With AMD, CommonJS &amp; ES Harmony</title><description>&lt;a href="http://addyosmani.com/writing-modular-js/"&gt;Writing Modular JavaScript With AMD, CommonJS &amp; ES Harmony&lt;/a&gt;: &lt;p&gt;Following with my modules and ES/Harmony findings, here’s one you MUST read. THis guy is doing a great evangelization job lately, so worth it.&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/11946791108</link><guid>http://zigotica.tumblr.com/post/11946791108</guid><pubDate>Wed, 26 Oct 2011 13:53:00 +0200</pubDate></item><item><title>What I like of ES.next/Harmony</title><description>&lt;p&gt;I&amp;#8217;ll make it short and to the point. &lt;strong&gt;What I like of ES.next/Harmony&lt;/strong&gt;, from what I&amp;#8217;ve been &lt;a title="ongoing specification work of Ecma TC39" href="http://wiki.ecmascript.org/doku.php"&gt;reading&lt;/a&gt; and watching at &lt;a title="The Future of JavaScript with David Herman of Mozilla" href="http://marakana.com/forums/html5/general/498.html"&gt;tech&lt;/a&gt; &lt;a title="Google I/O 2011: Learning to Love JavaScript" href="http://www.youtube.com/watch?v=seX7jYI96GE&amp;amp;feature=relmfu"&gt;talks&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;I like there&amp;#8217;s a way to make private vars. I don&amp;#8217;t like the syntax though: &lt;code&gt;var secret = Name.create("WTF");&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Modules. Using &lt;a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/"&gt;design patterns&lt;/a&gt; is cool, and I&amp;#8217;ve been advocating for them lately, mainly the Revealing Module Pattern. But there should be a standard way to make modules. There should be a better, standarized way to write big Javascript apps, actually, I like &lt;a title="Scalable JavaScript Application Architecture" href="http://yuilibrary.com/theater/nicholas-zakas/zakas-architecture/"&gt;Zakas&amp;#8217; approach&lt;/a&gt; to Scalable JS Applications Architecture (Base, Core, Sandbox, Modules), but that&amp;#8217;s another story. The proposed module/import/export syntax is easy and looks a bit nicer to me than &lt;a title="Modular JS: AMD &amp;amp; CommonJS modules" href="http://briancavalier.com/presentations/pgh-js-amd-10-2011/"&gt;AMD/CommonJS&lt;/a&gt; (which are very nice options anyway). &lt;/li&gt;
&lt;li&gt;&lt;code&gt;arguments&lt;/code&gt; object being a true Array, having the &amp;#8230;rest syntax and accepting default values.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;let&lt;/code&gt; allows for block scoped variables.&lt;/li&gt;
&lt;li&gt;dynamic naming as in &lt;code&gt;var L = { [getName()] : 5, ...}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;for in/of, keys/values&lt;/code&gt;. Finally fixing the mess&amp;#8230;&lt;/li&gt;
&lt;li&gt;Multiline string literals and string interpolation.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;What I don&amp;#8217;t like so much of ES.next/Harmony, didn&amp;#8217;t understand fully or don&amp;#8217;t have an opinion about yet:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;As I said, private var syntax. What&amp;#8217;s wrong with the &lt;code&gt;private&lt;/code&gt; word?&lt;/li&gt;
&lt;li&gt;&lt;code&gt;yield&lt;/code&gt; to sortof create interruptible functions. Isn&amp;#8217;t it &lt;em&gt;just&lt;/em&gt; synchronous callbacks?&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Proxy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;weakMaps&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I think the future of Javascript language is quite well thought, without going into the evil side. Dart, that is another thing, too Java-ish for my taste. I call it &lt;a title="the dark side" href="http://www.dartlang.org/"&gt;Dart[Vader]&lt;/a&gt;.&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/11729130692</link><guid>http://zigotica.tumblr.com/post/11729130692</guid><pubDate>Fri, 21 Oct 2011 13:22:00 +0200</pubDate><category>ecma</category><category>javascript</category><category>harmony</category><category>ES.next</category></item><item><title>Javascript module pattern in CoffeeScript</title><description>&lt;p&gt;Just discovered how to use the javascript module pattern in coffeescript; it looks much cleaner than its javascript equivalent indeed:&lt;/p&gt;
&lt;pre&gt;module = (-&amp;gt;
    privateVar = 1
    privateMethod = () -&amp;gt; alert "Hello CoffeeScript!"

    publicMethod : () -&amp;gt; alert "this is public now " + privateVar
    nowPublic : privateMethod

)()

module.publicMethod()
module.nowPublic()
alert module.privateVar
module.privateMethod()
&lt;/pre&gt;
&lt;p&gt;Which turns into:&lt;/p&gt;
&lt;pre&gt;var module;
module = (function() {
  var privateMethod, privateVar;
  privateVar = 1;
  privateMethod = function() {
    return alert("Hello CoffeeScript!");
  };
  return {
    publicMethod: function() {
      return alert("this is public now " + privateVar);
    },
    nowPublic: privateMethod
  };
})();

module.publicMethod();
module.nowPublic();
alert(module.privateVar);
module.privateMethod();
&lt;/pre&gt;
&lt;p&gt;Adapted from the official github repo, issue &lt;a href="https://github.com/jashkenas/coffee-script/issues/1140#issuecomment-783898"&gt;#1140&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;EDIT: &lt;a href="http://twitter.com/CoffeeScript"&gt;@CoffeeScript&lt;/a&gt; just kindly showed me that we can make the code even shorter and cleaner by using the &lt;code&gt;do&lt;/code&gt; keyword as follows:&lt;/p&gt;
&lt;pre&gt;module = do -&amp;gt;
    privateVar = 1
    privateMethod = () -&amp;gt; alert "Hello CoffeeScript!"

    publicMethod : () -&amp;gt; alert "this is public now " + privateVar
    nowPublic : privateMethod

module.publicMethod()
module.nowPublic()
alert module.privateVar
module.privateMethod()
&lt;/pre&gt;</description><link>http://zigotica.tumblr.com/post/8641971825</link><guid>http://zigotica.tumblr.com/post/8641971825</guid><pubDate>Mon, 08 Aug 2011 13:49:00 +0200</pubDate><category>javascript</category><category>coffeescript</category><category>module pattern</category></item><item><title>advanced javascript articles and blogs</title><description>&lt;p&gt;some of my reading these days:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://people.apache.org/~martinc/OOP_with_ECMAScript/"&gt;Tom Trenka&amp;#8217;s OOP with ECMAScript&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/"&gt;Essential JavaScript Design Patterns For Beginners&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.adequatelygood.com/"&gt;Adequately good; decent programming advice&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://eloquentjavascript.net/contents.html"&gt;Eloquent JavaScript&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bcherry.net/talks/js-better-faster"&gt;JavaScript: Better and Faster&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://perfectionkills.com/"&gt;Perfection Kills&lt;/a&gt; by kangax&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/7922957914</link><guid>http://zigotica.tumblr.com/post/7922957914</guid><pubDate>Fri, 22 Jul 2011 12:18:00 +0200</pubDate><category>javascript</category></item><item><title>Deploy your static projects to Heroku using git</title><description>&lt;a href="https://github.com/raul/rack-static-boilerplate"&gt;Deploy your static projects to Heroku using git&lt;/a&gt;: &lt;p&gt;Use git (it’s good!) and deploy your static html/css to Heroku - for free.&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span"&gt;Raul makes it so easy.&lt;/span&gt;&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/7808273937</link><guid>http://zigotica.tumblr.com/post/7808273937</guid><pubDate>Tue, 19 Jul 2011 19:37:00 +0200</pubDate><category>heroku</category></item><item><title>Google's javascript Style guide</title><description>&lt;a href="http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml"&gt;Google's javascript Style guide&lt;/a&gt;: &lt;p&gt;go read it, even if you &lt;em&gt;think&lt;/em&gt; you know javascript&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/7765397523</link><guid>http://zigotica.tumblr.com/post/7765397523</guid><pubDate>Mon, 18 Jul 2011 18:57:09 +0200</pubDate></item><item><title>how to add your GIT branch to your prompt</title><description>&lt;p&gt;add the following code to your .bash_profile&lt;/p&gt;
&lt;pre&gt;parse_git_branch() {
  git branch 2&amp;gt; /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
PS1="\w\[\e[0;33;49m\]\$(parse_git_branch)\[\e[0;0m\]$ "&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://lukasrieder.com/2009/07/14/extend-your-bash-ps1.html"&gt;credits&lt;/a&gt;&lt;/p&gt;</description><link>http://zigotica.tumblr.com/post/7762504084</link><guid>http://zigotica.tumblr.com/post/7762504084</guid><pubDate>Mon, 18 Jul 2011 16:48:35 +0200</pubDate></item></channel></rss>
