Guy Shahine's Blog

Converting Users to Customers

Many entrepeneurs create a landing page to put the word out about their startup. Some of them even create a facebook group to engage with their audience and then create a website or app.  One of low-fi ways is to describe what you do, 3-6 bullet point value propositions, maybe an intro video, a section about the founders and why solving this problem matters to them, a way to establish legitimacy & trust (newspaper articles mentions, current clients, etc) and a “subscribe” box to enter their email address.

Works great with consumer apps…

The subscribe by email is the hook, it allows you to capture interested users, so you can follow up with them, learn about their issues/needs and give them updates on your progress.  You keep the flow going until you potentially convert them into customers.

Setting up a basic landing page has become so popular and very easy (did you know that you host a website using dropbox?). Here are some options:

Non-technical: and the likes (

Basic knowledge of HTML/CSS:, etc

There are also tremendous amount of FREE stuff that can help you shape up your landing page nicely:, and lots of templates at, etc

… but what about enterprise?

Enterprise solutions are a little bit more complex and often require a little of customizations.  Jumping on a call with someone that can answer those questions is much easier, that’s why you sometimes notice a price tier that says “Enterprise” => Call us.

What if you don’t want to publish your phone number? And it’s definitely too early to buy a 1-800 number.  What if you just want someone to pick time on your calendar that works best for both of you. For example, on Monday & Wednesday, between 2:00pm-4:00pm, I’m available to answer any random questions from any random user that visited my landing page and is interested in learning more.

I found that embedding a schedule a demo call to action on your site or app makes the experience much better.

How can I do it?

Today, many calendar apps like Google Calendar and Office365 Calendar expose APIs for you to implement your little widget to fetch availability, book a slot, etc. Little bit of html and styling, little bit of AJAX, and an optional backend to keep the some keys as a secret and you should be all set.

Too complicated, is there a simpler approach?

I found to provide the best experience.  Even though it’s a booking platform that’s able to accomplish much more. Using it to allow your potential customers to book time to chat with you or your team is very easy to configure and even easier to integrate.


There is also but I didn’t like it as much as TimeKit

Let me know in the comments, what approach works best for you to convert interested users to customers?  Do you know about any other scheduling app?


Goodbye Mercurial, Hello Git

After years of resistance, I recently moved all my projects to Git from Mercurial (HG).  In this post, I’ll talk about why I started with Mercurial and why Git won me over.

In 2009, I joined a new team at Microsoft called LiveLabs, back then the team was under Ray Ozzie’s org and they had an exception to use whatever tools they want, so we adopted Joel Spolsky’s tools made by his company FogCreek and Mercurial goes hand in hand with their build system Kiln and bug tracking FogBugz and wiki. Even the Mercurial tutorial is written by Spolsky

Behind the scenes: Microsoft had it’s own internal tools to manage source code, builds, bug tracking, code review, but they were all shitty. For example, we used something called Source Depot, where back then,TFS (Team Foundation Server) did not exist and Git was not endorsed by the company ”

Spent a couple of years using Mercurial until LiveLabs team got dismantled then all the other Microsoft teams that I joined, either were still using Source Depot (shoot me) or they started migrating to the brand new TFS system which is similar to SVN.  Until I joined Yammer and started using Git in a professional environment where I started to understand more the appeal and power of branching, pull requests, …etc

So Mercurial and Git are not very different, there are just some minor nuances which didn’t play a strong case for me to switch from a system that I’m already familiar and comfortable with until recently the advantages of Git over Mercurial increased and I’ll enumerate them here.

Hosting Services

Today, the winners in my opinion are GitHub for open source projects and Bitbucket for small startups, and they’re both great for established startups and large teams.  Unfortunately, FogCreek wasn’t startup friendly few years ago, I just checked the website and they’re now providing Kiln for free for up to 2 team members, and I’m not sure how long ago they’ve added that offering, positive step towards embracing startups.

GitHub: Perfect for open source projects, you can have unlimited contributors to unlimited public repositories.

Bitbucket: Perfect for small teams, you can have unlimited private repositories with up to 5 contributors for free.

Kiln: Perfect for small to large organizations? I haven’t used Kiln or Fogbugz in a while, here are the two things that I remember, it wasn’t cheap but it’s the best tools I’ve seen.  If you follow Joel’s blog and read his book “Smart and get things done”, you’ll realize that he has built an organization around the smartest and brightest engineers.

Visual Studio Online: Supports GIT and TFS. Includes a build system, load testing engine, app monitoring and analytics.

Your Own: Many systems allow you to host your own inside your organization, like github for enterprise, kiln, …etc This approach is more typical in large teams.


Xcode: Native git support, I don’t believe HG can be installed. More details here:

Microsoft Visual Studio: In Visual Studio 2015, Microsoft upped their game with an amazing native git support. Note, hg can be installed as an extension, there are some paid and some free, but they’re not as good as the native Git support. Details here: and here

Android Studio: Support for multiple source control systems, including Git, Mercurial, SVN and others. More about here:


Git Flow: Probably the best branching model I’ve personally seen in my whole career,  read more about it here . Note: There is a replica called HG flow for Mercurial, I briefly used it and faced tons of issues.

Git Credential Manager for Windows: Setting up ssh on Windows is inconvenient, I’ve used pageant for quite sometime where I wrote a script to automatically open it and load the key.  An alternative is to use http route and use the credentials manager found here to save the password.

Posh-git: A powershell environment for git, it shows which branch you’re on and supports tab auto completion

Github Desktop app:  Built by github to bring a visual interface to manage primarily your github/git repositories


SourceTree: Built by Atlassian and allows you to manage your Git or Hg repositories.



There is an amazing guide on how to migrate from major source control systems to git, fortunately, since Git and Mercurial are very alike, the migration is very straight forward and you won’t lose your history.

In closing, I’m so far happy with my choice to adopt Git, I do miss “hg st” and “hg up”.  Let me know in the comments about your favorite git tools, also let me know if I missed something.

Happy Coding!

My Favorite Hummus Recipe

Here’s the recipe to my favorite Lebanese Hummus dish.

Before you start, you need to watch this video in the background while preparing your hummus paste.


  •  2 cans of garbanzo beans (or 1 cup of raw garbanzo beans soaked in water & baking soda the night before.  It takes more cooking time but I recommend it)
  • 3 TBS of Tahini (preferably bought from an international deli. I recommend Cortas, Al-Wadi, Mid-East brands.  The ones from whole foods are sometimes tricky also other tahini from safeway that I didn’t like)
  • Lemon Juice of 1 1/2 lemons and separately 1/2 a lemon
  • 1~2 garlic cloves peeled and crushed (Omit if you don’t like garlic)
  • 2 pinches of Cumin Powder
  • Half-teaspoon of Salt (more salt for none canned garbanzo)
  • 1/4 teaspoon of all spices mix. (brown color mix)
  • A pinch of paprika (or more. Depends on how spicy you want it. Omit if you or your guests don’t like spicy food)

Recipe Directions:

Put the Hummus beans (Garbanzo beans) in boiling water until they become soft and you’re able to crush them easily with two finger (don’t burn your fingers), then turn off the heat and leave them sitting there for a bit, (don’t strain them from the water).  Ultimately, you should wait until the beans are warm leaning towards hot before mashing them.

In a food processor:

  1. Mince the garlic with salt first (Pulse it 3 to 4 times)2015-02-04 22.00.32
  2. Strain out garbanzo beans (don’t throw away the water, you might need it later) and process them together for about 10-15 seconds (or until the mixture stops moving).2015-02-04 21.29.31
  3. Add tahini, lemon juice and spices.
  4. Rerun the food processor and let them get all mixed up (~15 seconds)
  5. Use a spatula to mix the pieces that are stuck high on the sides
  6. Rerun for 5~10 seconds, et voila.

2015-02-04 22.06.12

If you’re lucky, they’re ready, and you’re done. 99.99% of the time, I’m not lucky and it takes some practice beyond this point the get them to be perfect, nevertheless here’s some pointers to master it:

Hummus Texture:

Perfect hummus is when it’s super smooth like cream (in Lebanon, some restaurants peel off the garbanzo skin to make it even smoother). I don’t remove the skin because you’d lose a lot of the nutrients.

Alright, let me highlight some of the issues that I’ve faced throughout my hummus making journey and my workarounds,  I’d love to hear an alternative solution in the comments.

Problem: Texture is not smooth, hummus feels thick.  You don’t want your hummus to be dry, because it will get worse by the time you serve it.

Fix: Taste it.  If it can handle more lemon, then add a bit of lemon and mix again then re-evaluate.

Problem: It still looks dry and I’ve added enough lemon.

Fix: Use some of the water that was used to cook the beans.

Problem: They feel too soft, I can even see lots of liquid on the surface.

Fix:  A thin layer of water/lemon juice is fine. Hummus will tend to dry up a bit.  If it’s too soft then add some tahini (start with 1 TBS), mix, then re-evaluate


Problem: It tastes too lemony

Fix: Water it down with some the water that was boiled in.  Start with small amounts, mix then re-evaluate.

Problem: The tahini taste is too dominant.

Fix: Add more lemon/water. Start with lemon juice.

Problem: Tahini, Lemon, spices all taste perfect but I feel like something is missing or it’s a bit blend.

Fix: Add some salt… (but I’m trying to stay away from sodium: fine, fine, add another pinch of cumin. pinch of paprika, pinch of all-spices)

Problem: I’ve put too much garlic and I have a date.

Fix: You’re kinda screwed.  I’m not sure how you roll with the ladies but here are your options:

option a) Start over

option b) Serve it as is, it kinda sets the standard from the beginning. If she’s cool with it then she’s a keeper (Recommended)

option c) Don’t serve the hummus (leave it at room temperature, in your sad microwave. So if things don’t work out then you can destroy some before you continue with your miserable life)

Problem: I’ve put too much paprika and it’s too spicy.

Fix: Suck it up and eat.  Goat milk, plain yogurt, milk will help ease the pain.


Hummus is best served at room temperature or warm.  I like it warm. Put it in a bowl, carve a fountain with a spoon, sprinkle some olive oil and (optionally), chopped Italian parsley for looks.

Taking it to 11

On a medium heat frying pan, throw a bit of butter, some pine seeds (pine nuts, pine… whatever you want to call them) until dark brown then sprinkle them on top of your hummus dish.

Don’t get frustrated if it doesn’t work out the first time, experiment and learn. I still mess it up… sometimes

Sahteine Habibi

–Guy Shahine


Moving my wordpress blog without losing any content

Today I decided to move my blog from to Windows Azure Websites. In this blog post I’ll explain the goal, challenges and solutions.


1. Move all content of my previous blog from godaddy hosting to Windows Azure Websites.

2. Implement URL redirects because I wanted to change the blog address from to and avoid breaking any of the indexed urls by search engines or referenced by other websites.

3. Shorten url path from /archives/{year}/{month}/{day}/{post name} to post name only.


1. I started by setting up a new wordpress blog through Windows Azure dashboard, where it was super easy to setup and here’s a detailed blog post that explains the process step by step


2. This one was a bit tricky to choose the best approach. Couple of months ago, I moved my main page ( to run on top of mvc 4 hosted on azure websites. So I searched online for url rewrite in and found this article which I skimmed through and decided to write a custom http module that listens to the “OnBeginRequest” event and manipulates the response url when the first word in the path matches “/blog” (code shared below, which includes the solution for goal #3).


3. When I initially setup my blog in 2009, I decided to pick a path that looks like this , well, my SEO (Search Engine Optimization) knowledge back then was pretty limited. Recently, I got some interest in learning more about SEO (and here’s a fantastic beginner’s guide So I wanted my new URLs to look like . WordPress, allows you to easily update the path under Settings->permalinks where they already have a predefined option for having a path with post name only but once you update the permalinks then all the old urls would stop working and return a Not Found page. So I had to update my url rewrite logic to only pick the last part of the path when applicable.


Here’s my custom http module code

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Web;

    public class CustomHttpModule : IHttpModule
        public void Init(HttpApplication context)
            var beginRequestWrapper = new EventHandlerTaskAsyncHelper(onBeginRequest);

            context.AddOnBeginRequestAsync(beginRequestWrapper.BeginEventHandler, beginRequestWrapper.EndEventHandler);

        public void Dispose()
        { }

        private async Task onBeginRequest(object sender, EventArgs e)
            HttpApplication app = (HttpApplication)sender;

            if (app.Request.Path.IndexOf("/blog") == 0)
                var splitPath = app.Request.Path.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

                string postName = splitPath.Length > 1 ? splitPath.Last() : string.Empty;

                var newUrl = new Uri(new Uri(""), postName);

                app.Response.RedirectPermanent(newUrl.AbsoluteUri, true);

And you need to reference your custom module in your web.config

Removed for brevity
      <remove name="FormsAuthentication" />
      <add name="CustomHttpModule" type="," preCondition="managedHandler" />

I hope you find this interesting!


Seattle Times article about startup culture at Microsoft

I had a chance to meet with Janet Tu from the Seattle times newspaper to talk about how Microsoft is shifting the culture to be more innovative and quick similar to a startup culture.

The article “Startup culture stirring at Microsoft” turned out to be fantastic.


Here are the sections where I was mentioned:

Guy Shahine works at a multibillion-dollar company that has dominated the software industry for decades and has nearly 98,000 employees worldwide.

Yet, he insists, he also works at a startup.

Shahine, in Microsoft’s Online Services Division, believes a just-launched project his Bing Advertising team is working on — linking customers’ credit cards to discount deals offered by restaurants and retailers — is essentially a startup.

“We have these ideas out there that, to some people, might sound awesome, and, to others, they think might not work out,” he said. “The only way to know is to put out those ideas, see how the market, how the customers, react to them. It’s all about experimenting, learning from those experiments, iterating.”


Acting on idea

Shahine, a development lead with Microsoft’s Online Services Division, is working on Bing Offers Card-Linked, which electronically links a user’s credit card with discount deals featured on Bing Offers. When someone purchases a deal, the discount is automatically applied to their credit-card statement.

That means the user doesn’t have to carry easily misplaced coupons; or, if the offer is for 50 percent off if a customer spends $20 at a certain retailer, the offer is automatically redeemed when you ring up $20 at checkout.

“The idea was about how we can make this simpler, more customer-friendly,” Shahine said.

There were questions team members didn’t have answers to, he said, such as whether they should first attract merchants or customers. So they decided to just try putting the idea out there and getting a pulse on what works and what needs changing. Card-Linked is now up on the Bing Offers beta site.

Bing Offers, which also will be featured on and Skype (for customers who use the no-fee version of the service), is an example of how the company is integrating its products.

Such collaboration “is a rallying cry. We all feel it,” said Ben Gilbert, who runs The Garage, Microsoft’s initiative to encourage innovation among employees.”

Thank you Janet for this great opportunity to be featured in one of your articles.

Here’s a link to the article

text only:

Don’t Be a Turkey

Today is Thanksgiving day, which is probably the second most popular holiday in the US where families get together and feast on a turkey, mashed potatoes, gravy and jelly, followed by a pecan or pumpkin pie with lots of whip cream. Here’s a comic about Thanksgiving by Matthew Inman

When I hear “turkey”, it always reminds me of a story that I first read few years ago in a book called The Black Swan by Nassim Nicholas Taleb. A story that I’ve told multiple times (I have my own version now with all the salt and pepper), it goes like this: A turkey wakes up hungry, and furiously searches for food until she finds some in the corner.  Same deal the second day until she finds more food in the same spot. Fast forward few weeks, the turkey doesn’t think about food anymore, when she’s hungry she knows where to go. The turkey’s life is amazing, she’s never hungry, she can now focus on other activities until one day around the end of November, she’s snatched from her little heaven and a butcher is about to do his little business.


The moment before the knife touches the turkey’s throat, she’s in shock, and she’s wondering why. How could you blame her? she didn’t do anything wrong, and there is no way she could’ve seen this coming. This goes to all of us, I smile and remember the turkey story when I hear someone saying things like “Ohh my boss said that I’m on a fast track for a high position” or “I have a stable job at company X, their stock is getting more gain”. Find a good balance in your life, don’t take shortcuts and don’t get carried away by the little details. There is a favorite quote from a Kevin Spacey movie “You can’t win a marathon without putting some bandaids on your nipples”

To help you remember not to be a turkey, I wanted to hire miss Turkey but hardee’s beat me to her

Happy Thanksgiving, Don’t be a turkey my friend.

The plus (+) in Gmail

If you have a gmail account like the cool kids these days, then there is an amazing feature that you didn’t know about, it’s the + feature (I’m not sure what google officially calls it), I also like to call it “catch the bastards” feature (explanation coming later).

So what is it about? Basically, you’re allowed to add a keyword, an identifier, a spell, whatever you want to call it after your username in your email address where you separate them with a ‘+’ (plus character).

Here’s an example: Let’s say I want to sign up to a new website, for instance, My email address is “”, my username is “gshahine” so when I get asked to enter my email address, I set it to “”. Now, when I receive emails from, they show up like this


How awesome is that??? I would kiss a goat right now (I look for the slightest excuse by the way Smile)

Now, you might ask me “But Guy, how would this make my life easier?”. Well, few things off the top of my head:

  1. Making your life easier is up to you and it’s all in your head.
  2. It allows you to label emails easier, for instance, adding rules for “+family”, “+friends”, “+FYI”…etc
  3. It might allow you to identify the bastards that sell your email address to entities that want to you suck your fat (ladies) or enlarge your penis (dudes).
  4. You can sound cheesy, where let’s say a beautiful lady that you just met asked for your email address to stay in touch, “, bamm, next thing you’ll realize is having breakfast together.

The Awesome Shift+Right Click in Windows

Sometimes it’s the small things that matter, I use my computer on a daily basis, and the fact that I work at Microsoft, my primary operating system is definitely Windows.

Working with people that are part of the organization that built the Windows OS, sometimes you learn small tricks (also called hidden features) that make your life soooo much easier (Most of those tricks are in command prompt and visual studio). You might say, “well it’s probably documented somewhere”, or if you’re more geeky, you might say “ohhh mentioned those tricks long time ago”. Sorry to disappoint you my friend, I’m that kind of a guy that never reads the instructions manual for pretty much anything. And on many occasions I challenge myself by even not looking at the Ikea instructions to put a desk together (I just remembered how many hours I’ve spent pulling things apart and starting all over because I realized towards the end that I’ve put some screws in the wrong spot *sigh*)

Anyway, back to our main topic that’s highlighted in the title, “What’s awesome about Shift+Right click?”. Well, instead of giving you the answer, let’s play one of my favorite games that’s usually featured in newspapers, and since we’re still on missing the right spot topic Smile, it’s called “Spot the differences” (I’ll make it easy, I promise)

ok, so here’s a snapshot for a right click on a text file in Windows 7


And here’s a snapshot of Shift+Right click on the same file


Did you see it? Com’on, try harder. Ok, I promised I’ll make it easy, notice that “Pin to Start Menu” and the sneaky “Copy as path”, and here’s an example of what get’s copied to your clipboard  when you use the copy as path [“C:UsersgshahineDesktopSomeFile.txt”]. The copy as path feature is really useful when you want to share with your coworkers a file location on a shared folder or a file location in your source control enlistment. I can’t even count on my hands how many times other coworkers were surprised when they saw me pulling a copy as path while working on the projector. (Well, probably 4 or 5 times, but it sounds cheesier when you use the “can’t count on my fingers” expression, it’s makes 11 sound like sooo much Smile)

Not impressed, try it on an Excel file and discover some goodies Smile. Still not impressed?? I’m sure you don’t even smile to a maple bar donut topped with bacon. It’s those small things that matter.

CloudCamp Seattle

Few weeks ago, I attended the CloudCamp event that was held at the Amazon headquarters in Seattle. For anyone who couldn’t make it, here’s my take:

The event started with a 5 min talk by the main sponsors (For more details about the speakers, check out the schedule at CloudCamp Seattle):

Amazon: The presenter pitch was around the idea that the cloud is secure and that the concept might have changed. Historically, you probably were able to point at or hug your machines and call them yours, but once you connect them to the internet, the question becomes “are they secure?”. Steve believes that the statement “the Cloud is insecure” is not true, “what’s secure anyway?”

IBM: I was so happy to know for the first time where IBM is partially heading toward, they’ve been talking about cloud and green earth and those nice commercials for months but on the technical ground I didn’t see a defined story. During Tony’s (who’s not a technical guy, he’s more of a sales/business person) presentation, it was a product pitch about what they call WebSphere CloudBurst/Hypervisor Editions (ouuu fancy name). Here’s the one sentence that summarizes his whole 7 minutes talk “They provide an appliance (the size of a pizza box, he said it like 10 times) that you connect to your network and machines, and what it provides a Front End between you and your machines sitting in your own data center or lab to spin up Virtual Machines and control the environment”

Windows Azure: The presentation was an overview of the Windows Azure Platform features. I wish the talk was around how Windows Azure brings value as a cloud platform. Well, I guess there is very little that you can squeeze in a 5 minutes talk.

Skytap: it was a pure product pitch delivered in a super boring manner. Their website has an overview of what they do, the presentation didn’t bring any value other than repeating this description.

Atlantic.NET: NO SHOW

Hubspan: Business talk, the presenter was really funny and the presentation was engaging. The talk was mostly addressed to business owners/investors and pretty much how the cloud can promote the old business model.

Guest Speaker: Patrick from a local company (forgot the name) that runs financial profiling to give you advice on the stock/mutual funds/… that you need to invest in. If you’re curious: I chatted with the dude, and they don’t take customers with less than a million dollars in investment

Then we moved to the Unpanel section where the audience asked 9 questions related to cloud: 6 answered by people who called themselves cloud experts, 3 answered from the audience (1 of them by me). Example questions: In the light of wikileaks being kicked out by Amazon, where does cloud stand providers stand ? Where do you think the NoSQL database is heading toward? Name one type of business or firm that can’t move to cloud, and give facts? Where does cloud stand on multiple geo located databases and how do you keep them in sync? Where does cloud stand in the open source community? … etc

Finally the unconference time came where around 7 people from the audience suggested topics to chat about. Some of the topics were: Cloud APIs, Open source community, Windows Azure 101, Google Webservices 101, CloudDatabase discussion … others

That’s it, let me know if you have any questions.

The Windows Azure Bed Time Story

These days, everyone is getting excited about the cloud. You here them talking about how it became easier to deploy, manage, and monitor your services, and how much money your company will save (IF, of course, they know how to use it). Plus, most of us started understanding the concept of the cloud and how it is different than the old way of running services (even though different people see it differently).

Your curiosity led you to surf the web for information about Microsoft Windows Azure, you read a whitepaper from here, a blog post from there, (ohh if you’ve checked out the MSDN documentation, let’s just say it needs improvement) but you still feel that something is missing. Suddenly, you realize that you still didn’t get your hands dirty with it, you didn’t get the A to Z experience, where A is an empty file and Z is a running service that you can interact with from anywhere in the world. Your journey is kinda straight forward at this point. Assuming you’ve got the expected Operating System, Visual Studio, IIS, … You download the Azure SDK et voila, now you’re ready to run an Azure service locally on your machine. Then you get an Azure account (let’s hope you’ve got a limit on your credit card 🙂 ), go through the Azure portal and you deploy your service that’s up and running in minutes. Wow, a process that used to take you hours, days or even weeks (depends on how large the organization and the type of process, at Microsoft it used to take weeks) to run your application in datacenters, now it became a matter of minutes, isn’t it amazing? Well, it is amazing, that’s why most of us are excited about this new technology and business model.

Most of us agree that Azure is still catching up, there are areas that needs improvement, features that are missing, and others… but the team is working hard (as we would expect) to improve things and stand strong against the competition. While we’re waiting for these improvements to see the light, here are some areas that I’m planning on writing posts about sometime soon to give you guidance on how you can make your life easier:

Sleep tight 🙂