Slouching Towards Bethlehem: Jump Starting Microsoft’s Devices and Services Transition

Microsoft, over the last year, has stated they are a devices and services company. In a lot of ways, this is not just not true J. Microsoft WANTS to be a services and devices company. Right now they are an enterprise Software company that sells the world’s most popular PC operating system in a world where PC sales are quickly falling.

How do they make the move to truly being a devices and services company? Well, if I was CEO for a while, this is what I would do…..

Microsoft really has three things they need to ramp up. First, they need more users of its services, especially on the consumer side. Second, they need to increase the diversity of software on mobile devices, both Windows, Windows Phone and competing platforms like Android and iOS. Last, but not least, they need to have more devices.

So how would I go about tackling these issues? It is time to pullout the checkbook.

First, Microsoft already has a very popular service that is used by close to 750 million people in Skype. Over a third of all international phone calls last year were done with Skype. Skype is an example of how these purchases should unfold. Buy an organization and integrate into Microsoft platform stack, but for the most part, leave it alone. Let the teams that have run the company and have made it successful continue to build it.

Part of growing users is having great applications, so let us start with Microsoft buying Flipboard. Flipboard is a great RSS reader on the iOS and Android platforms that considers itself your personal magazine. They collect content from social media and other websites and bring them together in a visually appealing way. Once purchasing Flipboard, immediately make clients for their Windows 8 and Windows Phone 8 platforms, create a web version and move to replace Google Reader, which will soon be going away. LinkedIn recently purchased a similar company, Pulse, for $90 million dollars. Flipboard, in their most recent funding round over a year ago came out at about $200 million, so let’s be safe and say it will cost $500 million.

Next up, jumpstart their social offerings. I like my Twitter, grudgingly go to Facebook to see how family and friends are doing and occasionally check out Google+ and LinkedIn. I don’t spend a ton of time being social on the web and do not pretend to be an expert. Having said that, based on the like/post buttons on the sites I go to, Facebook, Twitter, LinkdedIn, Google+ and Pinterest seem to be the most popular. Microsoft already owns about 5% of Facebook and they (most likely) won’t ever own the rest of Facebook. LindedIn fits into the Enterprise Microsoft wants to expand out of. Twitter would be an interesting buy, but the market cap is very high. That leaves us with Pinterest, and it kind of makes sense for Microsoft, a lot of sense.

Pinterest is a photo sharing site using a pinboard style that has become popular from a design standpoint (I am looking at you recently redesigned Google+). It is also like Bradley Cooper, very popular with the ladies. This would help Microsoft because their most popular social service, Xbox and Xbox live, is very popular with the males of the species. A Pinterest buy allows Microsoft to break out of its male dominated social user base in a big way. (Of course, trying to use a little hyperbole above, realize plenty of males and females on each platform). Similar to Flipboard, focus on getting applications on their Windows and Windows Phone platform. Over time, provide tie-ins to your Microsoft account.

 

Pinterest’s current valuation is 2.5 billion. Let’s give it a little bump to be safe and pay $3 billion for Pinterest and our total cost is $3.5 billion.

Next up, buy Barnes and Noble Nook division. I was not really sure about this because I do not think it makes a ton of sense, but it is not my money. Rumors have been around for a while that Microsoft is already considering doing this. They invested ~$300 million a while back in Nook and are already part owners. I don’t think it makes sense because Nook is not doing well, Microsoft should be spending on brands going up, and not down. On the other hand, as they move to a services division they are the only major player without a book platform. Google, Apple and Amazon all have various offerings. With the Xbox video and music services that already exist, the Nook platform helps them spread across the media space. Throw in the consumption side of Flipboard, its magazine publishing features and you have a nice solution across multiple media spots. This helps Microsoft in the checkbox battle of marketing, but I am not sure much more beyond that. Current buyout rumors say for about a billion dollars, so let us do that. So far, we have spent $4.5 billion.

We have addressed some of the application, user base and holes in the Microsoft media space. We need devices though. For Microsoft’s mobile phone platform, Windows Phone 8, that means one thing, Nokia. Currently, Nokia accounts for about 80% of all Windows Phone 8 device sales. They also have great data and tools in the mapping space. Microsoft could use this data to make its own Bing Maps service even better. They in fact, currently license Nokia map data today. Obviously though, the reason for this would be to sell more phones. Nokia and their Lumia brand for the most part, are Windows Phone today. Purchasing Nokia allows Microsoft to truly become a devices company today instead of waiting for their Surface line to become a huge part of their bottom line.

Having said that, it is important, and quite possibly bordering imperative that Microsoft get out of Nokia’s way, similar to what they did with Skype. Nokia understands the mobile space and devices better than Microsoft can. They have relationships with carriers across the world. That is what Microsoft is really buying, expertise in supply chain for making phones and the relationships to sell across the world. Nokia’s market cap is approximately $14 billion. We will put a 15% premium on the stock, which puts the buyout at 16.1 billion. This puts us at $20.6 billion dollars.

So, one of my concerns about this though is Microsoft wants to sell more Windows Phones and not less. While Microsoft isn’t seeing tons of people buying Windows phones, the platform is oh so slowly growing and you don’t want to lose that other 20%. There are also some great devices by vendors like HTC that people who buy them, really like.

If you are Microsoft, go to the Android route. Give away the OS. With a purchase of Nokia, Microsoft would quite possibly be making money on every smartphone device being sold in the world. Nokia currently gets a royalty on every iPhone sold. Microsoft has license agreements that we assume involve royalty payments from nearly every Android vendor not named Google/Motorola. What Microsoft needs to do is get more users of its phone system. By giving away Windows Phone OS to hardware vendors, it may act as an incentive. The other reason for this is that rumors abound that Samsung will be creating its own OS platform. While Microsoft is a distant third in mobile OS, they do not want Samsung to catapult them if they move away from Android to their own platform. Given the sales of the Samsung Galaxy series, this could be a distinct possibility.

We are trying to grow the Windows Phone base, we also want to grow the Windows 8 base. Microsoft released Windows 8 last October. They have sold close to 100 million copies, but it is not taking the world by storm. The next Windows release, Blue, will be out later this year. Rumors are it will focus on smaller form factors, like the 7 inch iPad mini size. When you start getting to devices of that size, it makes very little sense to have the legacy Windows software running there. You also have the issue of hardware vendors trying to sell $300 tablets to compete against the Kindle fire. With $50 going to Microsoft for Windows the math just won’t work and it will be almost impossible for hardware vendors to compete on price.

Realizing this, Microsoft should release two version of Windows. One is the current version of Windows 8, with both old school/legacy Windows that can run things like Word and Photoshop as well as the fully enabled touch interface that is Windows Metro (or Modern apps or RT). This would be for laptop/desktop users, which for sake of this article we would call Windows Classic, but definitely not thee name you want going forward. I would then release a version of Windows RT, with ONLY the Windows Metro side of the house included. Get rid of the current Windows desktop side of the house. You lose the selling point of Office on these devices, but I am not going to write too many Word documents on such a small form factor. Plus, Microsoft should have RT versions of the software soon that they could provide as part of the Windows RT version, similar to what they do with the desktop office currently. And then, similar to Windows Phone, give away the OS to hardware vendors. Without having to pay a license fee to Microsoft, vendors can release a variety of devices, and not worry about the fee for the OS impacting their ability to be competitively priced. This will help grow the user base for Windows 8 and the number of applications in the app store. By having Windows 8 Classic with the current Windows desktop, they can still preserve their income stream from Enterprises as they transition to making money from their app store.

To become a devices and services company, Microsoft is going to need more users using its services and they need them quick. Nothing will jump start the market like giving away their phone and fully enabled touch operating system to any hardware vendor that asks.

Microsoft also needs to get its Enterprise apps like Office onto Android and iOS devices. The longer they wait to do this, the more reason folks have to look at things like Google Apps as their productivity suite. I assume they are waiting until they have RT versions of their Office applications available, but they cannot wait another year or two to do this.

Last, don’t mess up Xbox. Microsoft is announcing their next generation Xbox later today. They need to get this right, since it is the only great consumer winner they have today. I am also interested to see what kind of peripheral devices they release. I have written in the past about an Xbox phone, I am pretty sure we will see some kind of Xbox Surface device this year. Should be a very interesting time in the Xbox/Surface space over the next 6 months.

So to recap, if I were CEO for a while

  • Buy Flipboard for $500 million
  • Buy Pinterest for $3 billion
  • Buy Nook for $1 billion
  • Buy Nokia for $16.1 billion
  • Give away Windows Phone to hardware manufacturers
  • Split Windows 8 into Windows RT and Windows “Classic”
  • Make Windows RT free for hardware manufacturers
  • Get Office on Android and iOS
  • Xbox home run

So $20.6 billion is a lot of money, close to half of Microsoft’s cash reserves. However, Microsoft needs to move quickly. It will continue to make money in the Enterprise space for a long time. They have great enterprise services emerging like Azure and Office 365. What they need to do is quickly adjust to a world where PC sales are declining and people are bringing devices to the office to do their work. They don’t want to turn into another RIM where their cash reserves just help them run out the clock.

Microsoft is transitioning to a devices and services company, however they are doing it slouching towards Bethlehem waiting to be born style. It needs to be more Gangam style, more quick, more energized. They need to increase their velocity and they need to do it now.

 

 

That Conference 2013

That Conference 2013 tickets go on sale tomorrow (5/15). If you are invested in your career and love making the web a more awesome place, you should be buying a ticket. Allow me to ramble a bit and elaborate…

That Conference (http://www.ThatConference.com) is a three day conference (August 12th -14th) in its second year and is hosted in Wisconsin Dells. For those of you from not around here (here being Wisconsin), the Dells is a huge tourist destination located about an hour north of Madison, WI.

The thing I loved most about last year’s That Conference is the community aspect. The main mad-scientist behind bringing the conference together is Clark Sell. Clark is passionate about what he does. You can tell he loves getting on the keyboard and hitting the compile button. However, the true genius of Clark (and make no mistake, it is genius) is Community and it permeates the conference in ways that folks may not realize. There is a longer break between sessions than there is at most conferences. You are either forced to be bored out of your skull or actually say to someone, “Hey, that is a pretty awesome Hold Steady concert shirt, are you a fan?” and then many hours later you are closing down the bar with your new buddy. There are Open Spaces going on throughout the conference, and I do not know if it was dumb luck or inspired room placement (I am going inspired room placement because I still want to believe in Santa Clause) but there is a constant flow of people through the room, engaging with one another. Clark and the rest of the Camp Staff, to the best of their ability, make sure the speakers meet the “Not a Jerk” rule. You can be sure if Clark or the rest of the Camp Staff know the speaker, then that speaker is going to be someone you can go up to after their talk, or anytime during the conference and bend their ear and they will stop what they’re doing, listen and offer suggestions and help. Whether you realize it or not, Clark and the staff will go out of their way to make sure you make new connections during the week and you will be better for it.

Next, the speaker list is outstanding. Last year saw keynotes from Richard Campbell of .NET Rocks fame, Scott Hanselman of Scott Hanselman fame and Leon Gersing, the Ruby Buddha, who probably had the best received keynote of them all. The thing that differentiated the keynotes at That Conference for me last year was that they were more focused on life outside of code. You are about to have a day full of deep technical dives into a wide and varied array of topics. Each of the key notes though were more focused on the developer outside of developing code. Hansleman focused on making sure you were not overwhelmed in the flow of information we all see, Campbell talked about the sea of change in front of everyone with mobile devices and offered perspective and history while Gersing asked everyone to follow their passion. I thought it was awesome.

This year’s keynoters promise to be along the same level of greatness. Doc Norton is the Director of Engineering at Groupon and has a great background in delivering large scale applications. Dave Thomas helped create Ruby and wants you to enjoy what you are doing. Denise Jacobs is probably the talk I am most excited to see. I have heard many great things about her presentations throughout the Interwebs and couldn’t be more excited to see her in person.

That however is only the tip of the iceberg. The speaker list (or Camp Counselors in keeping with the Summer Camp for Geeks theme) is full of top notch national speakers, and they are all coming to my backyard of Wisconsin. Richard Campbell and Leon Gersing will be back. Pete Brown, who does awesome things in his garage, is back presenting. Tim Huckaby is going to be presenting as is Beth Massi. There is a whole list of people I follow on Twitter and have seen present at national conferences like Tech-Ed and Build that will be coming to Wisconsin for three days in August.

On a personal level, six of my fellow Skyline Technologies peers will be speaking. I know the passion each of them have for what they do in their day to day, and even more important, how willing they are to share their experiences and help developers around them. What blew me away about last year, is that each session I attended, you could see that same passion in the speakers. They are not speaking because their boss is telling them to, they are speaking because they love what they do and they want you to share.

Usually tourist areas during the busy season makes me break out into hives, but it really works for the conference (not the hives, the location). It is hosted at a huge resort complex, The Kalahari, which has a water park associated with it. This is genius for two reasons; 1) water parks are fun for adults, 2) water parks are MORE fun for children. For those of you with families, this is a GREAT summer event where you can bring your spouse/significant other with you. And if you have children in your life, it is a great get away for you and your people. The Camp Staff have family friendly events like game night, and even more awesome, a coding for kids event, which will be hosted by Keith Burnell. Great fun.

For the cost of $349, you are not going to find a better deal on making yourself a better developer. More important though, if you are in the Midwest you are investing and supporting something awesome in your backyard, and you can never have enough awesome in your backyard. By attending Year Two and making it great, we all make sure we get to go to an even greater Year Three. Most importantly though, you are going to build your community. You will meet people engaged and passionate in what they do and help you realize that you too are doing awesome by being part of the community. Starting tomorrow, sign up is here. I will see you in August!

Being You – Looking Around WordPress

WordPress, is obviously, a VERY popular blogging platform. You are going to have a lot better luck finding information out on the Internets than you will here. So we will take a quick look around, and focus a bit on the differences on the Azure platform.

First off, WordPress is developed on the PHP platform. The vast majority of the management functionality can be done right on the website. This is the dashboard and can be seen below

 

At a high level

  • Home – This is the main Dashboard page
  • Posts – These are where you manage your blog posts
  • Media –This allows you to add and manage media to your site such as images, videos, etc.
  • Pages – These are web pages for your site. A good example would be an about me page
  • Comments – This is where you manage comments posted to your blog. Be ready for SPAM, lots and lots of SPAM
  • Appearance – This is where you control the look and feel of your site, add widgets, headers, backgrounds, etc.
  • Plugins – These are third party pieces of functionality you can add to your site. There is a very robust eco system of widgets surrounding WordPress
  • Users – Allow you to add users to your site so that more than one person can blog, etc.
  • Tools – Similar to plugins, tools you can add to your site
  • Settings – These are the general settings of your WordPress blog. For example, the name of the site, time zone, formats, how links are displayed, etc

The first thing most users will want to do with their WordPress site is select a theme. Much like Plugins, there is a vast ecosystem around WordPress theme development. Users can get a default theme, or find a theme that suites there needs much more closely and pay money for it.

To choose a theme, (get ready for it), go to Appearance and Themes. There is the default themes that ship with the version of WordPress you installed, as of the writing of this, Twenty Twelve and Twenty Eleven.

 

You can go to Install Themes, and look for themes you think are more representative of your site. To get an idea of the options, choose Newest and take a look at the latest site themes people have created.

 

Personally, and this is a shortcoming, I am really not that interested in aesthetics. So I choose the default Twenty Twelve theme and run with it. One of the things I DO like about this theme is that it utilizes responsive design, so it looks good on a number of form factors.

In your theme, you can choose to customize the theme. This enables you to change site description, updated colors, choose background images, etc

 

We can choose Site Title and Tagline and change our Tagline to say something different; for example, A Dysfunctional Family, and click Save & Publish

 

And the changes are immediately seen on our site.

 

 

Just to give an idea of how a theme would work. We can quickly change it and see the effect. Let’s install the Lightweight Personal theme we saw previously. We click the Install now link and it downloads and install the theme locally. We can click the Activate link to have immediately take effect

 

And voila! A totally different user experience.

 

Notice, of course, that our content stays the same, it is just the UI that changes.

To get an idea of how plugins work, let’s install a plugin and take a look. All the cool kids today are on twitter (actually, I am on Twitter, so the cool kids are probably somewhere else), so let us add twitter functionality to our site.

Click plugins on the management dashboard and you will see the default plugins that are installed with WordPress

Hello Dolly features lyrics from Louis Armstrong’s Hello, Dolly randomly on your site. While I love Louis Armstrong (his two albums, Ella and Louis with Ella Fitzgerald are required listening), the lyrics do not really fit in on our site.

The Akismet plugin is much more useful. It helps you determine what comments are spam on your site, and you will be getting lots of spam. It is worthwhile activating it, though it requires registering for a WordPress account, and if you so desire, paying some money.

For us though, we want to add Twitter to our site. So click the Add New link and search for Rotating Tweets

 

We click Install Now and verify we want to install. We are then taken to the post install screen, where we can either activate the plugin, or leave installed, but not activated. Let’s activate by clicking the Activate Plugin link

 

We now see this on our list of plugins

Plugins that are activated, then become Widgets. Similar to SharePoint web parts, widgets are items of functionality that can be added to a page. You can add widgets by modifying the appearance of your site. Click Appearance and then Widgets

The page shows the available widgets and then the side bar widget area. You can drag a Widget from the available section to the sidebar and put in the order you want. We will put our Rotating Tweets widget there by dragging it.

 

Nearly all plugins have sections for you to modify for your site. We are going to add a Title and a twitter username and click save

 

Our site is now updated

 

As you can see, the WordPress functionality provided by Plugins and Themes allows you to quickly customize your site’s look and feel.

Next time, we are going to dig a big deeper into modifying your site by adding socialization links using PHP and WebMatrix!

Being You – Setting Up WordPress on Azure Websites

Azure websites are a great way to get a blog up quick and easily, and for relatively low costs.

In this blog post, we are going to setup a WordPress blog on an Azure websites. Azure Websites provide a great environment for quickly and easily setting up websites to explore different technologies. Are you looking for a place to explore Node.js, create an Azure Website. Want to develop DotNetNuke site and explore, whip up an Azure website and explore to your heart’s content. Looking for a Linux box to do some development for? Create a Virtual Machine

So, what do we need to do?

First things first, you need to sign up for a windows azure account and a 90-day Free Trial. This will require you to provide a mobile phone, for verification purposes, and a credit card, which you only need if you exceed the limits for the free trial, which only happens if you remove the spending limit.

Go to http://www.windowsazure.com and click Free Trial. You

You free trial contains up to 10 Web Sites and Mobile servies, a SQL database, 35 GB of strogae and 750 hours of small compute hours. This will essentially allow you to create a blog a Azure shared instance for free. Click the next arrow (right by two).

You will be asked to verify your account via a SMS message to your phone. Step three will ask you to setup a credit card information, after which, your Azure subscription is being setup

Now that your Azure account is setup, you can start creating web sites, virtual machines, storage, etc. We are going to create a blog site, which is a web site.

Jump to the Azure Management portal

And click the new button in the bottom left.

Click Web Site and chose From Gallery

Azure provide a lot of “starter” sites in it’s Gallery. It can range from DotNetNukeSites, Drupal sites, Wiki sites, eCommerce engines, etc. We are interested in creating blog. Select that and you can see there are a myriad of blog types to choose from

We are going to use WordPress, a very popular blogging engine based on PHP. Once you find WordPress, highlight it and click the next button.

All Azure Websites are on the domain azurewebsites.net. You will need to select a unique name for your website. In this case, we will use TheEndless.azurewebsites.net for our URL.

Next, WordPress relies on MySql for their back end database, so we will need to create one. The good news is, Azure takes care of all of that for you. Last, you will need to pick a geographic region for your site to be hosted. You want it to be close to where the majority of your users will be. The North Central US datacenter, which is located in Chicago, fits the bill for us.

 

aWe provide a unique name to the databse and approve the ClearDb legal terms. ClearDb has partnered with Microsoft on their MySql implementation. Once you click the checkbox, it will provision up your Azure Website. This process will take a few minutes.

Once the site is provisioned you can click on the link and you will be taken to the WordPress configuration site to finalize creation of your blog.

Here, you will provide a site for your title, we are going to go with The Endless. Next, you will setup a username for your site. DO NOT use admin, change it to something different. In my case, I will use my name. You will provide an email address for the site and finally a privacy check box. You DO want to check this, as it will enable search engines to find your site. That is, after all, the whole purpose of being you J After entering in this information, choose Install WordPress. It will run for a second, and then you can login.

You now have your blog up and running!

In our next part, we will explore WordPress.

Fox Valley Day of .NET 2013

I am honored to be speaking at the Fox Valley .NET User Groups Day of .NET this year. The Fox Valley Day of .NET is a GREAT event. Every year, they have speakers from all around come and present on topics that will challenge you and make you that much of a better developer when you leave.

This year’s event is held at the UW Fox Valley on Saturday May 4th from 8 AM to 5 PM.

 

 

You can see the whole lineup at http://dayofdotnet.fvnug.org/. The downside to the day is so may of the presentations overlap. Some great talks!

I usually try and speak every year at the Day of .NET. The only year I did not speak, I won an Xbox, so that worked out pretty well!

Here are past presentations

2012 – PhoneGap

2011 – Microsoft Azure

2010 – SharePoint 2010 – A developers overview

2009 –Xbox!

2008 – Silverlight

My presentation this year will be a bit of a different topic for me, it is a much more soft presentation than what I have done in the past. It is called Being You: Building Your Personal Brand Online. Specifically, we are going to look at using Windows Azure to quickly and easily setup a blog. We will then dive into things like configuring how the blog looks and setting up the ability for users to share with popular social media sites. In order to increase search relevancy, we will go through setting up Authorship markup for your blog to make sure you are identified with what you write. We will then create a Windows 8 application from the blog. It is going to be a lot in an hour!

If you are interested in Web technologies and broadening your developer skills, I encourage you to register!

 

Outlook.Com Email Aliases

I have had my Microsoft account migrated from the old Hotmail to the new Outlook.com look for a while now. In general, the new Outlook.com has a MUCH better user interface than the old Hotmail.

I have also been migrating away from my Gmail account to a different email provider. I have been using Gmail for a LONG time, since 2004. However, some recent privacy snafus on Google’s part and the abandonment of Google Reader inspired me to migrate over. So I have decided to give Outlook.com a try (and don’t worry, I have no illusions about Microsoft and my privacy eitherJ)

Now that I am paying more attention to Outlook I have run across a feature I wasn’t previously aware of, and it is awesome. What feature is that? Outlook.com email aliases.

First, a quick overview of how I use email. I have personal email, hosted on a Google apps domain. This is what I use for emailing with family and friends. Not being a huge spam fan, I then use my Google Gmail address for all things “Internet”. So for sites like Facebook, LinkedIn or Netflix I sign up using my Gmail address.

The one problem with this is there are some sites I trust with my email address more than others. I know some sites are going to spam me than others and are more likely to “share” my email address. For example, once Tickemaster gets your email, everyone has your email. Some sites you visit require you to have an email address to access content, and you have no idea what you are getting yourself into. With Gmail, I have used the + trick, which allows you to create a disposable email address that will automatically come to your account. For example, if your email address is me@gmail.com, you can use your address name and a plus(+) sign, me+SpamingNewsletter@gmail.com and email will go to your original address. I usually end up forgetting these over time. The other thing is, you are not fooling anyone. Even if you use me+SpammingNewsletter@gmail.com, people know your email address is me@gmail.com.

So this is where Outlook.com email alias feature comes in, and it’s awesome.

First, to create an alias, go to the Gear icon and choose Mail Settings. From there, under account, choose Create an Outlook alias.

You can choose to create an address from any of Microsoft’s current email domains; Live, Hotmail and Outlook.

Type in your new email alias and then you are given the option to create a new folder where all of your email gets moved when it is sent to the alias or you can send it to your inbox

 

Now you have a new email address associated with your default outlook.com account.

Here is what I find so great about this.

First, you can create multiple aliases, up to five a year, associated with your account. Personally, I have created two separate outlook.com aliases. One, I use for the Internet I trust. For example, my Facebook, Netflix, Linked accounts, etc. They all have been, or are in the process of getting migrated to an Outlook alias. I have a second alias, for the Internet I don’t trust. These are things like Ticketmaster, or mailing lists. Essentially, anyone I am afraid of sending me spam. I can then log into my default outlook.com account, and see emails to both of those aliases and they are in folders.

The second thing that I like about the outlook aliases is that you cannot log in with them. So, let’s say LinkedIn gets hacked and my email address is in the hand of a bored script kiddie in the Ukraine. They will not be able to access my account at all because the alias is just for email and NOT account access.

It appears email aliases have been around for a long while in Outlook/Hotmail, I was just never aware of them. They are a great tool in helping clean up your accounts on the internet, and they add an extra level of security in case one of the sites you access gets hacked and your account is one of them. Check them out!

Update: That did not last long… Apparently Microsoft will soon enable the ability to log in via aliases (from Outlook.com blog). Hopefully this will be an optional feature.
 

 

 

Setting up Google Two Factor authentication

My daughter was recently asking me what classes she should take for next year, one of the options was Creative Writing. I told her the choice was easy, Creative Writing, “You can never be too good of a writer”. Similarly for the Internet, you can never be too secure.

There are LOTS of horror stories out about people who have had their lives severely impacted by people getting access to their account information. Last year, Matt Honan wrote a cautionary tale about how easily someone was able to take over his digital life for Wired. It is well worth reading. If that one was not enough, then you can read another account from James Fallows wrote for the Atlantic.

First off, you should be doing basic things. Do NOT use the same password for all sites. DO NOT have passwords that exist in the dictionary. DO have special characters, numbers and mixed case in your passwords. That is just plain, Internet common sense though.

The reality though is, your password is only so good. What everyone should do is setup two factor authentication. Two factor authentication is really “something you know” (your password) and “something you have”, an object like a phone. For enterprise users, this is old hat. The vast majority of large companies require users to have a SecurID card to get access to their network. The card generates a token that changes on a regular internal (60 seconds for example) that user needs to enter when logging in.

However, in the consumer space, this has been much slower in coming. Several years ago Google introduced two factor authentication. Facebook also has the ability for you to enable a variation of two factor authentication. If the browser is not recognized as one you have used before, it will send a SMS to your phone. Twitter is in the process of enabling two factor authentication after 250,000 user accounts were compromised. Microsoft has SOME variation of it. It will occasionally prompt you with a verification code when making account changes or accessing the device from a non-trusted PC. It is however, not a default option for login, and I have never been able to figure out how it decides to send SMS messages. Microsoft really needs to have this option available for those who want it.

We are going to step three enabling Google’s two factor authentication, since so many folks have Google accounts.

To enable Google’s two factor authentication, first, go to your Google Account and click security and find 2-step verification.

For 2-step verification, change the settings form Off to On.

You will then be prompted for a phone number to use for SMS messages. The phone, along with the accompanying verification code, is the second factor of authentication, it is the thing you have. Type in the mobile phone number

Enter in your phone number and a verification code will be sent to your mobile device. You will then be asked to verify the code

 

You will then be asked if you want to trust the computer you are on. This will allow you to log in without being prompted with a code very time. This trust usually lasts 30 days.

And then lastly, click confirm

 

Now, each time you log into your Google account from a non trusted computer, a SMS message will be sent to your phone that will need to enter.

 

Now, this is a bit cumbersome, I grant you. However, it is almost necessary if you are using Google services for anything remotely important to your non-digital world. Do you have bank account information in Gmail? Then turn on two factor authentication. Do you have send yourself passwords in Gmail? Then turn on two factor authentication. Do you have health information in Gmail? Then turn on two factor authentication. Do you use your Google account as your account name for anything important? Then turn on two factor authentication.

There are a couple of things to realize. You NEED your cell phone to log into Google services now. If you do not have your cell phone with you, or you are travelling overseas without phone access, then you will not be able to log in to your account. However, Google has several options for you. First, for those on the Android platform they have an app called Google Authenticator that will generate the authentication codes for you. Option the second is you can print out a small piece of paper that has a one time, ten digit codes that you can use to get access.

Second, applications that log into Google services to get access to your mail or contacts via POP or IMAP will no longer work. To work around this, Google allows you to create application specific passwords. These passwords are generated on the screen and then you never see them again. There are steps on how to do this at http://support.google.com/accounts/bin/answer.py?hl=en&answer=185833. For those using Outlook, Apple Mail, accessing email via phone, this will need to be done. Those of you paying attention at home will realize you are really back to a single password. While this is true, you cannot get access to your account via web browsers. Second, and more importantly, you cannot manage your account with it. You can also revoke access to anyone of these passwords at any time.

Last, it is good measure to, in Google, Facebook, Twitter, your Microsoft account, anything account you allow to do authorization at other locations, to review what applications you have authorized. So while you are on your account page, review the Connected applications and sites to see who you have authorized to have access, and what level of access to your Google account data.

Personally, I have a Gmail account that I use for my “public” life. It is the address I sign up for things like Facebook with, the email address I use for accessing services I subscribe to, like Netflix, etc. For personal use, I also have a Google Apps domain that I use for personal email with family and friends. Google Apps also support two factor authentication.

As digital identity becomes more and more integrated into daily lives, it is everyone’s responsibility to ensure they can be secure as possible. Take the steps now where you can, because by the time you should have taken the steps, it will be too late.

Have Your Pi and Eat it Too: A Comparison of C# and C++ Performance

In honor of National Pi Day, we thought it would be fun to calculate Pi and talk about performance differences between C# and C++. There is some math coming your way (yeah Math!), but feel free to skip to the end for a discussion on performance.

So back in the day, when things where WAY different, Pi was calculated using a mathematical series. One of the more famous ones uses the arctan math function to calculate the value of π. This is called the Leibniz formula for π and is represented by

pi1
 

Now, this is one of the more inefficient ways to calculate π, it takes about 10 million terms to get an accuracy of 7 decimal places. For those of us asking performance differences between languages though, that is great!

We have written two programs to calculate π, one in C# and one in C++. They are both syntactically similar and use the same algorithm. We tried to get as close to an apples comparison as we could, but in comparing two different languages, we did our best, you are still comparing an apple to an orange.

So, what did we see? We calculated π to 15 decimal points, 3.141592653589793 for those of you keeping track at home. Both programs took almost 100 million iterations to converge, 99,995,330 to be exact. We ran each of the programs 10 times to get an average as shown in the following table

Run

C++

C#

1

4.384

6.908

2

4.299

6.466

3

4.3375

6.805

4

4.18

6.584

5

4.523

6.516

6

4.186

6.518

7

4.164

6.492

8

4.175

6.351

9

4.274

6.56

10

4.342

6.589

Average

4.29

6.58

 

The calculation of π using C++ is 35% faster that it’s corresponding C# code. This is to be expected. Many modern languages such as C# and Java run through a managed runtime. This brings MANY efficiencies to developers. However, the runtime tends to add overhead when it comes to performance.

The pragmatic folks reading this realize, that the benefits of a managed execution environment and modern language generally outweigh performance gains from a language like C++. There are reasons that C# and Java are used instead of C++ because developers can be more productive. Our example here, using a very slow numerical algorithm and running it for ten million iterations is a stretch for most scenarios. The 2.5 second difference for such an intensive calculation, while relatively large in our example, in the grand scheme of things is not that big of difference.

So why bring it up? It is important to think through performance more and more in today’s computing environment for two reasons. The first is cost. As more and more organization move to utility based computing with hosted services, such as Amazon Web Services (AWS) and Azure, organization are paying for their compute cost. If you can realize performance gains that reduce CPU cycles that has a direct impact on the bottom line. The second reason is that mobile is taking over the world, and mobile users want more battery life, not less. Fewer CPU cycles on a smartphone or tablet will result in better battery life.

It will be very rare that most organizations would use C++ or other “closer to the metal” languages for their Line of Business (LOB) applications. The moral of the story though is for intensive processes in cloud hosted or mobile environments, you want to be razor focused on optimizing your code for performance, no matter what language you choose.

Both code examples are included, so for National Pi day, make a circle, calculate some π, eat some pie and enjoy!

C++

// LifeOfPi.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include 
#include 
using namespace std;
 
void pi( double *pi_value, int *iterations);  
 
int main ( void )  
{  
 
      int iterations = 0;     // number of actual loop iterations in pi 
      double pi_value = 0;    // computed value of pi 
 
      clock_t cBegin = (double)clock () ; 
      pi(&pi_value, &iterations);  
      printf("   %0.15f with %d iterations\n",  pi_value, iterations);  
      clock_t cEnd = (double) clock() ; 
 
      std::cout << float( cEnd - cBegin ) 
 
 
return 0;  
 
}    
 
void pi( double *pi_value, int *iterations)  
{  
      int i;  
      int k=1;
      double realPi = 3.141592653589793; 
      double epsilon = 0.00000001;
      double delta=10;
      *pi_value= 0;
      while (delta>epsilon) {
            *pi_value += pow(-1,(k+1))/(2*k-1);
            delta = fabs((4* *pi_value)-realPi);
            k++;
      }
      *iterations = k;
      *pi_value = 4 * *pi_value;
 
 
      return; // indicate program ended sucessfully 
 
} // end fucntion main 

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace LifeOfPiCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            int iterations = 0;
            double pi_value = 0;
 
            DateTime startTime = DateTime.Now;
            pi(out pi_value,out iterations);
            DateTime endTime = DateTime.Now;
            Console.WriteLine(pi_value.ToString() + " in " + iterations);
            TimeSpan diff = endTime.Subtract(startTime);
            Console.WriteLine(diff.Seconds + "."+diff.Milliseconds);
        }
 
        public static void pi(out double pi_value, out int totalIterations)
        {
            double realPi = 3.141592653589793;
            double epsilon = 0.00000001;
            double delta = 10;
            int k = 1;
            
            pi_value = 0;
            while (delta > epsilon)
            {
                pi_value += Math.Pow(-1, (k + 1)) / (2 * k - 1);
                delta = Math.Abs((4 * pi_value) - realPi);
                k++;
            }
            totalIterations = k;
            pi_value = 4 * pi_value;
 
        }
    }
} 

 

This blog post originally appeared at Skyline Technologies

Automatic Builds and Deploys to Azure Websites

Azure Websites are a great tool to explore pieces of the various technology stacks, especially in the Microsoft space. They include the ability to quickly spin up servers running blogging engines, CMS systems, etc. You can also create other services such as SQL back ends, Media services, Access control services, etc. At the end of the day though, what you are really getting is a shared server in the cloud, than can host all kinds of custom applications as long as you know how to get them there.

For developers, one of my favorite parts of Azure websites is the integration with cloud hosted source code repositories such as Github and Microsoft’s cloud version of Team Foundation Server. You can setup your Azure hosted website so that any time you or members of development teams you are on check in code, it is automatically built and deployed to your site. Organizations that implement projects in this manner, with automatic builds, unit tests and deploys to test or production servers without ever touching the server are much more mature organizations with less bugs and more reliable code. If you are at an organization were you are NOT doing this, Azure websites and integration with TFS or Git can be a great tool in helping build a business case within the organization.

The good news is setting this up with Azure websites is trivial. Let’s walk through the process.

For this post, we will automatically deploy a MVC project in Visual Studio hosted in the cloud version of TFS to an Azure website. The first step is to create a TFS account in the cloud if you have yet to do so. You can do this at https://tfs.visualstudio.com. The good news is for individuals and small companies or development shops, this is free. Microsoft allows for up to five users for TFS cloud hosted project. Teams that are bigger than that can also use TFS, but will have to migrate to a paid version down the road. As of this time (March 2013) pricing has yet to be announced.

Click the Sign up for free link after signing into TFS preview. You will then be asked to create a URL for your TFS project

Click create account and you are then take to the Project screen. From here you can either create a Team Project or a Team Project with Git support.

We will create a New Team Project

A few seconds later, a Team Project is created.

You can now connect to this TFS site from Visual Studio. To do that, go to the Team menu and select Connect to Team Foundation server

Click the Add button and type in the URL that you just created, in our example, CodeMoneky.VisualStudio.com (I realize typo, the original URL was taken…)

You will be prompted to sign in with your Microsoft account. You can then create your project and check it an as you as you normally would. Add the solution to source control

 

And check in your code

Now you have gone through the process of adding your code to TFS. The next step is to get the automatic build and deploy working. That is the easy part!

Log into the Azure Management console and create a new Azure website by clicking the new button in the bottom right

Choose custom create from the options

Create a URL for your site and make sure Publish from source control is checked. By default it is not

Click the source code repository of your choice, our example will be TFS.

Independent of the back end (TFS, Git), we will authorize the account. For TFS, click the Authorize Now link

It will then show a list of projects hosted in TFS, we just choose the project to deploy.

It then creates the project. We wait a few minutes, if we have not waited long enough we see a screen like this

And after we are done, the default MVC template project.

The best part, now whenever solution changes are checked in by you, or project team members, they are automatically deployed from TFS to your Azure website. This functionality is the same for other source code repositories.

As you can see, Azure websites integration with source control systems like Git and TFS make the automation of your build process sleek and simple. It is a great opportunities for small companies and startups to have best practices in place as well as the ability to quickly see code changes and updates. Check it out!