17 Apr

The Top 10 Must Haves For Your Shiny New WordPress Website

So you want a website...

Okay so I have been setting up a few WordPress sites for my friends and partners at large. WordPress has come a long way and is my goto answer for many solutions. Years ago, I would have considered Joomla, Drupal or thought about searching for another CMS but today – WordPress is enough. I say – let’s find the right theme and the right plugins to make it do what you need and if it still doesn’t do what you want, let’s find a developer who will build if for us – in WORDPRESS.

Installing a WordPress vanilla site is quite simple but with many hosting providers now providing 1-click installers like Softaculous, that insanely simple install is even simpler.

But after that, you will have this plain site with nothing installed and a base WordPress theme that is quite configurable and you can get started creating content right away. But before you proceed, you’ll need few things to keep your site safe, running, trackable and restorable if something goes wrong. So here’s my list of the top must haves for your WordPress site.

Themes

You’ll need a theme that suits your needs on the website and finding one may not be that easy. Most free themes are great and premium themes usually have plugins and functionality built into them that makes some of the plugins listed below redundant. You’ll probably want to try a few out before you get it right – That’s OK. It’s a lot of work – and that’s OK too. Here’s a few places you can go to find some good themes:

Finding and installing a theme is only half the battle. Then you have to go get some images and graphics for your website. If you have photos of your own or want to go click them yourself / have a photographer friend – great. If not, there are tons of stock photo websites out there that publish some amazing stock photos that you can use on your website. Based on what you’re building, you’ll have to find the right images for your site’s branding and identity. A logo and a favicon may also help along the way. You may opt to have a static frontpage and a separate blog page. You may also create other pages and the one you absolutely must have is a Contact Us page with a simple form where users can send you messages. Jetpack allows you to do this if your theme doesn’t have a similar function.

Once you’re done configuring your theme, then come the plugins. Here are some absolute must haves if your theme doesn’t already fulfill that function. And note, don’t install too many plugins and never multiple security or SEO plugins at the same time. People also recommend some performance / cache plugins but I’ve burnt my fingers in the past with them and thus don’t use or recommend them.

Plugins

  • Security Plugins (Careful – not setting these up correctly can lock you out of your site)
  • Backup Plugins
    • UpdraftPlus – Backup/Restore: Automated backups & restorations that can be uploaded to remote storage locations like Google Drive, Dropbox, AWS S3 buckets etc.
  • Feature Enhancement Plugins
    • Jetpack: Jetpack is my favorite one stop shop for many things WordPress, namely:
      • WordPress.com SSO
      • Fully Customizable Contact Us Forms
      • Site Stats & Analytics
      • Automatic Sharing on Facebook etc.
      • Related Posts
      • Downtime Alerting
      • High Speed CDN for Images
      • Carousels, Slideshows & Galleries (this is usually part of most themes though)
      • Simple Media Embeds
      • Twitter / Facebook page embedding on your sidebar
      • Email Subscriptions
      • Comment Login using G+, FB, Twitter
    • Akismet Anti-Spam
  • Tracking Plugins
  • SEO Plugins
  • Code Plugins / Formatting Plugins

Once you’ve got these plugins installed, you’ll need to spend a few hours configuring them. Some of the plugins require subscription to additional 3rd party services like getting an Akismet API Key, signing up for a Google Analytics account, signing up for a WordPress.com account.

After doing all that, you’ll need to do a few more things to get some visibility to your website:

  • Register your website with Google, Bing etc.
  • Setup Google Search Console (submit your XML sitemap while your here)
  • Setup Bing Webmaster Tools (submit your XML sitemap while your here)
  • Setup SSL for your website (this is a complicated topic with many easy or difficult ways to achieve it so i’ll leave it to another blog post. Psst: my host provides free auto-SSL – read below)
  • Register your business on Google My Business
  • Register your business on Bing Places
  • Setup your Facebook Page, Google+ Page, Twitter, Instagram, Pinterest etc. accounts – do this even if you are not going to post or manage these now or later. You don’t want a disgruntled customer or employee or ex-friend to claim these handles that have your business / blog name and start posting  stuff on it that you don’t like.
  • Test your site for errors, crawl-ability from bots, performance etc.. There are many tools to do this and most of them are free.
  • If you care about listening to the internet and what people are saying about your business, you can try Mention.com‘s free plan.

Domains

If you are in search for a domain name, I normally recommend Godaddy but since Google has entered the the domain names space, I have been slowly moving my domains over to them for one main reason – Privacy. Google Domains include privacy in the domain price which is a steady $12 for most TLDs. Privacy is usually an additional fee with Godaddy or any anyone else plus there isn’t a flat low price for domains with Godaddy. You can pay retail pricing but there’s almost always a coupon or deal that can get you a domain cheaper, sometimes cheaper than Google.

Hosting

Also, this article is about self-hosted WordPress (WordPress.org) and not WordPress.com websites in which I don’t have much experience. Depending on your hosting needs, you’ll have a ton of options in that as well. I’ve hosted over a few hosting companies and moved over time to my current one. And moving hosts is not easy but I’ve had to. I’ve been hosting with MDD Hosting for quite a while now. Check out their plans if it interests you – MDDHosting. Great service & support at decent prices and my sites load fast. And now they even provide free auto-SSL which means all my sites hosted on their servers automatically serve content over HTTPs – no configuration needed. How cool is that!

So as you see, buying a domain and setting up a website is just the tip of the iceberg in running a successful website for your personal blog or small business. There’s a lot of unseen effort that goes into configuring it correctly and making sure that search engines and users can find your content and also you need to make sure that it loads quickly without errors in devices of all sizes, keeps running 24×7 and doesn’t get hacked while you are enjoying a vacation on a summer beach.

If you think that the cost of running a website is simply the sum total of the price of a domain and your hosting costs, you are going to find out that your website is not really going to be very successful unless you sweat it out and make it work. If you are not going to have the kind of time to do this yourself, I recommend you to hire someone to do it for you.

02 Oct

Accessing the device camera using HTML5 GetUserMedia

Download complete source file here.

Primarily here’s the code that does that:

navigator.mediaDevices.getUserMedia

which takes a “contstraints” object as an argument which at the minimum looks like this:

var constraints = { audio: false, video: true }

videoElem is a <video> element on the page.

For simplicity reasons, I haven’t written this code to fail gracefully or support older browsers which may support a slightly different syntax. This is something to consider when you may be using this for something serious.

 

27 Apr

Enabling Cross Domain Ajax Requests using CORS

Okay, I usually harped about the one main limitation of Ajax Requests – Same Origin Policy. This policy exists to restrict XSS (Cross Site Scripting) attacks and vulnerabilities. But that is also a big party pooper when you want to legally make an Ajax call from your site to another domain, directly from the browser in order to load content from the other domain. There are exceptions to this policy that allow for embedding of certain resources like images, scripts, stylesheets, media and some other types of content. Thus CDNs for loading scripts like jQuery and stylesheets from Bootstrap are quite common and actually recommended too. But that’s not Ajax. Ajax begins when an XMLHttpRequest object is created. And that object cannot normally be used to make a request to any other domain other than the one it is currently on.

Same Origin Policy

For example, if a script on a page on the domain http://DomainA.com wants make an Ajax request, it is limited to make the request to any resource only on the http://DomainA.com domain by the Same Origin Policy.  If the script tries to make a request to http://DomainB.com, it will be actively blocked by the browser. The policy applies to Port numbers, sub-domains and protocols too. This is a good thing to protect users from visiting untrusted sites and having those sites steal the users sessions from trusted websites. But to legally make a script load content from another domain, say like your recent tweets, your facebook posts or your flickr feed or weather data or stock info from an online API or Web Service, this policy restricts you to adopting one of the following techniques to achieve your goal:

  • Use a Server Side Proxy
  • Use JSONP (if the remote API supports it)

I will leave the JSONP technique for another day and get to my subject now. The W3C made CORS (Cross Origin Resource Sharing) a Recommendation in January 2014, a document that was in the works for some time now.

The CORS Recommendation allows a way around for web servers to allow for cross domain script requests. Servers can now do this by adding new headers in the HTTP response to a cross domain request, namely:

By sending this new header, the server can let the browser making the request know that it can allow the request and response to be used by the script, and hence not block the request. You can read more details about the CORS spec on W3.org and MDN. This is great for API developers who want to make a service available for consumption from simple Ajax requests from any domain.

I will jump to my demo now. https://sreenath.net/demos/CORSDemo.htm

To demonstrate this, I use the OpenWeatherMap’s REST API to provide me the cross domain content. And I use a standard XMLHttpRequest object pointed to the Open Weather Map API’s URL for retrieving the current weather data for the requested city.

For example, if I want to get the current weather conditions of New York, NY, my XHR’s URL will look like this:

and my request headers (on chrome) look like this:

And the response headers from the server look like this:

Yep, a 200 OK response alright. And since I didn’t specify a format, I would receive the default JSON format from the server containing the current weather conditions.

Observe the last three response headers. They are all from the CORS spec and there are more. To go deeper into this topic, Monsur Hossain has published a book “CORS In Action“, available Sept 2014 in print or now through MEAP. You can also visit Enable CORS website to get updated information and use this link to know about browser support for this new spec.

With ASP.NET Web API where it currently is, this development greatly enhances the idea of Service Oriented Applications and also emphasizes the role of JavaScript in the world of programming today. Get cracking!

Questions? Comment below ↓

03 Apr

JavaScript Animations and HTML5 Vibration APIs

HTML5 Logo

First checkout this demo link on your cell phone: https://sreenath.net/demos/animation.htm

On a normal desktop browser with no Vibration hardware, you will see a ball simply bouncing on a black background. On a device with Vibration hardware and a supporting browser, you will feel the ball bounce off the sides of the window with a short vibration.

That’s new in HTML5 and JavaScript. Here how its done:

It’s that simple. 100 here is the duration to vibrate. You can also pass in an array of milliseconds, duration of vibration followed by duration of silence and so on as follows:

Now about timing the vibrations with the animation:

I use a JSON object as a Singleton for storing data about the window height, width, position of the ball, direction etc.

I have the following event handlers attached to the window load event and the window resize event: (Note that this code wont gracefully degrade in IE8 and older browsers)

My startAnimation function:

It is important that the CSS for the box1 object to move is to set its position as absolute. Otherwise the best code won’t work on it. So here’s the CSS:

Finally my Animate function.

Its important to update the direction of the movement of the box once it hits the edge and to check the direction each time before moving the box to determine which way it should be headed – to decide whether to increment or decrement the left/top property.

And my setDimensions function, required for initial loading and handling browser resize events:

Known Issues with the demo:

  1. Doesn’t handle resize due to re-orientation event of your device.
  2. As of publishing time,  Safari doesn’t support the Vibration API. That leaves out all iOS devices from enjoying this demo.
03 Apr

Applying for an ITIN for a dependent on H4 for Tax Returns

Taxes due April 15

There are few things harder in life than dealing with a Governmental organization. And I was fortunate enough to have to deal with the IRS recently regarding my Tax Returns for the year 2013. Since I got married last year and have my wife here in the US on an H4 Dependent Visa status, I get to file my returns as Married Filing Jointly. I was aware that I will need to apply for an ITIN for her to be able to file my returns successfully. I also knew that it can’t be done preemptively since I need to do my returns and only then send that along with a filled in W-7 form which is the application for an ITIN. That wasn’t any problem to figure out. But my woes only began when I realized that TurboTax Online cannot do it for me. In fact, TurboTax gave up after filling in my 1040. My faithful friend who makes life so easy for millions in the country had given up on my after serving me so well the last two years. Okay so here’s the process for applying for an ITIN and the various options available for anyone wanting to do the same:

  1. Use TurboTax to help you fill your Federal and State Tax Return and generate the forms.
  2. You will not be able to file online so don’t bother paying for any additional services of TurboTax for e-Filing (i.e., if you can avoid it)
  3. Whenever TurboTax asks you for your spouse’s SSN, leave it empty. You will be warned about Errors but that’s OK since you are not going to e-File any way.
  4. Once your forms are completed, TurboTax will tell you that you will have to file by mail because of the errors above. Save all the forms to your computer or print them out if you have a printer available.

Now that you have your Federal Returns (Form 1040, Form 1040EZ) filled in an printed, you will have to mail that to the IRS ITIN Operations Division ( along with other documents. Note that this is not the address TurboTax and the return form tells you to mail the forms to. Amongst the documents you need to send to the IRS, the ORIGINAL Passport (of the H4 dependent) is the one standalone document that is sufficient for most H4 applicants. Other documents are listed here: http://www.irs.gov/Individuals/Revised-Application-Standards-for-ITINs Since I don’t feel comfortable mailing an original passport away, I wanted to find out if there was another way. And in my case, since we were planning to travel around soon, not having a passport in hand was a risk I could not take. So I found I had three options:

  1. File the return and apply for an ITIN at a Local IRS Office. Find one close to you here: http://apps.irs.gov/app/officeLocator/index.jsp
  2. File returns and apply for an ITIN through an acceptance agent. Find them by state here: http://www.irs.gov/Individuals/Acceptance-Agent-Program
  3. Mail a Copy of the Passport (H4 Applicant), endorsed by the issuing authority – The Embassy of the country that issued it – to the IRS ITIN Operations division, along with your returns.

Knowing me, I had to research all three options. Option 1 seemed the safest bet since there was a local IRS office only 20 minutes from my home. IRS offices work 8-30 to 4-30 on weekdays only so I went there one morning before work. I was there at 8-45 and the lady at the reception told me that a limited number of tokens are issued daily for the ITIN processing at that center and that they were out already. She told us that the line forms outside the office as early as 8AM. So we wanted to give it another shot, try come early and get in line. So we arrived another day at 7-30AM and found that we were about the 10th in line. So I figured we would get it done that day. To all my dismay, I later found out that the number of tokens they issue per day is a paltry 8! So the couple in front of me frowned and left and we followed suit, angry that they only process 8 ITIN applications a day. So I gave up Option 1 knowing that I am wasting time and effort on this with no guarantees of getting it done on any day. So I looked up Option 2: File through an acceptance agent. There are a bunch of acceptance agents near where I lived, including some H&R Block offices as well. So I called up a few – some said that their Acceptance Agent was no longer certified to process ITINs, some claimed an exorbitant fee upwards of $200 and few didn’t know the process. Before I settled to shell out a fourth of my returns on fees, I wanted to find out about the feasibility of Option 3: Send an endorsed copy of the passport to IRS by mail. Endorsing has to be done by the issuing authority of the document, which in the case of a passport is the embassy of the country that issued it. Luckily for me, the Embassy of India is in Washington DC and is quite approachable. So I looked up their website for the procedure for endorsing a passport and found that it was about a $13 affair plus the metro fare to and from DC. I asked my wife to visit the embassy and get her passport copy endorsed and she got that done in a day.  So that was easy and I sent across my Federal Returns, Form W-7, Endorsed copy of Passport of ITIN Applicant (with Visa and I-94 pages) to the ITIN Operations Center of IRS. More Links:

  • About ITIN: http://www.irs.gov/Individuals/Individual-Taxpayer-Identification-Number-(ITIN)
  • General ITIN Information: http://www.irs.gov/Individuals/General-ITIN-Information
  • Revised Application Standards 2013: http://www.irs.gov/Individuals/Revised-Application-Standards-for-ITINs
  • Additional ITIN Information: http://www.irs.gov/Individuals/Additional-ITIN-Information
  • IRS Local Office Locator: http://apps.irs.gov/app/officeLocator/index.jsp
  • IRS Acceptance Agents: http://www.irs.gov/Individuals/Acceptance-Agent-Program

Questions? Comment below.

02 Dec

HTML5 Drag, Drop and FileReader in JavaScript

HTML5 Logo

I love JavaScript. And combine that with the awesome power of HTML5 and I have an ice cream with generous serving of hot chocolate sauce on top.

Till HTML5 came about, there was no way in which JavaScript could receive a Drag & Drop event from the File System. Sure you could drag and drop elements inside browser window but not files from outside the window.

Plus JavaScript had no way in which it could process a file selected in an input[type=file] control on the client side. So if you wanted to upload a set of images to an online gallery you could only preview the image or check its properties after the upload completed. And it would be such a pain to realize that you selected the wrong set of images to start with. So re-upload!

In the new HTML5 supported browsers, one can write methods to process a file using the new File API. Although not strictly part of HTML5, it is currently supported only in Firefox 4+ and Chrome 7+ and other browsers are quickly falling in line.

So JavaScript’s events “dragover”, “dragleave” and “drop” can now respond to files dragged and dropped from the file system. And the “FileReader” object can read text files, file properties like size, name, path etc., read an image file and load a preview – all on the client side using plain JavaScript.

Check out the sample demo here.

So here is how to get started:

The addEvent method is my handy library function to attach Event Listeners to DOM elements in a cross browser fashion. The event object passed to the event listener contains a property “dataTransfer” which contains the reference to the selected/dropped files.

TIP: Remember, during a drag and drop, it is the element that receives the drop that will contain the dropped files. It need not be an input[type=file] control.

To give a feedback to the user that the page is responding to the drag and drop, I have incorporated the following technique:

Now to process the uploaded files. JavaScript has got this new object called the FileReader which is what I am using here:

We create a FileReader object, bind an onload event handler to the reader which will process the read file and perform the necessary operations to update the UI (as required) and then we call the reader.ReadAsText() method to read the text data of a file. We can even use the reader.ReadAsDataUrl() method to read binary image data as an encoded Data URI.

And that’s it. We have the power to process files client side now!

01 Dec

US and Me

Okay so I got this offer to join a company in the US as a SharePoint Trainer for a long term basis. As this was a great opportunity, I took it. Being the typical “namma bengalooru huduga”, never been out of Bangalore (atleast not longer than a month), never stayed in a hostel, never cooked a proper meal for myself, it was a big decision to make.

So here is my experience first time in the US.

Pre-Visa Interivew (H1B)

  • My company sent me the Visa related documents including a letter from the company stating why they need me and other documents as submitted to the USCIS.
  • I visited https://www.vfs-usa.co.in/USIndia/Index.html and followed the instructions to fill and submit the DS-160 form.
  • The documents my company sent me contained one document called the I-797B Notice Of Action. I was asked to take my passport and this document to the HSBC Bank in Bangalore (Kasturba Road) to pay the Visa Interview Fee and collect the challans.
  • Using the I-797 and the visa fee receipt, I booked my visa interview date in the US Embassy in Chennai. At that time there were no visa interview slots so I had to wait a few days for interview slots to clear up. I don’t know if it is allowed for a person to take an appointment in a US Embassy other than the one mentioned in your consular district.
Visa Interview
  • I got an early morning slot for the interview. I wanted to drive down to Chennai in my car with my mom. So I left Bangalore the previous morning. Chennai was a pleasant drive. About 6 hours with stops.
  • We stayed in a relative’s place and went for the interview early in the morning.
  • The interview was a smooth process.
  • I am not the guy who’ll say hold a 100 people’s feet to get to the US but it is extremely demoralizing to fail in anything, especially a visa interview when I had driven all the way down there!
  • So here are MY tips for the interview:
    1.  Organise your documents. Buy a couple of good high quality folders. One for all the junk documents that your company will provide you. You may never be asked to show these documents but you are required to have them. In the other folder, keep the important documents like your Passport, Degree Certificates, Resume, Offer Letter, I-797, Letter from employer etc.
    2. It is a good idea to know exactly where each document is in your folders. The biggest bungle people do in front of the interviewer is to scramble through a single folder looking for that one important sheet.
    3. Dress formal. Dress to impress. But don’t over dress and make yourself look too eager to get to the US.
    4. Be natural, act natural. Answer questions as if you have got nothing to lose even if you fail.
    5. Be confident, be cheerful. Greet the interviewer and ask how he/she is doing first.
    6. Answer to the point. Don’t give long stories. But don’t give the impression that you have memorized your answers. Think about the question asked for a second, frame your sentence and reply. Even if you know the answer, act as if you have put some thought into the question.
Travel to the US (Packing & Pre-Flight)
  • My company sent me the tickets. They booked on Qatar Airways and I later learnt that they are a very good airline.
  • I sold my car. Had foreclosed the loan and had the hypothecation removed earlier. Maybe did not get the best price for it. But it was hassle free.
  • Went in for a International Driving Permit to be made. The Jayanagar RTO had just shifted to their new facility. The IDP cost me about Rs.600. Need the passport, tickets and existing DL copies along with about 4 passport size photographs.
  • As usual, I received a ton of advice about what to pack and what not to pack. I wanted to travel with minimal luggage but somehow I ended up having to remove stuff b’cos I was over the 46kg limit. Yes, trans-Atlantic flights are allowed 2pcs of baggage 23kg each as check-in baggage. Apart from that you are allowed a small kit bag with a 7kg limit plus one laptop bag.
  • I realised only at the airport that they don’t weigh the laptop bag or the cabin baggage strictly. All that matters is that you don’t pack any stuff like powders/lotions/un-processed food items/liquids/deodarants or things like swiss knives etc. in these bags.
  • I packed in about 3 sweaters (I was headed to Fairfax, VA where temperatures reach negative Fahrenheit), 2pairs of thermals, gloves, skull caps, inner wear, office wear, jeans & casuals and my trustworthy Sapient woolen pullover. Had a couple of friends help me with some shopping as well.
  • Bought new shoes, slippers and a large trolley kit. Packed a pressure cooker (forgot the weight!), couple of heavy duty vessels & pans, a coffee filter, plates, tumblers, spoons.
  • Also went in the regular MTR ready to eat foods, sambar, rasam, vangibath and puliyogare powders.
  • Went to my regular doctor for a prescription for common allergies and ailments. Went to the pharmacy and bought all of them for stocking. Made sure to collect a bill and carry it with me on flight.
  • Packed all my required electronics and associated cables. Backed up my laptop files in my portable drive and carried it. Left the laptop back at home for mom. I was gonna get a newer powerful one in office anyway.
  • And thanks to my friend Sharath’s advice, I did a web check-in so that I can avoid the long check-in queue. And indeed it helped. The check-in queue was windingly looooong and the quick bag drop off was just 3-4 passengers long. Qatar also had the feature to pre-select my seats. I was naive so I selected a window seat. People usually prefer the aisle seats on long flights.
  • I was not aware of having to make a food preference 36hrs before flight departure. By not doing so, I risked not having anything vegan to eat on the flight.
  • Make sure you carry all the required documents in your cabin baggage/laptop bag. Passport, I-797, Employment Offer Letters, USCIS documents, destination address etc. Its ok to carry a camera in your cabin baggage. Its worth it.
  • I had planned to carry my Vodafone SIM to US. So carried my phone too. Activated International Roaming 24 hours before departure.
Travel to the US (Flight & Immigration)
  • The day of the flight was a painful one. The people I really wanted to come drop me off to the airport couldn’t/didn’t make it. Even after they had 6 months to prepare and plan for it. Was really depressed over it and it took me a couple of weeks to get over it.

Departure at Bangalore

  • No job can be done well beforehand. The last 4-6 hours before leaving the house were the most hectic and productive packing hours. Got prints of required emails, maps, phone numbers etc. Cello-taped my own name and destination address stickers to the baggage. Do not lock any of your luggage. Had to even visit the lawyer to get a power of attorney made in my mom’s name.
  • Booked a Tata Sumo to drop and return everyone. Made sure it has a top carrier for luggage. Rs.1500 for that. Reached the airport 3 hours prior. After all good bye’s and a coffee, I went in. That was it. A new phase of life. No turning back now.
  • An airline representative handed me a form to fill for emigration, directed me to the quick bag drop line as I had checked in online. This was a good move.
  • Then I filled up the form. This is some emigration step which no one had told me about. The person basically asked me if I planned to settle down in the US permanently etc, asked for my passport & visa and verified it and let me through. I was cleared in my passport that I do not need an Emigration Check. Indian passports now carry an ECR seal if you are required to clear Emigration Checking for some major countries. Basically people who have a minimum 12th standard pass certificate or those above age 50 will not have this seal. I thought people without the seal don’t have to go through this emigration step but looked like everyone was going through it.
  • I boarded the flight to Doha. Qatar Airways are one of the best airlines in terms of seating comfort and hospitality I am told. I wouldn’t know for sure as this was my first international flight. But I for sure did not have any space cramps for my legs.
  • 5 hours later I landed in Doha. I took my first step on international soil (concrete actually). For some reason while the flight was descending I got a severe headache above my eyebrows and it was uncontrollable. It subsided only when the plane landed. I was not prepared for another round of such a headache when the plane lands next in DC. So I asked for the Airport clinic, consulted the doctor who gave me a couple of tablets to swallow and told me it would be fine. It was free.
  • I had a 4 hour gap between flights but the BLR-DOHA flight landed about 90 mins late and that left me about 25 mins to make my way through a stringent security check and board the next flight to DC. They got everyone to even remove shoes, didn’t let me carry my water bottle. It was a special water bottle and I didn’t want to let go of it. So then he told me that I can’t carry the water in it.
  • The flight to DC was a long 14 hour flight. The air-hostesses will force you to pull down your window blinds as the bright sun might disturb other passengers. The plane takes a long route from the Middle East over Europe, Britain, Greenland, Canada and finally the US.
  • Seeing Greenland from the air was a treat to the eye.

Greenland from the air

  • While the plane was about 2 hours from landing we were issued a form to fill called the I-94. This form would be used in immigration and would be stapled to your passport. You will need to have this form on the passport as long as you are in the US. And will need to have it removed when you leave.
  • It is important that you fill this form accurately with information as-is in your passport. I made a goof-up here as my visa has my first name as FNU, I filled up this form with my first name as FNU. I later had issues with they did not give me an SSN till even after 6 weeks. I am still waiting for it. More on that later.
  • The plane landed in the US. The DC airport was a let down. It was too simple and barren. Something unexpected for the capital of the country.
  • After landing you need to go through immigration wherein you will be asked questions about the purpose of your coming to the US etc. If you answer straight and with a smile, this should not take more than 2 minutes at the counter. But the queue to the counter took me about 2 hours with a heavy backpack and a big kit bag in my hand. No trolley’s at this point. My Tip: Once you get out of the plane, rush to the immigration counter. Atleast saves 150 people in your plane from getting ahead of you. If you want to use the restrooms, do it on the plane!
  • Next I collected my check-in bags. They had been taken off the belt and placed on the floor. I was told that trolleys are not free like in India but I didn’t have to pay for my trolley.
  • I took a taxi and headed to my hotel. Cost me $40 including a 15% tip to the driver. I for one thing didn’t understand the concept of this tip. In India we fight with auto drivers to give us Re.1 change.
  • First thing after checking in at the hotel was to make phone calls back home and to my brother and announce that I have arrived! The hotel had free wi-fi but I left my laptop at home. My N97 had a Skype app but it was off due to low battery. I took out my charger only to realise that it is an Indian charger (the round pin was the problem, not the voltage). So I had to find a converter first up. I went to a nearby pharmacy and got a universal converter. Yes, a Pharmacy. A pharmacy here basically sells everything, including beer and wine!
  • Crossing the road here requires you to reach a pedestrian crossing and push a button by the traffic light to request for a crossing.  I didn’t know that. So I waited 5 mins at the signal not knowing what to do. Then finally crossed without any pedestrian green just to see a car come to a screeching stop next to me from the wrong side!! OMG I checked the wrong side of the road for traffic and crossed! Whoa that was frightening. Next 2 days I was getting over that incident and crossing a road was the biggest challenge for me in the initial few days.
  • I suffered hardly any jet-lag. I did nothing special so don’t ask me. My friend Sharath’s tips were:
    1. Take a walk in the daylight if possible. No matter how tired you are.
    2. Do not sleep till atleast 10pm local time. Avoid all urges to take a nap before local bed time.
  • Next morning I was to report to office and begin my new career!
  • Next items that needed to be settled were:
    1. A Phone Connection.
    2. A Laptop (from office)
    3. A Bank Account
    4. Apply for an SSN
    5. Find an apartment/room to share.
    6. Get a Car!
    7. Get a Driving Licence
    8. Get my name rectified in my passport and have the FNU removed by the Indian Embassy.
And my story with those items is equally long so I will end this issue here and write about those in my next post!
People prepare a lot when travelling to the US. I had not done even 10% of that kind of preparation. I wanted to learn my way around. Not go in with my cup full. I wanted to be Jake Sully! And I have been doing OK so far. I could rent a car with Enterprise.com and go around thanks to my International Driving Permit. People complain that it is a big hand-written book. Who cares! As long as it is accepted, I am happy. Period. The Indian IDP is accepted in most US states and you can drive with it for upto 6 months after arriving in the US.

So I am in the US

18 Aug

Our 22 Conditions to the “Democratic” Political Parties

Anna Hazare

The Delhi Police unconstitutionally imposed a set of 22 conditions against Anna Hazare’s call for a peaceful fast at Jayaprakash Narayan Park.

And obviously, some of these conditions were ridiculous and were against the fundamental rights of the citizen of this country.

Will the “Democratic” Political parties themselves fall in line if the same conditions are imposed on them when they hold their election rallies, impose unwanted Bandhs, hold protests for getting into power?

Or better yet, why don’t we draft our version of the 22 Commandments and see if they can abide by it.

So here are our 22 Conditions to the “so called” democratic political parties of our country:

Next time any political party calls for a Bandh/Protest/Rally anywhere in the country, these are the 22 conditions the party will have to abide by:

  1. Thou shall file an undertaking with the citizens before calling the Bandh or holding your rally or protest.
  2. All party members from the whole country should sign the undertaking before starting the campaign. Irrespective of whether they are on honeymoon, giving birth, in jail, participating in the winter Olympics or looking up Marilyn Monroe’s skirt at Madame Tussauds.
  3. The undertaking will mention the start and end time of the bandh or rally.
  4. Only 5 netas or people directly affiliated with the netas are allowed to take part in the bandh or rally.
  5. Only 50 bicycles are allowed.
  6. Only 1 local, cheap, red colored bus with rusty bench seats shall be used to transport both netas and supporters. However this bus should be EURO III Emission certified.
  7. No other means of transport shall be used by anyone participating in the rally/bandh. Not even walking.
  8. Supporters will be seated in the bus during the entire rally/campaign or on their bicycles and are not allowed to get off.
  9. No loudspeaker/music system/public announcement system shall be used. Neta/Supporter has to shout in his bare voice.
  10. Campaigners shall not set foot on public roads during the campaign. However the bus and bicycles shall not be permitted to enter the rally premises. And please don’t forget condition No.8.
  11. Supporters should not be coerced into participating in the rally/campaign. All participation should be voluntary without any form of offerings made to any supporter, esp in the form of Sarai/Neera/local beer or any other means of cheap inebriation.
  12. No supporter shall resort to violence in any form.
  13. The campaign/rally shall not disturb public sentiment, law and order.
  14. Thou shall make proper arrangements for all supporters including access to water, toilets, electricity & lighting, hygiene, safety, social security and proper seating. Please remember condition No.8.
  15. The start time of the campaign should not be earlier than 11:59pm on any given day.
  16. The end time of the campaign should be no later than 11:58pm on the same day as the start.
  17. No tent/shamiyana/podium/stage shall be erected for the campaign purpose. If it rains, people on bicycles can take shelter inside the 1 bus provided for the campaign. However, conditions No.7 and No.10 and thus No.8 shall be abided by all even in this case.
  18. At no point of time during the rally/bandh/campaign will the total number of supporters exceed 500. Even stray dogs, donkeys, cows and birds in the vicinity of the rally will be counted towards this number. After all, who cares for your speeches anyway?
  19. Thou shall not bring in obese participants and call for a hunger strike. We are not falling for their diet programs.
  20. We shall publish a Corruption Rating of each of the netas participating in the bandh/rally. Terrorists are encouraged to take out the netas in this list in descending order of rating. If you are caught, don’t worry, govt. is busy tackling internal corruption now with A.Raja, Kalmadi, Reddys, Telgi etc. Next will be Kasab and then you. You will be older than Manmohan Singh by then.
  21. The party calling the rally/bandh shall be responsible for cleaning the area of the campaign.
  22. All effort shall be made to Go Green in the campaign. No plastic covers/cups/plates shall be used. Thou shall pledge to reduce Greenhouse Emissions by not Farting. No animal shall be harmed in the campaign. All food served, if any, shall be vegetarian.

There. Now lets get this passed and save ourselves a lot of headache and losses.

Photo Courtesy: Praveen Kumar

23 May

Pure CSS 2 Animation Effect


Yesterday I was looking up this interesting CSS 2 property called background-attachment.
Its no big bang. It can have a couple of values scroll and fixed. Scroll will scroll the background image with the page and is the default for all elements that have a background image specified, Fixed will make the background image stay in the same position even when the page is scrolled.But with a few tricks combined with the background-position property, this can be leveraged to give neat little animation effects when the page is scrolled.

I notched up a small demo with a couple of paintbrush illustrations and tried to give the effect of filling a glass with water. Those interested may fill it with Beer or whatever they like. 😉

View Demo.

It’s no rocket science I know and with the advent of CSS 3, JavaScript libraries like MooTools and jQuery that can do better animations with a single line of code, one would ask why bother? Sure. This was just an experiment. But check out how creative Román Cortés got with this concept using a 2D displacement map of <p> elements for each pixel of the scrolling image in this demo here.