<?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>Learning life’s lessons to build a better tomorrow and enjoy today. Expressions of Art, Adventure, Technology and Love. This is the journey of Aishwar Muthuraman.</description><title>Floating Point</title><generator>Tumblr (3.0; @fp0)</generator><link>http://www.floatingpoint.ca/</link><item><title>js1k: My Concept</title><description>&lt;p&gt;I’ve been waiting for js1k ever since I read about it a few months ago. The contest for this year is here now. I wanted to submit something cool using the Canvas.&lt;/p&gt;
&lt;p&gt;I haven’t really worked with the canvas before, so there is some learning curve I have to cross. I decided it was best if I stuck with a simple concept for the demo. This way I can get familiar with using canvas and also deliver something visual in a relatively short time.&lt;/p&gt;
&lt;p&gt;So here is my concept: A heart that floats around randomly and can be pushed by waves. Waves are generated by rypples from a point where you click. I’ll work through this in stages.&lt;/p&gt;
&lt;p&gt;So for my first iteration, I created this:&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="400px" src="http://jsfiddle.net/aishwar/gkkXx/embedded/" width="100%"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;No waves yet. But a heart that moves around randomly.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Issues to resolve:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Movement of the heart is jumpy. Need to make it smooth.&lt;/li&gt;
&lt;li&gt;Ensure the heart does not go outside the walls of the canvas.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://www.floatingpoint.ca/post/17533536007</link><guid>http://www.floatingpoint.ca/post/17533536007</guid><pubDate>Sun, 12 Feb 2012 22:30:00 -0500</pubDate></item><item><title>js1k 2012</title><description>&lt;a href="http://js1k.com/2012-love/"&gt;js1k 2012&lt;/a&gt;: &lt;p&gt;Amazing stuff here. Hard to believe all the demos are &lt; 1k. Treasure chest to explore and learn.&lt;/p&gt;</description><link>http://www.floatingpoint.ca/post/17533462459</link><guid>http://www.floatingpoint.ca/post/17533462459</guid><pubDate>Sun, 12 Feb 2012 22:00:00 -0500</pubDate></item><item><title>nodejs dropbox clone: nsync</title><description>&lt;p&gt;I have created a github repo for the project: &lt;a href="https://github.com/aishwar/nsync"&gt;&lt;a href="https://github.com/aishwar/nsync"&gt;https://github.com/aishwar/nsync&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The focus of this project (at this stage) is not on supporting advanced features (e.g. versioning, conflict resolution etc.) in file synchronization, but rather creating a basic app that provides file synchronization in a cross-platform way.&lt;/p&gt;
&lt;p&gt;Here are the tasks I believe need to be done for us to have a basic working software:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Running the app in client-mode/server-mode&lt;br/&gt;&lt;em&gt;&lt;strong&gt;Terminology:&lt;/strong&gt; Each machine where changes to files can happen and that need to be synchronized is a client. The server is the coordinator of changes. All changes in the clients are sent to the server. When a client makes changes to the file system and informs the server, the server updates its copy with those changes and then informs the other clients.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Security mechanism of the server to ensure client connects to the intended server. If we have a client watching folder ‘A’ and another client watching folder ‘B’, we do not want client watching folder ‘A’ to try and sync with server for folder ‘B’&lt;/li&gt;
&lt;li&gt;File System representative object generation&lt;br/&gt;Generating JSON representation of the file system. The JSON object should contain the names of the files and the hash value to represent their content.&lt;/li&gt;
&lt;li&gt;Comparison of two file system objects to identify:&lt;br/&gt;file adds,&lt;br/&gt;file deletes, and &lt;br/&gt;file changes&lt;/li&gt;
&lt;li&gt;Client/Server delta computation on the server&lt;/li&gt;
&lt;li&gt;Client/Server sending file-system updates and ensuring it gets done&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;We will keep our conflict resolution simple: Last client wins. If clients A and B update a file. The last one to inform the server of the file update will be the winner regardless of who updated first.&lt;/p&gt;</description><link>http://www.floatingpoint.ca/post/16285675350</link><guid>http://www.floatingpoint.ca/post/16285675350</guid><pubDate>Sun, 22 Jan 2012 08:06:05 -0500</pubDate><category>nsync</category></item><item><title>Creating a dropbox clone using nodejs</title><description>&lt;p&gt;As I was surfing the interwebs, I came across &lt;a href="http://lipsync.it/" title="LipSync" target="_blank"&gt;lipsync&lt;/a&gt;. Lipsync is an open source dropbox clone. I was looking for something like this. I thought “perfect, I can use this now”. Only to realize, a minute later, it doesn’t work in Windows. Bummer.&lt;/p&gt;
&lt;p&gt;But this also got me excited. I could try building one. And what better way to do it than &lt;a href="http://nodejs.org/" title="Node.js" target="_blank"&gt;nodejs&lt;/a&gt;. Afterall, here is what nodejs is supposed to be (from the &lt;a href="http://nodejs.org/" title="Node.js" target="_blank"&gt;official site&lt;/a&gt;):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Node.js is a platform built on Chrome’s JavaScript runtime for &lt;strong&gt;easily building&lt;/strong&gt; fast, scalable &lt;strong&gt;network applications&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And nodejs runs on multiple platforms. Ok, time to try this out.&lt;/p&gt;</description><link>http://www.floatingpoint.ca/post/16236995390</link><guid>http://www.floatingpoint.ca/post/16236995390</guid><pubDate>Sat, 21 Jan 2012 13:30:00 -0500</pubDate><category>nsync</category></item><item><title>Parsing Expression Grammar (PEG)</title><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Parsing_expression_grammar" title="Parsing Expression Grammar (PEG)" target="_blank"&gt;PEG&lt;/a&gt; is a way to describe formal languages. PEG is suited to designing computer languages that do not have ambiguities. &lt;a href="http://pegjs.majda.cz/" title="PEG.js" target="_blank"&gt;PEG.js&lt;/a&gt; is a Javascript parser generator using PEG.&lt;/p&gt;
&lt;p&gt;I remember reading about it of a few weeks ago (in &lt;a href="http://dailyjs.com/2011/12/05/echo-brid/" title="dailyjs" target="_blank"&gt;dailyjs&lt;/a&gt;) and wanted to try it out. Knowing how to design languages is a cool skill to have. I don’t mean cool in just an academic way. Being able to write a domain specific languages (DSL) can really make using some systems intuitive (e.g. testing).&lt;/p&gt;
&lt;p&gt;I have tried to do something like this in my &lt;a href="https://github.com/aishwar/cmap" title="cmap" target="_blank"&gt;cmap&lt;/a&gt; github project. Given this was one of my first tries to write a parser, I felt my parser was error prone, and extending it would have been hard. There had to be a better way. And I think PEG.js is one of those better ways. I am going to try it out and learn how to use it. And I will hopefully have something to share. If anyone else is interested in this, definitely check it out: &lt;a href="http://pegjs.majda.cz/" title="PEG.js" target="_blank"&gt;PEG.js&lt;/a&gt;.&lt;/p&gt;</description><link>http://www.floatingpoint.ca/post/15893963981</link><guid>http://www.floatingpoint.ca/post/15893963981</guid><pubDate>Sun, 15 Jan 2012 13:08:05 -0500</pubDate></item><item><title>Learning Three js</title><description>&lt;a href="http://learningthreejs.com/"&gt;Learning Three js&lt;/a&gt;: &lt;p&gt;Looks like an amazing site to learn game development and animations using Javascript.&lt;/p&gt;</description><link>http://www.floatingpoint.ca/post/15872506038</link><guid>http://www.floatingpoint.ca/post/15872506038</guid><pubDate>Sun, 15 Jan 2012 01:02:34 -0500</pubDate><category>revisit</category></item><item><title>Switching to Tumblr</title><description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s a new year. Time for new beginnings.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Is that all there is to the change?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;May be a bit more.&lt;/p&gt;
&lt;p&gt;I have decided I can do better than writing my own blog engine. Tumblr does a lot more than my custom engine and they do an amazing job at it. So I will use them to host my blog.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;I sense something more philosophical…&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That might just be me speaking in the above quote, but if you really do care about what my response to that is, read on. Ramblings ahead, be warned.&lt;/p&gt;
&lt;p&gt;I have always known reinventing the wheel is expensive and is usually not worth it. But the compulsive engineer in me has loved to stretch his intellectual muscles to re-solve problems just to see how he can do it. However this has been a big source of speed loss. And after I gained some insight into the design of that system and how much more work is involved in making it reach the level of existing products, it also leads to a lot of abandoned projects. This made me feel bad. It is a lot of work and a lot of wasted effort. Something needed to be done.&lt;/p&gt;
&lt;p&gt;Software Development is magical and fulfilling to me because it is a creative process where we create something of value from almost nothing. The more value I create, the more fulfilled I am. The best way to create more value is to build amazing new things or to make an awesome thing even more awesome. The fastest way to build new things is to build it using existing pieces that work, rather than recreating every part of the system.&lt;/p&gt;
&lt;p&gt;Either way, I have resolved to embrace and use existing solutions to build newer products rather than re-create parts. And if there a product that almost works, I would rather spend the time and make it work for me rather than rewrite it from scratch. This is my new resolve from this new year: improve my velocity to create more value so I can wake up everyday excited and enthusiastic about what is ahead.&lt;/p&gt;</description><link>http://www.floatingpoint.ca/post/15865916765</link><guid>http://www.floatingpoint.ca/post/15865916765</guid><pubDate>Sat, 14 Jan 2012 22:50:00 -0500</pubDate></item></channel></rss>

