Monday, June 27, 2016

How to call cURL from Command Line

Hi All,

I installed cURL tool on my windows 10 machine, after i installed it; I tried to use this tool to post JSON messages over HTTP web hook endpoint.  But when i open the command line and type in curl, i get the following error:

'curl' is not recognized as an internal or external command, operable program or batch file.

By default, when you install cURL it gets installed on this default directory:
C:\Program Files\cURL

If i navigate to the installation path in command line window and type in curl, the tool will start working. but because i don't want to remember this path every time i want to use this tool, i need to add it as a system variable so the system knows where to points to when i call it.

Here is how to accomplish this:

1) Open Control Panel.
2) Click on System and Security.
3) Click on Advanced system settings link on the left pane.
4) This will open system properties pop up window.
5) Click on Environment variables button from advanced tab.
6) Click on New button from Systems Variables section (bottom section).
7) Add the following variable name information:

Variable name: curl
Variable value: C:\Program Files\cURL\bin



8) Click on OK button.
9) Open a new window from command line and type curl.
10) Now you can start using curl tool from command line without the need to navigate to the installation directory of the tool.



Enjoy!


Saturday, June 25, 2016

Azure Notification Hub unable to upload .p12 for APN

Hi All,

While i was working to setup Notification Hub for APNS, I got to a point to upload the certificate i created from apple developer account to the Azure portal.

I was getting the following error every time i upload my .p12 exported certificate to Azure:



This is the error message: Error updating the Notification Hub

I tried to get more detailed error message, So i jumped into the old portal and i was getting more detailed error as shown below:


Error Message: "SubCode=40000. Failed to validate credentials with APNS. Error is The credentials supplied to the package were not recognized"

After around couple of hours, i found out that the Azure reference to setup APNS was not accurate enough to say exactly what to export after you installed the certificate into your machine.

Here is what you need to do to successfully upload .p12 file into Azure:

1) From Keychain tool, Select Keys from the left pane.
2) Expand the target key that certificate contains, Right click on the certificate only and click on Export.
3) Set the password for .p12 file and save it to your disk.
4) Visit the Azure portal, Select the exported certificate (.p12) file and set the same password you set earlier in step #3 and click upload.

You will be able to successfully upload your certificate to Azure!

Enjoy!

Monday, June 20, 2016

Python for .Net Developers

Hi All,

I have been working with Python recently and i would like to share a quick and easy tutorial to learn Python for developers with OOP experience such as: C#, JAVA or .Net experience.

This is a mini course, gets you up to speed to start developing in Python with no prior knowledge because it covers what every developers wants to know for Python programming language basics.

http://ai.berkeley.edu/tutorial.html#PythonBasics

Here is my takeaways of this tutorial:

1) Python uses indentation for code execution, Python doesn't use curly brackets for opening and closing functions, classes..etc as in C# or Java. So it is preferred to use tabs than spaces while coding.

2) You can use lists ([]), dictionaries ({key:value}), tuples (()), and sets (set([list])) for storing collections in code. Use an appropriate option as in your code case. Sets items has no duplicates. Tuples are immutable (Once it is created, you can't change it).

3) You can create main function as we do in Java or C# console apps as an entry point for your program.

# Main Function
if __name__ == '__main__':        
    // YOUR CODE HERE  

4) You can include other files in your python file by adding import statement: import myotherfile, note do not include .py in the name of your python file.

5) You can define classes and functions in Python. also, you can create instance and static variables for class members.

class Person:
    population = 0
    def __init__(self, myAge):
        self.age = myAge        --> Instance Variable
        Person.population += 1  --> Static Variable 

6) You can use Visual Studio Code as a development IDE to code in Python. Download & install VS Code for free and then install Python & Python VS Code extension. Here is the steps:

a) Download Visual Studio Code for free: https://code.visualstudio.com/Download
b) Install Python on your machine: https://www.python.org/downloads/
c) Open VS Code, Press F1 and then type install extension and hit enter and then type: python. VS Code provides intellisense & debugging capabilities for Python.



Enjoy!


More useful links:

1) Python Tutorial:
https://docs.python.org/2/tutorial/ 

Thursday, June 16, 2016

Unleash the power of office add-ins with Office Development Patterns and Practices

Hi All,

I was pleased to speak at Cap Area .NET SharePoint Special Interest Group user group yesterday.
In this presentation i covered the underlying concepts of extending office applications and how Microsoft is supporting the component architecture by enabling web extensiblity framework (WEF); hence the WEF is the core runtime platform for building web based extensions or addins to office applications.

I covered the following topics:
1) Office Add-Ins overview: Add-ins shapes/types, runtime framework, anatomy of office add-in.
2) Building Office Add-Ins using open source tools such as: Yeoman tool (yeoman.io) provides a scaffolding platform for office addins templates. while when creating an add-in using yeoman tool you will be able to use any text editor to develop your office add-in.

2) VS tools for Office Add-ins: this covers updated tools in Office Developer tools in VS 2015 version 2 that contains web addins and VSTO templates as well.



Code Samples:
1) UPS Tracker Add-in on Github is here.
2) Using Yeoman Tool for building Office Add-ins: https://code.visualstudio.com/Docs/runtimes/office


Enjoy!

Wednesday, June 15, 2016

Content was blocked because it was not signed by a valid security certificate when running Office Add-Ins

Hi All,

While i was developing an office add-in and using IE to view a deployed outlook add-in i was getting the following error:

Content was blocked because it was not signed by a valid security certificate.

It turns out that this issue is related to a self signed certificate that is being used on my local web server using gulp-webserver plugin; since i am using Visual Studio code in developing my office add-ins.

If you want to configure gulp server to use a certificate, open gulpfile.js in your project and add https to the configuration of gulp web server as explained here.

The other solution is to use chrome instead and not IE since IE requires self signed certificates to be added as a trusted certificate in your machine. So if you don't want to go through adding a self signed certificate to trusted certificates store, just use chrome and your add-in will load with no issues.



Hope this helps.

Monday, June 06, 2016

How to remotely connect to a linux based Spark Cluster in Azure

Hi All,

In this blog post i am showing how to connect remotely to a Linux based Spark cluster in Azure.

Today, Microsoft has announced Spark general availability in Azure, read the official announcement here. Technical announcement from SQL Server team is here.

Spark GA in Azure


Once you provision a Linux based Spark Cluster, you are going to need to remotely login to it using SSH to start executing Spark commands using Spark Shell.

Open Azure Portal, Search for your cluster or you can find Spark clusters under HDInsight clusters tab; if you don't have it add it as a favorite tab from browse button in the portal).


Click on Secure Shell button, this will open a new blade with a host name that we will use to sign in using SSH to Spark cluster and start using Spark Shell.

Secure SSH to Spark from Azure Portal
Copy the host name if you are using windows and then run PuTTY tool to connect to Spark cluster using host name, username and password you have set when you provisioned the cluster.

SSH host name config
Then, Open PuTTY tool and enter the host name and then click on Open button.


Then, PuTTY will prompt to enter your username and password, once you are logged in successfully, you are in Spark Shell to start working with Spark!.



Hope this helps.


Friday, June 03, 2016

Thoughts on Lambda Architecture

Hi All,

Recently i have read "Big data principles and best practices of scalable real-time data systems" by Nathan Marz & James Warren. The book is very informative on analyzing how to build scalable data systems using hadoop ecosystem.

Lambda Architecture


Regardless which tools you are using to implement this but i can say the biggest take away of this book is describing in detail Lambda Architecture (LA). I am new to LA and the way how this architecture is being laid out in building highly scalable big data systems.

LA provides a separation of concerns for building large data systems especially on separating the batch from serving and speed layers.

Lambda Architecture (LA) consists of main three layers:
1) Batch Layer: contains the original master data set (immutable, append-only data) and precomupte functions over the master dataset.

Hadoop is the standard batch processing system used for most high-throughput architectures. MapReduce is used for big data computational systems. Recently, Developers lean to use Spark as a new computation system for big data computing for its high performance & in memory processing.

2) Serving Layer: contains batch views that serves the precomputed results with low-latency reads.
Examples of serving layer technologies: Apache Cassandra, Apache HBase, ElephantDB, and Cloudera Impala.

3) Speed Layer. contains real-time views that fills the latency gap by querying recently obtained data. The speed layer is responsible for any data not yet available in the serving layer.

You can use Apache Storm to perform realtime computation in the speed layer.

It is recommended to use Apache Cassandra or Apache HBase for speed layer output while ElephantDB or Cloudera Impala for batch layer output.


Hope this article helps you in getting into designing big data systems with high throughput and low latency.

Enjoy!


Resources:
a) Lambda Architecture website:
http://lambda-architecture.net/

b) Cloudera Impala:
https://en.wikipedia.org/wiki/Cloudera_Impala


Wednesday, June 01, 2016

I was a hacker at First Ever White House Foster Care & Technology Hackathon

Hi All,

Last week i was honored to participate at first ever white house foster care and technology hackathon at the white house. Through out two full days meeting with SMEs, foster parents, foster care communities nationwide, we were able to craft solutions for issues we have in the existing foster care system.


Eight teams have participated in the technology hackathon to tackle different problem statements. and in less than 24 hours of hacking i was amazed with the type of innovative solutions that those hackers have come up with.

I was part of Microsoft team that includes my colleagues Stacey Mulcahy, Heather Shapiro and Paul DeCarlo. We have built "Ask Amy" a foster care digital counselor to help pregnant mothers with substance abuse to find resources near by where they live. We had also Scott Hanselman and Yossi Banai as our advisers.

Our team was amazing and we have learned a lot about the outstanding issues we have in foster care as we heard from social workers, federal agencies, legal agencies and foster care centers.

I had so much fun hacking with Stacey, Heather, and Paul. In addition, We had insightful discussions with Commissioner López and Meagan Smith (US CTO) about challenges we faced in building our solution for substance abuse problem statement we are tackling.


Team Microsoft at White House Hackathon

Team discussion with Meagan Smith & Commissioner Lopez

You can check out what we have built "Ask Amy" in less than 24 hours here:

Thanks a lot for having me in this great initiative by the white house and looking forward to supporting more of these good causes. I would like to thank everyone who helped in managing, organizing or participating in this event.




Thanks all.

White house press release about the hackathon:

Friday, May 13, 2016

Data Science essentials in Azure ML

Hi All

I have the opportunity today to speak at RevolutionConf at Virginia Beach.

RevolutionConf is a one-day, platform and language agnostic, software development conference being held on May 13, 2016 in Virginia Beach, VA.

I had so much fun with chatting and speaking with speakers and attendees. The schedule has variety of topics, technologies and platforms talks. I am impressed and loved to be here with the crowd.

I'm glad to be a speaker at the first time RevolutionConf event and looking forward to the upcoming event next year.

Special thanks for organizers, volunteers and attendees to have such an amazing event.

Here is my presentation and talk details:

Topic: Data Science Essentials in AzureML
Description:
In this session i am covering data science principals such as: Regression, Clustering, Classification, Recommendation and how to build programmable components in Azure Machine Learning experiments using data science programming languages. The session shows and illustrate how to implement these concepts using Azure ML studio.



Data science essentials in azure ml from Mostafa Elzoghbi

References:
** Free e-book “Azure Machine Learning”
https://mva.microsoft.com/ebooks#9780735698178

** Azure Machine Learning documentation
https://azure.microsoft.com/en-us/documentation/services/machine-learning/

** Data Science and Machine Learning Essentials
www.edx.org


Thanks all and hope this helps.

Friday, May 06, 2016

Build Interactive Analytics using Power BI

Hi All,

I was happy to speak at SyntaxCon conference at Charleston, SC. I had great conversations with speakers, organizers and attendees about Tech scene in Charleston. It was my pleasure giving my talk about Power BI and interactive analytics.

** Session Title: Build Interactive Analytics using Power BI

** Session Details:
The talk will cover how to build interactive analytics, dashboards and reports in PowerBI. Using multiple data sources, synchronization schedule and sharing capabilities in PowerBI. The PowerBI web and client tool provides sophisticated tools for non-technical users to build interactive dashboards.
The session will be demo driven and will cover different use cases that use multiple data formats and sources.
-- PowerBI client tool & web capabilities
-- Interactive Dashboards and Reporting.

-- Platform capabilities such as sharing, scheduling and more.


** Presentation:



Thanks for who attended my session and asked cool questions.

Enjoy!

Conference Link: https://2016.syntaxcon.com/speakers/spotlight-mostafa-elzoghbi/

Wednesday, April 06, 2016

Power BI embedded step by step

Hi All,

In this blog post i am providing a walk through on how to use Power BI Embedded feature in an asp.net MVC application. Microsoft announced this feature in Build 2016 few days ago.
As of now, Power BI embedded feature is still in preview.

This blog post is describing how to build this app from scratch in a step by step. The source code is in GitHub as well.

Power BI Embedded allows developers to integrate Power BI capabilities in their web or mobile application with out the need to login! so customers can view your power bi reports in custom applications without the need to login or provide o365 credentials to view these reports.


To be able to use Power BI embedded you need the following:
1) A power bi report that you have created & saved in (pbix) file format.
2) Azure subscription because we need to provision Power BI workspace collection that will host our reports.
3) An application to integrate these reports to,
    a) We will create ASP.NET MVC application to visualize a reports (Step #3)
    b) We will create ASP.NET Web Forms application to visualize a report (Step #4)

Screen shot below shows an asp.net MVC application that uses Power BI embedded feature (NO LOGIN IS NEEDED!!!)



How to implement this application:

1) Provision Power BI Workspace Collection:
a) Navigate to Azure Portal, Under Data and + Analytics

Once you select Power BI Embedded, enter the following details:

  • Workspace Collection Name: Demo1
  • Subscription: Select any subscription you have.
  • Resource group: Select any RG or create a new one.
  • Location: Select any location for PBI workspace collection.
  • Click on create button

Once the Power BI Embedded workspace collection is created. We will have an empty collection.

This video shows how to implement step #1 & it covers the basics of Power BI Embedded (Optional)


2) Import pbix report file into Workspace Collection:
Microsoft has created a console application that you need to run to import pbix report file into the create workspace collection in Azure.

You can download the console app utility from GitHub here.

Open the solution in VS 2015 and set "Provision Sample" project as a startup project.
Follow these instructions to import pbix file into Azure Power BI Workspace collection.


First, we will enter "5" so we create a workspace in an existing workspace collection we have just created in step #1.

Enter Workspace Collection Name: Demo1 (Same name as we created in step #1)
Access Key: From Azure Portal, Copy Access Key (Key1) for the created Workspace collection.
Copy the generated Workspace Id, since we will use it in the next step.


Second, we will enter "6" to import pbix into the workspace we just created in the previous step.

Enter workspace collection name: Demo1
Workspace Id: copy what we have created in the previous step, also, you can get workspace if you refresh azure portal.
File Path: full file path for pbix file.

Now, we have imported our report into Power BI workspace collection that we created in Azure.

I have created a video for step #2 (Optional to watch)



3) Create ASP.NET MVC Application to use PowerBI Embedded reports:
I have checked in the code for this sample, here is what you need to know about this application.
Open Home Controller, Check Index action:

  List<ReportViewModel> reportsList = new List<ReportViewModel>();
            var devToken = PowerBIToken.CreateDevToken(this.workspaceCollection, this.workspaceId);
            using (var client = this.CreatePowerBIClient(devToken))
            {
                var reportsResponse = client.Reports.GetReports(this.workspaceCollection, this.workspaceId);
                for (int i = 0; i < reportsResponse.Value.ToList().Count; i++)
                {
                    reportsList.Add(new ReportViewModel
                    {
                        Id = reportsResponse.Value[i].Id,
                        Name = reportsResponse.Value[i].Id,
                        EmbedUrl = reportsResponse.Value[i].EmbedUrl,
                        WebUrl = reportsResponse.Value[i].WebUrl,
                        Report = reportsResponse.Value[i]
                    }
                    );
                }
            }

Above code segment connect to power bi sdk and get all reports we have in the specified workspace id. Once we have this reports list, we can embed  any of them in our pages.

 var reportId = reportsList[0].Id;
            using (var client = this.CreatePowerBIClient(devToken))
            {
                var embedToken = PowerBIToken.CreateReportEmbedToken(this.workspaceCollection, this.workspaceId, reportId);
                var viewModel = new ReportViewModel
                {
                    Report = reportsList[0].Report,
                    AccessToken = embedToken.Generate(this.accessKey)
                };
                return View(viewModel);
            }

Above code segment selects the first report and return the full report object (Power BI Report) and access token to the view (index.cshtml)

In Index.cshtml, Microsoft created an extension to HTML helper for PowerBI reports. PowerBIReportFor that renders PowerBI reports ;-) Amazing!!

<div class="side-body padding-top">
    @Html.PowerBIReportFor(m => m.Report, new { style = "height:85vh", powerbi_access_token = Model.AccessToken })
</div>
One Pro Tip: you need to make sure to include powerbi.js in any page or the masterpage (aka _layout.cshtml) to be able to show any power bi report in your page. This JS file has been added when i added powerbi nuget packages to my project.


Open the web.config and change these keys as you have in your Azure provision keys before running the application:

   <add key="powerbi:AccessKey" value="" />
   <add key="powerbi:WorkspaceCollection" value="" />
    <add key="powerbi:WorkspaceId" value="" />

Run the application :-)

I have created a video for step #3 that covers App Tokens and explains how to build the demo app (Optional)


4) Create ASP.NET Web Forms Application to use PowerBI Embedded reports:
I have checked in the code for this sample, here is what you need to know about this application.

Open the web.config and change these keys as you have in your Azure provision keys before running the application:

   <add key="powerbi:AccessKey" value="" />
   <add key="powerbi:WorkspaceCollection" value="" />
    <add key="powerbi:WorkspaceId" value="" />
In Default.aspx.cs, check out the code to connect to PBI REST API to get DevTok and then AccessToken for the displayed report.

 if (!Page.IsPostBack)
            {    

                List<ReportViewModel> reportsList = new List<ReportViewModel>();
                var devToken = PowerBIToken.CreateDevToken(workspaceCollection, workspaceId);
                using (var client = this.CreatePowerBIClient(devToken))
                {
                    var reportsResponse = client.Reports.GetReports(workspaceCollection, workspaceId);

                    for (int i = 0; i < reportsResponse.Value.ToList().Count; i++)
                    {
                        reportsList.Add(new ReportViewModel
                        {
                            Id = reportsResponse.Value[i].Id,
                            Name = reportsResponse.Value[i].Id,
                            EmbedUrl = reportsResponse.Value[i].EmbedUrl,
                            WebUrl = reportsResponse.Value[i].WebUrl,
                            Report = reportsResponse.Value[i]
                        }
                        );
                    }
                }
             
                var reportId = reportsList[0].Id;
                using (var client = this.CreatePowerBIClient(devToken))
                {
                    var embedToken = PowerBIToken.CreateReportEmbedToken(workspaceCollection, workspaceId, reportId);

                    var viewModel = new ReportViewModel
                    {
                        Report = reportsList[0].Report,
                        AccessToken = embedToken.Generate(accessKey)
                    };

                    accessTokenText.Value = viewModel.AccessToken;
                    embedUrlText.Value = viewModel.Report.EmbedUrl;
                }

In Default.aspx, check out the iframe and JS function to load PBI report:


<iframe ID="iFrameEmbedReport" src="" height="768px" width="1024px" frameborder="1" seamless></iframe>

 
    <!-- Js function to assign iframe embedUrl and access token -->
     <script type="text/javascript">

          window.onload = function () {

              //debugger;
              // find the iFrame on the page and handle the loaded event.
              var iframe = document.getElementById('iFrameEmbedReport');
              iframe.src = document.getElementById('MainContent_embedUrlText').value;  //embedReportUrl;
              iframe.onload = postActionLoadReport;
              // post the access token to the iFrame to load the tile
              function postActionLoadReport() {
                  // get the app token.
                  accessToken = document.getElementById('MainContent_accessTokenText').value;//{generate app token};
                  // construct the push message structure
                  var m = { action: "loadReport", accessToken: accessToken };
                  message = JSON.stringify(m);
                  // push the message.
                  iframe = document.getElementById('iFrameEmbedReport');
                  iframe.contentWindow.postMessage(message, "*");
              }
          };

    </script>

Here is a video for step 4 on how to use Power BI embedded in asp.net web forms:




References:
* Source Code GitHub Repos:
ASP.NET MVC: https://github.com/melzoghbi/PowerBIEmbeddedSimplified
ASP.NET Web Forms: https://github.com/melzoghbi/PowerBIEmbeddedWebForms

* Power BI Embedded Resources:
https://azure.microsoft.com/en-us/documentation/articles/power-bi-embedded-get-started/

Enjoy!

Monday, April 04, 2016

Integrate a Power BI report into an app

Hi All,

This blog post is a walk through article on how to embed a PowerBI report in an application. This blog post with source code is available in GitHub.

I can say this feature is one of the most requested features from clients i worked with directly.
Below is a screen shot of the running application i have created that contains an integrated PowerBI report i have created in Office 365 tenant using PowerBI.


How to run the application:

1) Register your application in Azure AD, here are the configurations we need to update ASP.NET MVC app:

  • Client Id
  • Secret Id
  • Return Url: If you want to change it from the original app code.
Below screen shots show Azure AD (AAD) app registration settings in Azure portal:





2) Login to your PowerBI (app.powerbi.com) and get the Report Id you want to embed in the app:

Select a report that you would like to embed, grab a report Id from the browser url.
Below screen show shows a selected report "RPT1" and highlighted ReportId we will embed in our app.




3) Open ASP.NET MVC Project settings in VS 2015 and update Client Id and Secret Id from Azure Portal after registering your app.



4) Open index.cshtml and update iframe src attribute by adding the Report Id we captured in step #2.

 <iframe ID="iFrameEmbedReport" src="https://app.powerbi.com/reportEmbed?reportId=11156ed2-ede7-4b60-ac26-10cda004bdee" height="768px" width="1024px" frameborder="1" seamless></iframe>
 5) Run the app, Click on o365 login, Sign In and then PowerBI report will be showing after your login to the app.


Demo source code url: https://github.com/melzoghbi/PowerBIEmbeddedApp


References:
1) Integrate a Power BI tile or report into an app

2) Power BI Embedded home page:
https://azure.microsoft.com/en-us/services/power-bi-embedded/

Enjoy!

Wednesday, March 16, 2016

TypeScript Jump Start

Hi All,

I had the pleasure to present "Type Script jump start" to one of our local communities. In this session i covered why do we need TypeScript? and how to integrate it in existing projects using different text editors such as: Sublime and VisualStudio Code.

The presentation covered the most needed benefits/features of TypeScript in creating: classes, interfaces, inheritance, generics, modules and compile time checking.

If you have not had a chance to use TypeScript in Sublime, i have posted a blog post on how to get this setup on your machine:
http://www.mostafaelzoghbi.com/2016/03/how-to-use-typescript-in-sublime-text.html 

Channel 9 video:



Here is my presentation for this talk:



Enjoy.


Monday, March 14, 2016

How to use TypeScript in Sublime Text Editor

Hi All,


If you are trying to use TypeScript features in Sublime Text 3. This blog post describes step by step on how to start coding and utilize TypeScript features including intelliSense, compile time checking, validation...etc in Sublime.

Follow this walkthrough:

1) You need to have Package Control in Sublime, if you do not have it follow below steps. otherwise, continue reading step 2.

  • Open sublime text console by clicking on the top menu: View --> Show Console

  • Upon opening the console, you will see the console shows at the bottom of sublime

  • Copy this text in the console

import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
  • Close and re-open sublime text 3
2) We need to install TypeScript from Package Control by searching for this package. To open package control, We need to open Command Palette from tools menu.



3) Then type Install Package in the popup window.



4) Package Control will popup and then search for TypeScript plugin by writing: TypeScript and then select the package.

Note: you will notice i do not have typescript screenshot since it is already installed on sublime

5) Now, try to add any TypeScript file (with .ts extension) and you will be able to use TS features while writing code in Sublime Text!



Enjoy!


Wednesday, March 09, 2016

Understand Hadoop ecosystem and how to get started in HDInsight clusters using Azure


Hi All,

I have posted a video to demonstrate how to build your skills in Hadoop ecosystem by understanding the key products in building big data solutions using HDFS, HBase, Storm and Spark.
The video is a jump start to understand key components of Hadoop stack on building big data solutions, storing NoSQL data, processing and ingesting data using computation platforms.


Video Details:
The video covers how to get started to build big data solutions in Azure. Azure provides different Hadoop clusters for Hadoop ecosystem. The video covers the basic understanding of HDInsight clusters including: Apache Hadoop, HBase, Storm and Spark. The video covers how to integrate with HDInsight in .NET using different Hadoop integration frameworks and libraries. The video is a jump start for engineers and DBAs with RDBMS experience who are looking for a jump start working and developing Hadoop solutions. The video is a demo driven and will cover the basics of Hadoop open source products.







Hope you enjoy it!

Tuesday, March 08, 2016

Azure App Service in depth

Hi All,

I have published a new video on how to build web, mobile and api applications using Azure App service.


Video Details:

In this video i am describing in depth out of the box features for Azure App Service. Azure App service allows developers to build web, mobile and api applications using your favorite programming language. 
The video shows how to provision azure app service without the need to have azure subscription to get a sense of what can you build with azure app service. Also, we cover how to use azure portal features for app services in terms of: scalability,security, automated backups, deployment slots, VNet integration vs Hybrid networking and much more.
Hope you enjoy it!

Build micro-services in Azure Cloud Services

Hi All,

I have published a new video to cover how to build scalable micro-services in Azure using cloud services. The video covers who to use web and worker roles in cloud services. In addition when to use worker roles vs. web jobs for backend jobs.


Video Details: "Build Intelligent Cloud Services using Azure"

The session covers how to build web, mobile, Api solutions using Microsoft Azure platform. The session covers in detail how to build intelligent solutions using Azure Cloud Services. The session is a demo driven and demonstrate how to design and provision complete end-to-end solutions using Microsoft intelligent cloud.
Session Objectives & Takeaways
  • Benefits of creating micro services in the cloud using Azure cloud services
  • Showing End-To-End Use case for building cloud service with web & worker roles with service bus integration
GitHub Repo:


Enjoy!

Saturday, February 27, 2016

Azure Scheduler fails to trigger scheduled WebJob published with WebApp

Hi All,

I am writing this blog post to show how to fix Azure scheduler fails to kicks off webjobs in Azure webapp while when you try to run webjobs through the portal it works.

I have a web app that has couple of webjobs in my solution. While adding these webjobs to my web app, I configured these two webjobs to run on different schedules. After i deploy the web app to Azure, I found out that the Azure Scheduler fails to run the second web job but not the first webjob!!

After carefully checking all the configs for both webjobs, I found this was the error that is being thrown by the Azure Scheduler for my second webjob:

Unauthorized: Access is denied due to invalid credentials.

Detailed error message:

Http Action - Response from host 'MYWEBSITEwebjobs.scm.azurewebsites.net': 'Unauthorized' Response Headers: Date: Sat, 27 Feb 2016 12:02:01 GMT
Server: Microsoft-IIS/8.0
WWW-Authenticate: Basic realm="site"
 Body: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>  <title>401 - Unauthorized: Access is denied due to invalid credentials.</title>  <style type="text/css">  <!--  body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}  fieldset{padding:0 15px 10px 15px;}   h1{font-size:2.4em;margin:0;color:#FFF;}  h2{font-size:1.7em;margin:0;color:#CC0000;}   h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}   #header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;  background-color:#555555;}  #content{margin:0 0 0 2%;position:relative;}  .content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}  -->  </style>  </head>  <body>  <div id="header"><h1>Server Error</h1></div>  <div id="content">   <div cla


The solution is the first webjob has the authorization header while the second doesn't. This probably is an issue with VS2015 deployment with Azure SDK.


So you just need to copy these header values from the first webjob to the second one and wait until the scheduler kicks off and things will be working as expected.

Screenshot of the two header values that i have added to my second webjob in Azure Portal scheduler settings:



Enjoy!

Sunday, February 21, 2016

Build Big Data Solutions in Azure using HDInsight


Hi All,

I am posting this post to share my recent presentation on building big data solutions in Azure.



The session covers how to get started to build big data solutions in Azure. Azure provides different Hadoop clusters for Hadoop ecosystem. The session covers the basic understanding of HDInsight clusters including: Apache Hadoop, HBase, Storm and Spark. The session covers how to integrate with HDInsight in .NET using different Hadoop integration frameworks and libraries. The session is a jump start for engineers and DBAs with RDBMS experience who are looking for a jump start working and developing Hadoop solutions. The session is a demo driven and will cover the basics of Hadoop open source products.




Wednesday, February 17, 2016

Build Intelligent Solutions using Azure

Hi All,

Last night i was honored to present to one of our local user groups in DC about how to build intelligent solutions using Azure.

In this session, I was illustrating different scenarios and practical approaches on building microservices that are elastic and resilient into the cloud. I covered with a practical use case on how to build cloud services that have web and worker roles that integrates with services bus queue as an intercommunication channel between web and worker roles. Also, I covered how to add web jobs into web roles into cloud services as well.

The second part of the presentation was covering Azure App services including: web apps, mobile apps, logic apps and api apps. Then , I covered lots of intelligent features that Azure offers to build intelligent solutions from backup automation, continuous integration, traffic routing, troubleshooting features and deployment slots.


Session Description is below:

The session covers how to build web, mobile, Api solutions using Microsoft Azure platform. The session covers in detail how to build intelligent solutions using Azure App Service. Azure App Service includes web apps, logic apps and mobile apps services as PaaS solutions for engineers. The session is a demo driven and demonstrate how to design and provision complete end-to-end solutions using Microsoft intelligent cloud.


Build intelligent solutions using ms azure from Mostafa Elzoghbi

Case Manager Demo code is on GitHub: https://github.com/melzoghbi/AzureCloudServices

At the end of the event, I had some giveaways that are IoT sensor Kits and "Fundamentals of Azure" books. Most audience asked about how to get the pdf of this book, here is the download link:

Fundamentals of Azure book download link


Hope this helps.