<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Ravi Vagadia</title><link>https://ravi.ws/posts/</link><description>Recent content in Posts on Ravi Vagadia</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 07 Jun 2020 16:07:00 +0530</lastBuildDate><atom:link href="https://ravi.ws/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Deploying Django/Flask App in Production with NGINX Unit and Docker</title><link>https://ravi.ws/posts/2020/06/deploying-django/flask-app-in-production-with-nginx-unit-and-docker/</link><pubDate>Sun, 07 Jun 2020 16:07:00 +0530</pubDate><guid>https://ravi.ws/posts/2020/06/deploying-django/flask-app-in-production-with-nginx-unit-and-docker/</guid><description>NGINX unit is a modern take at application server, it supports talking to apps over CGI, WSGI and shared memory incase of statically compiled apps. Unit is open source available at https://unit.nginx.org/
Here are some features:
- Modern Polyglot Application Server
- Supports apps written in popular languages like Go, Python, Java, JavaScript (NodeJS), Ruby and of course good old PHP
- Supports advanced workflow like deploying apps without any downtime, remote configuration management via REST APIs and has ability to run multiple apps (even with different runtime versions!</description><content type="html"><![CDATA[<blockquote>
<blockquote>
<p>NGINX unit is a modern take at application server, it supports talking to apps over CGI, WSGI and shared memory incase of statically compiled apps. Unit is open source available at <a href="https://unit.nginx.org/">https://unit.nginx.org/</a></p>
</blockquote>
<p>Here are some features:</p>
<p>- Modern Polyglot Application Server</p>
<p>- Supports apps written in popular languages like Go, Python, Java, JavaScript (NodeJS), Ruby and of course good old PHP</p>
<p>- Supports advanced workflow like deploying apps without any downtime, remote configuration management via REST APIs and has ability to run multiple apps (even with different runtime versions!)</p>
<p>- Support for custom routing logic allows easy to A/B testing.</p>
<p>- And it can do TLS in case you’re looking for end-to-end TLS encryption.</p>
<p>Does that sound exciting? let’s look at how you can use Unit to deploy your Django or Flask app on production environment.</p>
<hr>
<p>Steps for Flask App (we’ll use existing httpbin app which is written using Flask framework and uses gunicorn as application server):</p>
<p>Step 1 : Let’s clone httpbin from Github repo: <a href="https://github.com/postmanlabs/httpbin">https://github.com/postmanlabs/httpbin</a></p>
<pre><code>git clone [https://github.com/postmanlabs/httpbin](https://github.com/postmanlabs/httpbin)
</code></pre><p>Step 2: Make following changes in Dockerfile:</p>
<pre><code>\-FROM ubuntu:18.04  
+FROM nginx/unit:1.18.0-python3.7\-CMD \[&quot;gunicorn&quot;, &quot;-b&quot;, &quot;0.0.0.0:80&quot;, &quot;httpbin:app&quot;, &quot;-k&quot;, &quot;gevent&quot;\]  
+COPY config/config.json /docker-entrypoint.d/
</code></pre><p>What did we change?</p>
<ul>
<li>Instead of using Ubuntu base image, we’re using nginx/unit image with Python 3.6 runtime.</li>
<li>Removed gunicorn command, instead we’ll use configuration file to load application with NGINX Unit.</li>
</ul>
<p>Step 3: Unit looks for “application” object, adding application object in core.py, here is the diff:</p>
<pre><code>app.config\[&quot;SWAGGER&quot;\] = {&quot;title&quot;: &quot;httpbin.org&quot;, &quot;uiversion&quot;: 3}+# NGINX Unit looks for application object  
+application = app  
+  
 template = {  
     &quot;swagger&quot;: &quot;2.0&quot;,  
     &quot;info&quot;: {
</code></pre><p>Step 4 : Adding Unit configuration file (config/config.json):</p>
<pre><code>{  
       &quot;listeners&quot;:{  
          &quot;\*:80&quot;:{  
             &quot;pass&quot;:&quot;applications/httpbin&quot;  
          }  
       },  
       &quot;applications&quot;:{  
          &quot;httpbin&quot;:{  
             &quot;type&quot;:&quot;python 3&quot;,  
             &quot;path&quot;:&quot;/httpbin&quot;,  
             &quot;module&quot;:&quot;httpbin&quot;  
       }  
    }  
 }
</code></pre><p>This file contains instruction to listen to port 80 on all interfaces and routing any traffic on port 80 to our flask app “httpbin”</p>
<p>“httpbin” section contains path to project directory and module with contains flask “application” object.</p>
<p>And finally, let’s build the docker image with httpbin + nginx unit:</p>
<pre><code>docker build -t httpbin-unit .
</code></pre><p>Result:</p>
<p><img src="https://miro.medium.com/max/60/1*WkjXheaqeMfryieYFN9OLQ.png?q=20" alt=""></p>
<p><img src="https://miro.medium.com/max/1184/1*WkjXheaqeMfryieYFN9OLQ.png" alt=""></p>
<p>When the container is started, Unit will look for any configuration file in /docker-entrypoint.d/*. Since we have put our configuration file there, Unit will load the configuration from /docker-entrypoint.d/config.json and reconfigure itself to load our application.</p>
<p>Here is the Github commit <a href="https://github.com/ravirdv/httpbin/commit/cde46c422b105bbc16338cddfa09b0a417d6caf9">link</a> for all these changes and ready to use httpbin + unit image on <a href="https://hub.docker.com/r/ravirdv/httpbin-nginx-unit">DockerHub</a></p>
<p>Hope this is useful to integrate Unit with your Flask apps, I’ve done this using real app instead of simple “hello world” Flask app :-)</p>
</blockquote>
]]></content></item><item><title>Microservices : What is Service Mesh and how does it help you?</title><link>https://ravi.ws/posts/2018/12/microservices-what-is-service-mesh-and-how-does-it-help-you/</link><pubDate>Wed, 26 Dec 2018 20:00:00 +0530</pubDate><guid>https://ravi.ws/posts/2018/12/microservices-what-is-service-mesh-and-how-does-it-help-you/</guid><description>When working with microservices, it becomes difficult to track down an issue or get in-depth visibility around how your services communicate with each other. You may want to know things like traffic stats on each service, error rate, request/response payload or you may want more control on setting up access policy across all services or a set of services. You’ll also need some mechanism to handle faults, encryption, and routing. I highly recommend getting an overview of twelve factor app if you’re building microservices.</description><content type="html"><![CDATA[<p>When working with microservices, it becomes difficult to track down an issue or get in-depth visibility around how your services communicate with each other. You may want to know things like traffic stats on each service, error rate, request/response payload or you may want more control on setting up access policy across all services or a set of services. You’ll also need some mechanism to handle faults, encryption, and routing. I highly recommend getting an overview of <a href="https://12factor.net/">twelve factor app</a> if you’re building microservices.</p>
<p>Designing your micro-services architecture considering the features you get with a service mesh system means you’ll save a ton of efforts on maintaining and monitoring the system. Your development team can focus on core logic and worry less about (mis)communication :-). Before we go into details about how service mesh like linkerd or Istio works.</p>
<p>Service mesh system like Istio or Linkerd allows you to have deep insight on how each service handles traffic, takes care of service discovery with sidecar acting as reverse and forward proxy, allows you to debug API calls, inspect payload and do much more. Sidecar is design pattern for <a href="https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45406.pdf">containers based distributed systems</a>.</p>
<p>At high-level, service mesh systems are divided into two parts i.e “Control Plane” and “Data Plane”. Control Plane is set of services which acts as a source of truth for data plane. It configures various components of data plane to ensure each service has what it needs to communicate with other services. Control Plane also takes care of managing telemetry data, configuring traffic paths and much more.</p>
<p>Data plane takes care of handling traffic, collecting stats, monitoring health, load balancing and authentication. Let’s dig down further to see how it works.</p>
<p>Data plane uses sidecar (nothing but a proxy like envoy, Nginx, HAProxy etc) which sits along with your service container in a pod, and all communication between your service and other services goes through this sidecar. This pattern enables service mesh to capture all communication and export stats to control plane.</p>
<p>Without a sidecar, services would communicate with each other directly. In most cases, this pattern will have some service discovery code on each service so that it knows IP and Port of target service.</p>
<p>Here’s how that would work:</p>
<p><img src="https://cdn-images-1.medium.com/max/1600/0*67lrXfrkfWEEOa-j" alt=""></p>
<p>Services talking directly with each other.</p>
<p>In this case, you’ll not have control over rate limiting or inspecting content of request without modifying services. In order to solve this problem, a simple mechanism is to have a proxy like Nginx or HAProxy running along with each service and service only communicates via proxy. You can have more control over who can talk to this service and at what rate. Let’s see how that would work:</p>
<p><img src="https://cdn-images-1.medium.com/max/1600/0*Pn6SvjfOXKBPJO3G" alt=""></p>
<p>Services communicating via sidecar</p>
<p>Routing all traffic to a service via proxy along with each service can help you gather operational metrics which is helpful in optimization as well as to ensure reliable operations. Now think about managing hundreds of services with thousands of instances and their proxies, you see the problem? That’s where control plane come into play, since containers are scheduled dynamically it is very like that old containers are destroy and new containers are deployed when scaling or rolling out upgrades. It’s the role of control plane to keep these proxies (sidecars) updated with current network state, apply access policies, encryption scheme etc. Here’s a general architecture of how this would work :</p>
<p><img src="https://cdn-images-1.medium.com/max/1600/0*cmbWS0DcS2ZRxfIq" alt=""></p>
<p>Architecture Overview of Service Mesh</p>
<p>There are a collection of services which makes it easy to work with service mesh. <a href="https://istio.io/">Istio</a> &amp; <a href="https://linkerd.io/">linkerd</a> are two famous service mesh systems which you can drop in along with your existing services without changing any code, although this may look quite complex, configuring service mesh is getting simpler.</p>
<p>I’ve got chance to use linkerd, in next post, I’ll cover how you can get started with linkerd.</p>
]]></content></item><item><title>Rancher for Microservices : Upgrades and Rollback.</title><link>https://ravi.ws/posts/2018/09/rancher-for-microservices-upgrades-and-rollback./</link><pubDate>Sat, 08 Sep 2018 21:28:00 +0530</pubDate><guid>https://ravi.ws/posts/2018/09/rancher-for-microservices-upgrades-and-rollback./</guid><description>So far we&amp;rsquo;ve checked how easy it is to get up and running with Rancher. We also deployed a very simple HTTP service on our Rancher Cluster, attached an L7 Load balancer and successfully scaled up containers running this service.
In this post, I&amp;rsquo;ll use the same service with a slight modification which is version number now return as 2.0 in HTTP response. So far our service is on v1.0, let&amp;rsquo;s say we&amp;rsquo;ve worked very hard and released a new version with latest features.</description><content type="html"><![CDATA[<p>So far we&rsquo;ve checked how easy it is to <a href="https://blog.ravi.ws/2018/09/getting-started-with-rancher-kubernetes.html">get up and running with Rancher</a>. We also deployed a very simple HTTP service on our Rancher Cluster, attached an L7 Load balancer and <a href="https://blog.ravi.ws/2018/09/rancher-for-microservices-load.html">successfully scaled up containers running this service</a>.</p>
<p>In this post, I&rsquo;ll use the same service with a slight modification which is version number now return as  2.0 in HTTP response. So far our service is on v1.0, let&rsquo;s say we&rsquo;ve worked very hard and released a new version with latest features. We want to release it to our users while ensuring there is no downtime during deployment. At this stage, our docker image of service 2.0 is pushed to docker repository (ravirdv/app:2.0).</p>
<p>In the world without container orchestration platforms, we&rsquo;d have to write scripts to spawn up compute resource (EC2, VM etc) and then use something like Ansible/Chef/Farbic scripts to provision required services and dependencies. Once that is done, we&rsquo;d push our package and hope there is no dependency/version mismatch and our service starts up. After new version of service is up, we&rsquo;d slowly migrate our traffic to new version of service and clean up compute resources of old version or may be keep it running as standby. Now there might be variations of how this is done, but roughly this is how normally people did it in past.</p>
<p>Enough of history lesson 🙂, let&rsquo;s get back to how we can achieve similar result with more predictability and fault tolerance using Rancher. Rancher likes to call collection of containers a &ldquo;Workload&rdquo;, in this case, our HTTP service containers are part of same workload. So when we ask Rancher to upgrade the Workload, it will spin up new set of containers with specified revision of docker image and instruct our L7 load balancer to gradually redirect traffic to new set of containers. Rancher does all of this for you, without breaking a sweat! awesome isn&rsquo;t it? 🤩</p>
<p>Upgrading a workload is very simple. You just have to click on Edit, update image version and hit &ldquo;Upgrade&rdquo; button, Rancher will instantly fetch the docker image from registry and provision a set of containers using that image.</p>
<p>Demo time! let&rsquo;s try to upgrade our service from v1.0 to v2.0 and see how our curl script handles it.</p>
<p><a href="https://1.bp.blogspot.com/-xOdzuqxKN5E/W5PqHwQ38wI/AAAAAAACh8s/DW7ym5d05w0QPIo4ohANvlim79h65UVxACLcBGAs/s1600/07%2B-%2BUpgrade%2Bwith%2BCurl.gif"><img src="https://1.bp.blogspot.com/-xOdzuqxKN5E/W5PqHwQ38wI/AAAAAAACh8s/DW7ym5d05w0QPIo4ohANvlim79h65UVxACLcBGAs/s1600/07%2B-%2BUpgrade%2Bwith%2BCurl.gif" alt=""></a></p>
<p>Looking at &ldquo;App Version&rdquo; value, we can see that it curl slowly starts receiving v2.0 as response.</p>
<p>It takes few more seconds to switch all containers to new version, below screen capture shows all responses are now from 2.0</p>
<p><a href="https://2.bp.blogspot.com/-lxjQ2UAp42A/W5Pq7d1nZtI/AAAAAAACh84/abOMEE4-XrgAVxZfmtg8IyS03kccNBECwCLcBGAs/s1600/08%2B-%2Bupgrade%2Bcomplete.gif"><img src="https://2.bp.blogspot.com/-lxjQ2UAp42A/W5Pq7d1nZtI/AAAAAAACh84/abOMEE4-XrgAVxZfmtg8IyS03kccNBECwCLcBGAs/s1600/08%2B-%2Bupgrade%2Bcomplete.gif" alt=""></a></p>
<p>As our service is now upgraded, &ldquo;App Version&rdquo; value is 2.0 in response, also container host are now different.</p>
<p>I was completely blown away by this feature, this &ldquo;nuke and pave&rdquo; approach give me much more confidence than modifying existing server configuration. However, things may go wrong. May be there is a last minute bug which impact a set of users or a top secret feature which shouldn&rsquo;t have been part of this release or anything else really where you&rsquo;d wish your infrastructure had an &ldquo;undo&rdquo; button.</p>
<p>And you guessed it! while not really an undo button, Rancher makes it very easy to rollback to previous version. Process for rollback is same as upgrade. Let&rsquo;s say we found an issue in our cutting edge 2.0 release and now we&rsquo;ve decided to rollback to 1.0 version ASAP 🔥. Let&rsquo;s see how Rancher handles it:</p>
<p><a href="https://1.bp.blogspot.com/-tXK987-ceQI/W5PsVVMtgMI/AAAAAAACh9Q/ZWfXNsZiR0MQHxhc1cG-ifiJeFqbabPaACLcBGAs/s1600/09%2B-%2BRollback.gif"><img src="https://1.bp.blogspot.com/-tXK987-ceQI/W5PsVVMtgMI/AAAAAAACh9Q/ZWfXNsZiR0MQHxhc1cG-ifiJeFqbabPaACLcBGAs/s1600/09%2B-%2BRollback.gif" alt=""></a></p>
<p>As you can see from HTTP response, we can see service 2.0 containers are replaced with version 1.0 containers. Although, this will be much more messy if services are not stateless, I&rsquo;ll write more about this when covering persistent storage topic. If you&rsquo;re new to containerization and its ecosystem then I highly recommend to start with services which are stateless. Running your app on local machine with Docker-Compose is easiest way to start in my opinion.</p>
<p>I hope this series of posts give you enough ammunition to start playing with Rancher. In next series of posts, I&rsquo;ll write about how you can use this platform to perform service discovery, handle configuration changes, store secrets, and most importantly debug and monitor services.</p>
<p>If you found this interesting or if there is something that I can improve then please let me know via comments.</p>
]]></content></item><item><title>Rancher for Microservices : Load Balancing and Scaling Containers.</title><link>https://ravi.ws/posts/2018/09/rancher-for-microservices-load-balancing-and-scaling-containers./</link><pubDate>Sat, 08 Sep 2018 05:00:00 +0530</pubDate><guid>https://ravi.ws/posts/2018/09/rancher-for-microservices-load-balancing-and-scaling-containers./</guid><description>In my previous post, we saw how easy it is to set up Kubernetes cluster using Rancher. Once you have a cluster up and running, next step is to deploy your microservices on the cluster. In this post, we’ll look at how to deploy, run and scale a docker image on your cluster. We’ll also look at setting up an L7 load balancer to distribute traffic between multiple instances of your app.</description><content type="html"><![CDATA[<p>In my <a href="https://blog.ravi.ws/2018/09/getting-started-with-rancher-kubernetes.html">previous post</a>, we saw how easy it is to set up Kubernetes cluster using Rancher. Once you have a cluster up and running, next step is to deploy your microservices on the cluster. In this post, we’ll look at how to deploy, run and scale a docker image on your cluster. We’ll also look at setting up an L7 load balancer to distribute traffic between multiple instances of your app.</p>
<p>Let’s create a simple HTTP service which returns server hostname &amp; current version of the binary (hardcoded). I’ve used go-lang for this, below is code snippet which returns hostname and service version.</p>
<p><a href="https://3.bp.blogspot.com/-6qrK0lPNUNI/W5NgiltB8nI/AAAAAAAChMg/qR5YFI3rmJs92ETgIW7uHdyUcVKfIZ2cACLcBGAs/s1600/Screen%2BShot%2B2018-09-08%2Bat%2B1.37.32%2BPM.png"><img src="https://3.bp.blogspot.com/-6qrK0lPNUNI/W5NgiltB8nI/AAAAAAAChMg/qR5YFI3rmJs92ETgIW7uHdyUcVKfIZ2cACLcBGAs/s640/Screen%2BShot%2B2018-09-08%2Bat%2B1.37.32%2BPM.png" alt=""></a></p>
<p>Simple HTTP Server, return app version &amp; hostname.</p>
<p>All it does is, returns a string &ldquo;App Version 2.0 running on host: <!-- raw HTML omitted -->&rdquo;, once deployed it will return container hostname.</p>
<p>Next step is to dockerize our service by generating a docker image and push it to DockerHub (or your private Docker registry), below is Dockerfile I used to dockerize this service.</p>
<p><a href="https://2.bp.blogspot.com/-IGlNcr6Das8/W5PfmOiIB2I/AAAAAAACh7M/OD9yZ7kYEFUlWVcaptXUVZAK21DtNPpcwCLcBGAs/s1600/Screen%2BShot%2B2018-09-08%2Bat%2B1.42.14%2BPM.png"><img src="https://2.bp.blogspot.com/-IGlNcr6Das8/W5PfmOiIB2I/AAAAAAACh7M/OD9yZ7kYEFUlWVcaptXUVZAK21DtNPpcwCLcBGAs/s640/Screen%2BShot%2B2018-09-08%2Bat%2B1.42.14%2BPM.png" alt=""></a></p>
<p>Dockerfile: run &ldquo;docker build -t ravirdv/app:v1.0 .&rdquo;</p>
<p>Running this will compile our service and generate a docker image on local machine. Version number is generally used to tag docker image so we’ve tagged it as v1.0. </p>
<p>We can push this image to DockerHub using following command : <em>docker push</em></p>
<p>You can access this image from <a href="https://hub.docker.com/r/ravirdv/app/,">https://hub.docker.com/r/ravirdv/app/,</a> there are two tags i.e. 1.0 &amp; 2.0</p>
<p>Now that we&rsquo;ve our shiny app on the docker repository, we can deploy it on our cluster via Rancher.</p>
<p>On Rancher, select your cluster, namespace and click on &ldquo;Deploy&rdquo;, specify service name, docker image and hit the &ldquo;Launch&rdquo; button to start a container.</p>
<p><a href="https://3.bp.blogspot.com/-9QOa7ZjHUIY/W5OFRM9Ic8I/AAAAAAAChaM/fD_7RKJ2ZTkRxPc3maFaHij9lUUdKzbogCLcBGAs/s1600/01-%2BDeploy.gif"><img src="https://3.bp.blogspot.com/-9QOa7ZjHUIY/W5OFRM9Ic8I/AAAAAAAChaM/fD_7RKJ2ZTkRxPc3maFaHij9lUUdKzbogCLcBGAs/s1600/01-%2BDeploy.gif" alt=""></a></p>
<p>It will show the workload as active once the container is started. Now since our app is HTTP service running on port 8080, we need to expose this port to the external world. In order to do this, we got few options, first one is to bind container’s port 8080 to a random port on a node, another option is to attach an L7 load balancer to route traffic to our container. L7 Load balancer approach give you more flexibility. By default, Rancher deploys nginx to handle L7 traffic and it runs on port 80. Rancher also allows you to specify a hostname or generate a xip.io subdomain with your app name. In this case, it generated app.tutorial.<!-- raw HTML omitted -->.xip.io and point its A record to out cluster IP.</p>
<p><a href="https://2.bp.blogspot.com/-ohSKurBEtwo/W5OFhCWWyDI/AAAAAAAChaY/ESwzpL8nheYz1cIE6ZVSDxAKbUDNXGRdQCLcBGAs/s1600/02-%2BLoad%2BBalancer.gif"><img src="https://2.bp.blogspot.com/-ohSKurBEtwo/W5OFhCWWyDI/AAAAAAAChaY/ESwzpL8nheYz1cIE6ZVSDxAKbUDNXGRdQCLcBGAs/s1600/02-%2BLoad%2BBalancer.gif" alt=""></a></p>
<p>You can map a path with this container and the port on which the container is listening. It takes around 20 to 30 seconds for it to generate xip.io hostname, you should be able to get a response from the endpoint once generated.</p>
<p><a href="https://3.bp.blogspot.com/-umCMaQIzLQA/W5OFmfRz2fI/AAAAAAAChao/y_gsThRvAgY4IDE-S1zRYJNuUTHSJNn4gCLcBGAs/s1600/03-%2BXIP%2BAccess.gif"><img src="https://3.bp.blogspot.com/-umCMaQIzLQA/W5OFmfRz2fI/AAAAAAAChao/y_gsThRvAgY4IDE-S1zRYJNuUTHSJNn4gCLcBGAs/s1600/03-%2BXIP%2BAccess.gif" alt=""></a></p>
<p>Now that we&rsquo;ve got it up and running, let&rsquo;s start a curl script to periodically make HTTP call to this service.</p>
<p><a href="https://3.bp.blogspot.com/-kZrYVBMg67E/W5OFtjG84SI/AAAAAAAChas/MXj2AOvwBTsS3HBVEZp0BCADsDOMxgkbgCLcBGAs/s1600/04-%2BCurl%2Bwith%2Bsingle%2Bpod.gif"><img src="https://3.bp.blogspot.com/-kZrYVBMg67E/W5OFtjG84SI/AAAAAAAChas/MXj2AOvwBTsS3HBVEZp0BCADsDOMxgkbgCLcBGAs/s1600/04-%2BCurl%2Bwith%2Bsingle%2Bpod.gif" alt=""></a></p>
<p>As you can see, we have got service version and container hostname as HTTP response, if you look closely all responses have the same hostname. That&rsquo;s expected since we&rsquo;ve got only one container running.</p>
<p>Now let&rsquo;s look at how scaling container works. Since we&rsquo;ve mapped our workload with the L7 load balancer, it should automatically take care of distributing traffic among our containers. You can edit the workload and increase the number of containers.</p>
<p><a href="https://4.bp.blogspot.com/-BuiyTEQcqsM/W5OF33KX5zI/AAAAAAAChbA/2F2u9i8gv4sAoiC1h1yMDNgm-dAUJJ4wQCLcBGAs/s1600/05-%2BIncrease%2BPods%2Bto%2B2.gif"><img src="https://4.bp.blogspot.com/-BuiyTEQcqsM/W5OF33KX5zI/AAAAAAAChbA/2F2u9i8gv4sAoiC1h1yMDNgm-dAUJJ4wQCLcBGAs/s1600/05-%2BIncrease%2BPods%2Bto%2B2.gif" alt=""></a></p>
<p>Now looking at same curl script output, we can see requests distributed between two containers as response contains two different hostnames.</p>
<p><a href="https://2.bp.blogspot.com/-fqZtzqWzjh8/W5OGAFZmooI/AAAAAAAChbQ/hzju04vGkbUZxfQl9VC-q498XxAAfsgwACLcBGAs/s1600/06%2B-%2BCurl%2Bwith%2B2%2BPods.gif"><img src="https://2.bp.blogspot.com/-fqZtzqWzjh8/W5OGAFZmooI/AAAAAAAChbQ/hzju04vGkbUZxfQl9VC-q498XxAAfsgwACLcBGAs/s1600/06%2B-%2BCurl%2Bwith%2B2%2BPods.gif" alt=""></a></p>
<p>Now we have a service which scales, its easy since our service doesn&rsquo;t have any state. I&rsquo;ll cover more on persistence storage for services like databases.</p>
<p>I hope this post helps you deploying simple stateless services on your cluster, please leave a comment in case something is unclear. In next post, we&rsquo;ll look into how Rancher handles upgrades and rollback.</p>
]]></content></item><item><title>Getting Started with Rancher &amp; Kubernetes</title><link>https://ravi.ws/posts/2018/09/getting-started-with-rancher-kubernetes/</link><pubDate>Sat, 08 Sep 2018 04:30:00 +0530</pubDate><guid>https://ravi.ws/posts/2018/09/getting-started-with-rancher-kubernetes/</guid><description>During my time working at Azoi (a startup), I was responsible for maintaining Gitlab for my team along with various other self-hosted internal services. When I first setup Gitlab in 2013, it was quite a task, as setting it up would involve configuring various services using provided scripts and a lot of luck. Fortunately, I found Bitnami Gitlab package to make that process easier. However initial setup is one thing and keeping up with the latest releases was a nightmare.</description><content type="html"><![CDATA[<p>During my time working at Azoi (a startup), I was responsible for maintaining Gitlab for my team along with various other self-hosted internal services. When I first setup Gitlab in 2013, it was quite a task, as setting it up would involve configuring various services using provided scripts and a lot of luck. Fortunately, I found Bitnami Gitlab package to make that process easier. However initial setup is one thing and keeping up with the latest releases was a nightmare.</p>
<p>Fast forward to 2016, I joined eInfochips as Solutions Consultant. Where one of my responsibilities was to modernize development workflow and encourage DevOps culture. It made sense to use Gitlab specially for Gitlab-runner and since this was a fresh setup, I explored few options to setup Gitlab, I found that Gitlab monthly releases were now published as Docker images. So I decided to use Gitlab docker image to host gitlab-ce internally. This time around, the experience was very different, initial setup and upgrading Gitlab was almost instant and painless.</p>
<p>I was quite impressed with this mechanism and got an opportunity to set up a similar mechanism for delivering a project I was working on. I quickly set up a local private docker repository and CI pipeline using Gitlab-runner to build and push few spring-boot based micro-services on docker registry. And used <a href="https://rancher.com/">Rancher</a> (more on it later) to deploy it on different environments (Dev, QA, Prod). It worked like charm.</p>
<p>That brings me to Kubernetes. Having read a lot about it, I gave it a try and back then it wasn&rsquo;t easy to set up as there were not many helper utilities like kops. Rancher, on the other hand, had built-in support for setting up Kubernetes cluster. Setting up Rancher is as simple as running a docker container. I had a great experience with Rancher and would like to share how easy it is to use it for deploying services and getting yourself familiar with Kubernetes.</p>
<p>So that brings us to what exactly is the role of Rancher, as container scheduling is handled by Kubernetes. Rancher is a cluster management tool, it allows you to set up and manage multiple Kubernetes cluster. It supports multi-cloud backends, authentication, access control, and a nice UI using which you can deploy and manage your containers. It also allows you to import existing cluster made on GKE or Amazon EKS.</p>
<p>I&rsquo;ll focus on Rancher 2.0, the latest version at this moment. Setting it up is a <a href="https://rancher.com/quick-start/">2 step process</a>. First is to install Rancer-Server and second is to install Rancher-Agent on worker nodes. I used 3 Ubuntu Server (18.04) boxes with Docker to set it up. One box runs Rancher Server and 2 boxes are workers which will run our containers (along with few Kubernetes services).</p>
<p>On Machine 1, run following command to start Rancher-Server, it should be up within a minute and you should be able to access web UI on port 443.</p>
<p><em>sudo docker run -d &ndash;restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher</em></p>
<p>Beauty of Rancher is that you don’t have to be familiar with Kubernetes, it sets up cluster transparently.</p>
<p><a href="https://1.bp.blogspot.com/-m3pmd7tZ30s/W5Mu3xsH4KI/AAAAAAAChJI/BVUS10WRIPwCkfPJQq0ccHnp5WpJkRSOgCLcBGAs/s1600/Screen%2BShot%2B2018-09-08%2Bat%2B9.48.52%2BAM.png"><img src="https://1.bp.blogspot.com/-m3pmd7tZ30s/W5Mu3xsH4KI/AAAAAAAChJI/BVUS10WRIPwCkfPJQq0ccHnp5WpJkRSOgCLcBGAs/s640/Screen%2BShot%2B2018-09-08%2Bat%2B9.48.52%2BAM.png" alt=""></a></p>
<p>Rancher 2.0 - Login Screen</p>
<p>Set admin password, and proceed to create a new cluster by clicking &ldquo;Add Cluster&rdquo; button.</p>
<p>Choose infrastructure provider, in my case I used local machines as nodes so I selected &ldquo;Custom&rdquo; however if you provide API key for GCP/AWS/Azure etc, Rancher will instantiate required compute resources for you!</p>
<p>Now to set up nodes for our cluster, start one node with &ldquo;etcd&rdquo;, &ldquo;Control Plane&rdquo; and &ldquo;Worker&rdquo; as roles. Additional nodes can be added with only &ldquo;Worker&rdquo; role.</p>
<p>Rancher will generate a docker run command which you can run on your nodes to make them part of the cluster. This will start rancher-agent on nodes and will set up Kubernetes services. It can take a couple of mins to show these nodes as active on your cluster. At this point, you should be able to see your cluster health and resource utilization. I highly recommend exploring catalog apps to get yourself familiar with Rancher.</p>
<p><a href="https://3.bp.blogspot.com/-8_TvufB0iU8/W5MvWVJlSQI/AAAAAAAChJQ/BvHs4c9XU8g2H8Ag5DAF61XlVgu7E41MQCLcBGAs/s1600/Screen%2BShot%2B2018-09-08%2Bat%2B9.59.50%2BAM.png"><img src="https://3.bp.blogspot.com/-8_TvufB0iU8/W5MvWVJlSQI/AAAAAAAChJQ/BvHs4c9XU8g2H8Ag5DAF61XlVgu7E41MQCLcBGAs/s640/Screen%2BShot%2B2018-09-08%2Bat%2B9.59.50%2BAM.png" alt=""></a></p>
<p>Cluster Health</p>
<p>I hope this helps you get started with Rancher, in my next post I&rsquo;ll write more about how you can deploy your app on Rancher and perform upgrades and rollback.</p>
]]></content></item><item><title>EuroPython 2015 - Python and Internet of Things</title><link>https://ravi.ws/posts/2015/08/europython-2015-python-and-internet-of-things/</link><pubDate>Sat, 01 Aug 2015 16:32:00 +0530</pubDate><guid>https://ravi.ws/posts/2015/08/europython-2015-python-and-internet-of-things/</guid><description>I&amp;rsquo;ve been working in area of IoT for quite some time, and at Azoi we use Python extensively. Looking at usage of Python on micro-controller, I realised that it&amp;rsquo;s not used as much as in other areas. I&amp;rsquo;ve had very good experience going with Python. I&amp;rsquo;ve got some exposure with micro controller and think it assists you to rapidly build prototype involving hardware.
I applied for a talk on Internet of Things with Python to spread some awareness around this and it was selected along with another talk by my colleague Bhaumik Shukla and one more by Hitul Mistry.</description><content type="html"><![CDATA[<p>I&rsquo;ve been working in area of IoT for quite some time, and at Azoi we use Python extensively. Looking at usage of Python on micro-controller, I realised that it&rsquo;s not used as much as in other areas. I&rsquo;ve had very good experience going with Python. I&rsquo;ve got some exposure with micro controller and think it assists you to rapidly build prototype involving hardware.</p>
<p>I applied for a talk on Internet of Things with Python to spread some awareness around this and it was selected along with another talk by my colleague <a href="https://www.linkedin.com/in/bhaumikshukla/">Bhaumik Shukla</a> and one more by <a href="https://www.linkedin.com/in/hitulmistry/">Hitul Mistry</a>. Out of all all submissions, there were total 4 selection out of which 3 were from my team at Azoi. It was also my first major talk at a large conference like EuroPython. I was both nervous and excited as the same time and since I was going to Bilbao, Spain for conference, I thought its a great opportunity to explore other cities as well :-)</p>
<p>Bhaumik&rsquo;s topic was &ldquo;<a href="https://www.youtube.com/watch?v=et0Hnntk3-s">Python for Cloud Services and Infrastructure Management</a>&rdquo; and Hitul&rsquo;s Topic was on <a href="https://www.youtube.com/watch?v=6EBBWv6tuA8">Concurrency and Parallelism</a>.</p>
<p>After a lot of preparation I was ready to go on stage to deliver my talk, one piece of advise you&rsquo;re delivering a talk at a conference, avoid changing your slides at last moment. In my case, my talk was on 2nd day so I thought I&rsquo;ll add a demo video and modify the flow a little bit to make it more easy to understand. It clearly wasn&rsquo;t a good idea but I managed to handle it.</p>
<p>Here&rsquo;s video of my talk, looking forward to your feedback!</p>
]]></content></item><item><title>Reliance Jio: a revolution in India's broadband scene?</title><link>https://ravi.ws/posts/2015/02/reliance-jio-a-revolution-in-indias-broadband-scene/</link><pubDate>Mon, 16 Feb 2015 00:36:00 +0530</pubDate><guid>https://ravi.ws/posts/2015/02/reliance-jio-a-revolution-in-indias-broadband-scene/</guid><description>Reliance Jio Infocomm acquired pan India 4G spectrum in 2010, now is the time when they&amp;rsquo;re obliged to utilize spectrum and launch their services. I&amp;rsquo;m closely following developments related to Jio from quite some time.
RJIL is aggressively laying fibre almost everywhere. They&amp;rsquo;ve also started public WiFi hotspots in few cities of Gujarat with Jionet branding and I&amp;rsquo;m actively using it. It was started on 26th Jan 2014 in Ahmedabad and was supposed to be free for first 3 months however it&amp;rsquo;s Feb 15 2015 and the service is still freely available.</description><content type="html"><![CDATA[<p>Reliance Jio Infocomm acquired pan India 4G spectrum in 2010, now is the time when they&rsquo;re obliged to utilize spectrum and launch their services. I&rsquo;m closely following developments related to Jio from quite some time.</p>
<p>RJIL is aggressively laying fibre almost everywhere. They&rsquo;ve also started public WiFi hotspots in few cities of Gujarat with Jionet branding and I&rsquo;m actively using it. It was started on 26th Jan 2014 in Ahmedabad and was supposed to be free for first 3 months however it&rsquo;s Feb 15 2015 and the service is still freely available. Based on my experience with Jionet, I&rsquo;ve seen speeds upto 11 Mbps however most of time it is around 3-8 Mbps, which is good considering that the service is free of cost.</p>
<p>I think there is a big push towards data driven applications, they&rsquo;re also working on apps like </p>
<ul>
<li><a href="https://register.jiodrive.com/jdhelp.html">Jio Drive</a> (Service like Dropbox, 100 GB Storage!)</li>
<li><a href="https://jioplay.jioconnect.com/downloads/templates/iphone/3.0.0.11/">Jio Play</a> (Live TV, with 7 days of content, more than 300 channels)</li>
<li>Jio Beats (Similar to Spotify, Gaana, Saavn etc)</li>
<li>Jio On-Demand (Netflix ?)</li>
<li>Jio Movies</li>
<li>Jio World (looks like Jio&rsquo;s appstore &amp; deals portal)</li>
<li><a href="https://jiofriends.preprod.ril.com/#">Jio Friends</a> </li>
<li>Jio Social (WhatsApp + Hike + Viber, sound quality and video quality is great even on mobile data )</li>
<li>Jio Mags (e-magazines app)</li>
<li>Jio News (all newspapers in electronic format for almost all regional languages, similar to NewHunt)</li>
<li>Jio Broadcast</li>
</ul>
<p>You can install and try some of these apps once you install Jio World.</p>
<p>I&rsquo;ve been using these apps on both Android &amp; iOS, I&rsquo;ll write more about above mentioned apps along with screen shots.</p>
<p>They seem to be pushing Digital India dream as well. They&rsquo;re setting up around 15 data centers in India to take care of distributing content as well as providing cloud services similar to Amazon AWS.</p>
<p>Based on few tweets it also looks like they&rsquo;ve started powering commercial building and residential societies with 100 Mbps FTTX connections.</p>
<p>I&rsquo;m looking forward for their launch, I&rsquo;ve a feeling that interesting time is ahead for Indian broadband space. It would be great if Mukesh Ambani can pull off the same effect in ISP space as was done by Reliance Infocomm in mobile in 2004.</p>
]]></content></item><item><title>iOS Notifications with ANCS Bluetooth Low Energy Profile.</title><link>https://ravi.ws/posts/2014/06/ios-notifications-with-ancs-bluetooth-low-energy-profile./</link><pubDate>Sat, 07 Jun 2014 20:06:00 +0530</pubDate><guid>https://ravi.ws/posts/2014/06/ios-notifications-with-ancs-bluetooth-low-energy-profile./</guid><description>So I got my hands on this TI CC2540 development board, which is a Bluetooth Low Energy boarding with MCU running OSAL. I was reading about BLE profiles and came across a profile called ANCS Bluetooth profile. ANCS stands for Apple Notification Center Service, this profile allows you to subscribe to notifications on iOS devices.
I came across interesting demo on Github repo which shows Mac working as BLE peripheral device and iOS working as BLE central device.</description><content type="html"><![CDATA[<p>So I got my hands on this TI CC2540 development board, which is a Bluetooth Low Energy boarding with MCU running OSAL. I was reading about BLE profiles and came across a profile called ANCS Bluetooth profile. ANCS stands for Apple Notification Center Service, this profile allows you to subscribe to notifications on iOS devices.</p>
<p>I came across interesting demo on Github <a href="https://github.com/KhaosT/ANCS-Mac">repo</a> which shows Mac working as BLE peripheral device and iOS working as BLE central device. This app shows how you can subscribe to notifications on iOS device and show them on your Mac. I&rsquo;m a big fan of Pebble Watch which uses same profile to show notifications on watch via BLE.</p>
<p>Having a development board like CC2540 allowed me to build a very simple custom firmware which would have a ANCS profile and LEDs on board reacting to notifications. It turns out that that there&rsquo;s amazing <a href="https://mbientlab.com/blog/ancs-on-ti2541-in-an-afternoon/">blog</a> with explain how to implement this in details</p>
]]></content></item><item><title>Introducing Kito (formerly Wello)!</title><link>https://ravi.ws/posts/2014/05/introducing-kito-formerly-wello/</link><pubDate>Sat, 03 May 2014 23:32:00 +0530</pubDate><guid>https://ravi.ws/posts/2014/05/introducing-kito-formerly-wello/</guid><description>I&amp;rsquo;m fortunate to be part of team unveiling Kito (formerly Wello) at SXSW 2012, I&amp;rsquo;ve been working hard along with my team on this for last few months and it feels so good to finally show it to the world. Kito is health tracker device which is in form of a smartphone case, it talks to the phone using Bluetooth Low Energy and has its own battery which can last couple of months on a single charge.</description><content type="html"><![CDATA[<p>I&rsquo;m fortunate to be part of team unveiling Kito (formerly Wello) at SXSW 2012, I&rsquo;ve been working hard along with my team on this for last few months and it feels so good to finally show it to the world. Kito is health tracker device which is in form of a smartphone case, it talks to the phone using Bluetooth Low Energy and has its own battery which can last couple of months on a single charge.</p>
<p>It was a very hectic week with all of us working around the clock on setting up pre-order website and preparing for launch. I went to Delhi for a local release event before heading towards Austin. By the time I left for Austin, Kito launch was covered all major tech publications, below is list of few links which covers Kito launch</p>
<ul>
<li><a href="https://www.engadget.com/2014/03/06/wello/">engadget - &lsquo;Wello&rsquo; iPhone case can track your blood pressure, temperature and more</a></li>
<li><a href="https://pocketnow.com/wello-case-iphone-health">PocketNow - “Wello” case tracks your health with your current iPhone</a></li>
<li><a href="https://www.macrumors.com/2014/03/06/wello-health-tracking-case-iphone/">Macrumors - Azoi Unveils &lsquo;Wello&rsquo; Health Tracking Case for iPhone</a></li>
<li><a href="https://techcrunch.com/2014/04/02/hands-on-with-wello-the-iphone-case-that-monitors-and-tracks-your-vital-signs/">Techcrunch - Hands On With Wello, The iPhone Case That Monitors And Tracks Your Vital Signs</a></li>
</ul>
<p>As soon as it went out in wild, me and everyone in my team were glued to our monitoring dashboards and it awesome to see stuff flying on nginx access.log :-)</p>
<p>Here are some pictures from the event:</p>
<p><a href="https://2.bp.blogspot.com/-Hc4rMpFRx7E/W6TL8YC1zgI/AAAAAAAC9VI/IVmWyH0bcnIGJYFn2iwoacryTEPJfmg_QCLcBGAs/s1600/1796856_10152084399052762_265465364_o.jpg"><img src="https://2.bp.blogspot.com/-Hc4rMpFRx7E/W6TL8YC1zgI/AAAAAAAC9VI/IVmWyH0bcnIGJYFn2iwoacryTEPJfmg_QCLcBGAs/s320/1796856_10152084399052762_265465364_o.jpg" alt=""></a></p>
<p><a href="https://2.bp.blogspot.com/-wtoFi-LOzsQ/W6TMEBvttdI/AAAAAAAC9VM/cJzwbWuYZrkKdtFfHbJK1XPR3lIpklZEQCLcBGAs/s1600/1959339_10202543531263884_1415511994_n.jpg"><img src="https://2.bp.blogspot.com/-wtoFi-LOzsQ/W6TMEBvttdI/AAAAAAAC9VM/cJzwbWuYZrkKdtFfHbJK1XPR3lIpklZEQCLcBGAs/s320/1959339_10202543531263884_1415511994_n.jpg" alt=""></a></p>
<p>Our booth</p>
<p><a href="https://4.bp.blogspot.com/-G6eJVEt1RyU/W6TMFx4cSaI/AAAAAAAC9VQ/Xdt2ILaPRIkTAgKleVNEcjg4OvHqXRP8QCLcBGAs/s1600/1601378_10202543530943876_1470307531_n.jpg"><img src="https://4.bp.blogspot.com/-G6eJVEt1RyU/W6TMFx4cSaI/AAAAAAAC9VQ/Xdt2ILaPRIkTAgKleVNEcjg4OvHqXRP8QCLcBGAs/s320/1601378_10202543530943876_1470307531_n.jpg" alt=""></a></p>
<p>That&rsquo;s me and my boss.</p>
<p><a href="https://3.bp.blogspot.com/-l5HAaUoPxTw/W6TMHqIa5dI/AAAAAAAC9VU/n8TtAJ66D-weOA4aHBoQzh5Hq31gul9VgCLcBGAs/s1600/main-qimg-b8e7b42d1c305a7ce9f0e4ff4993994d-c.jpeg"><img src="https://3.bp.blogspot.com/-l5HAaUoPxTw/W6TMHqIa5dI/AAAAAAAC9VU/n8TtAJ66D-weOA4aHBoQzh5Hq31gul9VgCLcBGAs/s320/main-qimg-b8e7b42d1c305a7ce9f0e4ff4993994d-c.jpeg" alt=""></a></p>
<p>That&rsquo;s me, show off our device :-)</p>
<p>Here&rsquo;s our CEO&rsquo;s interview with TechCrunch, walking through some features:</p>
<p>Update: Name updated to Kito and added few video links.</p>
]]></content></item><item><title>How will Samsung succeed where Nokia failed?</title><link>https://ravi.ws/posts/2014/01/how-will-samsung-succeed-where-nokia-failed/</link><pubDate>Sun, 26 Jan 2014 10:38:00 +0530</pubDate><guid>https://ravi.ws/posts/2014/01/how-will-samsung-succeed-where-nokia-failed/</guid><description>Anyone who&amp;rsquo;s following Tizen project knows developing apps is mostly using HTML5, CSS &amp;amp; JavaScript. While I like the idea of HTML apps on mobile and all the portability advantages of it, what I don&amp;rsquo;t like is how limited access you have when it comes to build apps which are CPU intensive. In general, it doesn&amp;rsquo;t give a good UX and it feels sluggish in comparison to BB10 Qt/QML, iOS with Swift, heck even Android with Java is better.</description><content type="html"><![CDATA[<p>Anyone who&rsquo;s following Tizen project knows developing apps is mostly using HTML5, CSS &amp; JavaScript. While I like the idea of HTML apps on mobile and all the portability advantages of it, what I don&rsquo;t like is how limited access you have when it comes to build apps which are CPU intensive. In general, it doesn&rsquo;t give a good UX and it feels sluggish in comparison to BB10 Qt/QML, iOS with Swift, heck even Android with Java is better.</p>
<p>Looks like every new platform wants to quickly gain maximum app developers, due to which they end target people who are familiar with web technologies. With BB10&rsquo;s fluid UI and good set of native apps, they are struggling to survive, and then there is Jolla Sailfish (by ex-Nokia team) which looks like more of a hobby project. </p>
<p>As a developer, having experienced Tizen OS (which is no different in terms of features than Android) I see no reason to believe Tizen to succeed where Nokia &amp; Blackberry failed. Which is bringing high end apps on the platform.</p>
]]></content></item><item><title>Ubuntu Touch SDK, Core Apps &amp; Mac OSX</title><link>https://ravi.ws/posts/2013/03/ubuntu-touch-sdk-core-apps-mac-osx/</link><pubDate>Fri, 22 Mar 2013 01:32:00 +0530</pubDate><guid>https://ravi.ws/posts/2013/03/ubuntu-touch-sdk-core-apps-mac-osx/</guid><description>I have started working on Ubuntu Touch core apps, this involves using Ubuntu UI Toolkit which is basically QML Components designed for Ubuntu Touch OS. Unfortunately Ubuntu UI Toolkit is not available for Mac OS. In order to develop Ubuntu Touch core apps I have to get Ubuntu UI components running on Mac.
So this has shifted my focus from Ubuntu Touch core apps to ubuntu ui sdk. Once I get it, I can start working on Ubuntu Touch core apps.</description><content type="html"><![CDATA[<p>I have started working on Ubuntu Touch core apps, this involves using Ubuntu UI Toolkit which is basically QML Components designed for Ubuntu Touch OS. Unfortunately Ubuntu UI Toolkit is not available for Mac OS. In order to develop Ubuntu Touch core apps I have to get Ubuntu UI components running on Mac.</p>
<p>So this has shifted my focus from Ubuntu Touch core apps to ubuntu ui sdk. Once I get it, I can start working on Ubuntu Touch core apps.</p>
<p>Coming back to the SDK, it is a straightforward package which contains QML building block for application developers. Now compiling this on Mac should not be diffcult.</p>
<p>I have identified following dependencies causing compilation to fail.</p>
<p>QtDbus:</p>
<p>This is the first error message i got when trying to compile Ubuntu UI Toolkit.<br>
it says Unknown Module : dbus  when I run QMake.</p>
<p>I have no clue why this is coming, as I think I have qtdbus installed. will come back to this point once I have a solution</p>
<p>libintl includes:</p>
<p>Ubuntu Touch SDK seems to be using libintl package for internationalization, hunting down this dependency was quite easy.</p>
<p>just download and this libintl package from</p>
<p> https://code.google.com/p/rudix/downloads/detail?name=static-libintl-0.18.1.1-5.pkg&amp;can=2&amp;q=</p>
<p>gio</p>
<p>It also uses glib/gio library, installing the library is very simple as it&rsquo;s available on HomeBrew.</p>
<p>brew install glib</p>
<p>added include dirs<br>
/usr/local/Cellar/glib/2.32.4/include/glib-2.0<br>
/usr/local//Cellar/glib/2.32.4/lib/glib-2.0/include/</p>
<p>So I think once I get the dbus module for qt5, SDK should compile fine unless some other dependencies are missing.</p>
]]></content></item><item><title>Setting up Android nightly builds using Jenkins</title><link>https://ravi.ws/posts/2012/09/setting-up-android-nightly-builds-using-jenkins/</link><pubDate>Mon, 17 Sep 2012 17:27:00 +0530</pubDate><guid>https://ravi.ws/posts/2012/09/setting-up-android-nightly-builds-using-jenkins/</guid><description>Hi everyone! after few of months working on JS &amp;amp; and building a low level linux service which interacts with depth sensor, I got chance to working on Android base system to build input drivers.
When I started working on it, building kernel module didn&amp;rsquo;t take much time but observed that building a new Android base system was a manual process. Anyone new in team has to spend some time to understand how to trigger build.</description><content type="html"><![CDATA[<p>Hi everyone! after few of months working on JS &amp; and building a low level linux service which interacts with depth sensor, I got chance to working on Android base system to build input drivers.</p>
<p>When I started working on it, building kernel module didn&rsquo;t take much time but observed that building a new Android base system was a manual process. Anyone new in team has to spend some time to understand how to trigger build.</p>
<p>I&rsquo;m a big fan of Cyanogenmod, and looking at how they build and distribute ROM for many devices I felt we can improve our system. So I took this up and setup a Jenkins server on a local machine. Migrating our custom build script was straight forward as its a bash script.</p>
<p>Compared to our previous system, we now have a UI which anyone can access and access latest builds and check compilation logs. Another cool thing about setting it up on Jenkins is that we can now automatically publish it on our file server and send out an email to everyone with link to download it. This also helps our testing team to easily download ROM and flash it on board.</p>
<p>Jenkins also fetches commit messages and I configured Jenkins to send change log as part of mail body. Overall, everyone is very after moving to Jenkins.</p>
]]></content></item><item><title>Cross platform NPAPI browser plugin.</title><link>https://ravi.ws/posts/2012/04/cross-platform-npapi-browser-plugin./</link><pubDate>Sat, 21 Apr 2012 15:02:00 +0530</pubDate><guid>https://ravi.ws/posts/2012/04/cross-platform-npapi-browser-plugin./</guid><description>Recently, I got chance to work on building NPAPI plugin. I&amp;rsquo;ve used few NPAPI plugin and had basic idea about what it is but didn&amp;rsquo;t knew how to build one.
Primary use case for me was to make it run on Android and interact with a C++ service running in background. There is a sensor attached with Android based hardware and my task is to build a JavaScript SDK which allows developers to access this hardware sensor data via C++ service.</description><content type="html"><![CDATA[<p>Recently, I got chance to work on building NPAPI plugin. I&rsquo;ve used few NPAPI plugin and had basic idea about what it is but didn&rsquo;t knew how to build one.</p>
<p>Primary use case for me was to make it run on Android and interact with a C++ service running in background. There is a sensor attached with Android based hardware and my task is to build a JavaScript SDK which allows developers to access this hardware sensor data via C++ service.</p>
<p>I started building a simple plugin using <a href="https://code.google.com/archive/p/npapi-sdk/">NPAPI SDK</a> which has a function which can be invoked using JavaScript from Firefox running on Ubuntu. However, this focuses on building it for Linux.</p>
<p>After some digging, I was able to build it on Android (Gingerbread). But when I tried to load it on Emulator it wasn&rsquo;t working. Looks like a strange issue as it just doesn&rsquo;t register with browser on Android emulator.</p>
<p> I posted my <a href="https://stackoverflow.com/questions/10190697/load-npapi-plugin-on-android-device-emulator">query</a> on StackOverflow, but didn&rsquo;t come across anything useful. After trying some more I was able to resolve it by adding JNI interfaces for relevant entrypoints and it start working!</p>
<p>Next step is to separate OS specific interfaces so that this plugin can be built with platform specific code separate and sdk related code separately.</p>
<p>I hope this help anyone looking for building NPAPI plugin for Android, feel free to contact me in case you need any assistance.</p>
]]></content></item><item><title>New Year Gift From Nokia! :)</title><link>https://ravi.ws/posts/2011/12/new-year-gift-from-nokia/</link><pubDate>Mon, 26 Dec 2011 14:10:00 +0530</pubDate><guid>https://ravi.ws/posts/2011/12/new-year-gift-from-nokia/</guid><description>Just received Nokia Lumia 800
well no comments about WP7 before trying it :)
wonderful build quality.</description><content type="html"><![CDATA[<p>Just received Nokia Lumia 800</p>
<p><a href="https://1.bp.blogspot.com/-oam3SMWN5mQ/Tvgw0G3nywI/AAAAAAAAJ8o/2Ogn6zdeZeQ/s1600/Picture+009.jpg"><img src="https://1.bp.blogspot.com/-oam3SMWN5mQ/Tvgw0G3nywI/AAAAAAAAJ8o/2Ogn6zdeZeQ/s320/Picture+009.jpg" alt=""></a></p>
<p><a href="https://1.bp.blogspot.com/-DM8AUwcPsYc/Tvgw6-tExtI/AAAAAAAAJ8w/mJ2G3wEqzU0/s1600/Picture+010.jpg"><img src="https://1.bp.blogspot.com/-DM8AUwcPsYc/Tvgw6-tExtI/AAAAAAAAJ8w/mJ2G3wEqzU0/s320/Picture+010.jpg" alt=""></a></p>
<p><a href="https://3.bp.blogspot.com/-ty_DUnWOBgs/Tvgw_0UAAiI/AAAAAAAAJ84/sPsx0RlG2w4/s1600/Picture+012.jpg"><img src="https://3.bp.blogspot.com/-ty_DUnWOBgs/Tvgw_0UAAiI/AAAAAAAAJ84/sPsx0RlG2w4/s320/Picture+012.jpg" alt=""></a></p>
<p><a href="https://3.bp.blogspot.com/-cDRuFO1nLIk/TvgxE_Zh6bI/AAAAAAAAJ9A/htC6d50uAj0/s1600/Picture+014.jpg"><img src="https://3.bp.blogspot.com/-cDRuFO1nLIk/TvgxE_Zh6bI/AAAAAAAAJ9A/htC6d50uAj0/s320/Picture+014.jpg" alt=""></a></p>
<p><a href="https://2.bp.blogspot.com/-5i_EZ9BEaqw/TvgxJhlt60I/AAAAAAAAJ9I/6P3aOehC1IE/s1600/Picture+015.jpg"><img src="https://2.bp.blogspot.com/-5i_EZ9BEaqw/TvgxJhlt60I/AAAAAAAAJ9I/6P3aOehC1IE/s320/Picture+015.jpg" alt=""></a></p>
<p><a href="https://4.bp.blogspot.com/-Ox6_t3dtr9s/TvgxNlZdkTI/AAAAAAAAJ9Q/grAHf5HYoec/s1600/Picture+019.jpg"><img src="https://4.bp.blogspot.com/-Ox6_t3dtr9s/TvgxNlZdkTI/AAAAAAAAJ9Q/grAHf5HYoec/s320/Picture+019.jpg" alt=""></a></p>
<p>well no comments about WP7 before trying it :)</p>
<p><a href="https://4.bp.blogspot.com/-waibwuk0zyk/TvgxRv7NjmI/AAAAAAAAJ9Y/y30LUaV5qoE/s1600/Picture+018.jpg"><img src="https://4.bp.blogspot.com/-waibwuk0zyk/TvgxRv7NjmI/AAAAAAAAJ9Y/y30LUaV5qoE/s320/Picture+018.jpg" alt=""></a></p>
<p><a href="https://3.bp.blogspot.com/-Y0zDmniRyiY/TvgxWXFJzYI/AAAAAAAAJ9g/b6qUJd1Jc8A/s1600/Picture+017.jpg"><img src="https://3.bp.blogspot.com/-Y0zDmniRyiY/TvgxWXFJzYI/AAAAAAAAJ9g/b6qUJd1Jc8A/s320/Picture+017.jpg" alt=""></a></p>
<p>wonderful build quality.</p>
<p><a href="https://4.bp.blogspot.com/-8nzbMXu5eVU/TvgxbQGYKAI/AAAAAAAAJ9o/nFHHT-aRNQU/s1600/Picture+016.jpg"><img src="https://4.bp.blogspot.com/-8nzbMXu5eVU/TvgxbQGYKAI/AAAAAAAAJ9o/nFHHT-aRNQU/s320/Picture+016.jpg" alt=""></a></p>
]]></content></item><item><title>N9 - Nokia's answer to iPhone?</title><link>https://ravi.ws/posts/2011/09/n9-nokias-answer-to-iphone/</link><pubDate>Wed, 21 Sep 2011 17:35:00 +0530</pubDate><guid>https://ravi.ws/posts/2011/09/n9-nokias-answer-to-iphone/</guid><description>If you&amp;rsquo;re following smartphone industry then you&amp;rsquo;d have come across Nokia&amp;rsquo;s N9 with Harmattan OS. Nokia showcased N9 in June and should be out in market next month. Unfortunately Nokia has said they&amp;rsquo;ll be focusing completely on Windows Phone going forward and so even if N9 is a success they won&amp;rsquo;t release a successor with Harmattan.
Nokia N9 comes with a fundamentally different UX, it&amp;rsquo;s an all screen phone with no buttons and an awesome camera.</description><content type="html"><![CDATA[<p>If you&rsquo;re following smartphone industry then you&rsquo;d have come across Nokia&rsquo;s N9 with Harmattan OS. Nokia showcased N9 in June and should be out in market next month. Unfortunately Nokia has said they&rsquo;ll be focusing completely on Windows Phone going forward and so even if N9 is a success they won&rsquo;t release a successor with Harmattan.</p>
<p>Nokia N9 comes with a fundamentally different UX, it&rsquo;s an all screen phone with no buttons and an awesome camera. Body is designed in a completely different way and it looks awesome! I&rsquo;ve been a huge fan of Symbian so far but I understand the changing landscape and Symbian definitely lags in terms of hardware support and UX. However, looking at current state of Android, Blackberry and iPhone, N9 definitely looks promising. I really wish Nokia change their stance on N9 or at least brings N9 UX on WP.</p>
<p>Look at N9 commercial and let me know what you think about Nokia N9.</p>
]]></content></item><item><title>Meego Harmattan Web Browser (N950)</title><link>https://ravi.ws/posts/2011/09/meego-harmattan-web-browser-n950/</link><pubDate>Sun, 11 Sep 2011 17:39:00 +0530</pubDate><guid>https://ravi.ws/posts/2011/09/meego-harmattan-web-browser-n950/</guid><description>Acid 3 Test Nokia N950 Stock Web Browser vs Google Chrome 13.
HTML5TEST - Nokia N950 vs Internet Explorer 8
I&amp;rsquo;ll will add more screenshots soon.</description><content type="html"><![CDATA[<p><a href="https://2.bp.blogspot.com/-8Nfy6aYFwZw/Tmykg8obRoI/AAAAAAAAJ7o/oCpKIy9GQDw/s1600/11092011007.jpg"><img src="https://2.bp.blogspot.com/-8Nfy6aYFwZw/Tmykg8obRoI/AAAAAAAAJ7o/oCpKIy9GQDw/s320/11092011007.jpg" alt=""></a></p>
<p>Acid 3 Test Nokia N950 Stock Web Browser vs Google Chrome 13.</p>
<p><a href="https://1.bp.blogspot.com/-UcD8HZkjw-U/Tmyko72X2bI/AAAAAAAAJ7s/f7OSPneka2E/s1600/07092011001.jpg"><img src="https://1.bp.blogspot.com/-UcD8HZkjw-U/Tmyko72X2bI/AAAAAAAAJ7s/f7OSPneka2E/s320/07092011001.jpg" alt=""></a></p>
<p>HTML5TEST - Nokia N950 vs Internet Explorer 8</p>
<p>I&rsquo;ll will add more screenshots soon.</p>
]]></content></item><item><title>Koza - English to Gujarati Dictionary for Smart Phones</title><link>https://ravi.ws/posts/2011/09/koza-english-to-gujarati-dictionary-for-smart-phones/</link><pubDate>Sun, 11 Sep 2011 16:06:00 +0530</pubDate><guid>https://ravi.ws/posts/2011/09/koza-english-to-gujarati-dictionary-for-smart-phones/</guid><description>Hi! check out Koza, a very simple Gujarati Dictionary for your smart phone.
Koza is available for Android, Symbian^1 and above, Meego Harmattan (Nokia N9 &amp;amp; N950) and WP7.</description><content type="html"><![CDATA[<p><a href="https://store.ovi.com/content/125926"><img src="https://snac.nokia.com/hosted/67/bd/-nokia-n8-6-77e9.jpg" alt=""></a></p>
<p>Hi! check out Koza, a very simple Gujarati Dictionary for your smart phone.</p>
<p>Koza is available for <a href="https://market.android.com/details?id=com.lstViewTest&amp;feature=search_result">Android</a>, <a href="https://store.ovi.com/content/125926">Symbian^1</a> and above, <a href="https://store.ovi.com/content/125926">Meego Harmattan</a> (Nokia N9 &amp; N950) and WP7.</p>
]]></content></item><item><title>Nokia N950 Developer Device</title><link>https://ravi.ws/posts/2011/07/nokia-n950-developer-device/</link><pubDate>Thu, 21 Jul 2011 00:00:00 +0530</pubDate><guid>https://ravi.ws/posts/2011/07/nokia-n950-developer-device/</guid><description>I was desperately waiting for N950 and finally it arrived. I&amp;rsquo;m yet to get my hands on it as it was shipped to my hometown but anyway I got some pics from home.
so here is my N9 Dev Kit:
Thank you Nokia &amp;amp; DHL :)
can&amp;rsquo;t stop my self from looking at this pic!
Looks awesome! A perfect device for geeks</description><content type="html"><![CDATA[<p><a href="https://3.bp.blogspot.com/-eHTB9JGFUIY/TicjuKe9l1I/AAAAAAAAJ60/1upMT3aA3Lw/s1600/DSC_0048.jpg"></a></p>
<p><a href="https://4.bp.blogspot.com/-HarCjXcu4lU/Tici-RutTtI/AAAAAAAAJ6k/_MPA2Tu66lg/s1600/DSC_0046.jpg"></a><br>
I was desperately waiting for N950 and finally it arrived. I&rsquo;m yet to get my hands on it as it was shipped to my hometown but anyway I got some pics from home.</p>
<p>so here is my N9 Dev Kit:</p>
<p><a href="https://2.bp.blogspot.com/-5nlZKuswJKs/Tici9WRreBI/AAAAAAAAJ6E/G-IgjC4VbZU/s1600/DSC_0037.jpg"><img src="https://2.bp.blogspot.com/-5nlZKuswJKs/Tici9WRreBI/AAAAAAAAJ6E/G-IgjC4VbZU/s320/DSC_0037.jpg" alt=""></a></p>
<p>Thank you Nokia &amp; DHL :)</p>
<p><a href="https://3.bp.blogspot.com/-_uKBXgCzZt4/Tici9nRzNDI/AAAAAAAAJ6M/Mp8OK4sjbNE/s1600/DSC_0043.jpg"><img src="https://3.bp.blogspot.com/-_uKBXgCzZt4/Tici9nRzNDI/AAAAAAAAJ6M/Mp8OK4sjbNE/s320/DSC_0043.jpg" alt=""></a></p>
<p>can&rsquo;t stop my self from looking at this pic!</p>
<p><a href="https://4.bp.blogspot.com/-HarCjXcu4lU/Tici-RutTtI/AAAAAAAAJ6k/_MPA2Tu66lg/s1600/DSC_0046.jpg"><img src="https://4.bp.blogspot.com/-HarCjXcu4lU/Tici-RutTtI/AAAAAAAAJ6k/_MPA2Tu66lg/s320/DSC_0046.jpg" alt=""></a><br>
<a href="https://4.bp.blogspot.com/-maaAIlSpL9Q/Tici-IuOo5I/AAAAAAAAJ6c/Ks-XufiCWa4/s1600/DSC_0045.jpg"><img src="https://4.bp.blogspot.com/-maaAIlSpL9Q/Tici-IuOo5I/AAAAAAAAJ6c/Ks-XufiCWa4/s320/DSC_0045.jpg" alt=""></a><br>
<a href="https://1.bp.blogspot.com/-IXDcRW9RmHI/Tici9wfM3yI/AAAAAAAAJ6U/_irCSK0XLp0/s1600/DSC_0044.jpg"><img src="https://1.bp.blogspot.com/-IXDcRW9RmHI/Tici9wfM3yI/AAAAAAAAJ6U/_irCSK0XLp0/s320/DSC_0044.jpg" alt=""></a></p>
<p><a href="https://4.bp.blogspot.com/-pAy9WKcopoU/Ticjt1sjVvI/AAAAAAAAJ6s/wDNRda4-Apc/s1600/DSC_0047.jpg"><img src="https://4.bp.blogspot.com/-pAy9WKcopoU/Ticjt1sjVvI/AAAAAAAAJ6s/wDNRda4-Apc/s320/DSC_0047.jpg" alt=""></a></p>
<p>Looks awesome! A perfect device for geeks</p>
<p><a href="https://3.bp.blogspot.com/-eHTB9JGFUIY/TicjuKe9l1I/AAAAAAAAJ60/1upMT3aA3Lw/s1600/DSC_0048.jpg"><img src="https://3.bp.blogspot.com/-eHTB9JGFUIY/TicjuKe9l1I/AAAAAAAAJ60/1upMT3aA3Lw/s320/DSC_0048.jpg" alt=""></a></p>
<p>There are somethings which money can&rsquo;t buy, for everything else we&rsquo;ve got visa/master or whatever cards :P</p>
<p>That&rsquo;s all, can&rsquo;t wait to post my experience with this device and ya, keep checking this space for updates on my projects for Meego.</p>
]]></content></item><item><title>Control VLC over HTTP</title><link>https://ravi.ws/posts/2011/07/control-vlc-over-http/</link><pubDate>Fri, 08 Jul 2011 01:30:00 +0530</pubDate><guid>https://ravi.ws/posts/2011/07/control-vlc-over-http/</guid><description>VLC Player offers something called VLC HTTP Interface, enabling it will allow you to control VLC Player from any web browser/mobile VLC Remote App.
1. Start VLC, Go to Tools -&amp;gt; Preferences.
2. Select &amp;ldquo;All&amp;rdquo; under &amp;ldquo;Show Settings&amp;rdquo; in bottom left corner.
3. Click on Main Interfaces -&amp;gt; Select HTTP remote control interface
4. Finally Click &amp;ldquo;Save&amp;rdquo; and restart your VLC Player.
you can access the player from any web browser by entering https://[ip address]: [port]</description><content type="html"><![CDATA[<p>VLC Player offers something called VLC HTTP Interface, enabling it will allow you to control VLC Player from any web browser/mobile VLC Remote App.</p>
<p>1. Start VLC, Go to Tools -&gt; Preferences.</p>
<p><img src="https://2.bp.blogspot.com/-Wyk7CH2eOok/ThYTlw_OWJI/AAAAAAAAJ4s/8Bw8ADqNJ-U/s320/1.png" alt=""></p>
<p>2. Select &ldquo;All&rdquo; under &ldquo;Show Settings&rdquo; in bottom left corner.</p>
<p><img src="https://2.bp.blogspot.com/-pxn2rD3yxxs/ThYTxayIMTI/AAAAAAAAJ40/N0SOAOX6jl4/s320/2.PNG" alt=""></p>
<p>3. Click on Main Interfaces -&gt; Select HTTP remote control interface</p>
<p><img src="https://3.bp.blogspot.com/-oW8_QYwnaHw/ThYUAxiP_WI/AAAAAAAAJ48/R0ZFnOGmz-s/s320/3.PNG" alt=""></p>
<p>4. Finally Click &ldquo;Save&rdquo; and restart your VLC Player.</p>
<p>you can access the player from any web browser by entering https://[ip address]: [port]</p>
<p>e.g. https://127.0.01:8080</p>
<p>I hope you find this help ful</p>
]]></content></item><item><title>HypeRoam On Symbian</title><link>https://ravi.ws/posts/2010/04/hyperoam-on-symbian/</link><pubDate>Sat, 03 Apr 2010 20:05:00 +0530</pubDate><guid>https://ravi.ws/posts/2010/04/hyperoam-on-symbian/</guid><description/><content type="html"></content></item><item><title>Fixing a bug</title><link>https://ravi.ws/posts/2009/12/fixing-a-bug/</link><pubDate>Fri, 11 Dec 2009 22:39:00 +0530</pubDate><guid>https://ravi.ws/posts/2009/12/fixing-a-bug/</guid><description>I&amp;rsquo;m an open source software enthusiast, and alway wanted to contribute something to the community, as a full time KDE user, and a hardcore KDE fan, I started learning Qt4 after I became familiar with Qt4 I thought of trying my hand on bug fixing, and as regular planet reader, this post</description><content type="html">&lt;p>I&amp;rsquo;m an open source software enthusiast, and alway wanted to contribute something to the community, as a full time KDE user, and a hardcore KDE fan, I started learning Qt4 after I became familiar with Qt4 I thought of trying my hand on bug fixing, and as regular planet reader, this post&lt;/p></content></item><item><title>Introducing HypeRoam!</title><link>https://ravi.ws/posts/2009/12/introducing-hyperoam/</link><pubDate>Sun, 06 Dec 2009 18:43:00 +0530</pubDate><guid>https://ravi.ws/posts/2009/12/introducing-hyperoam/</guid><description>HypeRoam is a cross-platform Cyberoam client with features such as auto/on-demand account switching &amp;amp; auto reconnecting. It is developed using Qt4.6
On Arch Linux:
On Windows :</description><content type="html"><![CDATA[<p>HypeRoam is a cross-platform <a href="https://en.wikipedia.org/wiki/Cyberoam">Cyberoam</a> client with features such as auto/on-demand account switching &amp; auto reconnecting. It is developed using Qt4.6</p>
<p>On Arch Linux:</p>
<p><a href="https://4.bp.blogspot.com/_xCN_WkxtTX4/S0TAIbkgZqI/AAAAAAAAAGc/lZYm4y-cCKg/s1600-h/Hyperoam.png"><img src="https://4.bp.blogspot.com/_xCN_WkxtTX4/S0TAIbkgZqI/AAAAAAAAAGc/lZYm4y-cCKg/s400/Hyperoam.png" alt=""></a><br>
On Windows :</p>
<p><a href="https://2.bp.blogspot.com/_xCN_WkxtTX4/Sxuvc7gRFSI/AAAAAAAAAGU/6oO_2BWVyuQ/s1600-h/hyproam.PNG"><img src="https://2.bp.blogspot.com/_xCN_WkxtTX4/Sxuvc7gRFSI/AAAAAAAAAGU/6oO_2BWVyuQ/s400/hyproam.PNG" alt=""></a></p>
]]></content></item><item><title>DA-IICT Campus Pics :)</title><link>https://ravi.ws/posts/2009/07/da-iict-campus-pics/</link><pubDate>Sun, 26 Jul 2009 12:16:00 +0530</pubDate><guid>https://ravi.ws/posts/2009/07/da-iict-campus-pics/</guid><description>&amp;lt;3 the beautiful green campus :)
pics from flickr</description><content type="html"><![CDATA[<p><a href="https://4.bp.blogspot.com/_xCN_WkxtTX4/Smv--uM4YXI/AAAAAAAAAF8/n4yDqwcsCYM/s1600-h/1177958222_7c52447a96.jpg"><img src="https://4.bp.blogspot.com/_xCN_WkxtTX4/Smv--uM4YXI/AAAAAAAAAF8/n4yDqwcsCYM/s400/1177958222_7c52447a96.jpg" alt=""></a><a href="https://1.bp.blogspot.com/_xCN_WkxtTX4/Smv--fNmrLI/AAAAAAAAAF0/1651HCJS8Q8/s1600-h/1177957124_8b7c914922_o_d.jpg"><img src="https://1.bp.blogspot.com/_xCN_WkxtTX4/Smv--fNmrLI/AAAAAAAAAF0/1651HCJS8Q8/s400/1177957124_8b7c914922_o_d.jpg" alt=""></a><a href="https://2.bp.blogspot.com/_xCN_WkxtTX4/Smv--bxf2TI/AAAAAAAAAFs/UBTZpxbbiYw/s1600-h/1177097987_569c87e05c_o_d.jpg"><img src="https://2.bp.blogspot.com/_xCN_WkxtTX4/Smv--bxf2TI/AAAAAAAAAFs/UBTZpxbbiYw/s400/1177097987_569c87e05c_o_d.jpg" alt=""></a><a href="https://1.bp.blogspot.com/_xCN_WkxtTX4/Smv--HpHJLI/AAAAAAAAAFk/f5_hRGXSzzo/s1600-h/1177095059_b11898d3a5_o_d.jpg"><img src="https://1.bp.blogspot.com/_xCN_WkxtTX4/Smv--HpHJLI/AAAAAAAAAFk/f5_hRGXSzzo/s400/1177095059_b11898d3a5_o_d.jpg" alt=""></a><a href="https://3.bp.blogspot.com/_xCN_WkxtTX4/Smv--4e6WeI/AAAAAAAAAGE/y7fuxgVDI80/s1600-h/1743260358_3c7a10fe2c.jpg"><img src="https://3.bp.blogspot.com/_xCN_WkxtTX4/Smv--4e6WeI/AAAAAAAAAGE/y7fuxgVDI80/s400/1743260358_3c7a10fe2c.jpg" alt=""></a><br>
&lt;3 the beautiful green campus :)</p>
<p>pics from flickr</p>
]]></content></item><item><title>Simple QtS60 App</title><link>https://ravi.ws/posts/2009/04/simple-qts60-app/</link><pubDate>Mon, 13 Apr 2009 08:39:00 +0530</pubDate><guid>https://ravi.ws/posts/2009/04/simple-qts60-app/</guid><description>Finally I managed to build and run Qt app on my Symbian device (Nokia E51)
Now this one is a super simple reverse string program, just trying to get my hands dirty.
check out this snapshot
and it works :)
PS: length of my blog posts indicates twittereffect :P</description><content type="html"><![CDATA[<p>Finally I managed to build and run Qt app on my Symbian device (Nokia E51)</p>
<p>Now this one is a super simple reverse string program, just trying to get my hands dirty.</p>
<p>check out this snapshot</p>
<p><a href="https://2.bp.blogspot.com/_xCN_WkxtTX4/SeKvPa2A81I/AAAAAAAAAFc/6QgeO9lDvAA/s1600-h/Z1l3kb5f.jpg"><img src="https://2.bp.blogspot.com/_xCN_WkxtTX4/SeKvPa2A81I/AAAAAAAAAFc/6QgeO9lDvAA/s400/Z1l3kb5f.jpg" alt=""></a>and it works :)</p>
<p>PS: length of my blog posts indicates twittereffect :P</p>
]]></content></item><item><title>Trying Qt for Symbina S60</title><link>https://ravi.ws/posts/2008/12/trying-qt-for-symbina-s60/</link><pubDate>Tue, 23 Dec 2008 19:01:00 +0530</pubDate><guid>https://ravi.ws/posts/2008/12/trying-qt-for-symbina-s60/</guid><description>Trying to make an app for E51 using qt60 lets see what I can do :)</description><content type="html">&lt;p>Trying to make an app for E51 using qt60 lets see what I can do :)&lt;/p></content></item><item><title>KDE4 on Windows 7 Pre-Beta (Video)</title><link>https://ravi.ws/posts/2008/11/kde4-on-windows-7-pre-beta-video/</link><pubDate>Fri, 21 Nov 2008 19:50:00 +0530</pubDate><guid>https://ravi.ws/posts/2008/11/kde4-on-windows-7-pre-beta-video/</guid><description>Hello everyone!
this is my first screencast&amp;hellip; waiting for comments =)</description><content type="html"><![CDATA[<p>Hello everyone!</p>
<p>this is my first screencast&hellip; waiting for comments =)</p>

<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
  <iframe src="https://www.youtube.com/embed/usVvsOu1m3w" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video"></iframe>
</div>

]]></content></item><item><title>Amarok 2 screenshot peview! :)</title><link>https://ravi.ws/posts/2008/10/amarok-2-screenshot-peview/</link><pubDate>Fri, 17 Oct 2008 09:09:00 +0530</pubDate><guid>https://ravi.ws/posts/2008/10/amarok-2-screenshot-peview/</guid><description>**Update**
Added some Amarok on windows screenshots :)
For those who don&amp;rsquo;t know about Amarok, Amarok 2 is the free cross platform music player, with support for album art, lyrics, Wikipedia and last.fm integration.
Amarok 2 is not out yet as it is going to be released with KDE 4.2 sometime in January 2009 before KDE 4.2 :) in 1 to 3 months, Amarok team released beta 2 few days ago, Amarok 2 is cross platform i.</description><content type="html"><![CDATA[<p>**Update**<br>
Added some Amarok on windows screenshots :)</p>
<p>For those who don&rsquo;t know about Amarok, Amarok 2 is the free cross platform music player, with support for album art, lyrics, Wikipedia and last.fm integration.</p>
<p>Amarok 2 is not out yet as it is going to be released with KDE 4.2 sometime in January 2009 before KDE 4.2 :) in 1 to 3 months, Amarok team released beta 2 few days ago, Amarok 2 is cross platform i.e. available for Mac, Windows &amp; Linux (:D). As my Arch installation was screwed up so I&rsquo;m on Kubuntu, they have a nice repository to try nightly builds of Amarok/KDE4 (project neon), following screenshots are bit old as they are taken from my Arch Installation.</p>
<p>It supports Last.fm integration, Jamendo, Magnatune, Shoutcast Radio service,Mp3tune service etc&hellip;</p>
<p>the best feature I like about Amarok2 is Dynamic Playlist.</p>
<p>for collection and statistics it uses MySQL embedded</p>
<p>Lyrics script fetches lyrics as soon as you play the song</p>
<p><a href="https://2.bp.blogspot.com/_xCN_WkxtTX4/SPgKLSXeZBI/AAAAAAAAADI/dxJIMdHuLXs/s1600-h/amarok4.png"><img src="https://2.bp.blogspot.com/_xCN_WkxtTX4/SPgKLSXeZBI/AAAAAAAAADI/dxJIMdHuLXs/s400/amarok4.png" alt=""></a><br>
<a href="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPgKLBDhwzI/AAAAAAAAAC4/m-wHwsafPMg/s1600-h/amarok2.png"><img src="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPgKLBDhwzI/AAAAAAAAAC4/m-wHwsafPMg/s400/amarok2.png" alt=""></a></p>
<p>Internet Services:</p>
<p><a href="https://2.bp.blogspot.com/_xCN_WkxtTX4/SPgKsOlnm1I/AAAAAAAAAD4/BocRSzXH51g/s1600-h/amarok10.png"><img src="https://2.bp.blogspot.com/_xCN_WkxtTX4/SPgKsOlnm1I/AAAAAAAAAD4/BocRSzXH51g/s400/amarok10.png" alt=""></a>Last.fm</p>
<p><a href="https://2.bp.blogspot.com/_xCN_WkxtTX4/SPgKrvVxxkI/AAAAAAAAADY/oVBEB--ekLA/s1600-h/amarok6.png"><img src="https://2.bp.blogspot.com/_xCN_WkxtTX4/SPgKrvVxxkI/AAAAAAAAADY/oVBEB--ekLA/s400/amarok6.png" alt=""></a><br>
<a href="https://1.bp.blogspot.com/_xCN_WkxtTX4/SPgKLO8u_AI/AAAAAAAAADA/jbYwpVef5RE/s1600-h/amarok3.png"><img src="https://1.bp.blogspot.com/_xCN_WkxtTX4/SPgKLO8u_AI/AAAAAAAAADA/jbYwpVef5RE/s400/amarok3.png" alt=""><br>
</a></p>
<p>Shoutcast!</p>
<p><a href="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPgKr2fOocI/AAAAAAAAADg/DEBTd31MzRc/s1600-h/amarok7.png"><img src="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPgKr2fOocI/AAAAAAAAADg/DEBTd31MzRc/s400/amarok7.png" alt=""></a></p>
<p>Dynamic Playlists:</p>
<p><a href="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPgKsA-VPgI/AAAAAAAAADw/CRcyULNw0B4/s1600-h/amarok9"><img src="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPgKsA-VPgI/AAAAAAAAADw/CRcyULNw0B4/s400/amarok9" alt=""><br>
</a><br>
<a href="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPgKK69yQNI/AAAAAAAAACw/N6iUvfJ64Ns/s1600-h/amarok1"><img src="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPgKK69yQNI/AAAAAAAAACw/N6iUvfJ64Ns/s400/amarok1" alt=""></a></p>
<p>About Amarok ;P</p>
<p><a href="https://1.bp.blogspot.com/_xCN_WkxtTX4/SPgUXmhEC6I/AAAAAAAAAEE/Klesv6BFmLg/s1600-h/about.png"><img src="https://1.bp.blogspot.com/_xCN_WkxtTX4/SPgUXmhEC6I/AAAAAAAAAEE/Klesv6BFmLg/s400/about.png" alt=""></a>Amarok2 on Windows</p>
<p><a href="https://1.bp.blogspot.com/_xCN_WkxtTX4/SPq166eZS6I/AAAAAAAAAEs/ljS8hkX2lp4/s1600-h/amarokwin.PNG"><img src="https://1.bp.blogspot.com/_xCN_WkxtTX4/SPq166eZS6I/AAAAAAAAAEs/ljS8hkX2lp4/s400/amarokwin.PNG" alt=""></a>working pretty good, no problems encountered so far.. taking in mind the beta state of this software, it works very well!</p>
<p><a href="https://1.bp.blogspot.com/_xCN_WkxtTX4/SPq1Ap92fFI/AAAAAAAAAEk/Qi3DPqXLrOA/s1600-h/amarokwin2.PNG"><img src="https://1.bp.blogspot.com/_xCN_WkxtTX4/SPq1Ap92fFI/AAAAAAAAAEk/Qi3DPqXLrOA/s400/amarokwin2.PNG" alt=""></a></p>
<p>Using Oxygen style</p>
<p><a href="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPrFmehuUWI/AAAAAAAAAE0/wK9y1oa5Vpc/s1600-h/amarokwin3.PNG"><img src="https://4.bp.blogspot.com/_xCN_WkxtTX4/SPrFmehuUWI/AAAAAAAAAE0/wK9y1oa5Vpc/s400/amarokwin3.PNG" alt=""></a></p>
<p>surely it lacks many features compared to Amarok 1.4 but Amarok 2 looks promising and there are many unique features that makes Amarok 2 users special ;)</p>
]]></content></item><item><title>My Review of KDE4 (SVN)</title><link>https://ravi.ws/posts/2008/10/my-review-of-kde4-svn/</link><pubDate>Thu, 09 Oct 2008 18:42:00 +0530</pubDate><guid>https://ravi.ws/posts/2008/10/my-review-of-kde4-svn/</guid><description>About Me:
First of all something about myself, I&amp;rsquo;m Ravi Vagadia. I&amp;rsquo;m from Amreli a small city in Gujarat state of India. I&amp;rsquo;m currently doing BS.c. Computer Application (Final Year :P) and I&amp;rsquo;m (was?) a hardcore Windows user, I&amp;rsquo;ve been using Windows from around 10 yrs. I would like to express my views on KDE 4 (Open source Desktop Environment for Linux/Unix based operating systems).
I have been distro swapping since past 4-5 years and finally settled on Arch Linux which is fast, stable and not bloated like some other popular distros.</description><content type="html"><![CDATA[<p>About Me:</p>
<p>First of all something about myself, I&rsquo;m Ravi Vagadia. I&rsquo;m from Amreli a small city in Gujarat state of India. I&rsquo;m currently doing BS.c. Computer Application (Final Year :P) and I&rsquo;m (was?) a hardcore Windows user, I&rsquo;ve been using Windows from around 10 yrs. I would like to express my views on KDE 4 (Open source Desktop Environment for Linux/Unix based operating systems).<br>
I have been distro swapping since past 4-5 years and finally settled on Arch Linux which is fast, stable and not bloated like some other popular distros.</p>
<p>About KDE4:</p>
<p>K Desktop Environment version 4 (KDE4) was released on 26th January 2008 after many delays and was criticized for its bugs and many incomplete features although it was developers preview release and was not targeted towards general users. However, KDE 4.1 (current stable version) which was released in July 2008, addressed most of the issues and is usable for general desktop users.</p>
<p>KDE desktop is revolutionary and its something more than a simple desktop environment, its a suite of desktop applications. KDE is based on QT4 (pronounced as cute4 :D ) GUI toolkit which uses very low memory and is highly efficient in managing memory and is cross platform toolkit developed by Trolltech (now acquired by Nokia).</p>
<p>here is how my Arch + KDE4 desktop looks like: (click on the image to view full image)</p>
<p><a href="https://1.bp.blogspot.com/_xCN_WkxtTX4/SMac2FeQ25I/AAAAAAAAABE/xxL1PVQaH6M/s1600-h/1"><img src="https://1.bp.blogspot.com/_xCN_WkxtTX4/SMac2FeQ25I/AAAAAAAAABE/xxL1PVQaH6M/s400/1" alt=""></a><br>
As you can see, traditional desktop icons are replaced with &ldquo;FolderView&rdquo;, a plasmoid (widget) . FolderView is a container in which you can choose folder so that you can see files from other folders rather than default &ldquo;Desktop&rdquo; folder on Desktop. You can put many different types of widgets like &ldquo;Picture Frame&rdquo;, &ldquo;Now Playing&rdquo; etc, same as Mac OS widgets and Windows Vista sidebar widgets but in KDE every part of desktop is a widget which is handled by Plasma(Desktop Shell).</p>
<p>For those people who doesn&rsquo;t like new FolderView concept they can even set FolderView as Desktop Container to get same functionality as traditional (icons on desktop) feel. :<br>
(click on the image to view full image)</p>
<p><a href="https://3.bp.blogspot.com/_xCN_WkxtTX4/SMai3m0oVhI/AAAAAAAAABM/k3Cs-ot_Ue8/s1600-h/1a"><img src="https://3.bp.blogspot.com/_xCN_WkxtTX4/SMai3m0oVhI/AAAAAAAAABM/k3Cs-ot_Ue8/s400/1a" alt=""></a>you can also set any svg image as wallpaper in KDE4</p>
<p>KDE4 Applications : - No doubt KDE has some of the best apps (Amarok!!) in OSS(Open Source Software) world, although there are many apps which are yet to be ported for KDE4 but I&rsquo;m sure that devs are working on it.</p>
<p>File Management :<br>
File management application is very important part of any Desktop Environment, KDE 4 uses Dolphin as File manager replacing Konqueror. Some of the awesome features of Dolphin are Tabbed browsing, Split Column view etc. One feature I like the most in Dolphin is &ldquo;Filterbar&rdquo; as the name suggests it filters files/folders in current folder with name/extension you type.</p>
<p>I have used &ldquo;Finder&rdquo; on Mac OS 10.5 (Leopard), &ldquo;Nautilus&rdquo; on Ubuntu and I&rsquo;ve been using &ldquo;Windows Explorer&rdquo; from Win95 to Vista, although there is huge improvement in Vista&rsquo;s Explorer yet i prefer &ldquo;Dolphin&rdquo; as my File manager. it&rsquo;s neat, and fits my needs, Mac OS Finder feels good but lacks advance features.<br>
some screenshots of Dolphin in action :-</p>
<p><a href="https://2.bp.blogspot.com/_xCN_WkxtTX4/SMakByGWKVI/AAAAAAAAABU/TUjSegd07hg/s1600-h/8"><img src="https://2.bp.blogspot.com/_xCN_WkxtTX4/SMakByGWKVI/AAAAAAAAABU/TUjSegd07hg/s400/8" alt=""></a><br>
Split view / Tabbed File Browsing:-</p>
<p><a href="https://1.bp.blogspot.com/_xCN_WkxtTX4/SMakUSeHefI/AAAAAAAAABc/P48aoERtjGQ/s1600-h/10"><img src="https://1.bp.blogspot.com/_xCN_WkxtTX4/SMakUSeHefI/AAAAAAAAABc/P48aoERtjGQ/s400/10" alt=""></a></p>
<p>KDE PIM (Personal Information Management) :-</p>
<p>KDE PIM is the collection of Applications like Email Client(Kmail), Contact Management (Kontact), Calendar, RSS Reader(Akregator) etc</p>
<p>Here is the screenshot :-<a href="https://4.bp.blogspot.com/_xCN_WkxtTX4/SMan0wyUXhI/AAAAAAAAACE/fS1xjaQCJZ0/s1600-h/14"><img src="https://4.bp.blogspot.com/_xCN_WkxtTX4/SMan0wyUXhI/AAAAAAAAACE/fS1xjaQCJZ0/s400/14" alt=""></a> System Monitor:-</p>
<p>Similar as Windows Task Manager, provides information of your system resources.<a href="https://2.bp.blogspot.com/_xCN_WkxtTX4/SMan0PAph8I/AAAAAAAAABk/zN3vST72fOc/s1600-h/4"><img src="https://2.bp.blogspot.com/_xCN_WkxtTX4/SMan0PAph8I/AAAAAAAAABk/zN3vST72fOc/s400/4" alt=""></a>System Settings:-</p>
<p>Similar to Control Panel in Windows, from here you can change (almost) any settings related to KDE/System.<br>
<a href="https://2.bp.blogspot.com/_xCN_WkxtTX4/SMan0VHoIdI/AAAAAAAAABs/wAVkcF7KZhM/s1600-h/5"><img src="https://2.bp.blogspot.com/_xCN_WkxtTX4/SMan0VHoIdI/AAAAAAAAABs/wAVkcF7KZhM/s400/5" alt=""></a><a href="https://3.bp.blogspot.com/_xCN_WkxtTX4/SMan0ossrRI/AAAAAAAAAB0/Dvqo7s35wxg/s1600-h/6"><img src="https://3.bp.blogspot.com/_xCN_WkxtTX4/SMan0ossrRI/AAAAAAAAAB0/Dvqo7s35wxg/s400/6" alt=""></a></p>
<p>Final Words:-<br>
I&rsquo;m using KDE (svn trunk ) last built on 9/9/08. It has many KDE4.2 features like Panel Auto-hiding, resizing panel, Plasmoids as Desktop Containers etc&hellip; its running quite stable I&rsquo;m yet to encounter any serious error/bug. KDE developers are doing great work!!! a big thx for making a wonderful Desktop Environment.</p>
<p>This is my first review!! so plz comment :)</p>
<p><a href="https://1.bp.blogspot.com/_xCN_WkxtTX4/SMan01ex8MI/AAAAAAAAAB8/CPrSqfGxd3E/s1600-h/11"><img src="https://1.bp.blogspot.com/_xCN_WkxtTX4/SMan01ex8MI/AAAAAAAAAB8/CPrSqfGxd3E/s400/11" alt=""></a></p>
<p>P.S:- Video Review Comming soon!!!! :)</p>
]]></content></item><item><title>AmaroK + Scripts = Your Ultimate Music Solution</title><link>https://ravi.ws/posts/2008/03/amarok-scripts-your-ultimate-music-solution/</link><pubDate>Sat, 22 Mar 2008 21:18:00 +0530</pubDate><guid>https://ravi.ws/posts/2008/03/amarok-scripts-your-ultimate-music-solution/</guid><description>Amarok is a popular free audio player based on the K Desktop Environment. Right now, it&amp;rsquo;s available only under Linux and other varieties of Unix, although the Windows version is to be released soon. There has been much talk already about how it is the best music management software. However, not many amarok users are aware of the powerful scripts that can be used to extend its usability further.
Amarok includes many useful features by default.</description><content type="html"><![CDATA[<p><a href="https://amarok.kde.org/">Amarok</a> is a popular free audio player based on the K Desktop Environment. Right now, it&rsquo;s available only under Linux and other varieties of Unix, although the Windows version is to be released soon. There has been much talk already about how it is the <a href="https://stuff.techwhack.com/2853-amarok">best music management software</a>. However, not many amarok users are aware of the powerful scripts that can be used to extend its usability further.</p>
<p>Amarok includes many useful features by default. Supported scripts and plugins, providing a huge new range of functionality, complete the package to bring you your ultimate music solution.</p>
<p>I have listed only some of the large number of scripts, ones I found especially useful for the average music lover. The whole list can be seen at the official <a href="https://amarok.kde.org/wiki/Scripts">Amarok Scripts Page</a>.</p>
<p>Instant Messenger Support</p>
<p><a href="https://www.flickr.com/photos/23776859@N05/2349483860/" title="Amarok Pidgin by sneezymelon, on Flickr"><img src="https://farm3.static.flickr.com/2049/2349483860_1b872fdc21_m.jpg" alt="Amarok Pidgin"></a>Displaying your song information to your friends is the easiest thing to be done through amarok. Pidgin users can install the <a href="https://kde-apps.org/content/show.php/AmarokPidgin?content=48025">AmarokPidgin</a> script which includes the broadcast of a variety of information including the Song, Artist, Album, Track Duration and the Elapsed Track Time. <a href="https://kde-apps.org/content/show.php?content=39030">AmaroKopete</a> allows Kopete users to do the same and more. Amsn-Amarok integration is also possible through <a href="https://kde-apps.org/content/show.php?content=65815">amsn-now-listen</a>. Other supported messaging clients include <a href="https://project-lsp.sourceforge.net/scripts.html">XChat</a>, <a href="https://musicmood.broadbox.de/">Skype</a>, <a href="https://kde-apps.org/content/show.php?content=64777">Gaim and Gajim</a>.</p>
<p>Network Accessibility</p>
<p>Amarok supports a number of scripts that provide you with the ability to manage your music without actually sitting at your Desktop. The best script in this section is definitely <a href="https://kde-apps.org/content/show.php?content=33258">Blueamarok</a>. A Sony Ericsson mobile phone and a bluetooth dongle is all you need to control the functionality of your music player. Blueamarok allows you to control the basic functions of amarok, including play, pause, stop, previous/next song and volume control, through a bluetooth connection. Another script called the <a href="https://kde-apps.org/content/show.php/Amarok+Shouter?content=22170">Amarok Shouter</a> allows you to stream your songs to your friends computers through the internet. You can also manage the music playing on your computer from anywhere in the world using <a href="https://kde-apps.org/content/show.php?content=23630">XUL Remote</a>. All you need is a simple script and Mozilla Firefox web browser. Moreover, the connection is completely secure and requires a login/password authentication</p>
<p>Lyrics</p>
<p><a href="https://www.flickr.com/photos/23776859@N05/2349965076/" title="Amarok Lyrics by sneezymelon, on Flickr"><img src="https://farm3.static.flickr.com/2303/2349965076_031b7ce4ee_m.jpg" alt="Amarok Lyrics"></a>A large number of lyrics scripts ensure that you have your favorite song&rsquo;s lyrics right in your music player. The more popular ones are Wiki-Lyrics, Lyrc and GoogLyrics. I have personally found GoogLyrics to be the most effective.</p>
<p>Other Scripts</p>
<p>The list of useful scripts and plugins can go on and on. Here are a few more that have helped me pretty much-</p>
<ol>
<li>
<p><a href="https://www.kde-apps.org/content/show.php/AmarokTube?content=58628">AmarokTube</a>- Search for YouTube videos of songs directly from your Amarok playlist with a single click. The videos are, by default, opened in Firefox.</p>
</li>
<li>
<p><a href="https://kde-apps.org/content/show.php?content=31846">e-mail</a>- Mail your songs to your kmail contacts.</p>
</li>
<li>
<p><a href="https://www.kde-apps.org/content/show.php/Mp3Fixer?content=31539">MP3 Fixer</a>- This small script fixes the various errors in an mp3 file.</p>
</li>
<li>
<p><a href="https://kde-apps.org/content/show.php?content=27512">transKode</a>- transKode lets you transcode audio files from and to different formats. This is one of the most useful scripts for Amarok and support includes flac, ac3, mp4, mp3, ogg, spx and wav.</p>
</li>
<li>
<p><a href="https://www.kde-apps.org/content/show.php?content=22251">nightingale</a>- Want to listen to music while going to sleep? This &lsquo;xmms goodnight plugin&rsquo; parallel lets you do the same by shutting down the PC after the last song of the playlist. Moreover, it allows you to replace the shutdown function with anything else you want by simply editing the script.</p>
</li>
</ol>
]]></content></item><item><title>Get Double Speed BSNL Broadband Simple Trick High Speed Broadband</title><link>https://ravi.ws/posts/2008/03/get-double-speed-bsnl-broadband-simple-trick-high-speed-broadband/</link><pubDate>Fri, 21 Mar 2008 14:10:00 +0530</pubDate><guid>https://ravi.ws/posts/2008/03/get-double-speed-bsnl-broadband-simple-trick-high-speed-broadband/</guid><description>UPDATE 2:
Step 1: Make sure that your modem is in Bridge Mode.
Step 2: Make a new Virtual Machine and install Windows XP on it.
Step 3 : Create a new text file and type following command:
rasdial &amp;ldquo;Broadband Connection&amp;rdquo; username password
username = ur broadband usernamepassword = ur broadband password
Broadband Connection = Name of the Connection you use to connect, you can find it in Control Panel -&amp;gt; Network Connections</description><content type="html"><![CDATA[<p><a href="https://3.bp.blogspot.com/_xCN_WkxtTX4/R58revE7haI/AAAAAAAAAAU/X8zMrkZh5vg/s1600-h/untitled.JPG"><img src="https://3.bp.blogspot.com/_xCN_WkxtTX4/R58revE7haI/AAAAAAAAAAU/X8zMrkZh5vg/s320/untitled.JPG" alt=""></a><br>
UPDATE 2:</p>
<p>Step 1: Make sure that your modem is in Bridge Mode.</p>
<p>Step 2: Make a new Virtual Machine and install Windows XP on it.</p>
<p>Step 3 : Create a new text file and type following command:</p>
<p>rasdial &ldquo;Broadband Connection&rdquo; username password</p>
<p>username = ur broadband usernamepassword = ur broadband password<br>
Broadband Connection = Name of the Connection you use to connect, you can find it in Control Panel -&gt; Network Connections</p>
<p>save it as &ldquo;connect.bat&rdquo;</p>
<p>double click on that file to check if it connects to the internet or not.</p>
<p>Step 5:<br>
Copy that file to XP running in Virtual Machine.</p>
<p>Step 6:</p>
<p>Click Start -&gt; Programs -&gt; Accessories -&gt; System -&gt; Task Scheduler</p>
<p>select connect.bat as application to run and then set the time to run that app (same time in both systems*)</p>
<p>Time should be 2 minutes from current time so you dont have to wait too much&hellip;</p>
<p>*Very Important if connect.bat doesnt run at same time then only 1 XP would be connected to internet.</p>
<p>Complete Step 6 on both host and virtual XP</p>
<p>wait for 2 mins&hellip;.</p>
<p>Step 7: If all works, enjoy 2x speed!!!</p>
<p>it will give u double speed (depends on ur line quality)<br>
but i get 32 KBps on both XP as I have 256 UL plan.</p>
<p>Thats all :) sry for taking too much time to post this simple trick :P<br>
UPDATE: sorry ppl as i was not able to update blog, my PSU stopped working and i didnt care to repair coz i have exam till 27th<br>
So I will update this place till 30th this month :)</p>
<p>get double speed on your bsnl broadband, i will post trick in few dayz check out this site for more info :D although u must have got idea by this screenshot, its very simple trick u need to have ur modem in bridge mode and have to connect on both machine (real &amp; virtual) at same time, you have to try it few time before it connects, i&rsquo;ll put detailed guide after few dayz. ;)</p>
]]></content></item><item><title>Prevent Autorun pendrive/ flashdrive viruses</title><link>https://ravi.ws/posts/2008/03/prevent-autorun-pendrive/-flashdrive-viruses/</link><pubDate>Fri, 21 Mar 2008 13:46:00 +0530</pubDate><guid>https://ravi.ws/posts/2008/03/prevent-autorun-pendrive/-flashdrive-viruses/</guid><description>The usage of a pen drive or a flash drive become a very common thing. Also with the cost of memory chips going down (now you can get a 4GB memory stick for Rs.800) have boosted its usage and also an USB flash drive is compact and very easy to carry around. With the increase in the usage of pen drives, viruses spreading through these memory sticks has increased exponentially.</description><content type="html"><![CDATA[<p>The usage of a pen drive or a flash drive become a very common thing. Also with the cost of memory chips going down (now you can get a 4GB memory stick for Rs.800) have boosted its usage and also an USB flash drive is compact and very easy to carry around. With the increase in the usage of pen drives, viruses spreading through these memory sticks has increased exponentially.<br>
As such you can&rsquo;t completely prevent the viruses but to minimize these viruses and worms spreading to the PCs we can take some preventive measures.<br>
Turn off the Auto Run:-<br>
Pen drives uses the Autorun feature to load certain files when it is plugged into a USB port. Now, the worms and viruses uses this autorun feature to spread itself from the thumb drives to the computers. You can avoid majority of these worms spreading by turning off the autorun feature. To do is very simple just follow these steps,</p>
<p>If you are using Win XP Professional edition:-<br>
Click Start button<br>
Select Run.<br>
Now type gpedit.msc in Run command .<br>
You will notice the Group Policy Window opening.<br>
Double click Administrative Templates.<br>
Select System in the right pane of the window.<br>
Now,select(double click)Turn Off AutoPlay .<br>
Turn Off Autoplay properties window opens.<br>
Now.select All Drives from the combo box in that and select Enabled radio button and press OK.</p>
<p><a href="https://2.bp.blogspot.com/_ZfFjwBO5de4/R8qae9SCDvI/AAAAAAAAAEI/JkjSxOMELRU/s1600-h/turnoff_autorun.JPG"><img src="https://2.bp.blogspot.com/_ZfFjwBO5de4/R8qae9SCDvI/AAAAAAAAAEI/JkjSxOMELRU/s320/turnoff_autorun.JPG" alt=""></a></p>
<p>If you are using Win XP Home edition,try these:-<br>
Select Run and type regedit to open the registry editor.<br>
Then navigate as follows</p>
<p>HKEY_CURRENT_USER<br>
--&gt; Software<br>
--&gt; Microsoft<br>
--&gt; Windows<br>
--&gt; CurrentVersion<br>
--&gt; Policies<br>
--&gt; Explorer.</p>
<p>Now,select NODRIVETYPEAUTORUN and select Modify.<br>
Set the Hexadecimal value to 95 to turn off autoplay in removable drives and use b5 to turn off autorun feature in CD-ROMs and pen drives.<br>
Thus turning off autorun feature just stops many malwares from spreading into a PC from a thumb drive.<br>
Known malwares:<br>
Now you can now delete many worms manually some known viruses are Autorun.inf,iexplore.vbs,ifo.exe,raven.exe,rvhost.exe and NewFolder.exe(a worm looks like folder,but is actually an exe file,a worm).Better to use a nice antivirus and scan for viruses in the plugged in drive before opening it as these files will be hidden or access protected.But however you can view those files in command prompt by first entering into your removable drive(eg: J:)then type the following- attrib -h -r -s -a *.*.After typing that you can view those files.But it is better to use a nice Anti-virus software.<br>
You can also many softwares available(like <a href="https://www.truecrypt.org/downloads.php">TrueCrypt</a>) to encrypt your pen drive .In such a case a window Pops Up every time when you plug in the drive.This would also help preventing the viruses from loading automatically into the pen drive. Using such softwares will also prevent unauthorized usage of data your drive, especially when your having sensitive information in your drive.</p>
<p>Use latest anti-virus software (NOD32 is best dealing with auto run virus)</p>
]]></content></item><item><title>Get Double Speed on your BSNL DATAONE Broadband</title><link>https://ravi.ws/posts/2008/01/get-double-speed-on-your-bsnl-dataone-broadband/</link><pubDate>Tue, 29 Jan 2008 10:36:00 +0530</pubDate><guid>https://ravi.ws/posts/2008/01/get-double-speed-on-your-bsnl-dataone-broadband/</guid><description>UPDATE: sorry ppl as i was not able to update blog, my PSU stopped working and i didnt care to repair coz i have exam till 27th
So I will update this place till 30th this month :)
get double speed on your bsnl broadband, i will post trick in few dayz check out this site for more info :D although u must have got idea by this screenshot, its very simple trick u need to have ur modem in bridge mode and have to connect on both machine (real &amp;amp; virtual) at same time, you have to try it few time before it connects, i&amp;rsquo;ll put detailed guide after few dayz.</description><content type="html"><![CDATA[<p><a href="https://3.bp.blogspot.com/_xCN_WkxtTX4/R58revE7haI/AAAAAAAAAAU/X8zMrkZh5vg/s1600-h/untitled.JPG"><img src="https://3.bp.blogspot.com/_xCN_WkxtTX4/R58revE7haI/AAAAAAAAAAU/X8zMrkZh5vg/s320/untitled.JPG" alt=""></a><br>
UPDATE: sorry ppl as i was not able to update blog, my PSU stopped working and i didnt care to repair coz i have exam till 27th<br>
So I will update this place till 30th this month :)</p>
<p>get double speed on your bsnl broadband, i will post trick in few dayz check out this site for more info :D although u must have got idea by this screenshot, its very simple trick u need to have ur modem in bridge mode and have to connect on both machine (real &amp; virtual) at same time, you have to try it few time before it connects, i&rsquo;ll put detailed guide after few dayz. ;)</p>
]]></content></item></channel></rss>