tag:blogger.com,1999:blog-43630072437821763402024-03-13T20:48:09.516-07:00Exploring Software Universeselvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.comBlogger30125tag:blogger.com,1999:blog-4363007243782176340.post-63240469461545580702014-11-06T00:37:00.000-08:002014-11-06T00:38:27.758-08:00Handling Concurrency<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div>
<br /></div>
<div>
Programming languages offer various ways to handle concurrency. In languages like Java, concurrency is handled at library level, in other languages like Erlang concurrency is handled at language level itself.</div>
<div>
<br /></div>
<div>
Semantics of handing concurrency,</div>
<ul style="text-align: left;">
<li>Locks/Mutex</li>
<li>Compare and Set</li>
<li>Copy on write</li>
<li>Event loop/machine</li>
<li>Messaging</li>
<ul>
<li>Actor</li>
<li>Communicating via sequential processing (CSP)</li>
</ul>
</ul>
<br />
<br />
Java language provides library to support Locks/Mutex, Compare and Set and Copy on write semantics.<br />
<br />
Scala - a JVM based language provides Actor based semantic.<br />
<br />
Ruby language provides Mutex based semantic and we also have event loop based semantic via external library (EventMachine.rb).<br />
<br />
Node.js provides event loop based semantic at language level. At language level IO related events (such as Network, File system) are supported. Generation and handling of custom events also supported.<br />
<br />
Go language supports Mutex based semantic and also CSP semantic via channels.<br />
<br />
Erlang language supports Actor based semantic.<br />
<br /></div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-27874849958732626372014-05-14T19:17:00.001-07:002014-05-15T01:21:46.175-07:00Paperstencil - cross between word processor and web form<div dir="ltr" style="text-align: left;" trbidi="on">
Have open sourced our product - <a href="http://www.paperstencil.com/" target="_blank">Paperst<span id="goog_1009117336"></span><span id="goog_1009117337"></span>encil</a> - cross between word processor and web form.<br />
<br />
Paperstencil helps enterprises to roll-out data collection solutions, contracts, signatures, payment related solutions of their business needs in few minutes.<br />
<br />
Wordprocessors such as "MS Word" are good for constructing documents. Web forms are good at validating and capturing user input. Meet "Paperstencil", a cross over product between Wordprocessor and Web form.<br />
<br />
<b><u>Features :</u></b><br />
<br />
<ul style="text-align: left;">
<li>Create "PDF Form" like natural looking document without external plugins.</li>
<li>Validate and capture user signature and other user inputs such as address, email, date etc.</li>
<li>Constructed documents shall be viewed on both Desktop and Tablets without external plugins.</li>
<li>Constructed document shall be shared as web link, thus making it easy to embed in other web assets and email.</li>
<li>Table/Nested tables make it easy to structure custom page layouts.</li>
</ul>
<div>
<br /></div>
<br />
Demo : <a href="http://www.paperstencil.com/demo">http://www.paperstencil.com/demo</a><br />
<div>
<br />
Opensouce : <a href="https://github.com/bitstat/paperstencil">https://github.com/bitstat/paperstencil</a><br />
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://s3.amazonaws.com/paperstencil/assets/wordprocessor.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://s3.amazonaws.com/paperstencil/assets/wordprocessor.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://s3.amazonaws.com/paperstencil/assets/layout.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://s3.amazonaws.com/paperstencil/assets/layout.gif" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
</div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com1tag:blogger.com,1999:blog-4363007243782176340.post-72581013675324748042014-05-12T03:32:00.002-07:002014-05-12T03:38:39.114-07:00Web based opensource rich text editors for Tablet, Mobiles and Desktop<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
There are few rich text editors that depend on 'contenteditable' attribute of HTML5 to provide rich text editing. Author of <a href="http://codemirror.net/" target="_blank">codemirror</a> describes <a href="http://codemirror.net/doc/internals.html" target="_blank">his experience</a> with writing 'contenteditable' based code editor, and why he switched away from it. If support for 'contenteditable' is so buggy in desktop browsers, think about support for it in tablet/mobile browsers !!.<br />
<br />
On the other hand, there are open source rich text editors built with web technologies that <u><i>didn't depend</i></u> on 'contenteditable' attribute of HTML5. Instead they depend on their own layout engine. Here are two opensource rich text editors that have their own layout engine,<br />
<br />
<a href="https://github.com/danielearwicker/carota" target="_blank">Carota</a> : HTML 5 Canvas based rich text editor.<br />
Demo is accessible at <a href="http://earwicker.com/carota/" target="_blank">http://earwicker.com/carota/</a><br />
Source is accessible at <a href="https://github.com/danielearwicker/carota" target="_blank">https://github.com/danielearwicker/carota</a><br />
<br />
<a href="https://github.com/firebase/firepad" target="_blank">Firepad</a> : <a href="http://codemirror.net/">Codemirror</a> based rich text editor from Firebase.<br />
Demo is accessible at <a href="http://www.firepad.io/">http://www.firepad.io/</a><br />
Source is accessible at <a href="https://github.com/firebase/firepad" target="_blank">https://github.com/firebase/firepad</a><br />
<br />
<br /></div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-61407245435681906562013-08-28T22:05:00.001-07:002013-08-28T22:05:11.168-07:00Toast - My first startup exit<div dir="ltr" style="text-align: left;" trbidi="on">
IP and assets of my first venture (xbrlware/bitstat) have been acquired by Frankfurt, Germany based financial services company, about a month ago. The acquisition process went smooth. <br />
<br />
The acquisition brings logical end to my first venture. During our time in this venture,<br />
<br />
<ul>
<li>We raised seed fund.</li>
<li>Assembled core team and created the product.</li>
<li>Generated revenue.</li>
<li>Acquired customers globally.</li>
<li>Acquisition of IP/assets by another company.</li>
</ul>
<div>
<br /></div>
<div>
Toast time. </div>
<br />
Prior to acquisition, we were able to generate revenue from our product, but we couldn't grow at a pace that we had hoped for. Since then, we have started focusing on other opportunities.<br />
<br />
Over last couple of years, have received four acquisition offer for our product/company. The first acquisition offer that we received was at early stage of our venture. At that time we were very hopeful of our product future and turn the acquisition offer down without even considering it. If I look back now, our first acquisition offer looks very attractive (time window to revive that offer has gone).</div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-24789824346982691432013-07-09T21:58:00.000-07:002013-07-09T21:58:40.102-07:00Bridging digital divide in emerging economies<div dir="ltr" style="text-align: left;" trbidi="on">
This post details about how things went till now, in our attempt at creating a solution to solve digital divide among members of Indian families. <br />
<br />
<b>Brief about our solution :</b><br />
<br />
In emerging economics like India, not all members of a family are equal in their capability to access technology, due to language barrier to access them, demanding tech skills to manage them. Since, members of a family live & work at different places/cities/geographies, there is friction in sharing & consuming digital content.<br />
<br />
Our solution is mix of hardware + software.<br />
<br />
<b>How things went till now :</b><br />
<br />
<u>1) Go to market on our own :</u> Since our solution involves hardware, we were in need of good capital investment. Approached few VCs & had few rounds of discussion with them, but things didn't workout. Below is the feedback from one of the VCs (Other VCs feedback were also in similar lines)<br />
<br />
<i>"In general, any hardware based models have a lot of complications due to inventory management, support infrastructure, maintenance and so on. That is the reason, you don't see much o single hardware product companies any more (Apple, HP, Dell, Samsung, LG, MicroMax, Sony, etc. etc.). They all reuse their distribution, manufacturing, procurement, and maintenance network very well. If I were you, once you have a product, think through whether you can sell the product through Micromax or some one like that and you getting a royalty.</i><br />
<i><br /></i>
<i>The question is not about the demand, but, how you satisfy the demand without reinventing the whole wheel. My 2 cents."</i><br />
<br />
<u>2) Attempt at approaching an India based hardware vendor :</u> Through friends, got an introduction to board member (who is also one of their VCs) of an India based hardware manufacturer. Pitched our solution to them, but didn't get any response from him.<br />
<br />
<u>3) Approaching Intel :</u> Again through friends, go an introduction to Intel capital. Intel is trying to market their atom processor and working with other hardware manufacturers. Demoed our solution to them. They were also working closely with same India based hardware manufacturer, that I approached early. Not much progress here too.<br />
<br />
<u>4) Approaching Reliance :</u> Reliance jio infocomm (Owned by Mukesh ambanis's RIL. RIL pumped $5 billion in this project) is launching 4G based tablet tailored for Indian audience. Initiated discussion with connections I knew at RIL. Again here is too not much progress after few rounds of discussion.<br />
<br /></div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com1tag:blogger.com,1999:blog-4363007243782176340.post-38418118234879897652013-02-06T06:45:00.002-08:002013-05-23T01:20:42.339-07:00Indic language, Firefox OS App Days - Hackday<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: left;">
Have participated and demoed my app at Firefox OS App Day, in bangalore. My app was selected as one of the winner. Would be receiving Firefox OS developer preview phone as prize.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-OPKe7apKSKM/URJqHGYKWzI/AAAAAAAAAJI/DtiN54ekmpw/s1600/003.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://2.bp.blogspot.com/-OPKe7apKSKM/URJqHGYKWzI/AAAAAAAAAJI/DtiN54ekmpw/s320/003.jpg" width="320" /></a></div>
<br />
My app is about custom home screen, specifically tailored for Indian audience with Indic language support and Indic language keypad. There were more than 100 developers participated in the event and were around 15 hack demos. Was happy that many developers and mozilla team got excited about my app.<br />
<div>
<br /></div>
<div>
<br /></div>
</div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com6tag:blogger.com,1999:blog-4363007243782176340.post-19824628504802049062012-10-21T06:00:00.002-07:002012-10-21T06:05:03.533-07:00Firefox mobile OS talk at JSFoo - Bangalore 2012<div dir="ltr" style="text-align: left;" trbidi="on">
Have given demo oriented talk on <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS">Firefox mobile OS</a>, at <a href="http://jsfoo.in/2012/">JSFoo</a> - Bangalore 2012. My talk was attended by around 60-80 members. Theme of my talk focused on introducing audience to Firefox mobile OS, creating FFx mobile applications using HTML, JS, CSS technologies.<br />
<br />
Here is text-overview of my talk,<br />
<br />
Android, iOS are 2 established mobile OS players in the Market. Windows 8 preview is available & Blackberry 10 are about to be released sometime next year. We also have Open WebOS from HP. <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS">FFx mobile OS</a> is a new entrant to this space. In this session, I would be sharing my experience of what got me excited about FFx mobile OS & whats in there for web developers like you & me.<br />
<br />
<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS">FFx mobile OS</a> allows application to be created using JS, CSS, HTML. In fact, the only way we can create applications for FFx mobile OS, is using HTML technologies.<br />
<br />
<b><u>1) Hardware access :</u></b><br />
<ul style="text-align: left;">
<li>To create Instagram like application, in order to store pictures being taken, application code need an access to device file system </li>
<li>To create dialer app, application code have to interact with underlying telephony hardware.</li>
</ul>
How do we interact with underlying hardware from Javascript, if applications are created using HTML technologies? - Mozilla created <a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> specification, FFx OS implements <a href="https://wiki.mozilla.org/WebAPI">WebAPI</a> specification & expose them as JS libs.<br />
<br />
<b><u>2) Bootup process :</u></b><br />
<br />
Since applications are created using HTML technologies, when user switch-on the device, in order to render HTML components FFx OS bootstraps Gecko layout engine. Gecko layout engine reads content from "profile" directory, loads "system app", once "system app" is loaded, it launches "homescreen app", all other apps are launched from homescreen app.<br />
<br />
<b><u>3) System App + Homescreen app :</u></b><br />
<br />
Both "system app" and "homescreen" are created using HTML technologies. 10000ft view of layout of index.html of "System app" will look like a) top "div" container holds code related to notification/pull-down menu b) bottom "div" container holds code related to keyboard (which is hidden by default) c) Middle "div" container act as place holder for "iframe" of apps being launched. When user launches an app, FFx OS creates an "iframe", loads the app in that "iframe" & place that "iframe" inside middle "div" container. "z-index" of recently launched apps "iframe" is kept higher than other launched apps "iframe", so that user sees apps that he launched recently. "z-index" management is completely abstracted from developers.<br />
<br />
Homescreen app shows a) Dock of commonly used apps b) Grid of installed applications c) Grid paging, if grid can't fit installed apps in single page.<br />
<br />
4) <b><u>Demo of creating apps for FFx mobile : </u></b><br />
<ul style="text-align: left;">
<li>Writing "helloworld" HTML page, test that in Firefox browser, add "manifest.webapp" to convert them as FFx mobile app. "manifest.webapp" is a JSON based structure that specifies a) app name (english and other languages) b) permissions c) Path to icon of the app d) web-activities declaration (web activity is similar to android Intent)</li>
<li>Porting famous "todo" app from Backbone.js to FFx mobile.</li>
</ul>
5) <b><u>Touch event to mouse & keyboard event :</u></b><br />
<br />
"helloworld" and "todo" apps are created for mouse click & keyboard based input system of desktops. But they worked as-it-is in touch based device. When user interacts with touch screen, touch driver generates event that contains a) cartesian coordinates of touch point, b) touch pressure c) touch area. These events reach gecko and gecko understands what component it rendered at the touch point and triggeres mouse click / keyboard event at DOM element corresponding to component at touch point.<br />
<br />
6) <b><u> Logical layers of FFx mobile OS:</u></b><br />
<br />
FFx mobile has logical names to various components that we have discussed,<br />
<ul style="text-align: left;">
<li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Gonk">Gonk</a> - Device drivers (based on Android ICS drivers) + kernel</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Gecko">Gecko</a> - Layout engine</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Gaia">Gaia</a> - JS libs that expose underlying implementation of WebAPI spec + System App + Homescreen app</li>
</ul>
<br />
<br />
Here is presentation i used as supplement to my talk,<br />
<br />
<iframe allowfullscreen="true" frameborder="0" height="385" mozallowfullscreen="true" src="https://docs.google.com/presentation/embed?id=111W9wqM9MRX2WOZF9HS4lNoSuU6WycPgIen17i4ikHU&start=false&loop=false&delayms=3000" webkitallowfullscreen="true" width="560"></iframe>
</div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com5tag:blogger.com,1999:blog-4363007243782176340.post-90686874351752524212012-09-18T20:42:00.002-07:002012-10-02T21:41:47.500-07:00Tablet running Firefox mobile os<div dir="ltr" style="text-align: left;" trbidi="on">
Last week, have ported firefox mobile OS to allwinner soc based tablet. Short video below shows tablet running B2G (Boot to Gecko aka Firefox mobile OS). In the video, touch response is bit slow that's because have enabled logs on many places for debugging, otherwise touch response felt good.<br />
<br />
Hadrware spec :<br />
<br />
Processor:<span class="Apple-tab-span" style="white-space: pre;"> </span> Arm Cortex-A8 - 1.2 GHz<br />
Graphics:<span class="Apple-tab-span" style="white-space: pre;"> </span> Dual Mali-400MP<br />
Ram:<span class="Apple-tab-span" style="white-space: pre;"> </span> 512 MB<br />
Display: 7inch - 800 x 480 pixels<br />
Touchscreen : Capacitive multi-touch
<br />
<br />
<iframe height="385" src="https://docs.google.com/file/d/0B0L4JDuSrDyETWdteFNLRVFQZDg/preview" width="560"></iframe>
</div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com3tag:blogger.com,1999:blog-4363007243782176340.post-81647854628640908582011-09-27T02:30:00.000-07:002011-09-27T02:30:56.301-07:00SMB integrator experiment - Zero sum game<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
We are acquiring customers organically via inbound-marketing for our workflow product Postoz (http://www.postoz.com).<br />
<br />
We wanted to accelerate customer acquisition inorganically & were talking with few SMB solution integrators for partnership deals.<br />
<br />
Typically integrators earn their revenue via,<br />
<ol style="text-align: left;">
<li>Business consulting.</li>
<li>Technology consulting and implementation.</li>
<li>Support services.</li>
</ol>
Since our product is SaaS hosted; do-it-yourself; no-coding required solution, it eliminates need for step 2 and 3. Our partnership deal has to be purely based on revenue sharing.<br />
<br />
There are other big SaaS vendors playing zero-sum game with these SMB integrators. These vendors are spending multi-millions upfront to acquire large customer base. We don't have such large financial leverage to spend millions on customer acquisition.<br />
<br />
Fun part of startup is creating greater economic value out of nothing rather than corporate style 5-8 year break-even period to recoup invested millions.<br />
<br />
We have to make ourselves more reachable for customers world wide & we should find direct path to customers.<br />
<br />
<br />
<br />
<br />
<br /></div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-79155760848559925482011-09-24T03:31:00.000-07:002011-09-24T07:34:11.159-07:00Fun starts after release of the product<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Like other dev-entrepreneurs i hated marketing/sales at first time, i guess because programming is much more quantifiable than marketing/sales.<br />
<br />
In programming you deal with machine, tell it how to behave & when something didn't work you know how to fix it.<br />
<br />
In marketing/sales you are dealing with other human (customers, bloggers, partners etc). It is more of psychology play. You will certainly don't know why certain things didn't work/worked in particular way.<br />
<br />
Productizing an interesting problem/idea is just start of the journey. Real fun starts when you selling it. You get lot of energy when,<br />
<br />
<ul style="text-align: left;">
<li>Your product is being used by customers (uhh, finally built something people need)</li>
<li>You receive love letters & support requests from customers and hate mails from competitors (few meaningful emails in your Inbox).</li>
<li>Revenue generation (allows to on-board new hackers to experiment exciting ideas)</li>
</ul>
<br />
Ship your product quickly and start selling. Your excitement will grow exponentially with every customer acquisition.</div>
selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-3226293045739373282011-08-28T23:55:00.000-07:002011-08-29T00:07:51.744-07:00Pattern of human centric business processesMany SMEs use email for workflow management. Email based workflows are best examples of "human centric" business processes. The flexibility of email allows enterprises to structure their workflow system with ease. But email based workflows are <span style="font-style: italic;">painful</span> when the team size is not small and business process requires,
<br />
<br /><ul><li>Transparency among team members (who is working on what & how long).</li><li>Traceability of work item across various departments.</li><li>Quantitative data to analyze existing process structure for improvements.</li></ul><span style="font-style: italic;">In enterprises, pattern of "capturing data via web form (or) email that flows among group of people in an orderly sequence", repeats for many human centric business processes such as "IT helpdesk", procurement and employee on-boarding etc. <span style="font-weight: bold;">We recently released <a href="http://www.postoz.com/">Postoz</a> (http://www.postoz.com), a SaaS hosted, web based solution for this common pattern. </span></span>
<br />
<br />Postoz enables enterprises to create and deploy business processes in few minutes. With Postoz, enterprises can build automation solution for business processes the creative way they wanted and deploy them over internet, instantly.
<br />
<br />Here are the links to get started and know more about <a href="http://www.postoz.com">Postoz</a>,
<br />
<br />Sign-up free demo url : <a href="http://www.postoz.com/demo">http://www.postoz.com/demo</a>
<br />
<br />Tour page : <a href="http://www.postoz.com/info/tour">http://www.postoz.com/info/tour</a>
<br />
<br />3 mins demo video : <a href="http://www.youtube.com/watch?v=xWnu6RIUQaA">http://www.youtube.com/watch?v=xWnu6RIUQaA</a>
<br />
<br />selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-20392325554951302562011-07-19T03:46:00.000-07:002011-07-19T03:52:32.481-07:00Postoz - Public beta launch.We recently launched our latest product "Postoz" in limited public beta. You can access it at <a href="http://www.postoz.com">http://www.postoz.com</a><br /><br />Postoz is focused on an issue, most enterprises are coping with - "Using email for workflow management".<br /><br />Email has proved as wonderful communication medium. The flexibility of email allows enterprises to structure their workflow system with ease. But monitoring, tracking, measuring & optimising email based workflows are tough.<br /><br />At one end, there are expensive bloatware workflow/business process systems that requires multiple months of customization and at other end, there are one-size-fits-all ready-made solutions that kills operational innovations & effectiveness.<br /><br /><div style="text-align: justify;"><span style="font-weight: bold;">Postoz is SaaS hosted, web based business process system that lets organisations craft automation solution for business processes<br />the creative</span> <span style="font-weight: bold;">way they wanted & deploy them over Internet, instantly. Build business process in 5 minutes.</span><br /></div><br />You can try Postoz at <a href="http://www.postoz.com">http://www.postoz.com</a>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-31218382743516078572011-04-13T23:29:00.000-07:002011-04-13T23:38:44.917-07:00Postoz - Build email driven appsWe are preparing for beta launch of our new product - <a href="http://www.postoz.com/">Postoz.</a><br /><br />Postoz empowers enterprises to create, deploy, monitor email driven business processes.<br /><br /><span style="font-weight:bold;">Postoz = Email routing + Workflow + Web app for business logic<br /></span><br /><div>Epitome of postoz :<br /><ul><li>Automate business processes that are driven by inbound or outbound emails.</li><li>Control execution of business process with DSL based email routes and workflow steps.</li><li>Use web development skills for business logic implementation.</li><li>Get started at no cost.</li><li>Deploy at our hosted cloud environment or at your own infrastructure.</li></ul><br />You can find more info and/or signup for a private beta invite at : http://www.postoz.com</div><div><br /></div><div>Feel free to send your feeback/thoughts to feedback@postoz.com</div><div><br /><div><br /></div></div>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-57881629474298970202011-03-22T21:31:00.000-07:002011-03-22T23:33:50.918-07:00Freebies, incentives & education.<div><div>It is election time in <a href="http://en.wikipedia.org/wiki/Tamil_Nadu">Tamil Nadu</a>, India. To allure voters, political parties released their electoral manifesto with promise of various freebies and schemes. There are lot of debate in TV channels and new papers about socio-economic impact of these freebies & incentive schemes on government, society and individuals.</div><div><br /></div><div>I knew one area that freebies did a wonder - Education. I grew up in rural <a href="http://en.wikipedia.org/wiki/Tamil_Nadu">Tamil Nadu</a>, India and did my primary & pre-university education at govt sponsored school. During pre-economic reforms, liberalization era, to attract students to schools & reduce ownership/cost of education for parents, there were freebies & incentives for school going kids, particularly in rural India (where illiteracy, poverty was prevalent). Here i list freebies (that i could remember) distributed in my school</div><div><br /></div><div>Primary School.</div><div><ul><li>No school fees.</li><li>Tooth powder (Distributed first week of every month).</li><li>Mid day meals (Every day, free lunch).</li><li>Vitamin food balls (Every month, last Friday)</li><li>Note pads, pencil (Twice a year).</li><li>Geometry boxes & school books (Once a year).</li><li>Stitched school uniform (couldn't remember distribution frequency)</li></ul></div><div>Middle & High school.</div><div><ul><li>No school fees, Mid day meals, Note pads, books & school uniform.</li><li>Bicycle (For students who passed 8th grade. This was major attraction).</li></ul></div><div>If you pass 10th grade, you are</div><div><ul><li>Eligible to apply for limited bank loan without capital asset (This was major attraction).</li><li>Eligible to apply for heavy wheeler driving license (Lorry, Truck, Bus etc).</li></ul></div><div>India's economic reforms, liberalization started in mid 1990, had reduced need of these incentives. Today incentives like "Free tooth powder" are no longer exist & not many people depend on these schemes for their education.</div></div><div><br /></div><div>When i look back 15 years, always amazed by opportunities brought by economic reforms & liberalization.</div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-23552932275508498172011-03-02T20:42:00.000-08:002011-08-28T23:53:11.730-07:00Using web skills to create product catalog / brochure<span style="font-weight: bold; font-style: italic;">update :</span> Brochure we created using below discussed points, for <a href="http://www.postoz.com/">Postoz</a> - SaaS hosted business process system is accessible at <a href="https://s3.amazonaws.com/postoz/postoz-brochure.pdf">https://s3.amazonaws.com/postoz/postoz-brochure.pdf</a>
<br />
<br /><div>In this blog we discusses about creating professional looking product catalog / brochure by leveraging web development skills.</div><div>
<br /></div><div>You need,</div><div><ul><li>jQuery (<a href="http://jquery.com/">http://jquery.com/</a>) - Cross browser javascript library.</li><li>Blue print CSS (<a href="http://www.blueprintcss.org/">http://www.blueprintcss.org/</a>) - Cross browser CSS Framework with grid based layouts, typography.</li><li>Cufon (<a href="http://cufon.shoqolate.com/generate/">http://cufon.shoqolate.com/</a>) - Javascript frame work for displaying visually interesting fonts by replacing existing texts.</li><li>Cufon fonts (<a href="http://www.cufonfonts.com/">http://www.cufonfonts.com/</a>) - Free catalog of fonts to use with Cufon.</li><li>Wkhtmltopdf (<a href="http://code.google.com/p/wkhtmltopdf/">http://code.google.com/p/wkhtmltopdf/</a>) - Webpage to PDF converter that uses webkit rendering engine.</li></ul><div>To outline steps involved, we will create simple brochure.</div><div>
<br /></div><b><u>Create brochure layout with Blue print CSS</u></b></div><div><u><b>
<br /></b></u></div><div>if you haven't used Blue print CSS before, have a look at <a href="http://net.tutsplus.com/tutorials/html-css-techniques/a-closer-look-at-the-blueprint-css-framework/">this tutorial</a></div><div><b><u>
<br /></u></b></div>
<br /><div><script src="https://gist.github.com/852622.js"> </script>
<br /></div><div>
<br /></div><div><u><b>Apply necessary styles</b></u></div><div><u><b>
<br /></b></u></div><div><script src="https://gist.github.com/852591.js"> </script></div><div><u><b>Download and apply Cufon fonts</b></u></div><div><u><b>
<br /></b></u></div><div>For this demo, i used <a href="http://www.cufonfonts.com/en/font/459/vanilla">vanilla font</a> from Cufon fonts. </div><div><u><b>
<br /></b></u></div><div><script src="https://gist.github.com/852592.js"> </script></div><div>
<br /></div><div><b><u>Export your webpage as pdf</u></b></div><div><u><b>
<br /></b></u></div><div><script src="https://gist.github.com/852618.js"> </script>
<br /></div><div>You can download files associated with this blog entry at github repo : https://github.com/selvan/sample-brochure</div><div>
<br /><span style="font-weight: bold; font-style: italic;">update :</span> Brochure we created using above discussed points, for <a href="http://www.postoz.com/">Postoz</a> - SaaS hosted business process system is accessible at <a href="https://s3.amazonaws.com/postoz/postoz-brochure.pdf">https://s3.amazonaws.com/postoz/postoz-brochure.pdf</a>
<br />
<br /></div>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com121tag:blogger.com,1999:blog-4363007243782176340.post-34123572334815166522011-01-10T03:13:00.000-08:002011-01-12T05:08:37.261-08:00Good Team + Interesting Technology + Great Vision = Investment<div>Few weeks ago, on my way to office, noticed advertising hoardings from <a href="http://www.vbhc.com/">VBHC</a> for 1BHK apartments at $13,500 (5500000 INR) & 2BHK apartments at $27,000 (1250000). Price tag of these apartments was big surprise and as an entrepreneur i started wondering about their business model.</div><div><br /></div><div>I decided to spend some time & understand their business & economics behind it. Here is my analysis.</div><div><br /></div><div>1) Builders.</div><div><br /></div><div>Like in many cities, real estate business in bangalore too has strong links with not so good people (Unethical, Greed etc). So first thing i looked at was,</div><div>who is the promotor of VBHC ?. I found that "<a href="http://en.wikipedia.org/wiki/Jaithirth_Rao">Jerry Rao</a>" is the promotor and HDFC investment arm holds minority stake in VBHC. As i work in the software industry, i knew that jerry rao was the founder of Mphasis (He sold Mphasis to EDS) and he was also served as chairman of NASSCOM. VBHC project was launched by HDFC chairman "<a href="http://en.wikipedia.org/wiki/Deepak_Parekh">Deepak Parekh</a>". When multi billion dollar satyam scam emerged, Minister for Corporate Affairs constituted new board for satyam and "Deepak Parekh" was one of the three board members. I am convinced that i am dealing with good builders.</div><div><br /></div><div>2) Business & economics.</div><div><br /></div><div>Lets understand how typical real estate business works in India.</div><div><br /></div><div><ul><li>Builder purchases land - With his own money or via loan.</li><li>Builder starts construction using conventional methods - Most builders take loan for construction to mitigate their execution/business risk.</li><li>Builder completes 60% of construction. - Interest incurred on the loan during this period will be passed on to consumers.</li><li>Builder starts marketing. - Interest incurred on the loan during this period will be passed on to consumers.</li><li>Builder couldn't sell (as the market is competitive) or Builder didn't want to sell (expects demands will be high) - More interest incurred on the loan, again it will be passed on to consumers.</li></ul></div><div><br /></div><div>Based on various parameters (number of units being constructed, capital strength of the builder, market demand etc) typical construction duration is between 2 to 3 years.</div><div><br /></div><div>Lets look at how VBHC is building,</div><div><br /></div><div><ul><li>VBHC purchases land.</li><li>Constructs model houses, starts marketing.</li><li>Completes more than 95% booking before actual construction starts. Construction cost is paied by consumer in chunks along with progress of the construction. <b><i>VBHC completely avoided their major business risk - "selling to consumer", even before the construction started</i></b>.</li><li>Construction completes within a year.</li></ul></div><div><br /></div><div>In their current project, VBHC is building ~1800 units. This large volume of units allows them to bargain more from their raw material suppliers. <i>VBHC is clearly trying to distrupt conventional housing business with "Build large number of units & Build quickly."</i></div><div><br /></div><div>3) Technology</div><div><br /></div><div>When VBHC told me that they will construct all ~1800 units with a year & 3 months, i was surprised as i thought it is nearly impossible with conventional construction method (It is equivalent to thinking "5 ladies together can deliver a baby in just 2 months"). They showed interesting method for construction - "Western Forms". As i wan't aware "Western Forms" way of construction elsewhere, I questioned about usage of the same technology elsewhere. The sales guy replied that the technology provider has successfully used the same construction methodology on multiple hosuing projects in mexico and many commercial projects in NA.</div><br /><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/WI_iTppT8GM?fs=1&hl=en_US"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/WI_iTppT8GM?fs=1&hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object><br /><div><br /></div><div><br /></div><div><i>VBHC is targeting urban middle class with their vision of "a million homes in 10 years". Affordable 2BHK flats along with in-campus CBSE school, grocery shops & primary health center, certainly the valuation (based on location of the project, price tag, team, amenities, safety, community living, return on investment) of <a href="http://www.vbhc.com/index.php?page=Project&act=Vaibhava&act1=Perspactive&count=check">VBHC Vaibhava</a> project looks attractive.</i></div><div><br /></div>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com1tag:blogger.com,1999:blog-4363007243782176340.post-17089067437011077052011-01-08T23:49:00.000-08:002011-01-08T23:51:18.937-08:00Salary structure - multiple options<div>Instead of having single salary structure, we started offering multiple options to our new employees,</div><div><br /></div><div><ol><li>Pure stock option => X number of company shares.</li><li>Stock option (Major portion) + Cash amount (Minor portion) => X number of company shares + Y amount of cash.</li><li>Cash amount (Major portion) + Stock option (Minor portion) => Y amount of cash + X number of company shares.</li><li>Pure cash amount => Y amount of cash.</li></ol></div><div>We also allowed him to switch to other option within three month from the joining date.</div>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com2tag:blogger.com,1999:blog-4363007243782176340.post-81488380862563473092011-01-08T23:17:00.001-08:002011-01-08T23:26:20.944-08:00Primay key look up : NOSQL vs SQL<div>To demonstrate this usecase, we retrieve bunch of columns for a primary key. Typical SQL would be, </div><div><br /></div><div>"SELECT COLUMN1, COLUMN2, COLUMN3 FROM TABLE WHERE PRIMARY_KEY={X}".</div><div><br /></div><div>Lets analyze what happens when we execute above SQL,</div><div><br /></div><div><div><span class="Apple-tab-span" style="white-space:pre"> 1</span>) Query passes through SQL engine.</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>a) Lexical analysis & Parsing of SQL statement (Exception will be raised if any syntax error found).</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>b) SQL optimization to choose optimal execution path for the statement.</div><div><br /></div><div><span class="Apple-tab-span" style="white-space:pre"> 2</span>) Searching the index for primary key</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>Most databses store table indexs on tree structure. B+ tree is most commonly and widely used indexing structure. Even with, highly optimized B+ index structure, some form of tree search is required to locate the primary key.</div><div><span class="Apple-tab-span" style="white-space:pre"> </span></div><div><span class="Apple-tab-span" style="white-space:pre"> 3</span>) Primary key is located, perform data retrieval.</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>Primary key is located, corresponding row is returned for that primary key.</div></div><div style="text-align: left;"><span class="Apple-tab-span" style="white-space:pre"> </span></div><div>Is SQL way of retrieving data based on primary key effective?. Lets see how we implement same usecase with NOSQL,</div><div><br /></div><div>"GET [TABLE][PRIMARY_KEY]"</div><div><br /></div><div>In NOSQL, primary key and corresponding columns are stored as Hash (key => primarykey, value => column values as string/jason). With NOSQL, looking up primary key is performed in constant time and there is no need for lexical analysis, parsing and optimization. Does this pattern sound familer?. Many large websites use MySQL with Memcached. Memcached will serve as in-memory NOSQL.</div><div><br /></div><div><b><i>NOSQL is better for fast retrieval of data using primary key. MySQL + Memcached combination could be used to achieve the same.</i></b></div><div><br /></div><div><br /></div><div><br /></div>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-49520197068463136072010-12-29T03:32:00.001-08:002010-12-29T03:52:21.989-08:00Startup Quants<div>As an entrepreneur, one aspect that i enjoy quite often is quantification of various aspect of our business.</div><div><br /></div><div><ul><li>What is the current valuation of our venture?</li><li>How much money should we raise in this round?</li><li>Should i go for fixed size equity round or convertible debt round?</li><li>How much options should i grant to person 'x'?</li><li>What does it take to recruit this interesting guy?</li><li>Why do customer think product 'x' is better than product 'y'?</li><li>How to price our products?</li><li>Is it worth pursuing idea 'x'?</li><li>....... ........ .......</li></ul></div><div>It is very unlikely that one will find optimal answer to these questions. Certainly there would be very subjective answers to few of these questions.</div><div><br /></div><div>To find near optimal answers, you may take advise from peers, read about experience of others but it will be your own experiments that will give satisfying answers. My approach has been "Experiment at smaller scale, amplify if the experiment is successful, re-experiment incase of failure" (You should be shameless about your failures, iterate quickly & fail fast). </div><div><br /></div><div>Beware, when things are incomprehensible, you will treat them as cheap or flout them or think they are magical.</div><div><br /></div>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0tag:blogger.com,1999:blog-4363007243782176340.post-22471874439191199352010-12-28T03:55:00.000-08:002010-12-28T04:05:03.030-08:00Welcome aboard<div>Most corporates have some form of induction program to on-board new employees. Startup doesn't have time, energy & man power for such programs.</div><div><br /></div><div>In corporate environment such program can't be avoided for various reasons,</div><div><br /></div><div>1) In corporates, it is not uncommon to on-board large group ( > 5 employees) at a time, but in startups it is always cherry picking.</div><div><br /></div><div>2) Corporates do recruitment based on profile matching and (try to) mould employees to their culture but startups put lot of emphasis on culture & passion while recruiting itself.</div><div><br /></div><div>3) During induction program, corporates will show what makes their company a unique place to work. But startups count on new employee(s) to make their company unique.</div><div><br /></div><div>4) In corporates, one should understand structure of the company to escalate issues and get things done. But in startups, things & structure would be fluid.</div><div><br /></div><div>5) Corporates trust their process more than people, whereas startups trust their people most.</div><div><br /></div><div>I have also seen backlash from employees when a company transform from startup stage to corporate stage (Things were not like this before, Do we really need a position to take care certain things? etc).</div><div><br /></div><div>In our startup <a href="http://www.bitstat.com/">bitstat technologies</a>, we have introduced "self-experiment-and-use-your-freetime" induction process for new employees. In this process they will execute their own idea, create a simple software product, try to market it and will share their experience with others.</div><div> </div><div><br /></div><div>Someday, our startup would be a corporate. But till that time, our experiments will continue.</div><div><br /></div>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com3tag:blogger.com,1999:blog-4363007243782176340.post-63563739856570585522009-08-03T05:53:00.000-07:002009-08-03T05:57:45.596-07:00Open Source Calendar ServerI was looking for open source calender server with <a href="http://en.wikipedia.org/wiki/CalDAV">CalDev</a> support. I finally decided to go with "<a href="http://www.calendarserver.org/">Darwin Calendar Server</a>", that is being developed and maintained by Apple. Darwin calendar server is developed with Python. Here are the instructions to build darwin calendar server on ubuntu,<br /><br />a) apt-get install following components, if you don't have it,<br /><br /> build-essential<br /> python-openssl<br /> python-xattr<br /> python-zopeinterface<br /> python-xml<br /> ibkrb5-dev<br /> krb5-config<br /><br />b) Create empty directory, check out CalendarServer inside empty directory (while building, system will download number of other necessary libs inside empty directory you have created),<br /><br />svn checkout http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk CalendarServer<br /><br />c) Enable extended attributes for the filesystem (CalendarServer expects extended attribute enabled file system for storing calendar data),<br /><br /> edit, /etc/fstab and add user_xattr<br /><br /> Here is how my "/etc/fstab" looks after adding user_xattr,<br /><br /> UUID=2594fb7b-cb60-490c-8d08-1fbee11f1e5f / ext3 relatime,errors=remount-ro,user_xattr 0 1<br /><br />d) Activate fstab changes, with 'mount -o remount /<mountpoint>'<br /><br />e) To build CalendarServer, follow the instructions listed at,<br /> http://trac.calendarserver.org/wiki/QuickStart<br /><br />f) If everything goes fine, open browser with http://localhost:8008/calendars/users/admin/calendar (If you are challenged by security realm, enter admin for both username and password). You should see admin's calendar listing<br /><br />g) You may use any calendar client that supports "CalDev" to access your calendar. If you plan to use sunbird as your client, follow the instructions at <br /> http://trac.calendarserver.org/wiki/Sunbirdselvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com2tag:blogger.com,1999:blog-4363007243782176340.post-62625542821525849252008-08-26T03:21:00.000-07:002008-08-26T03:34:15.407-07:00Register VMs : Rise of the machinesI am currently designing and implementing small language with in-built concurrency for experimental/learning purpose. I decided to go with virtual machine approach, but when we implement a virtual machine, we hit by a long-running question in the design of virtual machines, whether to go with stack architecture or with register architecture?<br /><br />Many of virtual machines are implemented with stack architecture.<br /><br /><span style="font-weight: bold; font-style: italic;">Stack based VMs:</span><br /><ul><li>The Java Virtual Machine.</li><li>.NET CLR</li><li>Perl 5 virtual machine.</li><li>SQLite Virtual Database Engine.</li></ul><br />There is lot of interest in implementing VM based on register architecture too and practical register based VMs are started emerging.<br /><br /><span style="font-weight: bold;">Register based VMs:<br /></span><ul><li>Parrot VM - http://en.wikipedia.org/wiki/Parrot_virtual_machine</li><li>Android Dalvik VM - http://en.wikipedia.org/wiki/Dalvik_virtual_machine</li><li>Webkit Javascript VM - http://webkit.org/blog/189/announcing-squirrelfish/</li></ul><br />I decided to go with register based VM, thought of below two options and decided to go with first.<br /><br />1) Implementing my register based VM in C<br /><br />2) Implementing my register based VM in Java (Hey, java is improving and sun is adding multi language support and it is open!!!, so why not?) - In this case my VM itself interpreted on stack based JVM!!!selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com302tag:blogger.com,1999:blog-4363007243782176340.post-34372660971642866042008-05-04T21:58:00.000-07:002008-05-04T22:12:10.927-07:00Magic of Multilanguage EnvironmentWe need to create methods at runtime (say, based on some user input we need to construct an behavior in the form of methods) and associate/execute that methods in the context of particular existing object instance. How could we achieve this in Java?<br /><br />1) Use<a href="http://openjdk.java.net/projects/mlvm/subprojects.html#AnonymousClasses"> features of mlvm</a>. Currently it is in prototype stage. So we may have to wait for some time before being available as part of standard distribution.<br /><br />2) We could use any of byte code engineering libraries and include a method in the class at runtime. But we are trying to include a method for a particular object instance of the class. Not in the class itself.<br /><br />Hey, Javacript/Ruby very much allow adding new methods to a particular instance and good news is that we have matured Javascript (Rhino) and Ruby (JRuby) implementations in Java. You may be aware that Rhino javascript implementation is included as part of standard java 6 distribution. With the help of Rhino engine, we could take advantage of power of javascript and implement our scenario.<br /><br />Include JDK_6_HOME<jdk_6>/bin in your path.<br />Type jrunscript in command prompt.<br /><br />var fr = new javax.swing.JFrame()<br />fr.title = "My Title"<br />fr.setSize(200, 200)<br />fr.show()<br /><br />var fn_title = function(title_text) {this.title = title_text}<br />fn_title.call(fr, "My New Title")<br /><br />"fn_title" is the method, that we have associated with "JFrame" instance "fr"<br /><br />PS: Rhino engine is written in Java. How easy to simulate above behavior with our own java classes and byte code engineering? Look at <a href="http://docs.google.com/Present?docid=dgmr9kck_448zkrssdt&skipauth=true#0">these slides for answer</a>.</jdk_6>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com1tag:blogger.com,1999:blog-4363007243782176340.post-46831020707992351632008-04-09T21:04:00.000-07:002008-04-09T22:45:55.793-07:00Jax India 2008 - Open JDK Multi Language Virtual Machine (MLVM) / The Da Vinci MachineYesterday, I spoke at Jax India 2008. My session was on "The Da Vinci Machine - Multi Language Environment for Java Virtual Machine". There were around 70 to 90 participants.<br />My session went fine with number of good questions from participants. Started my talk with "why we need other languages support on JVM" then pitched into "Introduction to porting new languages on JVM" and ended my talk with discussion on various "MLVM features (Light-weight byte code loading, light weight method objects, Dynamic Invocation, Symbolic freedom, Continuations and Tail recursion)". <a href="http://docs.google.com/Present?docid=dgmr9kck_448zkrssdt&skipauth=true#0">Click here for presentation slides</a>.<br /><br /><br /><iframe src="http://docs.google.com/EmbedSlideshow?docid=dgmr9kck_448zkrssdt" frameborder="0" height="400" width="500"></iframe>selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com3tag:blogger.com,1999:blog-4363007243782176340.post-24532185306142660452008-03-26T23:13:00.000-07:002008-03-26T23:21:11.289-07:00Interesting open source licenseWhen we build project for clients based on number of open source libraries, we typically look into licensing policy of each open source library and analyze how well they fit with client policies. While analyzing one such policy of open source library, I was asked by my colleague what was the interesting licensing policy you have come across?, without second thought i replied back, policy of SQLite. Here is extracted license text from SQLite<br /><br />“ The author disclaims copyright to this source code. In place of a legal notice, here is a blessing:<br /><br /> May you do good and not evil.<br /> May you find forgiveness for yourself and forgive others.<br /> May you share freely, never taking more than you give. “<br /><br /> Isn't it interesting?.selvanhttp://www.blogger.com/profile/00769495255524314482noreply@blogger.com0