The best way to experience the Himalayas – Part 1

The Rupin Valley. Took this one while taking a short break before i trekked down the treacherous slope.

The Rupin Valley. Took this one while taking a short break before i trekked down the treacherous slope.

No it’s not by going to Manali. Not that I have anything against Manali, but it’s beyond touristy now. It’s a great starting point for for experiencing the real himalayas though. Yes Rohtang does come close. For those who have never seen much snow, it well worth it waiting 2 hours in a cramped Tata Sumo to see the fresh ice. Anyway, I am talking about experiencing the himalayas by going on a trek–backpacks and tents included. The allure of a trek is that you get to spend time in the wilderness, away from the bustle of cities and city people.

Living in Singapore is great but the weather can really get to you. It is hot and humid all year around. To make things worse, there is barely any wind. The real feel is always > 36 degrees. So when we decided to go on a trek, it had to be in a cold place. The alps were out of the question due to time and expenses. So I started searching around for cold places to trek in. It had to have:

  • forests
  • snow
  • rivers
  • valleys
  • mountains

 

It took me about 5 minutes of brainstorming to realise that i could experience all of the above in my own backyard – The Himalayas. Next: which part of the Himalayas to go to? For the uninitiated, the Himalayas are the tallest and the most intimidating mountain ranges in the world. They span across from Afghanistan all the way to China and East India. They include some 12 countries along the way. They are the source of fresh water to 500 million Indians. The high himalayan glaciers give rise to the massive Ganges, Brahmaputra and Indus rivers. So then again, where do we go?

Nepal? Sikkim? Arunachal? Himachal? Ladakh? Uttaranchal? Kashmir? Gilgit-Baltistan? Tibet?

So i turned to google images. Well, all these places seemed quite breathtaking. I needed a better approach to decide. But first, I settled on trekking in the Indian Himalayas. For starters, it’s my homeland and that would make navigation and communication pretty easy. This meant that I had to narrow down to one region among Sikkim, West Bengal, Himachal, Uttaranchal and Kashmir. To help me decide, I turned to the old faithful – r/India. Took me about 10 mins of perusing the trekking threads to come across Indiahikes. These guys are a trekking startup based in Bengaluru. They organize trekking tours across India. Their website even listed treks based on whether you wanted to experience snow and which months give you the best experience. They had treks to Himachal, Uttaranchal and Sikkim. They listed treks based on difficulty level. Man each trek had a baseline fitness level you had to have!

So I looked at the different treks mentioned and settled upon Rupin Pass. It’s a trek that starts in Uttaranchal and ends in Sangla, Himachal Pradesh. An 8 day trek with days 4-8 in high snow…and this is in the month of May when the snow cover is the highest. Being at a high altitude, the Himalayan villages are spared the wrath of the Indian summer. Temperatures of 2 degress in India in May felt like a great deal. Sitting in Singapore in 30 degree weather, I knew I had to do this Rupin Pass trek.

 

And so we paid the fee of INR 14000 for the 8 day Rupin Pass trek in May 2015. Next, getting fit enough to do the trek and buying trekking equipment….

on-way-to-jiskun

On way to the hanging village of Jiskun

 

Posted by Vikram Bahl in Himalayas, Indiahikes, Rupin Pass, Travel, Trekking, 3 comments

Accessing files stored by the iOS Simulator

iOS provides limited access to the directory structure for your device. You may often wonder what it looks like. If you are creating a temporary plist or generating a text file, you may want to see where exactly it gets stored on your device. For those with non-jailbroken devices, this can be a difficult task. Yes, you can always work with relative paths inside Xcode and there’s no problem, but certain frameworks generate files which are stored locally on the device. For eg.,  the OpenEars library running the CMU speech recognition engine generates a dictionary and language model (.arpa and .DMP) and stores it ‘somewhere’ on the device. To access the directory structure for your iOS simulator, type in the following command in Terminal:

 

open -R `find ~/Library/Developer/CoreSimulator/Devices \
 -type d -depth 5 -name "*.app" -print0 | xargs -0 stat -f \
 "%m %N" | sort -rn | head -1 | cut -f2- -d" "`

That will open the folder where your simulator has stored your filed. Now you just have to search for your filename and voila. Note that the above command opens up 5 levels deep in your folder structure. So you may have to move up a few level and then search for the file you are looking for.

 

Screenshot 2016-02-19 16.09.16

Posted by Vikram Bahl in Apple, iOS Development, OSX, Software, Xcode, 0 comments

Online Guitar App

While studying computer graphics at NTU, I created this guitar app along with my colleague Vasu. We used Adobe Flash 3.0 to quickly prototype the strings and the body of the guitar. Then by using keyframe animation and keyboard event triggering, added sounds and a vibration to the strings. You can play it here:

NOTE: Users on iPhone & iPad who are unable to load the flash script, download the free Puffin web browser for iOS. It renders flash scripts painlessly.

Get Adobe Flash player

Instructions for playing:
  • Make sure your audio setting is not muted.
  • Click anywhere on the guitar to get it in focus.
  • Press keyboard keys 1,2,3,4,5,6 to hear music notes.
  • Press & Hold any of the keys for ‘santoor’ effect.
  • Press any combination of keys together(separated by split second) to hear chords

 

[fblike style=”standard” showfaces=”false” width=”450″ verb=”like” font=”arial”]

Posted by Vikram Bahl in Flash, 3 comments

Converting Storyboard from iPhone to iPad in 4 simple steps

Developing a universal iOS app means that you have to maintain two storyboards. Sometimes, all you want is your iPad user interface to be somewhat similar to your iPhone UI. However, making 2 interfaces is a big pain and a mega resource expender. The solution is simple. Just create your iPhone UI in Xcode as you do, then to make a new storyboard for the iPad without doing unnecessary back breaking, do the following steps:

1) Make a copy of your iPhone storyboard in Xcode. You can do this by right clicking on the storyboard file in Xcode and selecting “Show in Finder”. Now locate the storyboard file in the finder window that pops (you may have to go into a few folders to find it). Copy the file to desktop and rename it “MainStoryboard_iPad.storyboard”

2) Now open this file “MainStoryboard_iPad.storyboard” in a text editor like Text Wrangler or Sublime Text etc.

3) Now perform the following 2 search and replaces in the “MainStoryboard_iPad.storyboard” file:

  • Search for
    targetRuntime="iOS.CocoaTouch"

    and replace it with

    targetRuntime="iOS.CocoaTouch.iPad"

     

  • Search for
    <simulatedScreenMetrics key="destination" type="retina4"/>

    and replace it with

    <simulatedScreenMetrics key="destination"/>

 

4) Save the file. Reopen Xcode and add this file to the project either by dragging and dropping to the project folder or by going to File -> Add Files to <your-project-name>

Now head over to the ‘General’ section by choosing your applications target in Xcode. Under ‘Deployment Info’, choose iPad from ‘Devices’. A pop-up will appear asking if you want to copy the iPhone interface and use it for iPad. Choose ‘Dont Copy’. Now from the ‘Main Interface’ drop down menu, choose “MainStoryboard_iPad.storyboard” .

And done!

You may have to re-arrange all the views in your interface but thats not really much of a headache compared to creating a new UI from scratch.

Inspiration for this post: http://stackoverflow.com/questions/8465769/converting-storyboard-from-iphone-to-ipad

 

Posted by Vikram Bahl in iOS Development, Xcode, 0 comments

Adding Animated Gif’s in iOS Applications using Xcode Storyboards

There is no out of the box support provided by Apple to add animated GIF’s to your iOS applications. There are many convoluted solutions available on the interwebs. After trying a few, I have come to rely on the super-easy to integrate solution by Flipboard Inc. (key development by Flipboard engineer Raphael Schaad, follow him on twitter)Their library makes it a piece of cake to add animated GIF’s to your iOS applications using storyboards in Xcode. Following this, your app will support animated GIF’s. This post will walk you step by step through the process of doing so.

Download code from Github: https://github.com/svram/AnimatedGIF-Xcode-Storyboards-iOS

1) This is what your app will look like if you follow all the steps (it’ll be smoother in the simulation, had to convert a .mov file to gif):

gifMovie
  • Open Xcode, create a new project  and choose the “Single View Application” template.
  • Enter Product, Organisation & Company names. Enter a class prefix and choose iPhone from the devices drop down menu.
  • Save the project to disk

2)  Download Flipboards FLAnimatedImage library from github:

https://github.com/Flipboard/FLAnimatedImage

(Just download the ZIP file to your disk)

3) Open Xcode and right-click the project in the project navigator and choose ‘New Group’. A new folder gets added to your project files. Name this folder ‘Library’.

Create new group in Xcode named 'Library'

Create new group in Xcode named ‘Library’

Create new group in Xcode named 'Library'

Create new group in Xcode named ‘Library’

4) Now open the folder where you saved the FLAnimatedImage library you downloaded in Step 2.

Locate the following four files and drag them to the ‘Library’ folder in Xcode that you created in Step 3.

FLAnimatedImage.h
 
FLAnimatedImage.m
 
FLAnimatedImageView.h
 
FLAnimatedImageView.m

It should be located in the folder hierarchy:

FLAnimatedImage-master -> FLAnimatedImageDemo -> FLAnimatedImage

When prompted, select the ‘Copy items into destination groups folder’ and click ok.

Drag and add the FLAnimatedImageView to the Library folder

Drag and add the FLAnimatedImageView to the Library folder

 

Drag and add the FLAnimatedImageView to the Library folder

Drag and add the FLAnimatedImageView to the Library folder

5) Open your ViewController.h and add the following import statements:

#import "FLAnimatedImage.h"
#import "FLAnimatedImageView.h"

6) Open the Main Storyboard file and add 3 UIImageView objects from the Object Library in the Utilities area on the right. Resize them so your storyboard looks like the one below.

 

Drag 3 UIImageView objects to the storyboard

Drag 3 UIImageView objects to the storyboard

 

Final storyboard orientation with 3 image views

Final storyboard orientation with 3 image views

 

7) Now click on one of the UIImageView objects that you added to the storyboard and under the Identity Inspector on the right, locate  the ‘Custom Class’ section. In the ‘Class’ text field enter ‘FLAnimatedImageView’.

Do this for all 3 UIImageView objects. The objects are of type FLAnimatedImageView which is a subclass of UIImageView.

Change the class of each of the image views to FLAnimatedImageView in the Identity Inspector in Xcode

Change the class of each of the image views to FLAnimatedImageView in the Identity Inspector in Xcode

8) Open the Assistance Editor in Xcode such that the Storyboard and your ViewController.h files are side by side.

Control drag from each of the image views in the storyboard to your ViewController.h file between the @interface and @end statements. Give your outlet a name and let it be of type FLAnimatedImageView. At the end of it, your ViewController.h file should look like this:

#import &lt;UIKit/UIKit.h&gt;
#import "FLAnimatedImageView.h"
#import "FLAnimatedImage.h"
 
@interface VBViewController : UIViewController
@property (strong, nonatomic) IBOutlet FLAnimatedImageView *lightningImageView;
@property (strong, nonatomic) IBOutlet FLAnimatedImageView *manWalkingImageView;
 
@property (strong, nonatomic) IBOutlet FLAnimatedImageView *pageLoadingImageView;
 
@end
Connect outlets from the FLAnimatedImageViews in the storyboard to the ViewController.h file

Connect outlets from the FLAnimatedImageViews in the storyboard to the ViewController.h file

9) With your view controller selected in the storyboard, we will add a navigation controller for aesthetics sake. In the menubar, go to Editor -> Embed In -> Navigation Controller.

Add a navigation controller in Xcode storyboard

Add a navigation controller in Xcode storyboard

10) Open your ViewController.m file and add code to the viewDidLoad: method to set the title of the navigation bar.

self.title = @"I Love GIF's";

Now, we will add 3 gifs to each of the image views programmatically. First download them to your disk here:

http://vikrambahl.com/wp-content/uploads/2014/07/manWalking.gif

http://vikrambahl.com/wp-content/uploads/2014/07/lightning.gif

The third GIF we will load via a URL.

Just right click and save it.

Once saved, add it to your project by dragging the images to your project folder in Xcode. When prompted, select Copy items into destination groups folder.

Adding GIF's to the project folder in Xcode

Adding GIF’s to the project folder in Xcode

11) Now we will load each of the three images with FLAnimatedImage instead of UIImage. Add the following code to your viewDidLoad: method in your ViewController.m file:

FLAnimatedImage *manWalkingImage = [[FLAnimatedImage alloc] initWithAnimatedGIFData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"manWalking" ofType:@"gif"]]];
 
FLAnimatedImage *lightningImage = [[FLAnimatedImage alloc] initWithAnimatedGIFData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"lightning" ofType:@"gif"]]];
 
FLAnimatedImage *loadingImage = [[FLAnimatedImage alloc] initWithAnimatedGIFData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://vikrambahl.com/wp-content/uploads/2014/06/ajax_loader_blue_512.gif"]]];

Now,  assign the FLAnimatedImage types to each of the FLAnimatedImageViews via the animatedImage property:

self.lightningImageView.animatedImage = lightningImage;

And add the FLAnimatedImage view objects as subviews:

[self.view addSubview:self.lightningImageView];

Finally, your viewDidLoad: method should look like this:

- (void)viewDidLoad
 
{
 
[super viewDidLoad];
 
// Do any additional setup after loading the view, typically from a nib.
 
//Set the title of the naviagation bar
 
self.title = @"I Love GIF's";
 
//Add the gifs as FLAnimatedImage objects
 
FLAnimatedImage *manWalkingImage = [[FLAnimatedImage alloc] initWithAnimatedGIFData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"manWalking" ofType:@"gif"]]];
 
FLAnimatedImage *lightningImage = [[FLAnimatedImage alloc] initWithAnimatedGIFData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"lightning" ofType:@"gif"]]];
 
//Loading a gif from URL
 
FLAnimatedImage *loadingImage = [[FLAnimatedImage alloc] initWithAnimatedGIFData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://vikrambahl.com/wp-content/uploads/2014/06/ajax_loader_blue_512.gif"]]];
 
//Assign the FLAnimatedImage types to each of the FLAnimatedImageViews via the animatedImage property
 
self.lightningImageView.animatedImage = lightningImage;
 
self.manWalkingImageView.animatedImage = manWalkingImage;
 
self.pageLoadingImageView.animatedImage = loadingImage;
 
//Add the FLAnimatedImage view objects as subviews
 
[self.view addSubview:self.lightningImageView];
 
[self.view addSubview:self.manWalkingImageView];
 
[self.view addSubview:self.pageLoadingImageView];
 
}

Now just run the program in the simulator and you should see your three GIFs loading perfectly.

Posted by Vikram Bahl in iOS Development, Software, 2 comments

Google Maps SDK for iOS in Xcode Storyboard

 

Developing a location based application on iOS with Google Maps is super easy with the Google Maps SDK for iOS. So here’s the complete step-by-step way to add a google map to your iOS application using storyboards in Xcode 5.

This is what your app will look like in the end:

Google Maps in iPhone using Xcode Storyboards

Google Maps in iPhone using Xcode Storyboards

 

Download code from Github: https://github.com/svram/GoogleMapSDKiOS-Storyboards

1. Download the Google Maps SDK for iOS:

https://developers.google.com/maps/documentation/ios/start#getting_the_google_maps_sdk_for_ios

The current version is 1.8.1

 

2. Obtain an API key from the Google Developers console. Do the easy to follow instructions here:

https://developers.google.com/maps/documentation/ios/start#the_google_maps_api_key

 

3. Setup Xcode Environment to work with Google Maps SDK

a) Open Xcode and Create a new project.

b) Create a new ‘Single View Application’ template.

 

Create Single View Application in Xcode

Create Single View Application in Xcode

 

c) Enter Product, Organization & Company names. Enter a class prefix and choose iPhone from the devices drop down menu.

 

Add product name, company etc

Add product name, company etc

 

d) Save your project to disk.

e) Unzip and open the Google Maps iOS SDK that you downloaded in Step 1.

 

Google Maps SDK iOS folder on desktop

Google Maps SDK iOS folder on desktop

 

f) Add the “GoogleMaps.framework” bundle to the “Frameworks” Folder in Xcode by dragging it there. When prompted, select “Copy items into destination group’s folder”.

 

Drag the GoogleMaps.framework bundle to the Frameworks folder in Xcode

Drag the GoogleMaps.framework bundle to the Frameworks folder in Xcode

 

 

Select Copy items into destination group's folder

Select Copy items into destination group’s folder

 

g) Similarly, drag the “GoogleMaps.bundle” from the GoogleMaps.framework -> Resources folder  to the “Frameworks” folder in Xcode. When prompted DO NOT select “Copy items into destination group’s folder”.

f) Then, select your project from the Project Navigator and select your applications “Target” (not the “Project”).

 

Select applications Target in project navigator

Select applications Target in project navigator

 

g) Then go to the “Build Phases” tab and then open “Link Binary With Libraries”. Then click on the “+” button at the bottom left and add the following libraries to be compiled along with your app binaries:

  • AVFoundation.framework
  • CoreData.framework
  • CoreLocation.framework
  • CoreText.framework
  • GLKit.framework
  • ImageIO.framework
  • libc++.dylib
  • libicucore.dylib
  • libz.dylib
  • OpenGLES.framework
  • QuartzCore.framework
  • SystemConfiguration.framework

 

Go To Build Phases -> Link Binary With Libraries

Go To Build Phases -> Link Binary With Libraries

 

 

Add the frameworks

Add the frameworks

 

This is what your Xcode environment should look like:

 

XCode environment after adding the frameworks

XCode environment after adding the frameworks

 

 

 

h) Now choose your “Project” rather than a “Target” and open the “Build Settings” tab. Scroll down till you find the “Linking” section and under that find “Other Linker Flags”. Now open the section and click the “+” next to “Debug” and add “-ObjC” in the text field. If these settings are not visible, change the filter in the “Build Settings” to “All” instead of “Basic”.

 

Choose the "Project" in project navigator

Choose the “Project” in project navigator

 

 

Add the '-ObjC' flag in Other Linker Flags under Build Settings tab

Add the ‘-ObjC’ flag in Other Linker Flags under Build Settings tab

 

 

4. Begin Coding

a) Open your AppDelegate.m file and add the following import statement:

#import &lt;GoogleMaps/GoogleMaps.h&gt;;

Copy the API Key you created in Step 2 and enter the following code in the method

application: didFinishLaunchingWithOptions:
[GMSServices provideAPIKey:@"API_KEY"];

Replace API_KEY with your API key.

 

Add Google Maps API Key to the AppDelegate.m application:didFinishLaunchingWithOptions: method

Add Google Maps API Key to the AppDelegate.m application:didFinishLaunchingWithOptions: method

 

b) Open “Main.Storyboard” and drag a UIView object from the Object Library. Now open the Identity Inspector and under Custom Class add “GMSMapView”.

 

Drag a UIView from object library to the main storyboard

Drag a UIView from object library to the main storyboard

 

 

Assign Custom class 'GMSMapView' to the UIView object in the Identity Inspector

Assign Custom class ‘GMSMapView’ to the UIView object in the Identity Inspector

 

 

c) Control drag from the UIView (GMSMapView) object to your ViewController.h file to create an outlet with the name “mapView”. Don’t forget to add the GoogleMaps import statement in your ViewController.h file.

 

Create an outlet for the GMSMapView object in the ViewController.h file

Create an outlet for the GMSMapView object in the ViewController.h file

 

d) Make the ViewController conform to the “GMSMapViewDelegate” protocol.

 

Make the ViewController conform to the "GMSMapViewDelegate" protocol

Make the ViewController conform to the “GMSMapViewDelegate” protocol

 

e) Finally, add the following code to your ViewController.m file in the viewDidLoad: method

 

//Controls whether the My Location dot and accuracy circle is enabled.
 
self.mapView.myLocationEnabled = YES;
 
//Controls the type of map tiles that should be displayed.
 
self.mapView.mapType = kGMSTypeNormal;
 
//Shows the compass button on the map
 
self.mapView.settings.compassButton = YES;
 
//Shows the my location button on the map
 
self.mapView.settings.myLocationButton = YES;
 
//Sets the view controller to be the GMSMapView delegate
 
self.mapView.delegate = self;
viewDidLoad: method in ViewController.m

viewDidLoad: method in ViewController.m

 

f) Now run the app in the simulator. Choose a location from the Debug -> Location menu option. Click on the my location button the app to move to your current location. And done!

 

iOS Simulator choose location from Debug -> Location

iOS Simulator choose location from Debug -> Location

 

 

Successfully added a google map to Xcode storyboard

Successfully added a google map to Xcode storyboard

 

 

g) Almost done. Finally some cosmetic changes. Go to your main storyboard and click on the view controller. Now go to the menu add a navigation controller by choosing “Editor -> Embed In -> Navigation Controller”.

This will add a navigator controller to your main storyboard.

Next give the navigation bar a title by adding the following code in your ViewController.m file:

self.title = @"Google Maps in iOS";

Feel free to add any other UIView objects. I have added a dummy button and a UITextView object.

Embed a Navigation Controller

Embed a Navigation Controller

 

Get the project files on Github.

Posted by Vikram Bahl in Google Maps SDK, iOS Development, 16 comments

Trip to Mount Ijen & Mount Bromo

It is a personal battle for me to choose between beaches and mountains. Soothing sounds of the waves crashing vs the awe-inspiring views from hilltops and peaks. Having been on beach vacations the past few weekends, I decided to get a taste of ‘mountainous’ terrain. But no touristy snow capped Himalayas or Alps (sorry for calling you touristy, you are ever so beautiful..but you are touristy nonetheless). I decided to see a volcano. It is not hard to visit a volcano from Singapore. Especially when the pacific ring of fire is just a 2-3 hour flight away. Indonesia, the land of beautiful beaches and fiery volcanoes. After surfing on tripadvisor and blog hopping, I settled on visiting Mount Ijen and Mount Bromo, with the plan of covering both in a span of 3 full days.

Both Ijen & Bromo are active volcanoes in the Java island of Indonesia. 5 minutes of viewing their images on google and I wanted to get there.

“Ok, which is the closest airport to these volcanoes? ”

Googled for a bit

Its Surabaya. Step 1 check. Next step, how to go from Surabaya to Ijen and Bromo? After searching a lot, I decided to do what I always do. Contact a travel agency. Yes yes, I sold out. Remember, I do not have a week to explore and soak in the culture. All I have is 3 days in which I wanted to pack in 2 volcanoes.  I googled a lot for travel agencies offering bromo and ijen tours. I emailed them. Among the many who replied, one of them was Sunrise Holidays. Their website is shady. I was reluctant to even open that possibly malwared email. But I did, and am glad I did, open the email. Sunrise holidays had the best offer. For S$160, I get a dedicated guide and a driver (thats two dedicated people for 3 days) AND they take care of accommodation for 2 nights! The other agencies were ALL charging nearly double that. I was IN. I replied back to them saying that I was on board. They replied back asking me to transfer the FULL amount in Indonesian Rupiah beforehand. SCAM ALERT. Ah Fuck. I was not going to wire this amount to an agency with a shady looking website.

“But $180 for driver, guide and accommodation for 3 days!”, I reasoned with my logical side.

A few minutes later, I had an idea. I emailed back saying that I would pay only 1/7th of the $280, or $40 to them. The rest I would pay in cash when I arrived in Surabaya (EDIT: My bad, I meant $280 per head and not $160)

They immediately agreed. I immediately transferred the 40 bucks. They immediately confirmed the receipt.

“Fuck. I just got scammed”

So, I emailed this guide asking for more details about the trip. They sent me the same itinerary they had when I first contacted them. Ah well, it was only 45 bucks and this Sunrise Tours was mentioned by Lonely Planet as well, I remembered.

The Itinerary was (literally quoting from these guys):

SURABAYA – IJEN  – BROMO – SURABAYA (3 DAYS 2 NIGHTS)

 Day 1 SURABAYA – SEMPOL

Our driver will pick you up in Surabaya. After meeting service, we will drive to Sempol, the closest village to Mount Ijen. It takes approximately 8 hours drive from Surabaya (depends on the traffic)

 Overnight : Arabika/ Catimor Homestay

 Day 2 IJEN CRATER – TOSARI

At 01.00 AM we start the trip to Paltuding (the entrance point). From Paltuding, we start trekking to the top of Ijen to see the crater and it will take about 1, 5 hours or more. From the top of the crater, we can see beautiful milky way. To see the blue fire, you need to go down to the crater. After the day is brighter, you can see the one-kilometer-wide-acid crater. After we finish the entire program in Ijen, we drive about 7 hours to go to Tosari.

 Overnight : Ancala Inn Hotel Bromo

 Day 3 BROMO SUNRISE TOUR – SURABAYA

Early in the morning at 03.30 am, we will start our tour to Mt. Pananjakan (the highest viewpoint) to see the spectacular process of sunrise, also the beautiful sceney of Mt. Bromo, Mt. Batok and Mt. Semeru. After we see the process of sunrise, we continue our trip to the crater of Bromo via sea of sand. The distance from the parking area of the jeep and Bromo Crater is 800m. To reach the top of the mountain, you can walk for 30 minutes or ride the horse back. After we arrive on the slope of Bromo we should climb the stair and there are 249 steps to see the Bromo active crater. From Mt Bromo we will drive back to the homestay to have breakfast and drive to Malang. It takes around 3 hours drive from Tosari to Surabaya Airport.

 Price:

2 Persons : IDR 2.800.000/ person

 Included:

–       Private car with AC

–     English Speaking Guide

–       2 Nights Accommodation (Twin/ Double Room) & Breakfast

–       Entrance Fee

–       Jeep in Bromo

–       Refreshment

–       Toll & Parking Fee

 Excluded;

–       Lunch

–       Dinner

–       Horse Riding in Bromo

–       Personal Expenses

 If you are interested with this tour, we suggest you to take morning flight to Surabaya, because from Surabaya to Ijen it takes atound 8 hours drive.

Please contact us if you need our further assistance and we are kindly looking forward to hearing from you soon.

I WAS IN. This is a cheap deal if you are living in Singapore. Only when the tour started did I realise how super valuable and cost saving this trip was.

I asked my friend to join and now there were two of us going for this trip.

Next, I surfed hipmunk .com and booked Valuair flights for departure on Friday morning and return on Sunday night. Total cost of booking flights was around $180. If you are going to do the Ijen-Bromo tour, make sure you reach Surabaya during the day, latest by 2pm. This is because getting to Ijen from Surabaya takes 7-8 hours even though it is only 350km.

Ok, it was D-Day. Boarded the flight to Surabaya from Singapore at Changi Airport. Valuair is run by Jetstar. So, no hassles. Simple, routine 2 hour flight. Not many crying babies, mainly Indonesians heading back for the weekend. Cool. Landed on time. Headed to the Visa-on-Arrival counter. 25 USD and it took only 5 minutes. Went for immigration. Foreigners have a dedicated queue for clearing the immigration. Superb. Done. Collected the bag, handed the immigration form to the customs officer and I was out.

Our guide, Mr. Halan, was waiting outside with my name on a placard. We met, shook hands and headed to the car. A white  Toyota Qualis with tinted windows pulled up. The A/C inside was welcome respite from the heat. Our driver, Mr. Mohammed informed us that it would take us 8 hours to reach the homestay near Mount Ijen. And the trip began.

For the first 3 hours, we were weaving in and out of towns, occasionally stopping for a piss and food break. After this is when things got picturesque. The drive from Surabaya to Ijen is along the coastline of the Bali Sea in east Java. After leaving Probolinggo, we ventured on an hour long drive across the beautiful coastline and saw some amazing pristine beaches and of course..the sunset.

sunset along bali sea

sunset along bali sea

 

evening ocean view

evening ocean view

After sunset, the drive started uphill. The roads got narrower and the terrain steeper. There was suddenly a nip in the air. The temperature had dropped by at least 10 degrees compared to the town and city areas. Brrrr! Around 9pm, we reached the Arabika home stay all set for the journey ahead!

It was at this time we were informed that our trek for 1am was cancelled due to heavy volcanic activity around Mount Ijen. This meant that we would not be able to see the majestic blue flames. This also meant that if the volcano erupted, we’d be toast. Anyway, were informed that the trek would start at 5am and were asked to be at the reception and ready to check out at 4am.

Sleepy time…

At 4am we check out and waited at the foyer and had breakfast. Kaya bread sandwich and a boiled egg with choice of black coffee and tea. It was slightly chilly. Perfect.

Halan arrived with Mohammed and we were off to Mount Ijen! It was a 30min drive uphill on a rocky road. We could make out silhouettes of towering peaks above us. Truly intimidating in the dark. The car stopped at a rest point from where we had to trek up to the volcano crater. Cars cannot go further from this point. We wasted no time and began the trek. Apparently it was only 3 kilometers. Halan told us that it would take us about 1.5 hours. What! I usually cover a 3km walk in 20mins. But as we trekked we realised why. This was no ordinary trek path…

It was uphill. Steep. More than 55 degress in most places. Along the way we were greeted by Sulphur miners who worked from pre-dawn to dusk to extract unadulterated sulphur from the volcano crater. Badass! As the sun rose, we took in the beauty of the panoramic view around us.

clouds below us at mount ijen

clouds below us at mount ijen

 

hills in the distance

hills in the distance

 

We came to a rest stop midway. My thighs were burning. I was amazed to learn that the sulphur miners would carry more than 90kg of sulphur rocks up and down the volcano everyday! Thats 200 pounds on your back while going downhill a treacherous path! For just about a dollar a day. Sad :-/ Shames me that I earn more for making pixels on a computer screen change. But such is life and this is a travel log, so no more philosophising.

Along the way, our guide high-fived a few miners and chatted with them. Apparently, being a tour guide pays much more than mining sulphur so the miners were all requesting with Halan to refer them to some travel agency.

sulphur mine worker at mount ijen, indonesia

sulphur mine worker at mount ijen, indonesia

The view kept getting better. We reached a plateau and decided to take some pics. The skies were quite clear..this was because most of the clouds were below us. It was an oddly satisfying feeling. We were above the clouds. I think it was drizzling below us. This was May so there were still a few clouds here and there. According to Halan, in the month of August there are absolutely no cloud formations during the day and the view from where we were standing stretches right up to the Bali sea. Wow! Think I am going to come back in August just for the view.

 

the clouds below us while hiking up ijen

the clouds below us while hiking up ijen

 

Onwards, the final 500 meters to the crater. The sun had risen, there were a few tourists hiking and most obvious of all was the stink of hydrogen sulphide gas. For those unaware, hydrogen sulphide smells like 10 day old rotten eggs. Horrible. It was difficult to breathe. As we reached the rim of the volcano, the smell wasn’t the only thing assaulting our senses.

Standing on the rim of the volcano, I was speechless. This is the first time I am seeing an active volcano. Breathing, bubbling, ALIVE. The scene was beautiful. The crater was massive. The soil was chrome yellowish gray. There were tourists here and there but they were just specks in the vast rim of the volcano.

The view of the crater was even more breathtaking. A greenish blue acidic lake surrounded by many yellow sulphurous cracks venting volcanic gases at a breathtaking speed. The entire view was surreal. Pictures do not do it any justice. The plume of sulphurous gas smoke was rising high and at times appeared to be coming toward us, but it always seemed to veer away at the last minute.

As I stared closer at the vents near the acid lake, I squinted my eyes to reveal something astonishing. There were miners moving about the sulphur deposits with pickaxes! They looked so tiny! The volcano was indeed massive. It made miners look like specks. This was an intimidating optical illusion. The rim of the crater was so large that it looked like it was merely 200 meters away. However, it must’ve been at least a mile off. Scary! I can easily imagine a regional catastrophe if this volcano blew up.

 

 

sulphur miners dangerously close to poisonous volcanic gases at Ijen

sulphur miners dangerously close to poisonous volcanic gases at Ijen

 

desolation at the crater rim Mount Ijen

desolation at the crater rim Mount Ijen

 

Panoramic view of Sulphuric fumes bursting through the crevices at Mount Ijen

Panoramic view of Sulphuric fumes bursting through the crevices at Mount Ijen

 

acidic greenish-blue volcano lake

acidic greenish-blue volcano lake

 

 

As the day progressed, we sat and walked around the volcano for an hour and decided that it was time to head back. Now to trek downhill on a steep slope.

Pro Tip: When going downhill, run, don’t walk. We sprinted down the slopes passing satisfied tourists and weary miners. After 30mins of sprinting peppered by a break or two (one break where I peed down the valley as there were no urinals for more than 30 miles…glorious). we reached the parking spot where Mohammed was waiting for us. We decided to get some breakfast from the canteen. Mee Rebus, omelettes and some coffee. All vegetarian fare.

To Bromo now.

The car ride to Bromo was uneventful. We reached the Hotel in 3.5 hours. This place is quite famous among tourists, so we had clean rooms with fresh linen. It was still 4pm, so we decided to get a buzz on. Some local Bintang beer and a Nasi Goreng kept me in high spirits. The view of Mt. Bromo from the bar at the Bromo Permai hotel was breathtaking.

Next morning at 3:30am, our jeep was ready to go to the Mt Pananjakan  top to see the highly rated sunrise across to Mt. Bromo. The 30 minute ride was bumpy and dusty. Soon enough, we were nearing the top of the viewpoint but had to alight before that due to a traffic jam. Yes, Mt Bromo is that touristy. So we started walking and took a short break at a coffee stall when Halan told us that the UEFA Champions League final between Real Madrid and Atletico Madrid was entering stoppage time. I had totally forgotten! Due to the time difference, I thought it was on Monday morning Singapore time..and not Sunday morning. Anyways we left after Bale scored as we wanted to see the Milky Way in all its glory before sunrise. Halan waited back to complete the game.

And onto the disappointment of the trip. The sunrise viewing area was overcrowded with people using their smartphones to click photos of the dark sky. Most of the people had bright torches as well. You can forget about seeing the Milky Way in such brightness. Humans. Sigh. Nevertheless, we could still see more stars in the sky than you can on even the clearest day in Singapore. So we waited for the sun to rise. Let me cut it short by saying that the sky was cloudy and the sunrise was SO-SO. Mainly because you have to camp since midnight to get the best viewing spot. Else, all you see is a swarm of people getting their newest facebook profile pic. Sigh again.

We were a little let down but were looking forward to climbing Mt Bromo and check out the crater. So our jeep took us to the base camp. We got off and I thought we were on the Moon. This plain field was called the sea of sand. The grayish-brownish sand stretched for miles on all sides. On one side was Mount Bromo, just a mile away, and the other side you could see lush green mountains. Desolation on one side and greenery on the other. Beautiful.

The terrain leading to Mt Bromo was devoid of plant life. Just rocks and sands. there were ridges on the side of the volcano where it was clear that hundreds of years ago lava flew freely through it. The only man made structure was an ancient Hindu temple at the foothill of the volcano. Apparently, shamans still pray to the pagan gods and leave offerings at the volcano to pacify it. This would later be confirmed when we saw religious items and fruits coated in brown gunge at the top of Bromo. Halan would later tell us that there was an eruption in 2010 which threw molten rocks more than 3 miles into the distance and partly destroyed the temple.

There are two ways to get to the top of Mt. Bromo. By trekking it or on horseback. We decided to trek it. I would strongly recommend a horseback ride if you are super tired or have arthritis. The 30minute trek up was a joy. It felt like I was on the surface of some desolate planet hiking up to a virgin volcano to see its beauty.

We reached on top and realised that the rim of the volcano was narrow! With the mouth on one side and a 100 meter near vertical drop on the other, we were glad for the railing that was up there. There was a distinct smell of volcanic gases and a constant flow of fumes billowing from the mouth of the volcano. The view of the sea of sand from up there was worth every damn penny I paid to come there, and then some. The alien feel and desolation of the view was mesmerising. The rim of volcano was narrow and the railings ended after 50meters. After that, you had to balance and hope that your fall wouldn’t either break your head or fry your body. We tried going around the volcano on the path with no railing but came back after a short while after deciding that the view was the same and that it was not worth the risk. Bonus points if you go on the path with no railing and trek down the steep sleep to the sea of sand. There were a bunch of local school kids who were confidently running across the non-railing path to interview foreigners for their school project. After spending 10 minutes answering questions about my childhood, we decided to head back.

 

watching the uefa champions league final between real madrid and atletico

watching the uefa champions league final between real madrid and atletico

 

mount batok (front) and mount semeru(back)

mount batok (front) and mount semeru(back)

 

mount batok, tengger caldera

mount batok, tengger caldera

 

 

the sea of sand mount bromo

the sea of sand mount bromo

 

amazing view of the bali sea from mount pananjakan

amazing view of the bali sea from mount pananjakan

 

above the clouds

above the clouds

 

 

mount bromo spouting volcanic gases

mount bromo spouting volcanic gases

 

greenery in the distance at mount bromo

greenery in the distance at mount bromo

 

vast plain rocky field 3

vast plain rocky field 3

vast plain rocky field 2

vast plain rocky field 2

 

vast plain rocky field

vast plain rocky field

 

rocky mountain

rocky mountain

 

panorama of the sea mount bromo sea of sand

panorama of the sea mount bromo sea of sand

 

are we on some desolate planet in our galaxy

are we on some desolate planet in our galaxy

 

is this the moon?

is this the moon?

 

religious offering to mount bromo by hindu shamans

religious offering to mount bromo by hindu shamans

 

view of the sea of sand with hindu temple from the bromo crater

view of the sea of sand with hindu temple from the bromo crater

 

desolation of the sea of sand mount bromo

desolation of the sea of sand mount bromo

 

 

 

We headed back to the jeep and back to the hotel. Our shoes were black and we sneezed brown mucus. If you sensitive to dust particles, just get a face mask and you should be fine. The breakfast at the hotel was good. We ate, we pondered, browsed through photos and updated our facebook statuses.

It was time to head back. I tipped $30 each to Halan and Mohammed for their services and we headed straight to Surabaya to board our flight to Singapore and back to work.

 

Posted by Vikram Bahl in Indonesia, Mount Bromo, Mount Ijen, Travel, 41 comments

How to make a WordPress Website in 99 minutes

This is a Step-by-Step tutorial on how to make a wordpress website. By the end of this article you will have made a fully fledged wordpress website with a Home, About Me, Contact Us and a Blog page. You will learn how to choose a hosting provider, select a domain name, install wordpress on your website, upload your photos/videos and configure your website.

Time taken to complete this task: 99 – 140 minutes

Prerequisites: None

What your website will look like after completing this tutorial: http://vikramsdemosite.com/myDemoWebsite/

There are 2 ways to complete this tutorial. First way is to ONLY watch the FULL YouTube video of the tutorial (embedded on this page). The second way is to complete this tutorial in parts. Apart from a massive 144 minute YouTube video, I have divided the same video into 10 parts so you can consume the content step-by-step. All of these videos are embedded on this page along with useful text descriptions and the occasional screenshot to clear things up. I leave this choice upto you. The meat of the learning is in watching the videos. I have deliberately explained every menial thing that I do while creating the website so you can latch onto the thought process and methodology of creating websites.


The FULL video tutorial:

 

 

The learning road map…or ‘Table of Contents’:

The respective time stamp range is provided next to the task.

Register a domain name & get hosting: 0:00 – 15:33
cPanel & Installing WordPress: 15:36 – 22:25
Install a WordPress Theme, Create Homepage: 22:27 – 32:07
Adding Logos: 32:11 – 40:17
Customize Slider/Adding Pages/Image Galleries/Embed YouTube Videos: 40:21 – 1:01:47
Adding Blogposts & Portfolio Items: 1:01:50 – 1:25:01
Adding Icon Menu/Finishing up the Homepage: 1:25:08 – 1:33:30
Adding Contact form/Embed Google Maps/Install Facebook Plugin/configuring the sidebar: 1:33:36 – 1:51:40
Adding a Multilevel Menu: 1:51:45 – 1:56:20
Add Login Page/Configuring the footer/Add a Favicon/Conclusion: 1:56:24 – 2:21:43

 

IMPORTANT NOTES:

Hostgator Coupon Code: CHEAPGTR11

Hostgator: http://www.hostgator.com
Virtue WordPress Theme: http://www.kadencethemes.com/product/virtue-free-theme/


For those of you who want to watch the video in parts and follow along with some text and screenshots, proceed ahead:

Introduction

You will never learn what you are about to read in any university or high school. Computer science courses in university focus on teaching you how to program websites. You learn HTML, CSS, JavaScript and PHP/Python. Most websites in the world use these technologies, so these are useful skills to learn. But in college you have only one semester to learn all this. This means that all the focus is on learning how to code. You practice your web development skills on the university machines which take care of storing your webpages on a server. They provide you with a nifty little tool to edit and upload  your code on the cloud and all you have to do is refresh the page to see the changes you have made.

All this is fine but this is only half the picture.  It is only when you come to the industry or when you want to launch a real world website when questions like..

“ok, how do i register a .com website?”

or

“ok.what is server hosting and how do i get it?”

..come to mind. This is VITAL real world information which is left out of university education. Mainly because you need a credit card to register a domain name, ie, a “.com” website and most 18 year old university students do not have credit cards.

Registering a domain name, getting hosting, configuring the DNS, migrating code and managing databases are essential tasks that need to be performed when you want to make a website. Fortunately, these are simple to learn and it takes less than a day to get familiar with these technologies. A week if you don’t know the difference between DNS and HTTP.

You will learn all this as we go over the steps leading to creating your own website.

Having your own website adds tremendous professional pedigree to your online profile. Surely, “yourname.com” sounds better than “yourname.wordpress.com” or “yourname.blogspot.freedomain.mycoolfreesite.com”. :p

Read on to find out how to make your very own website on a domain name of your choice.

 

Choosing a hosting provider

or “How to choose a web host for my website?”

or “Where will my website live?

First off, who exactly is a web host. A web host or hosting provider is a server (usually a bunch of servers) which store all the files and databases which constitute your website. A server is just a technical term for an industrial computer whose purpose is to interact with other computers by responding to their requests for data. For example, Facebook stores all the data (profile pics, wall posts, albums, sharing preferences etc) associated with a profile on its servers. Whenever you click on your profile button, your browser sends a request to the facebook server where your profile information is stored asking for your profile page. Upon receiving this request, the FB server responds to your browser by sending it your profile page with all the data (like first post, profile info etc) and your browser formats the appearance and presents it to you. Facebook owns thousands of such servers which it places in the same room and calls it a “data center”.

A web host or hosting provider also owns many such servers in a data center where it stores website data for thousands of websites. If you want to have a website, you HAVE to rent space at some web host. Alternatively, you could convert your computer into a server and save on hosting fees but when you turn your computer off, your website also shuts down. Inconvenient.

Fortunately for us, there are plenty of web hosts. Some good, some awful. Based on my experience, the best web hosts are the ones with excellent customer service. You don’t want to pay for a cheap host and then have to cluelessly run around trying to figure out how to add a subdomain and do the most basic of website maintenance tasks (or worse when you accidentally break your website and need an expert to revert to your old site).

One web hosting provider which provides excellent customer service at a cheap price is Hostgator. These guys have been around for a long time. They have a 24×7 LiveChat service manned by web engineers who patiently solve even the most ridiculous of requests. From database maintenance to website recovery to simple tasks like spoonfeeding you the process of creating an email account are carried out by these blessed customer service reps at Hostgator. I have registered  tens of domain names with Hostgator and introduced many clients to them. In the past 4 years or so, there hasn’t been a single downtime issue.

If you are serious about having your own website, then you must get hosting. Go to the Hostgator website and move on to the next Step to learn how to purchase hosting and create a domain name.

Part 1/10: Register a Domain Name & Get Hosting

After completing this section you will have registered a domain name and acquired hosting with Hostgator.

See the video of Part 1/10 here:

Go on to the Hostgator website and you should see something like in the screenshot below in Figure 1. Click on the blue “WEB HOSTING” button located leftmost in the top menubar as shown below:

The Hostgator homepage. How to make a wordpress website.

Figure 1: The Hostgator homepage. Click on ‘Web Hosting’ as demarcated by the red rectangle.

You should now be taken to a page which displays the various web hosting plans as shown below in Figure 2. The three options provided are the Hatchling Plan, the Baby Plan and the Business Plan.

We will go for the Baby Plan.  This offers the best deal for beginners. With the Baby Plan, you can register unlimited domains, have unlimited bandwidth and disk space for your files. All for $6.36 per month (this may change depending upon when you are reading this). I have the Baby Plan and have more than 10 domains registered on it. The Hatchling plan is no good since it only offers disk space for a single domain, means that you will have to pay extra money for hosting if you want to register another domain. The Business Plan is over kill for now.

In the dropdown box for the Baby Plan, there are many payment schemes available like:

– Starting at $6.36/mo

– 3 year – $6.36/mo

– 2 year – $7.16/mo

– 1 year – $7.46/mo

– 6 months – $7.96/mo

-Monthly – $7.96/mo

Out of these options, the Monthly payment of $7.96/month is the best bang for the buck. You may pay the highest amount per month, but you do not have to pay a lump sum for 6 months, 1 year or 3years! If you choose the 3 year – $6.36/mo, then you have to pay an upfront price of $228.96 at one go! The recurring monthly payment allows you to ‘try out’ having your own website and hosting space. If you get bored after 3 months, you can cancel your hosting service having paid only for 3 months. See Figure 2 below, choose Monthly – $7.96/mo and click on the yellow Order Now button.(NOTE: The cost per month may have changed depending when you are reading this)

Hostgator Baby Plan. How to make a wordpress website.

Figure 2: Choose the Monthly recurring amount for the Baby Plan. Click Order Now to continue

 

Now comes the fun part. You get to choose your domain name! After clicking ‘Order Now’, you should be taken to the signup page which looks something like in Figure 3.

Hostgator order wizard

Figure 3: Hostgator order wizard

This is the HostGator Order Wizard where you get to choose your domain name (the thing that comes after “www.” and before “.com” :p. www.facebook.com is a domain name) and you give your credit card details and you are done. Since it is a long page, I have taken multiple snapshots to walk you through the process of signing up.

First off, choose “Register a new domain”, then enter the domain name which you want in the text box and choose any TLD like .com or .net or .org. You may choose .com for now as it is the most common TLD (top level domain). Sometimes, a domain may have already been registered by someone else, so you may have to come up with a unique name. Once you have chosen a domain name, scroll down and choose your package type, billing cycle, a username and a security pin. Figure 4 shows you what I have filled up.  For the package type, choose Baby  and for the Billing Cycle, choose 1 Month @ $…. 

Hostgator package type

Figure 4: Hostgator package type

 

 

Now scroll down further and enter your billing information. Look at Figure 5 to see what I have done. Make sure you enter a correct email address. Your website login details and domain name information will come to this email.

Hostgator Billing Information

Figure 5: Hostgator Billing Information

 

Next, you will see the section on HostGator addons. Make sure every checkbox is unchecked. These are addons like Domain Privacy Protection, Site Backup, SEO etc which you need not concern yourself with right now. Just uncheck all the boxes, see what I have done in Figure 6 and move on to the next section.

Hostgator addons

Figure 6: Hostgator addons

 

Next, you will have to enter a Coupon Code if you have any. The default coupon code SNAPPY is already applied and it claims to give you a discount. NO IT DOES NOT. Hostgator gives out tons of coupon codes with massive sign up discounts compared to the default one. Go ahead and apply the coupon code CHEAPGTR11 and see a massive discount of over $8 to your total price! Figure 7 shows you the price with the SNAPPY coupon code and Figure 8 shows you the massively discounted price with CHEAPGTR11.

 

Figure 7: SNAPPY Coupon Code

Figure 7: SNAPPY Coupon Code

 

Use the coupon code CHEAPGTR11 as shown in Figure 8 below. As you can see, you now have a discount of $11.99. For the first month you will pay just $0.01. If this doesn’t work, you can also use VKRMHOST12.

 

Figure 8: Coupon code CHEAPGTR11 gives a massive discount

Figure 8: Coupon code CHEAPGTR11 gives a massive discount

 

Next, just click on the yellow CREATE ACCOUNT button. You will be redirected to the success page. Within 5-10 minutes, you will receive an email from Hostgator providing you with details of your newly registered domain name. See Figure 9 for what this email will look like.

 

Figure 9: Email from Hostgator with important info on the newly registered domain name.

Figure 9: Email from Hostgator with important info on the newly registered domain name.

 

It mentions:

– Your Billing System backend which stores the monthly invoices for your hosting account.

– Your control panel login details. This is where you will spend all your time. The control panel, or cPanel, is the backend of your website. In the cPanel, you will be able to create databases, install wordpress, upload files to your website and perform administration tasks like redirection.

– Your name server address. This is the address of the server which resolves your domain name to an IP address.

-Server IP: This is the IP address of the server where all the files for your website will be stored.

 

IMPORTANT NOTE: Your domain may take 24-48hours to fully propagate across the web. This means that if your website does not open, just clear your browser history and cache and keep refreshing the page. Either you page may not open or you will get a message from Hostgator saying that it will take 24-48 hours for your domain name to propagate across all the DNS servers around the web. Since this is a new domain, all the name servers have to be notified of a new website and have to update their directories accordingly. This is carried out automatically by Hostgator, so feel free to move on to the next section where you will install wordpress on your website and create a Home page, add a blog post, upload a photo/video and create many boilerplate pages like Contact us etc. 

 

Part 2/10: Installing WordPress on your website

After completing this section you will get acquainted with cPanel and will install wordpress on your website through one-click QuickInstall. You will then proceed to login to your wordpress website, take a short tour of the dashboard and change your password. 

See the video here:

Click on the Control Panel link you received in the email from Hostgator and login with your username and password. The login page of Hostgator looks like the one in Figure 10 below.

Figure 10: The cPanel login page

Figure 10: The cPanel login page

 

After you enter your login details, you will see the cPanel backend as shown below in Figure 11.

 

Figure11: The cPanel backend after logging in

Figure11: The cPanel backend after logging in

 

Scroll below till you see the section titled ‘Software/Services’. Under that section, click on ‘QuickInstall’. See Figure 12 below to get some clarity.

Figure 12: Click on QuickInstall under Software/Services in the cPanel

Figure 12: Click on QuickInstall under Software/Services in the cPanel

QuickInstall is a service which takes of installing WordPress on your website with one click. You may use ‘Fantastico Deluxe‘ as well but we will stick to QuickInstall since it is easier to work with and comes pre-installed with your Hostgator package.

You will now be taken to the QuickInstall page. Once there, look for ‘WordPress‘ under ‘Blog Software‘ from the menu on the left. See Figure 13 for clarity.

 

Figure 13: Click on 'Wordpress' under 'Blog Software'

Figure 13: Click on ‘WordPress’ under ‘Blog Software’

 

The WordPress section will show up on the right page area. If you haven’t heard about WordPress, it is a blogging software which enables you to create blog posts and pages. Millions of businesses and people over the world use WordPress for blogging and creating their websites.

WordPress is a web software you can use to create a beautiful website or blog. We like to say that WordPress is both free and priceless at the same time.

Basically, it is free, powerful and easy to use.

Click on ‘Continue‘ to proceed with the installation. Figure 14 clears it up.

 

Figure 14: Click 'Continue' to the next section of the WordPress installation

Figure 14: Click ‘Continue’ to the next section of the WordPress installation

 

 

The final section opens up where you will enter information pertaining to:

– The website where you want to install WordPress (choose from the dropdown box)

– The Admin email id (very important)

-Blog title

– Admin username

– First and Last Names

See Figure 15 for clarity. Most importantly, choose your domain name in the Application URL (where you will find the app in your browser). Do not enter anything in the textfield after the “/”. That is for installing WordPress in a sub-domain. A sub-domain is something like “mySubDomain.vikrambahl.com”. You want it installed in your main website, so leave that blank.

Click ‘Install Now’ and you are done. A progress bar will show up and WordPress will begin installing on your domain. Sit back and wait for it to finish (may take from 1-5mins) depending upon your speed.

 

Figure 15: Enter domain name and user information for the WordPress installation

Figure 15: Enter domain name and user information for the WordPress installation

 

And done! A Congratulatory message will show when the installation has completed. Further, an email will be sent to the address provided in the Admin email field. It will contain the URL to login to your WordPress website and the login username/password. Save this email. Moreover, login URL and login info is also displayed below the congratulatory message. See Figure 16 for clarity. My URL will be different from yours, so just ignore the ‘http://vikramsdemosite/blahblah/wp-admin’ you see.

 

Figure 16: WordPress has installed! The login details are shown and sent to your Admin email as well.

Figure 16: WordPress has installed! The login details are shown and sent to your Admin email as well.

PART 3/10: Install a new WordPress Theme & Create a Homepage

After completing this section you will have installed a new theme and created you first page – the Homepage!

See the video here:

 

PART 4/10: Add a logo to your website

After completing this section you will have added your own logo to the website and will learn how to upload images to your wordpress.

See the Video here:

 

PART 5/10: Add Slider, Create Pages, Add Images/Image Galleries & Embed YouTube Videos

After completing this section you will have:

– added a customized slider to the homepage
– added 3 pages
– added images to your pages
– added an image gallery to your page
– embedded a video from youtube to your page

See the video here:

 

PART 6/10: Adding Blog posts & Portfolio pages of your creative work

After completing this section you will have:

– added blog posts with image sliders to your website
– created portfolio pages to display your projects, creative work etc.

See the video here:

PART 7/10: Adding Icon Menu & completing the Homepage

After completing this section you will have:

– added icon menus to the homepage to display features related to the website you are making
– completed customizing the homepage to include blogposts, portfolio slideshow and an icon menu

See the video here:

PART 8/10: Contact forms, Embed google maps to your page, add a Facebook ‘Like’ box & configure the sidebar

After completing this section you will have:

– added a contact form to your contact us page.
– embedded a google map to your page to display your address.
– install the Facebook plugin and add a ‘Like’ box to your facebook page on your sidebar
– create and customize your sidebar

See the video here:

 

PART 9/10: Add a multi-level menu

After completing this section you will have:

– added a multi-level menu to your website.

See the video here:

PART 10/10: Customize footer area, add a favicon & a login page

After completing this section you will have:
– customized the look and placement of the main menu.
– added a ‘login’ page to your website using the ‘Theme My Login’ plugin for wordpress
– customized the footer area of the website
– added a favicon to your website

See the video here:

Posted by Vikram Bahl in Create a wordpress website, Hostgator, Hosting, Web Development, Wordpress, 8 comments

Python code to list all files in a directory

Python contains useful modules to execute file and folder operations. It makes use of the ‘os’ module to carry out file system operations. To illustrate, the python code to get the current working directory is:

import os 
os.getcwd()

.
On OSX, the output of that is:

'/Users/vikrambahl/Documents'

.
The ‘os’ module makes it easy to manipulate files and folders on a file system. To list all the files in a directory, you type in the following code:

import os
os.listdir(os.getcwd())

The piece of code above will return a list of all the files contained in the directory specified within the parentheses of ‘os.listdir()’. In this case, it will list out all the files contained in the current directory as specified by the function call ‘os.getcwd()’.
The usage is:

os.listdir()

The output of the command on idle is something like:

['.DS_Store', '.localized', 'Digital Editions', 'Microsoft User Data', 'RDC Connections', 'signal_processing', 'wallapers']

Find out more about the ‘os’ module at the python docs.

Posted by Vikram Bahl in Python, 0 comments

OpenGL mesh viewer

This application was the first one I created while learning computer graphics at NTU. It parses a .m file, which is nothing but a bunch of numbers representing vertices (x, y, z) in the 3D plane. The resulting 3D model is displayed in the viewport. Options for orthogonal/perspective projection along with various viewing options to pan, zoom and rotate the model were provided. Plane, spherical and psychedelic texturing options were implemented. Watch this video to learn more:

Posted by Vikram Bahl in C++, computer graphics, OpenGL, 0 comments