Showing posts with label English. Show all posts
Showing posts with label English. Show all posts

Sunday, December 27, 2015

Backpacking Asia: 2015/2016 Travel Budget

Este post también está disponible en español aquí.

So, you have decided you want to travel to Asia, and now comes the reality check: how much will it cost?

In 2015 my wife and I did a backpacking trip through several countries in Asia, including: China, Japan, Thailand, Malaysia, Singapore, Laos, Vietnam, Cambodia and India, that spanned for a few months until almost November. We took the advice from several websites regarding travel tips and costs, since it was the first time that we did a travel with no return ticket; made our budget and went on the adventure to see how well was our math, and kept only a backup for the return ticket.

Since we received help from other posts, we'd like to share the information so others can be helped as well. Below is shown an average daily expenses summary per country, and we explain the kind of things we did with that money.

Indirect Travel Expenses

Most of the costs we found on the Internet on different blogs were accurate, and you are more or less flexible on the budget depending on what things you want to do (or not). One thing that is usually excluded from other websites is the transportation between countries and other things like visas, vaccines, and travel insurance.

For our trip, we spent around $21 daily on these travel expenses, being the most expensive one the travel insurance (World Nomads) which had an extensive coverage. In addition to the Travel Insurance, this amount also includes: flights to/from Asia to home country, transportation between countries, vaccines, and international roaming before we started using local SIM cards.

Country Specific Expenses

Most of the expenses categories shown below are self-explanatory, except maybe Travel. This category basically means the fun things: attraction tickets, fun rides, tours, etc and includes (when applies) visa fees. If you have any questions about the information posted, please ask in the comments section :)

For simplicity, we included all country-related expenses (like visa and transportation between cities) on each country's summary. All costs are expressed per person.

To get a total average (which includes all the expenses from planning until returning back home) you would have to sum the Indirect Travel Expenses to the Country Specific Expenses. Mathematically:

Total Travel Expenses = Indirect Travel Expenses + Country Specific Expenses



Cambodia


Cambodia Daily Expenses By Category


Typical Day:
Stay at a budget hotel, have breakfast in a restaurant, grab some snacks for the day, go visit places (when possible walking, but most of the times by Tuk Tuk/Remorque), have budget lunch/dinner (pizza, pasta, rice, burgers) at touristy places (prices are in USD), go back to hotel/take night transportation to another city.

Sometimes donated or bough something to someone just to help them, and since this was one of our last countries, bought a thing or two as gifts.

Saving tips: You can save money on Tuk Tuks and Dining. On Tuk Tuks always negotiate (don't be too hard, a few dollars make a big difference for them), or try to stay close to the attractions. In Dining, you could try secondary streets for local food instead of the main touristy areas. Don't buy anything (food/gifts) from hawkers around attractions.

Average Exchange Rate: 1 USD ~ 4000 Cambodia Riel.

Average Daily Cost (USD): $44 (including Cambodia Visa and Angkor Wat, if not: $32).



China


China Daily Expenses By Category
Typical Day: 
Stay at an Airbnb apartment, have self-made breakfast at home (most of the time), grab snacks for the day, use only public transportation to get to all the attractions, visit attractions, have lunch/dinner (only one meal a day) at a chain restaurant, go back to apartment or take a night train to another city, have a self-made dinner.

Saving tips:
Use public transportation passes. Overall we didn't see big differences on prices, but you might be able to find better dining prices in some local restaurants. Street food is cheap too, but we always kept our guard really up preventing food poisoning. Also very few people speak English, so you will have to try based on a picture.

Average Exchange Rate: 1 USD ~ 6 CNY.

Average Daily Cost (USD): $59.



India


India Daily Expenses By Category
Typical Day:
Grab breakfast at hotel, hire a Tuk Tuk (Auto Rickshaw) or tour for the day (except on cities with acceptable public transportation like Delhi), visit places, have lunch/dinner (2-3 meals a day) usually at hotel, go back to hotel / take a night train to next city.

Saving tips:
As I read somewhere, in India, if you don't look Indian you're a walking dollar sign. Always negotiate, after a while you will get a grasp of what is the real price of things.

Food is cheap, but be conscious about it. Don't try save too much money on hotels, less than 20$ a night are extremely suspicious hotels, be extremely careful about reviews on the Internet and try to check for recent reviews (preferably from non-locals).

In attractions, avoid spontaneous "tour guides", or set an upfront price when they start talking showing you around. Always set a price and stick to it, they will always try to get it up at the end, don't fall for it.

As long as you can avoid private transportation and/or negotiate a good price upfront you should be able to save more money.

Average Exchange Rate: 1 USD ~ 60 INR

Average Daily Cost (USD): $42



Japan


Japan Daily Expenses By Category
Typical Day: 
Stay at either budget hotel or Airbnb apartment, self-made breakfast in room, grab some snacks for the day, use public transportation (use passes) to get to places, visit attractions/events,  have a late lunch/dinner at a chain or budget restaurant, go back to hotel, maybe have another snack before bed.

Saving tips:
It's hard to save in Japan, things are just expensive. But if there was a category you could focus, we would recommend transportation. Get all the passes you get offered, you will always save money. From the Japan Rail Pass to multiday passes. Usually they get paid with 2 trips. 

Average Exchange Rate: 1 USD ~ 115 JPY

Average Daily Cost (USD): $79.



Laos


Laos Daily Expenses By Category
Typical Day:
We went though Laos pretty quick, spending no more than one or two nights on the same city. So a typical day  would be: having at least two meals a day in restaurants, having either breakfast or dinner at home, plus some snacks for the day, hire a Tuk Tuk or tour for attractions not in walking distance (when possible, public transportation), visit attractions, get a bus to the next city.

Saving tips:
Besides negotiating prices with the Tuk Tuk drivers, sadly we cannot give additional tips.

Average Exchange Rate: 1 USD ~ 7500 KIP

Average Daily Cost (USD): $38.



Malaysia


Malaysia Daily Expenses By Category
Typical Day:
Each city in Malaysia had a different dynamic, some could be walked, others had public transportation and others required private transportation, for example. Nevertheless, an average day could go on these lines: stay at a budget hotel, get breakfast at a nearby restaurant or hotel, grab some snacks for the day, visit attractions (transportation would depend on city, some required tours), have lunch (a lot of cheap options), visit other attractions, have dinner (2-3 meals a day usually) and go back to hotel.

Saving tips:
Food is overall cheap. Even at the KLCC in Kuala Lumpur, you can get a nice meal for 3$. Stay close to attractions and avoid tours.

Average Exchange Rate: 1 USD ~ 3.75 MYR.

Average Daily Cost (USD): $38.



Singapore


Singapore Daily Expenses By Category
Typical Day:
Stay at budget hotel, have self-made breakfast and dinner in room, grab snacks for the day, visit some attractions (like Marina Bay Sands, or temples, but not attractions on Sentosa Island), have lunch at a chain restaurant, watch budget/free night attractions, go back to hotel.

Saving tips:
As Japan, Singapore is a bit expensive. We were able to lower down some costs on accommodation by mixing it with transportation days (arrived one day early in the morning, and the last day left for a night train to Kuala Lumpur).

Budget hotels are not very comfortables and are expensive. Check for hostels that have good reviews.

Average Exchange Rate: 1 USD ~ 1.33 SGD.

Average Daily Cost (USD): $41.



Thailand


Thailand Daily Expenses By Category
Typical Day:

Stay at budget hotel, have breakfast (sometimes self-made, sometimes restaurant), get to attractions (most of the time through tours, but walking and public transportation when possible), have lunch/dinner at a budget restaurant (if tour, most of the time lunch was included, usually had 2-3 meals a day), had snacks, occasional party/night show/gathering, back to hotel.

Saving tips:
On the islands (like Koh Phangan), if you rent a bike instead of paying private transportation, you might be able to save more money. Also, if you just stay on the beach, the expenses go down, but usually would like to go diving, or getting to other islands. In Bangkok, you usually have good public transportation.

The most important advice: Always take metered taxis! If by any reason you can't find one and really need it, negotiate the price upfront or have one trusted driver. These people really get a lot of money from tourists.

Average Exchange Rate: 1 USD ~ 33 BAHT

Average Daily Cost (USD): $44.



Vietnam


Vietnam Daily Expenses By Category
Typical Day: 

Stay at a budget hotel, have breakfast in restaurant, grab snacks for the day, walk or get on a tour to attractions, visit attractions, have lunch/dinner at a budget restaurant (2 meals a day usually, sometimes 3), go back to hotel or transportation to next city.

Saving tips:
You can rent bikes instead of paying for private transportation. Beware of the laws. Beside of that we don't have much advice.

Average Exchange Rate: 1 USD ~ 20,500 VND

Average Daily Cost (USD): $ 32



Asia Backpacking English Travel

Saturday, December 12, 2015

Study Guides for your Next Technical Interview

I get commissions for purchases made through some links in this post. The recommendations are my own, and are not sponsored (*).

Over the last couple of years, I have been creating some Interview Study Guides that have helped both improve my coding/technical skills and prepare for interviews in top tech companies. Since I believe these guides might be useful for others I have decided to publish them.

All the guides are free and released under CC-Attribution-ShareAlike License.

All the guides are a work in progress and open for improvements. You can download all the guides from here.

NEW: if you prefer video over text, then don't miss my Youtube Playlist "Before the technical interview" where I cover all the topics presented on these guides (and many others).






Below is a brief summary of each of the guides.



Computer Science Fundamentals


As the name implies, this guide provides a summary of Computer Science Fundamentals, including:
  • Data Structures
  • Algorithms
  • Complexity Analysis
  • Mathematics and Probability
  • Regular Expressions
  • Threads and Locks
The sources range from online resources like Wikipedia, GeeksForGeeks and StackOverflow to formal books including (*):

I find it useful to quickly review different algorithms and as cheatsheet for different CS courses, and most of the interviews at Google, Facebook, LinkedIn, Amazon, and other big tech companies, will make a big emphasis on these topics.

You can download this guide clicking here.

This guide will help you have the concept to solve typical problems like Finding the largest BST in a tree.

Software Development and Architecture

This guide compiles higher level topics like:
  • Object Oriented Design
  • Service Oriented Architectures (SOAP and REST)
  • Scalability and Networking
  • Front End Development
    • How do browsers work
    • How to speed up websites
    • ...and more!
  • Frameworks (specifically Spring)
  • Databases
This guide is a bit less polished than CS Fundamentals, but also includes a wide range of sources from different websites and books including (*):

You can download this guide clicking here.

Code Snippets

This guide is the shortest. It includes short descriptions and code snippets from programming languages I have had some experience with (even if only during a course in college). The code snippets are commented with syntax explanation. The languages in the guide include:
  • Ruby
  • Javascript
  • PHP
  • Prolog
  • Haskell
  • C/C++
You can download this guide clicking here.

Additional Resources

There are a lot of free resources on the Internet you can learn from:




Disclaimer

I (Christian Vielma) have personally created these guides for personal use, to be used as a reference for technical interviews, work, and study. Since I believe these documents might provide value to others, I have decided to make them public.

Most of the contents on these documents have been added from different sources, from freely available resources on the Internet, to books, with additional added content from me. I made my best effort to provide full credit to the original sources, and in no way I'm trying to take advantage of improper quotations. If you believe I have made an invalid reference to a resource, please let me know and I'll fix it.
 

I provide these guides as-is, with no additional guarantees. I'm also releasing it under CC-Atribution-ShareAlike License, so you are free to extend it and update it with proper attribution.

Enjoy!


(*) Disclaimer 2:
As an Amazon Associate I earn from qualifying purchases. Links referring to Amazon are still books that I personally recommend (not sponsored) but I might receive money based on clicks  or purchases. There might also be some ads on the sides or between posts are those are placed by Google based on their recommendations (not endorsed by me).
Big-Oh Computer Science English Interviews Java Programming Study

Friday, September 20, 2013

Find Largest Binary Search Tree in a Tree: Java Solution

The question is simple and fair common:

Given a Binary Tree, write a function that returns the size of the largest subtree which is also a Binary Search Tree (BST). If the complete Binary Tree is BST, then return the size of whole tree. (From: GeeksForGeeks)

Additionally, I'll be returning the root node for the BST. In this case the BST would have to include all its children (i.e.: it must be a BST from a specific node to the leaves).

Algorithm


To find the largest BST in a tree there are different options to traverse the tree: we could take an top-down approach or a bottom-up.

Top-Down

The top-down approach require us to check at each node from the root if the tree starting at that node is a BST. This makes us traverse multiple times the tree to find the bst. Although it stops as soon as it find a BST because it will be the largest. This solution has a time complexity of O(n^2) in worst-case (degenerated tree into list) or O(nLogn) (balanced tree)
 where n is the number of nodes in the tree.

Bottom-Up

A better approach will be bottom-up where we check from the bottom of the tree the nodes to check if the trees created are BST. This makes the evaluation of a BST in O(1) for each node, although we still have to traverse the tree completely, so this approach has a time complexity of O(n) (in fact we have to traverse the tree twice because to get to the bottom nodes we must traverse from the root and then again from the bottom to the top).

Given the implementation is recursive, this has a space complexity of O(n). 

Implementation


Below is my Java proposed solution. For a complete solution (including testing, full comments and printing) check this.

If you are preparing for a tech interview, don't forget to check the Interview Study Guides.




Big-Oh English Java Programming

Tuesday, September 17, 2013

Tips and Solutions for Dell XPS 13 Developer Edition

The Dell XPS 13 Developer Edition comes with Ubuntu 12.04, and even though most of its hardware works perfectly with Ubuntu there are some things that doesn't quite work from the beginning (what a shame).

In this post I present some of the issues that I experienced with this powerful ultrabook and how I solved them.


Bluetooth


At the beginning I couldn't enable the bluetooth but after the first Ubuntu update it worked perfectly.

Additional Tip: if you want to send files from your phone to your computer you should do search and find "Personal File Sharing" in the dash and activate both the checkboxes under "Recieve Files over Bluetooth, as commented by Reza Ghayem in AskUbuntu.

WiFi


By default there are some issues with the stability of WiFi connections. If your WiFi connection is not stable (ie: disconnects and reconnects a lot) you should run the following in a Terminal:

sudo apt-get install linux-generic-lts-quantal

and reboot your computer after that as suggested by Dan Wood in this AskUbuntu post.

Hibernate


Warning: Some people have reported some problems (ruins installation) using this hibernate tip when the Home directory is encrypted. I haven't confirmed this, though.

Although in my case Suspend worked from the beginning, Hibernate didn't so just installing uswusp solves the issue:

sudo apt-get install uswsusp

There are additional instructions suggested here but they weren't necessary. After installing uswsusp you can try hibernating your computing executing in a terminal:

sudo s2disk

If it works then you just have to restart the computer (after waking it up) and check hibernate through the standard options in Ubuntu (right top button-->Hibernate).

And that's it! Just let me know if you have additional hacks needed for Dell XPS 13 Developer Edition or if you had any problem with any of these solutions!
Dell English Linux Tips Troubleshooting Ubuntu

Wednesday, August 28, 2013

How synchronized methods can be ignored

Here is a question:

If an object has a synchronized method A and a not synchronized method B, can both method be called by different threads?

And the answer is:

Only one thread can access synchronized method A at a time (unless there are two different objects and each thread calls method A on different objects). B can be accesed by many threads at any given time, even when A is executing.

At the beginning I was a bit confused about the second part, if that is so, then a class might not be protected against multithreading update if it has at least one non-synchronized method that modifies an instance variable used by a synchronized method. I was right!

Here's is the code to prove it:

If you run this code it will sometimes show final value as 0 and other times value as 1. So when designing a class that should be synchronized take under consideration which methods are you leaving free that can modify instance (or static) attributes.
English Java Multithreading

Tuesday, August 13, 2013

Volunteering at Chuck Pezoldt Park

Not all is sitting behind a computer programming and publishing blog posts! ;) Sometimes is good to take fresh air and do something helpful for the community.

Last weekend as well as in the Global Youth Service Day I went with my wife to a park to plant trees (after all as José Martí once said: before die you should "Plant a tree, write a book, have a son"). It was exhausting but a fulfilling activity and it was great to see that the trees we planted months ago were healthy and still there. 

The Miami-Dade county parks workers are very nice and organized people and they had it all under control so the job was very fruitful. Specifically with this park (Chuck Pezoldt) they are improving its services and we helped them saving some money to more costly activities like installing lights or improving the sport courts in the park, while doing something good for the environment and the the community.

To learn more about this or other activities, please refer to the Parks Foundation of Miami-Dade County.

And, because not everything is hard work, I leave you with the Harlem Shake we did back in April. This video is also posted on the Parks Foundation Facebook site.

Ecology English Miami Volunteering

Thursday, August 1, 2013

How to send emails in Wordpress with Contact Form 7

Recently I was working with a client's Wordpress-based site where they had configured a contact form using Contact Form 7 to send emails to clients. I'm not going to enter in details on how to use Contact Form 7 since there are good guides in the plugin's site.

The thing is that after configuring Contact Form 7, I found issues sending emails. The Contact Form 7 owner posted a link to a blog that explained how to solve this for specific configurations using WP-Mail-SMTP plugin. This gave some guidance but I had to tweak it a lot (for example, changing from WP-Mail-SMTP to WP-SMTP) to make it work for me, and I hope with the following instructions you will be able to solve it in your site too.

First of all, my configurations:
  • Wordpress, version 3.5.2
  • Contact Form 7, version 3.4.2
  • WP-SMTP, version 1.1.5
  • The site is hosted in GoDaddy.
Notice that I use WP-SMTP instead of WP-Mail-SMTP.

First, you have to change the WP-SMTP configuration. You can do it through Settings -> WP-SMTP. Set the following:
                From: my email (ex: "asdf@gmail.com")
                From Name: "Whatever you like"
                Host: localhost
                SMTP Secure: None
                Port: 25
                SMTP Authentication: No
                All the other fields empty. 

WP-SMTP Configuration

You should be able to send a test email using the fields at the bottom of the form. If this works, you're almost done!

Finally,  another problem that I found is that you cannot send empty message body in the Contact Form (notice the [your-message] value in the picture below). Based on the Contact Form Docs, I configured the contact form as shown. The field [email-88] is the name of the field email that the user introduced in the form.

The reply-to header was a nice touch that I took from Mario Varga's post.

Contact Form 7 Configuration
Hope it works for you!
English Troubleshooting Web Wordpress

Sunday, July 28, 2013

How to map Postgres capital names to Hibernate

When I was developing the Simulation Model System (SimModSys), I faced this issue.

I'm from the school that believes that the database should be developed first and independently from the system, to serve the purpose of maintaining the data integrity, and the application should integrate to the existing database to apply logic on the data, but not to force how the data should be represented. So I designed the database first ignoring that there were issues between Hibernate and Postgres capital letters.

Instead of changing the database I decided to fight for it, after all it was a learning personal project. 

I received a partial answer that I completed later at StackOverflow. In short, what you have to do is the following:

  • Escape every table that has capital letters (using \"):
  • Escape every field that has capital letters (using \"):
  • Escape joins that include columns that have capital letters (strangely, using `):

It is a tedious work. This worked for me with PostgreSQL 9.1.9, Hibernate 4.1.3 and Java 7. 

For a complete example you can review the code at BitBucket of any of the classes of the SimModSys project's persistence package.
English Hibernate Java PostgreSQL Simulation Model System Troubleshooting

 

Copyright © Librethinking.
Designed by Templateism. Hosted on Blogger Platform.