<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-380832535119474182</id><updated>2024-09-19T12:47:48.645-07:00</updated><category term="Ruby On Rails"/><category term="Design"/><category term="Estimation"/><category term="Project Management"/><category term="Agile"/><category term="Button"/><category term="CSS"/><category term="DNS"/><category term="Database"/><category term="Deployment"/><category term="Frameworks"/><category term="Git"/><category term="Github"/><category term="HTML"/><category term="Hosting"/><category term="Image Manipulation"/><category term="Juniper"/><category term="Linkedin"/><category term="Monitoring"/><category term="NGINX"/><category term="Name resolution problem"/><category term="Node js"/><category term="Oracle"/><category term="Product Design"/><category term="RHEL"/><category term="RVM"/><category term="Rhohub"/><category term="Rhomobile"/><category term="Technology Choice"/><category term="Twitter Bootstrap"/><category term="Ubuntu"/><category term="Ubuntu Server"/><category term="Web Application Development"/><category term="express js"/><category term="flash messages"/><category term="gotchas"/><category term="iOS"/><category term="java"/><category term="java v/s Ruby"/><category term="javascript"/><category term="passenger"/><title type='text'>Fountain of Wisdom</title><subtitle type='html'>The tit-bits that I picked along the way...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-7563951841837274949</id><published>2013-01-17T03:31:00.002-08:00</published><updated>2013-01-17T03:31:31.432-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Design"/><category scheme="http://www.blogger.com/atom/ns#" term="Image Manipulation"/><title type='text'>Batch convert PSD to PNG</title><content type='html'>Recently I needed to convert a bunch of PSDs to PNGs.&lt;br /&gt;
Here&#39;s how I did it:&lt;br /&gt;
&lt;br /&gt;
I installed ImageMagick along with the dev packages.&lt;br /&gt;
&lt;br /&gt;
Ran the follow command and got the job done.&lt;br /&gt;
mogrify -format png *.psd&lt;br /&gt;
&lt;br /&gt;
More info here:&amp;nbsp;&lt;a href=&quot;http://www.noob2geek.com/how-to/batch-convert-images-using-imagemagick/&quot;&gt;http://www.noob2geek.com/how-to/batch-convert-images-using-imagemagick/&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/7563951841837274949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/7563951841837274949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/7563951841837274949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/7563951841837274949'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2013/01/batch-convert-psd-to-png.html' title='Batch convert PSD to PNG'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-1819379619840322448</id><published>2012-12-14T22:18:00.001-08:00</published><updated>2012-12-14T22:52:35.923-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Frameworks"/><category scheme="http://www.blogger.com/atom/ns#" term="Hosting"/><category scheme="http://www.blogger.com/atom/ns#" term="Monitoring"/><category scheme="http://www.blogger.com/atom/ns#" term="Technology Choice"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Application Development"/><title type='text'>Choosing technology stack for your Next Big Idea? Here&#39;s help... </title><content type='html'>&lt;img height=&quot;200&quot; src=&quot;http://www.liverightnowonline.com/wp-content/uploads/2012/01/sandwich.jpg&quot; width=&quot;200&quot; /&gt;&lt;br /&gt;
Listed are some common decisions that you need to take when you are planning to develop a new web application along with hints at helping you in choosing the right vendors and frameworks:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;b&gt;1. Hosting:&lt;/b&gt;&lt;/div&gt;
&lt;blockquote style=&quot;background-color: white; border: none; color: #222222; font-family: arial, sans-serif; font-size: 13px; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
&lt;b&gt;Heroku&lt;/b&gt;&amp;nbsp;- Easy deployment + scalability and high availability + plug and play services. But least custom control.&lt;/blockquote&gt;
&lt;blockquote style=&quot;background-color: white; border: none; color: #222222; font-family: arial, sans-serif; font-size: 13px; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
&lt;div&gt;
&lt;b&gt;Engineyard&lt;/b&gt;&amp;nbsp;- Ease of deployment + Amazing customer service + root access.
&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;Linode&lt;/b&gt;&amp;nbsp;- Cheaper than many + variety of server templates to start with + root access. But complicated.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Amazon EC2&lt;/b&gt;&amp;nbsp;(self-managed) - We configure the environment from scratch. Maximum control and easily scale-able but the onus of server management falls on you.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
These are just a few common options. I&#39;m sure there are many more...&lt;br /&gt;
You can check out &lt;a href=&quot;https://pages.engineyard.com/WPEYTop10AdvantagesofPaaS_top-10-paas-advantages.html&quot;&gt;this&amp;nbsp;white paper&lt;/a&gt;&amp;nbsp;to understand the&lt;b&gt; advantages of using a Platform-as-a-service&lt;/b&gt; over self-managed servers. It helps you in reducing the Total-Cost-of-Ownership (&lt;b&gt;TCO&lt;/b&gt;). It feels like having the best server engineers dedicated to making your servers more secure and reliable.&lt;/div&gt;
&lt;/blockquote&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;b&gt;2. Monitoring:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
New Relic is the de-facto for monitoring the server, identifying bottlenecks and setting up alerts when the performance falls below some threshold. Highly recommended.&lt;/blockquote&gt;
&lt;div&gt;
&lt;b&gt;3. Data persistence:&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote style=&quot;background-color: white; border: none; color: #222222; font-family: arial, sans-serif; font-size: 13px; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
&lt;div&gt;
Relational Database v/s No SQL. Here&#39;s a related&amp;nbsp;&lt;a href=&quot;http://news.ycombinator.com/item?id=1691748&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;discussion&lt;/a&gt;&amp;nbsp;and mongodb&amp;nbsp;&lt;a href=&quot;http://api.mongodb.org/wiki/current/FAQ.html#FAQ-Arewriteswrittentodiskimmediately%2Corlazily%3F&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;faq&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Possibility of an application utilizing both Relational database and No SQL as a hybrid persistence.&amp;nbsp;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;span style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;b&gt;4. Choice of Application Frameworks:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;
&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
Depends upon the technical comfort of the development team and sometimes on the management red-tape involved in the decision making process.&lt;/blockquote&gt;
&lt;div&gt;
&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Ruby on Rails&lt;/b&gt;&amp;nbsp;- Rapid and Agile web application development. Vibrant open source community with plugins for just about anything that you can imagine. Any CPU intensive operations are generally extracted into native code (say written in C) with a ruby wrapper around it.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Java/.net&lt;/b&gt;&amp;nbsp;- Long list of active enterprise applications to support the credibility.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Node.js&lt;/b&gt;&amp;nbsp;- This a new contender in the server-side application development technologies. Best suited for serving high volumes of requests with minimal hardware&amp;nbsp;&lt;i&gt;*conditions applied&lt;/i&gt;.&lt;br /&gt;Using Node.js, LinkedIn went from running 15 servers with 15 instances on each physical machine to just 4 instances that can handle twice the traffic. More about it&amp;nbsp;&lt;a href=&quot;https://www.engineyard.com/blog/2012/nodejs/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote style=&quot;border: none; margin: 0px 0px 0px 40px; padding: 0px;&quot;&gt;
An application can be built on &lt;b&gt;Service Oriented Architecture&lt;/b&gt; - where the data can be processed and served by one or many server written in &lt;b&gt;different technologies&lt;/b&gt; while being consumed by a modern &lt;b&gt;client-side framework&lt;/b&gt; like &lt;b&gt;AngularJS&lt;/b&gt; and &lt;b&gt;BackboneJS&lt;/b&gt;.&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/1819379619840322448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/1819379619840322448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/1819379619840322448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/1819379619840322448'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/12/choosing-right-technology-stack-for.html' title='Choosing technology stack for your Next Big Idea? Here&#39;s help... '/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-1922758481912680009</id><published>2012-12-06T01:43:00.005-08:00</published><updated>2012-12-06T01:44:19.650-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="Estimation"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Management"/><title type='text'>Surviving the management landmines in an Agile environment</title><content type='html'>&lt;br /&gt;
&lt;a href=&quot;http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/700/1791/1791.strip.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;99&quot; src=&quot;http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/700/1791/1791.strip.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/000/1051/1051.strip.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;99&quot; src=&quot;http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/000/1051/1051.strip.gif&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Sounds familiar?&lt;br /&gt;
&lt;div&gt;
This post aims to give YOU - The zen developer / leader - some hints at&amp;nbsp;&lt;b&gt;surviving the management landmines in an Agile environment&lt;/b&gt;.&lt;br /&gt;
&lt;div&gt;
Without implying that your boss is incompetent, the fact is that the Agile way of project management is new and there are a lot of misconceptions lingering around. Here are some things you might hear your boss say and some hints about how to respond to them.&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div&gt;
&lt;i&gt;&lt;b&gt;&quot;Agile is flexible.&quot; -&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;i&gt;implying - We can pull people in and out of the teams and can keep changing the requirements at any point of time.&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Make it immediately clear that the features and requirements are flexible and can keep changing. But the team and the requirements do get locked in for the duration of an &quot;Agile Sprint&quot; which generally varies from 2-4 weeks.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;b&gt;&quot;There were 10 features out of which 3 could not be delivered in the sprint. You failed!&quot;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Predicting software delivery has never been a walk in the park and when it comes to predicting the delivery in a short period of time it can only mean risks and uncertainties.&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;i&gt;&quot;At regular intervals, the team reflects on how&lt;br /&gt;to become more effective, then tunes and adjusts&lt;br /&gt;its behavior accordingly.&quot; -&amp;nbsp;&lt;/i&gt;&lt;a href=&quot;http://agilemanifesto.org/principles.html&quot; target=&quot;_blank&quot;&gt;Agile Principles&lt;/a&gt;&lt;/blockquote&gt;
Agile is not magic. An Agile team understands its velocity, improves efficiency and evolves over time. This results in better estimates in future but only when given some stability to the team. Too many new additions (or subtractions) to the team? Make the risks clear to your boss and assure stability over time.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&quot;Its only two days to code delivery date. We don&#39;t need automated unit tests. Just write the code, make the UI presentable and we&#39;re done.&quot;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
Agile and BDD/TDD go hand-in-hand. If you don&#39;t write tests, the future iterations become unpredictable. In my experience, strict adherence to BDD / TDD helps you deliver faster (once you get a hang of it) or with little deviation from the original estimates.&amp;nbsp;Make your boss aware of the future risks that it would pose to the project deliveries if you do otherwise.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&quot;You wanted three people. Take this guy and these two interns and deliver the project&quot;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
Agile assumes that the team is made up of professionals who are highly motivated towards meeting the goals. You may have a few inexperienced people in the team but that arrangement works best if you can pair them up with some highly experienced developers for a few sprints. Make your boss aware that Agile is not a short-term quick fix but a way of delivering quality software in predictable time frames but the team might take a few sprints for it to happen.&lt;br /&gt;
&lt;br /&gt;
Can you recall similar conversations with your boss? I would love to hear about them in the comments.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/1922758481912680009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/1922758481912680009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/1922758481912680009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/1922758481912680009'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/12/surviving-management-landmines-in-agile.html' title='Surviving the management landmines in an Agile environment'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-4803009240699662168</id><published>2012-11-14T02:54:00.000-08:00</published><updated>2012-11-14T02:58:54.453-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="java v/s Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby On Rails"/><title type='text'>Ruby on Rails is for Toy Apps. Wtf!</title><content type='html'>I recently met a guy who told me that &quot;We are making our product in java. I&#39;ve a great software architect (who develops in java) who told me that Ruby on Rails is for data driven toy applications but when it comes to serious business apps, we use java&quot;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This is not the first time I&#39;m hearing this... So many java developers have been spreading this propaganda that Ruby on Rails applications are slow which is non-sense because the only thing that makes an application slow is the nut coding it.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I&#39;ve coded in C++, MFC, java and .net before I started coding in Ruby and I&#39;ve seen many obvious benefits that Ruby and Ruby on Rails gives to the coder and the code -&lt;/div&gt;
&lt;div&gt;
1. Readability&lt;/div&gt;
&lt;div&gt;
2. A long list of plugins - Gems we call them. Just think of a use case and there&#39;s a already a gem which does that.&lt;/div&gt;
&lt;div&gt;
3. Speed of development - You start seeing considerable progress within half an hour.&lt;/div&gt;
&lt;div&gt;
4. Agility - Ruby on Rails has agility at its core given the features of data migrations and built-in unit test suite.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I don&#39;t have the stats around it, but I haven&#39;t seen any developer community more paranoid about TDD and BDD than ruby community which is the foundation of Agile development and quality code.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Heard that Ruby is slower than Java?&lt;/div&gt;
&lt;div&gt;
1. There is &lt;a href=&quot;http://www.slideshare.net/Belighted/ruby-vs-java&quot; target=&quot;_blank&quot;&gt;JRuby&lt;/a&gt; - the java implementation of Ruby - it bridges the gap.&lt;/div&gt;
&lt;div&gt;
2. Did you know that most of the heavy lifting is done in C? And that ruby makes it very easy to wrap in your &lt;a href=&quot;http://people.apache.org/~rooneg/talks/ruby-extensions/ruby-extensions.html&quot; target=&quot;_blank&quot;&gt;native extensions&lt;/a&gt; as Ruby gems?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So, the next time your java engineers tell you that Ruby / Ruby on Rails is for toy apps. Well, say wtf!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/4803009240699662168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/4803009240699662168' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/4803009240699662168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/4803009240699662168'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/11/ruby-on-rails-is-for-toy-apps-wtf.html' title='Ruby on Rails is for Toy Apps. Wtf!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-6394956968072683484</id><published>2012-10-18T21:21:00.000-07:00</published><updated>2012-10-18T21:21:06.830-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Button"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="Design"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="Linkedin"/><category scheme="http://www.blogger.com/atom/ns#" term="Twitter Bootstrap"/><title type='text'>Designing the button - Sign in with Linkedin - using Twitter Bootstrap</title><content type='html'>&lt;div&gt;
&lt;a class=&quot;btn btn-info btn-large&quot; href=&quot;http://thefountainofwisdom.blogspot.com/&quot; style=&quot;-webkit-box-shadow: rgba(255, 255, 255, 0.2) 0px 1px 0px inset, rgba(0, 0, 0, 0.0470588) 0px 1px 2px; background-color: #49afcd; background-image: -webkit-linear-gradient(top, rgb(91, 192, 222), rgb(47, 150, 180)); background-repeat: repeat no-repeat; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; border-color: rgba(0, 0, 0, 0.0980392) rgba(0, 0, 0, 0.0980392) rgba(0, 0, 0, 0.247059); border-style: solid; border-top-left-radius: 5px; border-top-right-radius: 5px; border-width: 1px; box-shadow: rgba(255, 255, 255, 0.2) 0px 1px 0px inset, rgba(0, 0, 0, 0.0470588) 0px 1px 2px; color: white; cursor: pointer; display: inline-block; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 16px; margin-bottom: 0px; padding: 3px 14px; text-align: center; text-decoration: none; text-shadow: rgba(0, 0, 0, 0.247059) 0px -1px 0px; vertical-align: middle;&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 22px;&quot;&gt;in&lt;span style=&quot;font-size: 5px;&quot;&gt;®&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;border-left-color: rgb(112, 128, 144); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(211, 211, 211); border-right-style: solid; border-right-width: 1px; height: 40px; margin: 0px 9px 0px 3px;&quot;&gt;&lt;/span&gt;Sign in with Linkedin&lt;/strong&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;
&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #074726;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;/third_party_authentication/linkedin&quot;&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #074726;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;btn btn-info btn-large&quot;&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #074726;&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;padding-top&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;padding-bottom&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;strong&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #074726;&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;22&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;in&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #074726;&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;font-size&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;®&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #074726;&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;margin&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;border-right&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #074726;&quot;&gt;solid&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; lightgray&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;border-left&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #074726;&quot;&gt;solid&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #008484;&quot;&gt;slategray&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-weight: bold;&quot;&gt;margin-left&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #274796;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #006600;&quot;&gt;px&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;
    Sign in with Linkedin
  &lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;strong&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: #a65700;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/6394956968072683484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/6394956968072683484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/6394956968072683484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/6394956968072683484'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/10/designing-button-sign-in-with-linkedin.html' title='Designing the button - Sign in with Linkedin - using Twitter Bootstrap'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-4860134109105816955</id><published>2012-09-15T00:23:00.002-07:00</published><updated>2012-09-15T00:27:17.428-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Product Design"/><title type='text'>How to create Products that Sell</title><content type='html'>&lt;h2 style=&quot;text-align: center;&quot;&gt;
&lt;img height=&quot;218&quot; src=&quot;http://images.apple.com/euro/ipodshuffle/images/hero2_20100901.jpg&quot; width=&quot;400&quot; /&gt;&lt;/h2&gt;
&lt;h2&gt;
Step 1. Maintain simplicity&lt;/h2&gt;
A phone needs to be able to make clear calls, a toaster should toast bread, an iPod plays songs.&lt;br /&gt;
&lt;br /&gt;
Its OK not to satisfy everyone on the planet. The biggest reason why many products (mostly consumer software products) die is that they get into this cycle of adding more and more features to the product while the core feature stays the same. It becomes bulky, feels complicated and slowly becomes unusable to everyone.&lt;br /&gt;
&lt;br /&gt;
Does that mean you should just throw away your million dollar add-on? Absolutely not! You can make a new product out of it for the specific target audience. You would not only be able to focus better, but also allow the users feel at home.&amp;nbsp;You can of-course design your related products to snugly fit together if that makes sense.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Step 2. Generate the Craving&lt;/h2&gt;
&lt;h3&gt;
The Eye Candy&lt;/h3&gt;
We all have an innate sense of beauty. You might not be able to put it in words but you just know when something is beautiful.&lt;br /&gt;
The product should be likable down to the very fine details.&lt;br /&gt;
&lt;br /&gt;
Take the case of Apple. Their products are an eye candy from the body design down to every pixel on the software that runs on it. Everything looks just perfect. Its sexy and you know it.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Advertising&lt;/h3&gt;
Watch&amp;nbsp;&lt;a href=&quot;http://www.ted.com/talks/rory_sutherland_life_lessons_from_an_ad_man.html&quot; target=&quot;_blank&quot;&gt;Rory Sutherland: Life lessons from an ad man&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;background-color: white; font-family: arial, helvetica, sans-serif; font-style: italic;&quot;&gt;&quot;When you place a value on things like health, love, sex and other things, and learn to place a material value on what you’ve previously discounted for being merely intangible … you realize you’re much, much wealthier than you ever imagined.&quot;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #959492; font-family: arial, helvetica, sans-serif; font-style: italic; margin: 0px; padding: 0px;&quot;&gt;(Rory Sutherland)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Step 3. Provide Reassurance&lt;/h2&gt;
We all know that people buy impulsively but what few understand is that most people often do seek re-assurance before making a purchase.&lt;br /&gt;
&lt;br /&gt;
While the warranty / timely service is all very important and influences the decision, the fan-boys play a subtle part. Blogs harping about the success of apple, how Apple is selling the most iPhones in the US, how 90% of internet traffic comes from iPads (based on an unreliable source of statistics and assuming that iOS implies iPad). Since, so many people are happy with it (so you have read), it must be good right?&lt;br /&gt;
&lt;br /&gt;
Later when you come home after buying a new iPad for 500$, you wouldn&#39;t want to be reading a blog saying &quot;iPad sucks because it can&#39;t multi-task&quot; on your iPad would you?&lt;br /&gt;
&lt;br /&gt;
Make it or fake it, get the ball rolling. Once people see many people writing about the same topic, many others would jump in.</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/4860134109105816955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/4860134109105816955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/4860134109105816955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/4860134109105816955'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/09/how-to-create-products-that-sell.html' title='How to create Products that Sell'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-8237896678311561312</id><published>2012-09-12T01:35:00.000-07:00</published><updated>2012-09-12T01:41:45.914-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Estimation"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Management"/><title type='text'>What&#39;s your estimate on your project?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://dilbert.com/strips/comic/2007-12-09/&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;The Official Dilbert Website featuring Scott Adams Dilbert strips, animations and more&quot; height=&quot;179&quot; src=&quot;http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/800/1804/1804.strip.sunday.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The legend has it that in a big corporate meeting the youngest guy in the team stood up against the Senior Director of their business unit over his belief that &quot;Every software is unique and you can&#39;t estimate its delivery dates. If you do then if you don&#39;t meet the dates, its disheartening for someone working day and night to achieve the goal. So why estimate in the first place? Just press the pedal to the floor and deliver at the earliest.&quot;.&lt;br /&gt;
&lt;br /&gt;
But there was a mutual consensus at the end of the meeting that over a period of time, on an average, similar software solutions take similar time to code. Which could only mean that it was possible...&lt;br /&gt;
&lt;br /&gt;
The Director was kind and patient. He later met this junior guy and appreciated the honesty and asked if this junior guy would some day want to lead a team of developers?&lt;br /&gt;
The junior guy said &quot;Yes.&quot; promptly.&lt;br /&gt;
The director then asked if the stakeholders would be eager to know how long the team would be able to deliver the software.&lt;br /&gt;
The junior guy said &quot;Yes.&quot; again.&lt;br /&gt;
The director asked - &quot;So, how would you learn to estimate?&quot;&lt;br /&gt;
&quot;By experience&quot; was the reply.&lt;br /&gt;
The director asked - &quot;How would you gain that experience?&quot;&lt;br /&gt;
This hit the junior guy in the face. Both he and the director knew what he was thinking.&lt;br /&gt;
The answer was - &quot;By estimating regularly&quot;.&lt;br /&gt;
&lt;br /&gt;
The junior guy had learnt early in his career a very important lesson which later helped him give estimates better that Dilbert.&lt;br /&gt;
&lt;br /&gt;
&lt;img height=&quot;272&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSUYeiSiSsyk279JXwPgTRJ9ubRhjAh_6e5MZsrQIJOg4JyVlMnUy9h-9VKfcOyZUnqb0fE4JWIJ-hCrwLZaCA8aLBifqPoJqEK-GuWq97ADITa-ZAedUsI8zpl1W3pUt8cPWZk3ZHKFs/s320/Truestory.jpg&quot; width=&quot;320&quot; /&gt;</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/8237896678311561312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/8237896678311561312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/8237896678311561312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/8237896678311561312'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/09/whats-your-estimate-on-your-project.html' title='What&#39;s your estimate on your project?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSUYeiSiSsyk279JXwPgTRJ9ubRhjAh_6e5MZsrQIJOg4JyVlMnUy9h-9VKfcOyZUnqb0fE4JWIJ-hCrwLZaCA8aLBifqPoJqEK-GuWq97ADITa-ZAedUsI8zpl1W3pUt8cPWZk3ZHKFs/s72-c/Truestory.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-7602662163746413274</id><published>2012-09-10T22:47:00.000-07:00</published><updated>2012-09-10T22:48:07.417-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DNS"/><category scheme="http://www.blogger.com/atom/ns#" term="Juniper"/><category scheme="http://www.blogger.com/atom/ns#" term="Name resolution problem"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Websites not opening on Ubuntu</title><content type='html'>Symptoms:&lt;br /&gt;
Websites won&#39;t load but services like skype seems to work.&lt;br /&gt;
&lt;br /&gt;
It has happened to me twice -&lt;br /&gt;
I had shutdown the system without properly closing juniper connection and this started happening.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
1. Take a backup of&amp;nbsp;/etc/resolv.conf&lt;br /&gt;
2. Now clear all the contents of&amp;nbsp;/etc/resolv.conf&lt;br /&gt;
3. Restart your networking services (I disabled the network and enabled it).&lt;br /&gt;
&lt;br /&gt;
Things should work...</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/7602662163746413274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/7602662163746413274' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/7602662163746413274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/7602662163746413274'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/09/websites-not-opening-on-ubuntu.html' title='Websites not opening on Ubuntu'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-1684668949211769963</id><published>2012-09-05T02:52:00.000-07:00</published><updated>2012-09-05T02:52:37.967-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu Server"/><title type='text'>How to mount windows share on Ubuntu Server</title><content type='html'>&lt;br /&gt;
sudo mkdir -p /mnt/ntserver&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
sudo mount -t cifs &quot;//server-name-or-ip/share/path&quot; -o user=myuser,password=mypass /mnt/ntserver</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/1684668949211769963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/1684668949211769963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/1684668949211769963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/1684668949211769963'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/09/how-to-mount-windows-share-on-ubuntu.html' title='How to mount windows share on Ubuntu Server'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-2816530829945059330</id><published>2012-08-11T10:19:00.000-07:00</published><updated>2012-08-11T11:41:05.809-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="express js"/><category scheme="http://www.blogger.com/atom/ns#" term="flash messages"/><category scheme="http://www.blogger.com/atom/ns#" term="gotchas"/><category scheme="http://www.blogger.com/atom/ns#" term="Node js"/><title type='text'>Flash messages on Express js 3</title><content type='html'>Trying Express js 3 and received an exception on the following?&lt;br /&gt;
&lt;div&gt;
req.flash()&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;TypeError: Object #&lt;incomingmessage&gt; has no method &#39;flash&#39;&lt;/incomingmessage&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Apparently Express js has dropped support for flash messages in their latest version - 3.&lt;/div&gt;
&lt;div&gt;
Here&#39;s the recommended middle-ware plugin to resolve the problem:&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://github.com/tehlulz/flashify&quot;&gt;https://github.com/tehlulz/flashify&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Gotchas:&lt;/div&gt;
&lt;div&gt;
Be sure to use&lt;br /&gt;
&lt;i&gt;app.use(flashify);&lt;/i&gt;&lt;br /&gt;
before&lt;br /&gt;
&lt;i&gt;app.use(app.router);&lt;/i&gt;&lt;br /&gt;
for it to work.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Enjoy!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/2816530829945059330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/2816530829945059330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/2816530829945059330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/2816530829945059330'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/08/flash-messages-on-express-js-3.html' title='Flash messages on Express js 3'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-257701906683042620</id><published>2012-07-11T10:58:00.000-07:00</published><updated>2012-07-11T11:00:17.587-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Git"/><category scheme="http://www.blogger.com/atom/ns#" term="Github"/><title type='text'>Undo a commit on Github</title><content type='html'>I had pushed a commit onto master. It made sense at that time, but I soon realized it wasn&#39;t a wise decision.&lt;br /&gt;
&lt;br /&gt;
Wanted to revert it but had to look out for a while to figure out how to.&lt;br /&gt;
Here&#39;s the procedure:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;git reset --hard HEAD^&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;
This would undo last commit.&lt;br /&gt;
Keep executing this command till you get to the desired top commit.

Then execute the following to finally commit to Github:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;git push origin +master&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
This pushes the changes forcefully.</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/257701906683042620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/257701906683042620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/257701906683042620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/257701906683042620'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/07/undo-commit-on-github.html' title='Undo a commit on Github'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-3527189514757991790</id><published>2012-04-30T21:00:00.000-07:00</published><updated>2012-04-30T21:33:39.338-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Rhohub"/><category scheme="http://www.blogger.com/atom/ns#" term="Rhomobile"/><title type='text'>Using Rhohub to build Rhomobile applications targeting iOS (for Windows/Linux users and dummies)</title><content type='html'>&lt;h2&gt;



&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;1. Generate your developer certificate and provisioning profile&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: white; color: #333333; font-size: 13px; line-height: 18px;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;All iOS applications must be signed by a valid certificate, which you should get from Apple, before they can be run on an Apple device. For privacy, the signing certificate you upload to RhoHub is used only once and thrown away.&lt;/span&gt;&lt;/div&gt;
&lt;h3 style=&quot;background-color: white; color: #333333; font-size: 18px; line-height: 27px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-rendering: optimizelegibility;&quot;&gt;



&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Windows or Linux&lt;/span&gt;&lt;/h3&gt;
&lt;h3 style=&quot;background-color: white; color: #333333; font-size: 18px; line-height: 27px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-rendering: optimizelegibility;&quot;&gt;



&lt;/h3&gt;
&lt;ol style=&quot;background-color: white; color: #333333; font-size: 13px; line-height: 18px; list-style-image: initial; list-style-position: initial; margin-bottom: 0px; margin-left: 25px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Install&amp;nbsp;&lt;a class=&quot;red_link&quot; href=&quot;http://www.openssl.org/&quot; style=&quot;color: #ae0302; font-weight: bold; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;OpenSSL&lt;/a&gt;&amp;nbsp;if you don&#39;t have it (on Windows, OpenSSL is included in Git Bash).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Follow the&amp;nbsp;&lt;a class=&quot;red_link&quot; href=&quot;http://developer.apple.com/ios/manage/certificates/team/howto.action&quot; style=&quot;color: #ae0302; font-weight: bold; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;generating a certificate signing request instructions&lt;/a&gt;&amp;nbsp;on the iOS developer portal.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Execute the following commands to generate your certificate signing request, filling in your email address used in the development portal:&lt;/span&gt;&lt;/li&gt;
&lt;pre class=&quot;code&quot; style=&quot;background-color: #fdfdfd; border-bottom-color: rgb(222, 222, 222); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-bottom-style: solid; border-bottom-width: 1px; border-image: initial; border-left-color: rgb(222, 222, 222); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(222, 222, 222); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(222, 222, 222); border-top-left-radius: 4px; border-top-right-radius: 4px; border-top-style: solid; border-top-width: 1px; color: #56566c; font-size: 12px; margin-bottom: 10px; overflow-x: auto; overflow-y: auto; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;openssl genrsa -out mykey.key 2048
openssl req -new -key mykey.key -out CertificateSigningRequest.certSigningRequest -subj &#39;/emailAddress=yourAddress@example.com, CN=John Doe, C=US&#39;&lt;/span&gt;&lt;/pre&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Upload the resulting certSigningRequest file to the developer portal.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;After the certificate has been generated, download the .cer file and use the following commands to convert it to the .p12 format. You will be prompted for an export password. This is a new password for this file and&amp;nbsp;&lt;strong&gt;cannot be blank&lt;/strong&gt;.&lt;/span&gt;&lt;pre class=&quot;code&quot; style=&quot;background-color: #fdfdfd; border-bottom-color: rgb(222, 222, 222); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-bottom-style: solid; border-bottom-width: 1px; border-image: initial; border-left-color: rgb(222, 222, 222); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(222, 222, 222); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(222, 222, 222); border-top-left-radius: 4px; border-top-right-radius: 4px; border-top-style: solid; border-top-width: 1px; color: #56566c; font-size: 12px; margin-bottom: 10px; overflow-x: auto; overflow-y: auto; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; white-space: pre-wrap; word-break: break-all;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM
openssl pkcs12 -export -inkey mykey.key -in developer_identity.pem -out iphone_dev.p12&lt;/span&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: transparent; font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;Create a provisioning profile and associate your developer certificate with it and download it. Lets call it your_app.mobileprovision&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;h2&gt;



&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;2. Configure build.yml&lt;/span&gt;&lt;/h2&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Follow the instructions given at&amp;nbsp;&lt;a href=&quot;http://docs.rhomobile.com/rhodes/build#building-a-rhodes-application-for-iphoneipad&quot; style=&quot;font-size: 13px; line-height: 18px;&quot;&gt;http://docs.rhomobile.com/rhodes/build#building-a-rhodes-application-for-iphoneipad&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;pre class=&quot;CodeRay&quot; style=&quot;background-color: #f0f0f0; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-image: initial; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; color: #333333; font-size: 14px; line-height: 20px; margin-bottom: 15px; margin-top: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 18px; padding-left: 36px; padding-right: 36px; padding-top: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;provisionprofile: E5931D39-CA68-48E4-A3AF-BB538E1C8CE6 &lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Here&#39;s how I found the UID associated with provision profile:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;1. Use any binary file viewer. Eg. &lt;a href=&quot;http://www.proxoft.com/downloads.aspx&quot;&gt;binary viewer for windows&lt;/a&gt;, &lt;a href=&quot;http://packages.ubuntu.com/source/hardy/ghex&quot;&gt;ghex for linux&lt;/a&gt;&amp;nbsp;to open your_app.mobileprovision.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;2. Locate the tag UUID. It would look something like the following&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;lt;key&amp;gt;UUID&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;lt;string&amp;gt;5349A91C-FABC-ABCD-BB5A-8D36B186XXXX&amp;lt;/string&amp;gt;&lt;br /&gt;This string is what goes into your provision profile.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;CodeRay&quot; style=&quot;background-color: #f0f0f0; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-image: initial; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; color: #333333; font-size: 14px; line-height: 20px; margin-bottom: 15px; margin-top: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 18px; padding-left: 36px; padding-right: 36px; padding-top: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;codesignidentity: &quot;iPhone Developer: John Smith (MF99RW67WY)&quot;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Open&amp;nbsp;the certificate - iphone_dev.p12. It has this information in the exact same format.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;CodeRay&quot; style=&quot;background-color: #f0f0f0; border-bottom-color: silver; border-bottom-style: solid; border-bottom-width: 1px; border-image: initial; border-left-color: silver; border-left-style: solid; border-left-width: 1px; border-right-color: silver; border-right-style: solid; border-right-width: 1px; border-top-color: silver; border-top-style: solid; border-top-width: 1px; color: #333333; font-size: 14px; line-height: 20px; margin-bottom: 15px; margin-top: 15px; overflow-x: auto; overflow-y: auto; padding-bottom: 18px; padding-left: 36px; padding-right: 36px; padding-top: 18px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;BundleIdentifier: com.johnsmithcompany.jsapp&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Notice the app id in your provisioning portal. Should look like some random hex followed by com.yourcompany.app.blah. eg. G2GXEVYDX5.com.johnsmithcompany.jsapp&lt;br /&gt;
&lt;br /&gt;
So, if you just copy everything other than the &amp;lt;hex&amp;gt;&amp;lt;dot&amp;gt;, it should give your your bundle identifier.&lt;/dot&gt;&lt;/hex&gt;&lt;br /&gt;
&lt;h2&gt;



&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;3. Push to Rhohub&lt;/span&gt;&lt;/h2&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Sign up on&amp;nbsp;&lt;a href=&quot;http://rhohub.com/&quot;&gt;Rhohub.com&lt;/a&gt;&amp;nbsp;and create a project.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Now push your rhodes code to your project&#39;s git repository.&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;



&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;4. Build&lt;/span&gt;&lt;/h2&gt;
Needless to say, select iOS in target device.&lt;br /&gt;
Select iphone_dev.p12 file to upload as the certificate, and enter the certificate password that you used while making the p12.&lt;br /&gt;
Select provisioning profile and give the same bundle identifier that you gave in your build.yml&lt;br /&gt;
&lt;br /&gt;
Now press &quot;build&quot; and relax...&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/3527189514757991790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/3527189514757991790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/3527189514757991790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/3527189514757991790'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/04/using-rhohub-to-build-rhomobile.html' title='Using Rhohub to build Rhomobile applications targeting iOS (for Windows/Linux users and dummies)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-2564758215580126839</id><published>2012-04-21T01:37:00.000-07:00</published><updated>2012-11-06T01:27:08.090-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Deployment"/><category scheme="http://www.blogger.com/atom/ns#" term="NGINX"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="passenger"/><category scheme="http://www.blogger.com/atom/ns#" term="RHEL"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby On Rails"/><category scheme="http://www.blogger.com/atom/ns#" term="RVM"/><title type='text'>Deploying a Rails Application on Red Hat Server using RVM, NGINX, Passenger, Oracle, SVN</title><content type='html'>&lt;br /&gt;
Using Red Hat? Oracle? SVN (When there&#39;s git!)?&lt;br /&gt;
Its a pain, here&#39;s the answer.&lt;br /&gt;
&lt;br /&gt;
#Add EPEL to yum&lt;br /&gt;
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm&lt;br /&gt;
yum update&lt;br /&gt;
&lt;br /&gt;
# Create the rvm group and add any users who will be using rvm to the group&lt;br /&gt;
sudo su -&lt;br /&gt;
groupadd rvm&lt;br /&gt;
&lt;br /&gt;
# Start by adding the root user (required to install RVM)&lt;br /&gt;
usermod -a -G rvm root&lt;br /&gt;
&lt;br /&gt;
# Then add any other users who need access to to the rvm group and logout of the superuser account&lt;br /&gt;
logout&lt;br /&gt;
&lt;br /&gt;
#Now install RVM&lt;br /&gt;
curl -L get.rvm.io | bash -s stable&lt;br /&gt;
&lt;br /&gt;
#Load RVM:&lt;br /&gt;
$ source ~/.rvm/scripts/&#39;rvm&#39;&lt;br /&gt;
&lt;br /&gt;
#install git&lt;br /&gt;
rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm&lt;br /&gt;
sudo yum install --enablerepo=webtatic git&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#install ruby - takes some time...&lt;br /&gt;
rvm install 1.9.3&lt;br /&gt;
rvm use 1.9.3 --default&lt;br /&gt;
&lt;br /&gt;
#install bundler&lt;br /&gt;
gem install bundler&lt;br /&gt;
&lt;br /&gt;
gem install rails -v 3.1.0&lt;br /&gt;
&lt;br /&gt;
#fetch the application. Goto your deployment directory and do&lt;br /&gt;
svn checkout &lt;path&gt;&lt;/path&gt;&lt;br /&gt;
&lt;br /&gt;
#Edit the rails configuration files:&lt;br /&gt;
config/environments/production.rb&lt;br /&gt;
config/database.yml&lt;br /&gt;
&lt;br /&gt;
#install Oracle&lt;br /&gt;
#Get the instant client packages from Oracle and do the following&lt;br /&gt;
sudo rpm -i oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm&lt;br /&gt;
sudo rpm -i oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm&lt;br /&gt;
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib/&lt;br /&gt;
export LD_LIBRARY_PATH&lt;br /&gt;
&lt;br /&gt;
#install the gems&lt;br /&gt;
bundle install&lt;br /&gt;
&lt;br /&gt;
#Precompile assets&lt;br /&gt;
rake assets:precompile RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
#create the service_log directory&lt;br /&gt;
mkdir log/service_log&lt;br /&gt;
&lt;br /&gt;
#now we need to get some permissions straight&lt;br /&gt;
chmod -R 777 tmp&lt;br /&gt;
chmod -R 777 log/service_log&lt;br /&gt;
&lt;br /&gt;
#install passenger&lt;br /&gt;
gem install passenger&lt;br /&gt;
&lt;br /&gt;
#install nginx. Accept all the defaults&lt;br /&gt;
rvmsudo passenger-install-nginx-module&lt;br /&gt;
&lt;br /&gt;
#Here&#39;s the nginx conf file /opt/nginx/conf/nginx.conf&lt;br /&gt;
#Here are some helpful locations&lt;br /&gt;
# passenger_root /usr/local/rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.12;&lt;br /&gt;
# passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.3-p125/ruby;&lt;br /&gt;
&lt;br /&gt;
#Copy the config file&lt;br /&gt;
sudo cp /opt/nginx/conf/nginx.conf /opt/nginx/conf/nginx.conf.bak&lt;br /&gt;
rm /opt/nginx/conf/nginx.conf&lt;br /&gt;
cp installation_dump/nginx.conf /opt/nginx/conf/nginx.conf&lt;br /&gt;
&lt;br /&gt;
#update the configurations (eg. the rails app public path, port number, server name etc. and stuff similar to what you might be doing with java web servers)&lt;br /&gt;
nano /opt/nginx/conf/nginx.conf&lt;br /&gt;
&lt;br /&gt;
#Copy the nginx start/stop helper script&lt;br /&gt;
sudo cp installation_dump/nginx /etc/init.d/&lt;br /&gt;
&lt;br /&gt;
#finally&lt;br /&gt;
sudo /etc/init.d/nginx start&lt;br /&gt;
&lt;br /&gt;
#Troubleshoot - if you see nothing after start you can debug using&lt;br /&gt;
sudo /etc/init.d/nginx configtest</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/2564758215580126839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/2564758215580126839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/2564758215580126839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/2564758215580126839'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2012/04/deploying-rails-applicaition-on-red-hat.html' title='Deploying a Rails Application on Red Hat Server using RVM, NGINX, Passenger, Oracle, SVN'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-380832535119474182.post-6817806442242060922</id><published>2011-08-05T12:13:00.000-07:00</published><updated>2012-04-30T21:15:06.123-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby On Rails"/><title type='text'>Google+ style circles Drag Drop using Rails</title><content type='html'>A working example for Google+ style circles drag drop using Rails 2.3.&lt;br /&gt;
&lt;br /&gt;
The only challenge was how to make the Draggable elements drag across a scrollable div.&lt;br /&gt;
It was solved by using the library at http://scripteka.com/script/dragdropextra</content><link rel='replies' type='application/atom+xml' href='http://thefountainofwisdom.blogspot.com/feeds/6817806442242060922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/380832535119474182/6817806442242060922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/6817806442242060922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/380832535119474182/posts/default/6817806442242060922'/><link rel='alternate' type='text/html' href='http://thefountainofwisdom.blogspot.com/2011/08/google-style-circles-drag-drop-using.html' title='Google+ style circles Drag Drop using Rails'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>