blog.sojoodi.com

December 19, 2007

My GMAT Experience!

Filed under: Uncategorized — Sahand @ 8:59 pm

I was busy (read bootcamp!) preparing for and writing the GMAT over the past two weeks. That’s why I haven’t written much lately, but I thought I’d share with you my fun experience with the GMAT!

First thing, this was a really quick decision. I had thought of writing this test for a while, but hadn’t really had the opportunity to do it. So, this time around, as soon as I had time to breathe, I decided to just go for it and get it over with. My strategy was simple: just pick a date 2 weeks from now (well originally I was more ambitious and wanted to do it in one week, but I had a humbling experience). Then everyday, in an all-you-can-eat-buffet-like approach fill your brain with training before it realizes what happened and gets tired!

I stuck to a strict and intensive schedule to make sure I do well on the test. I tried to do a timed test a day, but in the end I had 4 or 5 tests under my belt. I highly recommend the GMATPrep and POWERPREP tests. I also did most of the GMAT Official Review (11th ed, the orange one) and read through some parts of GMAT 800 by Kaplan.

In the final days of prep, I came across this website which I wish I’d seen much earlier: Beat The GMAT. I highly recommend having a look at this. I also took review notes while studying the books and writing tests. I’ve included a part of the document here (GMAT study notes). If you are interested in the full document, send me an email. (I’m doing this to see how many people are actually interested)

Another piece of the strategy was time management. This changes from person to person, but I came up with and used the easy-to-memorize V19-40-30-20/Q17-40-27-20 rule for myself. This cryptic rule basically means: For Verbal, be on question 19 or further when the clock shows that you have 40 minutes left, and be on question 30 or further when it hits 20 minutes. Same for the Quantitative section. I have a spreadsheet for helping with making these rules. If you are interested in seeing and using it, let me know.

Also, make sure you don’t forget preparing for the Analytical Writing Assessment part. There are good resources online (listed at the bottom) for practicing and improving time-management for these essays.

In the end, I had a blast on the test day. And the result was amazing, too. Actually, way better than expected! I had studied hard to get a score above 700. I was pleasantly shocked to see my score in the end. If I were a little better at marketing, I would change the title of this post to: “get an unbelievable GMAT score in two weeks!”

Hope this post is of use.

Last but definitely not least, I’d like to thank Kevin Au and Todd Presswood for sharing with me invaluable information regarding the test.

Additional Material

Email me for this stuff:

  • The full study notes
  • The Time-Management Rule Maker spreadsheet
  • My actual score if you’re interested

Online Resources

Here is a list of webpages that I may have used.

  • http://www.4tests.com/exams/examdetail.asp?eid=31
  • http://www.crack-gmat.com/gmat-test.htm
  • http://www.projectgmat.com/problems.html
  • http://beatthegmat.blogspot.com/2005/08/reflecting-on-my-gmat-experience.html
  • http://www.mba.com
  • http://www.kaptest.com/Business/Business-School/BU_home.html

December 2, 2007

Should a small business give discounts

Filed under: Marketing — Sahand @ 11:33 pm

While reading P. Barrow’s The Best-Laid Business Plans, I came across an interesting argument he had against giving discounts as a small business. The reason for writing this post was to inspect the simple but condensed table of data he provided (”Pricing Ready Reckoner”) which in the space of less than a third of a page, makes a very clear case against discounting.

Here’s the argument. In order to maintain the same level of profit, you would have to sell much more depending on your original Gross Margin and the amount of Discount. The amount of extra sales needed in each case is summarized in the following table as percentages.

  Existing Gross Margins (%)
  5 10 15 20 30 40
% price discount            
1 25% 11% 7% 5% 3% 3%
3 150% 43% 25% 18% 11% 8%
5   100% 50% 33% 20% 14%
10     200% 100% 50% 33%
15       300% 100% 60%

The math is simple if you do not claim a portion of the margin, you have to make up for the difference by increasing sales. But the engineer in me wants to make the calculations more formal:

G=gross margin (%)
R=retail price for unit
D=discount (%)
S=number of items sold, S’=number of items sold (in discounted case)

Without discount we have:
Gross margin=R×G
Cost of Goods Sold per unit=R×(1-G)

With the discount, on the other hand:
Sales revenue per unit=R×(1-D)
Cost of Goods Sold per unit=R×(1-G), remains the same
New gross margin=R×(G-D)

To make the same level of profit
S’×R×(G-D)=S×R×G

Which means we have to sell (S’/S-1) percent more to compensate for the discount:
100×[G/(G-D)-1]

The rest is easy: put the Formula in a spreadsheet and you get that nice table above. There is another table in the book which shows the flip side of the situation: price increase. But I spare you.

As a final note, I believe that you could still make a good case for giving discount on your products/services for a variety of reasons such as building relationship in hopes of recurring customers, gaining market share, etc. However, Paul’s argument is interesting and makes the assumptions that your customers buy from you because of the flexibility, quality, and the service provided. Further, I would like to add to this list the fairness and competitiveness of original pricing.

Simple Search Feature in Rails/MySQL (Part 2)

Filed under: MySQL, Rails — Sahand @ 9:42 pm

I meant to make this post much earlier, but all the start-up fun kept me from doing it. The first part of the post was published on Oct 17 (Simple Search Feature) and covered my Do It Yourself solution for the catalog search feature in Giftify.

The problem with the original indexing scheme was that it created separate “lookup word” entry for words that were inclusive of one other. For example, it would be possible that the word “rose” appeared in the descriptions of gifts 1 and 3 and “rosemary” in 2 and 3. Note that the correct indexing scheme would dictate that all items of “rosemary” are a subset of those of “rose”.

Incomprehensive Indexing

 

One way of fixing this problem is using a query with the LIKE statement in SQL to get all LookupWords that are similar to the actual search term and then perform a complex query, which will have to be created dynamically based on the results of the LIKE query. The complexity of this solution, the shakiness of LIKE/DISTINCT constructs, and the fact that a lot of stuff needs to happen for every search led me to implement a better indexing scheme.

I have mentioned the solution above: when indexing, make sure that the items in “roses” are all included in the set of items associated with “rose”. This way when looking up the word “rose” in the catalog, all three items are returned.

The Ruby implementation of the improved indexing scheme follows. Note that the trivial case of plural words containing the singular ones is handled via pluralize and singularize functions in Rails.

$lookup_word_to_item_map = {}

Item.find(:all).each do |item|
  composite_search = item.name+" "+item.description+" "+item.categories_string

  # take all the words (alpha) and array-ize
  composite_search_array = composite_search.scan(/[a-z]+/).compact.collect {|w| w.singularize}

  # remove all words that are less than 3 letters long
  composite_search_array.collect! {|w| w unless w.size<3}
  composite_search_array.compact!
  composite_search_array.uniq!

  # add data to hash
  composite_search_array.each do |word|
    $lookup_word_to_item_map[word] << item.id unless $lookup_word_to_item_map[word].include? item.id
  end
end

# in ruby str1[str2] returns nil if str1 doesn't contain str2
$lookup_word_to_item_map.keys.each do |baseword|
  extra_items = $lookup_word_to_item_map.keys.collect do |biggerword|
    $lookup_word_to_item_map[biggerword] if biggerword[baseword]
  end
  $lookup_word_to_item_map[baseword] << extra_items
  $lookup_word_to_item_map[baseword].flatten!
  $lookup_word_to_item_map[baseword].compact!
  $lookup_word_to_item_map[baseword].uniq!
end

A quick note on efficiency. The indexing process becomes slower and the index table becomes larger as a result of this scheme, but the trade-off against making on-the-fly search faster is definitely worth it.

Hope this was useful and thanks for dropping by.

© 2007 Sahand Sojoodi
Powered by WordPress