Quantcast
Channel: Category Name
Viewing all 10804 articles
Browse latest View live

Getting personal – Jan 5

$
0
0

Note: The improvements discussed in this post will be rolling out throughout the next week.

Happy new year! You may have noticed we skipped our last deployment due to the holidays, so this deployment comes with two sprints of goodies. One of the key themes across the team is to bring more social and personal experiences into the product. You’re going to see a steady stream of those new experiences throughout the year. We’re starting the year with the first collection of these.

Try out new features we are working on

Your feedback is super important to us, and getting this feedback while we are still developing a feature helps ensure we create something that you and our other customers will love. At the same time, we know new features can be disruptive. Therefore, starting with this release, select features we are working on will be made available for you to opt in and try early. Opt in when you are ready and opt out at anytime.

To see the features available for you to try, go to Preview features in the profile menu.

preview menu

Switch the toggle to opt in or out of a feature.

preview toggle

Note that some features are only available to account administrators to turn on or off for all users in the account.

Your Team Services is even more personalized

With this release, it is super easy for you to access artifacts that are most important for you. The redesigned account page has a personalized experience that shows the Projects, Favorites, Work, and Pull Requests you care about. This makes it a great way to start your day. You can go to one place and quickly find everything you need to do and care about.

Projects

The Projects page is the one stop for you to access your recently visited projects and teams. You can also browse or look up all projects and teams within your account and then quickly navigate to the relevant hub for that project.

project homepage

My Favorites

The Favorites page allows you to view all your favorite artifacts in one place. So the next time you visit a project, team, repo, branch, build definition, or query of your interest, simply favorite it so that you can quickly navigate to it from the favorites page.

homepage favorites

My Work

Start your day at the My work items page to access easily all the work items assigned to you across all projects. It also lets you check and access the status of all the work items that you are following or those that you recently viewed.

homepage mywork

My Pull Requests

If you work on a lot of repos across multiple projects, it’s a pain to get to the pull requests that you created or those that require your review. Not anymore! The My Pull Requests page shows all pull requests that require your attention in one place.

homepage pull requests

How do I get there?

You can easily navigate to your personalized account page in Team Services by clicking the Visual Studio logo on the top left of the navigation bar. You can also hover over the logo and directly navigate to your recent project or one of the account home page pivots. We’ve also promoted Dashboards up as a top-level menu item.

homepage navigation

How to opt in

Like most major changes to the user experience, we are phasing this change in gradually to minimize the disruption of the change. To try out the feature, hover over your avatar image then click Preview features. Set the toggle for New Account Landing Page to On. If you want to revert to the current experience, click on the avatar image, click Preview features, then toggle New Account Landing Page to Off . In a future sprint we will switch this to on by default and then remove the ability to revert to the old experience.

homepage opt in

Your project gets an identity

There’s now one place to get an overview of your project. The new project page makes it easy to view and edit the project description, view and add members, and check up on the latest activity. It’s even easier to get started with a new project and leverage all the built-in DevOps functionality of Team Services.

Improved getting started experience

The new project page guides you to get started quickly by adding code to your repository when you choose one of the options to clone, push, import, or simply initialize a repo. You can easily get started by adding members, setting up builds, or adding work from this page.

homepage project

Talk about your project

Create an identity and describe the vision and objectives of your project. The new project home page pulls data from the various hubs to give visitors a bird’s-eye view of your project activity.

project overview

Attachments in PR discussions

You can now add attachments to your pull request comments. Attachments can be added by drag-and-drop or by browsing. For images, attachments can be added by simply pasting from the clipboard. Adding an attachment automatically updates the comment to include a Markdown reference to the new attachment.

PR attachments

Support file exclusions in the required reviewer policy

When specifying required reviewers for specific file paths, you can now exclude paths by using a “!” prefix to the path you want to exclude. For example, you can use this to exclude a docs folder from your normally required signoff.

file exclusions

Highlight the PRs that have updates

It’s now easier than ever to see the updates to your pull requests. In the PR list view, PRs with changes since you've last seen them are shown with a new updates column that shows a roll-up of the changes.

PR updated files

When you view a PR that has changes, you’ll see a similar summary message in the overview, where new pushes and comment threads are highlighted in blue. Clicking the View code updates link will navigate to the Files view, where a diff of the new changes since you last viewed the pull request is shown. This feature makes it easy to follow up on a PR where the author made changes in response to feedback.

PR summary

Branch policy for PR merge strategy

We’ve added a new branch policy that lets you define a strategy for merging pull requests for each branch. Previously, the decision to either merge or squash was chosen by each user at the time a PR was completed. If enabled, this policy will override the user’s preferences, enforcing the requirement set by the policy.

branch policy

Expose merge conflict information

If there are any files with conflicts in a pull request, the details about those conflicts will now be visible in the overview. Each conflicting file will be listed along with a short summary of the type of conflict between the source and target branches.

merge conflicts

Team Room deprecation

With so many good solutions available that integrate well with TFS and Team Services, such as Slack and Microsoft Teams, we have made a decision to deprecate our Team Room feature from both TFS and Team Services. If you are working in Team Services, you will see a new yellow banner appear that communicates our plan. Later this year, we plan to turn off the Team Room feature completely.

There are several alternatives you can use. The Team room is used both for a notification hub as well as for chat. TFS and Team Services already integrate with many other collaboration products including Microsoft Teams, Slack, HipChat, Campfire and Flowdock. You can also use Zapier to create your own integrations, or get very granular control over the notifications that show up.

More information is available in this blog post.

New notification settings experience

Notifications help you and your teams stay informed about activity in your Team Services projects. With this update, it’s now easier to manage what notifications you and your teams receive.

Users now have their own account-level experience for managing notification settings (available via the profile menu).

notification settings

This view lets users manage personal subscriptions they have created. It also shows subscriptions created by team administrators for all projects in the account.

notification profile

Learn more about managing personal notification settings.

New delivery options for team subscriptions

Team administrators can manage subscriptions shared by all members of the team in the Notifications hub under team settings. Two new delivery options are now available when configuring a team subscription: send the email notification to a specific email address (like the team’s distribution list), or send the notification to only team members associated with the activity.

notification delivery

Learn more about managing team subscriptions.

Out of the box notifications (preview)

Prior to this feature, users would need to manually opt in to any notifications they wanted to receive. With out-of-the-box notifications (which currently must be enabled by an account administrator), users automatically receive notifications for events such as:

  • The user is assigned a work item
  • The user is added or removed as a reviewer to a pull request
  • The user has a pull request that is updated
  • The user has a build that completes

These subscriptions appear in the new user notifications experience, and users can easily choose to opt out of any of them.

notifications oob

To enable this feature for the account, an account administrator needs to go to Preview features under the profile menu, select From this account from the drop-down, then toggle on the Out of the box notifications feature.

notifications oob opt in

Learn more about out of the box subscriptions.

New hosted build image

We have deployed a new hosted build image with the following updates:

  • .NET Core 1.1
  • Android SDK v25
  • Azure CLI 0.10.7
  • Azure PS 3.1.0
  • Azure SDK 2.9.6
  • Cmake 3.7.1
  • Git for Windows 2.10.2
  • Git LFS 1.5.2
  • Node 6.9.1
  • Service Fabric SDK 2.3.311
  • Service Fabric 5.3.311
  • Typescript 2.0.6 for Visual Studio 2015
  • Permissions changes to allow building of .NET 3.5 ASP.NET Web Forms projects

Firefox support for Test & Feedback extension

We are happy to announce the General Availability of the Test & Feedback extension for Firefox. You can download the Firefox add-on from our marketplace site.

Note: Support for Edge browser is also in the works; stay tuned for more updates

Favorites for Test Plans

You can now favorite the Test Plans you work with most frequently. In the Test Plans picker, you will see tabs for All your Test Plans and Favorites. Click the star icon to add a Test Plan to your list of favorites. The favorited Test Plans are accessible in the Test Plans picker and from the Favorites tab in the new account home page. You can also filter Test Plans by searching on the title field.

test plans

test favorites

Test Impact Analysis for managed automated tests

Test Impact Analysis for managed automated tests is now available via a checkbox in the 2.* preview version of the VSTest task.

test impact

If enabled, only the relevant set of managed automated tests that need to be run to validate a given code change will run. Test Impact Analysis requires the latest version of Visual Studio, and is presently supported in CI for managed automated tests.

SonarQube MSBuild tasks

SonarQube MSBuild tasks are now available from an extension provided by SonarSource. For more details, please read SonarSource have announced their own SonarQube Team Services / TFS integration.

Improved experience for Code Search results

There have been improvements to the Code Search results pane:

  • The filename is more prominent and clickable
  • We've added contextual actions:
    • Browse file
    • Download
    • Copy path
    • Get link to file

code search

Release Management parallel execution

Release Management now supports a parallel execution option for a phase. Select this option to fan out a phase by using either Multi-configuration or Multi-agent as a phase multiplier option.

parallel execution

  • Multi-configuration: Select this option to run the phase for each multi-configuration value. For example, if you wanted to deploy to two different geos at the same time, using a variable ReleasePlatform defined on the Variables tab with values "east-US, west-US" would run the phase in parallel, one with a value of "east-US" and the other "west-US”.
  • Multi-agent: Select this option to run the phase with one or more tasks on multiple agents in parallel.

Inline service endpoints

You can now create an endpoint within a build or release definition without having to switch to the Services tab. To do so, click the Add link next to the endpoint field.

endpoints

Multiple release triggers with branch and tag filters

Release management now supports setting up CD triggers on multiple Build artifact sources. When added, a new release is created automatically when a new artifact version is available for any of the specified artifact sources.

You can also specify the source branch for the new build to trigger a release. Additionally, tag filters can be set to further filter the builds that should trigger a release.

triggers

Set defaults for artifact sources in RM

Users can define the default artifact version to deploy in a release when linking an artifact source in a definition. When a release is created automatically, the default version for all the artifact sources will be deployed.

default artifact

Variable groups support in RM

Variable groups are used to group your variables and their values that you want to make available across multiple release definitions. You can also manage security for variable groups and chose who can view, edit and consume the variables from the variable groups in your release definitions.

Open Library tab in Build & Release hub and choose + Variable group in the toolbar. Find more information about variable groups under Release definitions in Microsoft Release Management in the Visual Studio documentation.

default artifact

As always, if you have ideas on things you’d like to see us prioritize, head over to UserVoice to add your idea or vote for an existing one.

Thanks,

Jamie Cool


Delivery Plans and mobile work item form – Jan 25

$
0
0

Note: The improvements discussed in this post will be rolling out throughout the next week.

Happy new year! You may have noticed we skipped our last deployment due to the holidays, so this deployment comes with two sprints of goodies. One of the key themes across the team is to bring more social and personal experiences into the product. You’re going to see a steady stream of those new experiences throughout the year. We’re starting the year with the first collection of these.

Try out new features we are working on

Your feedback is super important to us, and getting this feedback while we are still developing a feature helps ensure we create something that you and our other customers will love. At the same time, we know new features can be disruptive. Therefore, starting with this release, select features we are working on will be made available for you to opt in and try early. Opt in when you are ready and opt out at anytime.

To see the features available for you to try, go to Preview features in the profile menu.

preview menu

Switch the toggle to opt in or out of a feature.

preview toggle

Note that some features are only available to account administrators to turn on or off for all users in the account.

Your Team Services is even more personalized

With this release, it is super easy for you to access artifacts that are most important for you. The redesigned account page has a personalized experience that shows the Projects, Favorites, Work, and Pull Requests you care about. This makes it a great way to start your day. You can go to one place and quickly find everything you need to do and care about.

Projects

The Projects page is the one stop for you to access your recently visited projects and teams. You can also browse or look up all projects and teams within your account and then quickly navigate to the relevant hub for that project.

project homepage

My Favorites

The Favorites page allows you to view all your favorite artifacts in one place. So the next time you visit a project, team, repo, branch, build definition, or query of your interest, simply favorite it so that you can quickly navigate to it from the favorites page.

homepage favorites

My Work

Start your day at the My work items page to access easily all the work items assigned to you across all projects. It also lets you check and access the status of all the work items that you are following or those that you recently viewed.

homepage mywork

My Pull Requests

If you work on a lot of repos across multiple projects, it’s a pain to get to the pull requests that you created or those that require your review. Not anymore! The My Pull Requests page shows all pull requests that require your attention in one place.

homepage pull requests

How do I get there?

You can easily navigate to your personalized account page in Team Services by clicking the Visual Studio logo on the top left of the navigation bar. You can also hover over the logo and directly navigate to your recent project or one of the account home page pivots. We’ve also promoted Dashboards up as a top-level menu item.

homepage navigation

How to opt in

Like most major changes to the user experience, we are phasing this change in gradually to minimize the disruption of the change. To try out the feature, hover over your avatar image then click Preview features. Set the toggle for New Account Landing Page to On. If you want to revert to the current experience, click on the avatar image, click Preview features, then toggle New Account Landing Page to Off . In a future sprint we will switch this to on by default and then remove the ability to revert to the old experience.

homepage opt in

Your project gets an identity

There’s now one place to get an overview of your project. The new project page makes it easy to view and edit the project description, view and add members, and check up on the latest activity. It’s even easier to get started with a new project and leverage all the built-in DevOps functionality of Team Services.

Improved getting started experience

The new project page guides you to get started quickly by adding code to your repository when you choose one of the options to clone, push, import, or simply initialize a repo. You can easily get started by adding members, setting up builds, or adding work from this page.

homepage project

Talk about your project

Create an identity and describe the vision and objectives of your project. The new project home page pulls data from the various hubs to give visitors a bird’s-eye view of your project activity.

project overview

Attachments in PR discussions

You can now add attachments to your pull request comments. Attachments can be added by drag-and-drop or by browsing. For images, attachments can be added by simply pasting from the clipboard. Adding an attachment automatically updates the comment to include a Markdown reference to the new attachment.

PR attachments

Support file exclusions in the required reviewer policy

When specifying required reviewers for specific file paths, you can now exclude paths by using a “!” prefix to the path you want to exclude. For example, you can use this to exclude a docs folder from your normally required signoff.

file exclusions

Highlight the PRs that have updates

It’s now easier than ever to see the updates to your pull requests. In the PR list view, PRs with changes since you've last seen them are shown with a new updates column that shows a roll-up of the changes.

PR updated files

When you view a PR that has changes, you’ll see a similar summary message in the overview, where new pushes and comment threads are highlighted in blue. Clicking the View code updates link will navigate to the Files view, where a diff of the new changes since you last viewed the pull request is shown. This feature makes it easy to follow up on a PR where the author made changes in response to feedback.

PR summary

Branch policy for PR merge strategy

We’ve added a new branch policy that lets you define a strategy for merging pull requests for each branch. Previously, the decision to either merge or squash was chosen by each user at the time a PR was completed. If enabled, this policy will override the user’s preferences, enforcing the requirement set by the policy.

branch policy

Expose merge conflict information

If there are any files with conflicts in a pull request, the details about those conflicts will now be visible in the overview. Each conflicting file will be listed along with a short summary of the type of conflict between the source and target branches.

merge conflicts

Team Room deprecation

With so many good solutions available that integrate well with TFS and Team Services, such as Slack and Microsoft Teams, we have made a decision to deprecate our Team Room feature from both TFS and Team Services. If you are working in Team Services, you will see a new yellow banner appear that communicates our plan. Later this year, we plan to turn off the Team Room feature completely.

There are several alternatives you can use. The Team room is used both for a notification hub as well as for chat. TFS and Team Services already integrate with many other collaboration products including Microsoft Teams, Slack, HipChat, Campfire and Flowdock. You can also use Zapier to create your own integrations, or get very granular control over the notifications that show up.

More information is available in this blog post.

New notification settings experience

Notifications help you and your teams stay informed about activity in your Team Services projects. With this update, it’s now easier to manage what notifications you and your teams receive.

Users now have their own account-level experience for managing notification settings (available via the profile menu).

notification settings

This view lets users manage personal subscriptions they have created. It also shows subscriptions created by team administrators for all projects in the account.

notification profile

Learn more about managing personal notification settings.

New delivery options for team subscriptions

Team administrators can manage subscriptions shared by all members of the team in the Notifications hub under team settings. Two new delivery options are now available when configuring a team subscription: send the email notification to a specific email address (like the team’s distribution list), or send the notification to only team members associated with the activity.

notification delivery

Learn more about managing team subscriptions.

Out of the box notifications (preview)

Prior to this feature, users would need to manually opt in to any notifications they wanted to receive. With out-of-the-box notifications (which currently must be enabled by an account administrator), users automatically receive notifications for events such as:

  • The user is assigned a work item
  • The user is added or removed as a reviewer to a pull request
  • The user has a pull request that is updated
  • The user has a build that completes

These subscriptions appear in the new user notifications experience, and users can easily choose to opt out of any of them.

notifications oob

To enable this feature for the account, an account administrator needs to go to Preview features under the profile menu, select From this account from the drop-down, then toggle on the Out of the box notifications feature.

notifications oob opt in

Learn more about out of the box subscriptions.

New hosted build image

We have deployed a new hosted build image with the following updates:

  • .NET Core 1.1
  • Android SDK v25
  • Azure CLI 0.10.7
  • Azure PS 3.1.0
  • Azure SDK 2.9.6
  • Cmake 3.7.1
  • Git for Windows 2.10.2
  • Git LFS 1.5.2
  • Node 6.9.1
  • Service Fabric SDK 2.3.311
  • Service Fabric 5.3.311
  • Typescript 2.0.6 for Visual Studio 2015
  • Permissions changes to allow building of .NET 3.5 ASP.NET Web Forms projects

Firefox support for Test & Feedback extension

We are happy to announce the General Availability of the Test & Feedback extension for Firefox. You can download the Firefox add-on from our marketplace site.

Note: Support for Edge browser is also in the works; stay tuned for more updates

Favorites for Test Plans

You can now favorite the Test Plans you work with most frequently. In the Test Plans picker, you will see tabs for All your Test Plans and Favorites. Click the star icon to add a Test Plan to your list of favorites. The favorited Test Plans are accessible in the Test Plans picker and from the Favorites tab in the new account home page. You can also filter Test Plans by searching on the title field.

test plans

test favorites

Test Impact Analysis for managed automated tests

Test Impact Analysis for managed automated tests is now available via a checkbox in the 2.* preview version of the VSTest task.

test impact

If enabled, only the relevant set of managed automated tests that need to be run to validate a given code change will run. Test Impact Analysis requires the latest version of Visual Studio, and is presently supported in CI for managed automated tests.

SonarQube MSBuild tasks

SonarQube MSBuild tasks are now available from an extension provided by SonarSource. For more details, please read SonarSource have announced their own SonarQube Team Services / TFS integration.

Improved experience for Code Search results

There have been improvements to the Code Search results pane:

  • The filename is more prominent and clickable
  • We've added contextual actions:
    • Browse file
    • Download
    • Copy path
    • Get link to file

code search

Release Management parallel execution

Release Management now supports a parallel execution option for a phase. Select this option to fan out a phase by using either Multi-configuration or Multi-agent as a phase multiplier option.

parallel execution

  • Multi-configuration: Select this option to run the phase for each multi-configuration value. For example, if you wanted to deploy to two different geos at the same time, using a variable ReleasePlatform defined on the Variables tab with values "east-US, west-US" would run the phase in parallel, one with a value of "east-US" and the other "west-US”.
  • Multi-agent: Select this option to run the phase with one or more tasks on multiple agents in parallel.

Inline service endpoints

You can now create an endpoint within a build or release definition without having to switch to the Services tab. To do so, click the Add link next to the endpoint field.

endpoints

Multiple release triggers with branch and tag filters

Release management now supports setting up CD triggers on multiple Build artifact sources. When added, a new release is created automatically when a new artifact version is available for any of the specified artifact sources.

You can also specify the source branch for the new build to trigger a release. Additionally, tag filters can be set to further filter the builds that should trigger a release.

triggers

Set defaults for artifact sources in RM

Users can define the default artifact version to deploy in a release when linking an artifact source in a definition. When a release is created automatically, the default version for all the artifact sources will be deployed.

default artifact

Variable groups support in RM

Variable groups are used to group your variables and their values that you want to make available across multiple release definitions. You can also manage security for variable groups and chose who can view, edit and consume the variables from the variable groups in your release definitions.

Open Library tab in Build & Release hub and choose + Variable group in the toolbar. Find more information about variable groups under Release definitions in Microsoft Release Management in the Visual Studio documentation.

default artifact

As always, if you have ideas on things you’d like to see us prioritize, head over to UserVoice to add your idea or vote for an existing one.

Thanks,

Jamie Cool

PR usability improvements & richer Github build integration – Feb 15

$
0
0

Note: The improvements discussed in this post are features that will be rolling out over the next three weeks.

We have a few feature improvements this sprint. Let’s get right into it...

Improved support for team PR notifications

Working with pull requests that are assigned to teams is getting a lot easier. When a PR is created or updated, email alerts will now be sent to all members of all teams that are assigned to the PR.

This feature is in preview and requires an account admin to enable it from the Preview features panel (available under the profile menu).

preview panel

After selecting for this account, switch on the Team expansion for notifications feature.

team notification preview

In a future release, we’ll be adding support for PRs assigned to Azure Active Directory (AAD) groups and teams containing AAD groups.

Improved CTAs for PR author and reviewers

For teams using branch policies, it can sometimes be hard to know exactly what action is required when you view a pull request. If the main call to action is the Complete button, does that mean it’s ready to complete? Using information about the person viewing the page and the state of configured branch policies, the PR view will now present the call to action that makes the most sense for that user.

When policies are configured, but aren’t yet passing, the Complete button will now encourage the use of the Auto-complete feature. It’s not likely that you’ll be able to complete the PR successfully if policies are blocking, so we offer an option that will complete the PR when those policies eventually pass.

cta in pr

For reviewers, it’s more likely that you’ll want to approve a PR than complete it, so reviewers will see the Approve button highlighted as the main CTA if you haven’t approved yet.

cta approve

Once approved, reviewers will see the Complete (or Auto-complete) button highlighted as the CTA for those cases where a reviewer is also the person completing the PR.

Actionable comments

In a PR with more than a few comments, it can be hard to keep track of all of the conversations. To help users better manage comments, we’ve simplified the process of resolving items that have been addressed with a number of enhancements:

  • In the header for every PR, you’ll now see a count of the comments that have been resolved.

pr header

  • When a comment has been addressed, you can resolve it with a single click.

resolve button

  • If you have comments to add while you’re resolving, you can reply and resolve in a single gesture.

reply and resolve

  • As comments are resolved, you’ll see the count go up until everything has been addressed.

pr header

  • The filter in the Overview has been improved to enable filtering by various comment states and to show the count of comments for each filter option.

pr filter

Updates view shows rebase and force push

In the Pull Request details view, the Updates tab has been improved to show when a force push has occurred and if the base commit has changed. These two features are really useful if you rebase changes in your topic branches before completing your PRs. Reviewers will now have enough info to know exactly what’s happened.

updates views

Improved commit filtering

You can now filter the commit history results by advanced filtering options. You can filter commits by:

  • full history
  • full history with simplified merges
  • first parent
  • simple history (This is the default filter setting)

filtering

Github pull request builds

For a while we’ve provided CI builds from your GitHub repo. Now we’re adding a new trigger so you can build your GitHub pull requests automatically. After the build is done, we report back with a comment in your GitHub pull request.

For security, we only build pull requests when both the source and target are within the same repo. We don’t build pull requests from a forked repo.

github builds

Maintenance for working directories

You can now configure agent pools to periodically clean up stale working directories and repositories. This should reduce the potential for the agents to run out of disk space. The maintenance is done per agent, not per machine; so if you have multiple agents on a single machine, you may still run into disk space issues.

agent maintenance

Agent selection improvement

The agent selection now takes machine activity into account when allocating an agent for a build or release. This will cause a build or release to be sent to an agent on an idle machine before selecting agents on a machine with other agents that are currently busy.

Run tests using Agent Phases

Using the Visual Studio Test task, you can now run automated tests using agent phases.

We now have a unified automation agent across build, release and test. This brings in the following benefits:

  1. You can leverage an agent pool for your testing needs.
  2. Run tests in different modes using the same Visual Studio Test task, based on your needs—single agent–based run, multi-agent–based distributed test run or a multi-configuration run to run tests on, say, different browsers.

agent phases

For more information, refer to the this post.

Multiple versions of Extension tasks

Extension authors can now create extensions with multiple versions of a given task, which enables them to ship patches for each major version they have in production.

See Reference for creating custom build tasks within extensions.

Extension management permissions and new email notifications

Any user or group can be given permission to manage extensions for the account. Previously, only account administrators could review extension requests or install, disable, or uninstall extensions. To grant this permission, an administrator can navigate to the Extensions admin hub by opening the Marketplace menu, selecting Manage extensions, and then click the Security button.

extension permissions

Also new this sprint, a user who requests an extension is now notified via email when that request is approved or rejected.

Updated Package Management experience

We’ve updated the Package Management user experience to make it faster, address common user-reported issues, and make room for upcoming package lifecycle features. Learn more about the update here, or turn it on using the toggle in the Packages hub.

package management

Support for AAD conditional access

Team Services can now be explicitly selected as the target for Azure Active Directory (AAD) conditional access policy. This lets enterprises control where and how their users can access VSTS. Visit the Microsoft Azure documentation site to learn more about conditional access policy.

aad conditional access

Pipelines queue

With the new Pipelines queue feature, we have provided a way to find the current state of a build/release in a pipeline.

resource limits

On launching the Pipelines queue, you can see the following information:

  1. Builds and releases waiting for a pipeline to execute and their position in the waiting queue.
  2. Builds and releases currently running using available pipelines.

release in progress

While your build/release is waiting for a pipeline, you can also directly launch this view from inside the build/release logs page and find its current position in the pipeline queue and other details.

We think these features will help improve your workflows while addressing feedback, but we would love to hear what you think. Please don’t hesitate to send a smile or frown through the web portal, or send other comments through the Team Services Developer Community. As always, if you have ideas on things you’d like to see us prioritize, head over to UserVoice to add your idea or vote for an existing one.

Thanks,

Jamie Cool

How do industry leaders set their mobile apps apart?

$
0
0

The past few years, innovation and increasingly savvy users have dramatically raised the bar for app quality. Industry leaders have taken notice, and they’re capitalizing on three core trends to stay ahead of their users—and their competition: (1) transitioning from basic apps to amazing mobile experiences; (2) evolving from simple, data-aware functions to intelligent, data-driven apps that learn and improve; and (3) shifting from building one-off apps to creating a mobile portfolio. Discover how you can apply these same ideas to transform your mobile experiences and grow your business.

Want more insights into the strategies discussed in this post? Read the e-book, Out-mobile the competition: Learn how to set your apps apart with mobile DevOps and the cloud.

Shift 1: From good apps to amazing experiences

Keep users coming back

Standard, functional apps are no longer enough. Today’s mobile users, whether they’re customers or employees, want more than well-designed user interfaces, geolocation, and other ‘standard’ app functionality. They demand fully native mobile apps, with fast, relevant, and personalized features that work well on their device of choice.

Bloomin’ Brands, Inc., uses mobile to redefine the casual dining experience, build customer loyalty, and ensure repeat visitors. For its Outback Steakhouse brand, the Outback Steakhouse app enables customers to quickly and easily locate and reserve tables at nearby locations, automatically check in with hosts, get seated, pay for meals, and redeem vouchers.

See how users love the five-star apps from Outback Steakhouse:

Treat every user like a consumer

There’s no longer a distinction between “enterprise” and “consumer” apps. Employees expect the same seamless and convenient experiences from their workplace apps that they get from their personal apps. If IT fails to deliver, employees quickly abandon apps—and organizations are left with wasted effort and investments.

Alaska Airlines sets the standard for treating its team members just like customers, with a portfolio of employee-facing apps that mirror Alaska’s consumer user experience. Its internal Hopper app, for example, lets employees access their travel benefits from anywhere, automatically check in, view flight status, and receive mobile boarding passes.

See how Alaska brings the consumer experience to employees:

Shift 2: From data-aware apps to data-driven intelligence

Turn data into insights

Five-star apps do more than merely allow users to enter and edit data—they’re driven by data intelligence. They locate users, track how users are interacting with their apps, understand what customers are purchasing, and much more. This information helps companies recognize trends, increase customer loyalty or employee satisfaction, and make informed business decisions.

Nuvem Tecnologia combines mobile and the cloud to connect big data capabilities with rural farmers everywhere. Nuvem Tecnologia’s AgroSIG app modernizes complex agricultural processes for farmers throughout Brazil, centralizing farm data and eliminating error-prone paper reporting. From analyzing historical data to identifying pest problems with GPS and device photo capture, the AgroSIG app equips farmers with the information they need to make real-time decisions and improve their harvests.

See how Nuvem drives agricultural processes with data:

Shift 3: From individual apps to a multi-app portfolio

Create an innovation hub

The third major shift isn’t about the mobile app experience itself, but about the way your business creates and updates apps. You need to think about your mobile strategy as a core component of your business strategy, starting by moving from monolithic apps to an entire portfolio of role- or function-specific apps.

Industry leaders have repeatable, automated processes, giving them the fast feedback and release cycles they need to deliver new projects and continuously improve existing apps.

Dutch Railways embodies this trend of reimagining mobile experiences and shifting from weighty, monolithic apps that “do everything” to single-purpose, lightweight apps. Instead of simply rebuilding the existing Rail Pocket—Dutch Railways’ clunky, legacy communication system—for new devices, the development team created eight function-specific apps, including time sheets, train timetables, maintenance logs, and more. Now, Dutch Railways can quickly and easily improve apps and add new functionality.

See how Dutch Railways creates fast, data-rich apps for more than 7,000 staff members:

Bottom line

In a mobile-first world, user expectations and business demands are constantly evolving. Successful industry leaders embrace and make these changes work for their businesses. Discover how you can stay competitive and deliver the new mobile experience with the e-book, Out-mobile the competition: Learn how to set your apps apart with mobile DevOps and the cloud.

Cormac Foster, Senior Product Marketing Manager

Cormac is responsible for mobile Product Marketing. He came to Microsoft from Xamarin, where he was responsible for Analyst Relations and thought leadership. Prior to Xamarin, Cormac held a variety of roles in software testing, research, and marketing.

Team Services Update – Feb 15

$
0
0

This week we are beginning the deployment of our sprint 113 improvements.  You can read the release notes for details.

Among other things, there’s a bunch of nice improvements to the Pull Request experience – we continue to refine and evolve it.

We also did a “V2” overhaul of the package management UI.  We think it’s more responsive and simpler.  We certainly appreciate any feedback you have.  For now it is an “opt-in” experience.  Eventually, it will become the default experience.

A note on release notes…

The way me manage release notes continues to evolve.  Several months ago, we changed our process to post release notes at the very beginning of deployments rather than “in the middle” – meaning you get earlier notice of changes that are coming but you get the notice days, or even a week or more, before the changes actually appear in you account.

This sprint we’ve evolved even further.  As we continue on our journey of service decomposition and autonomy, we really no longer have a single deployment wave.  We have many independent services deploying at different times.  Starting this sprint, you should now think of the release notes as describing work that is complete and will be deployed over the next 3 weeks.  I’ve decided on this small decrease in precision rather than publishing lots of smaller release notes.  Until we can actually provide personal release notes for your account, we’ll never get to fully precise release notes because every service takes about a week to deploy across the world, even if nothing goes wrong.

**Update** I forgot to mention, one other ramification of this evolution is that some features will show up in your account before others do.  Because they are different services being deployed at different times, features show up at different times.  So, if you see some features listed in the release notes but not others, don’t worry, the rest are coming, they just haven’t hit your account yet.  By the end of 3 weeks (and usually 2 weeks) from the date of the release notes, all features listed in the release notes should be visible to you.

As always, I’m open to feedback if you feel I’m making the wrong trade-offs.  The principles I’m currently using are:

  1. Always tell people what’s coming before it shows up in their account.
  2. Don’t tell people something is coming that doesn’t (no release note retractions).
  3. Don’t pepper people with constant release note updates – a 3 week cadence is reasonable.

Brian

 

Continuous Integration for C++ with Visual Studio Team Services

$
0
0

Visual Studio Team Services (VSTS) is an easy way to help your team manage code and stay connected when developing. VSTS supports continuous integration using a shared code repository at everyone on the team uses to check in code changes. Every time any code is checked in, it is fully integrated by running a full automated build. By integrating frequently, it is easier for you to discover where something goes wrong so you can spend more time building features, and less time troubleshooting.

You can now take advantage of new documentation that makes it easier for you to use continuous integration with C++ code inside VSTS.

Read the new doc: Build your C++ app for Windows

Spin up a simple “hello world” application and give it a try completely for free! It could be a good way to improve your codebase by finding integration problems early.

If you like this type of content or have any suggestions, please feel free to drop us a line, or continue the discussion in the comments below.

Quickly Find Businesses Along a Route

$
0
0
About a year ago Bing introduced the all-new Bing Maps and launched new features. One of those features is the ability to search for businesses along a driving route. What Bing didn't highlight was the technology used to actually make it work.
 
Here's an example of planning a drive from work in Bellevue, WA to a favorite restaurant in Marblemount, WA. Bing Maps gives directions, and provides the ability to search for interesting things along the route:




 
Another planning scenario is when the gas tank gets to half full. It's easy to find a gas stations along a trip with minimal deviation from the route and low price options. Tap the gas stations icon and, thanks to Bing's real-time gas prices, there are several options:
 

 
The job of minimizing deviation has already been done – see all gas stations in order of their appearance on the route. The difference in trip time is shown right next to the gas price. Hover over each gas station in the panel and it is highlighted on the map.

It's also easy to choose the gas station that looks best, click the “Directions” dropdown, and add it to the planned route.


 
Once tapping “Add to route…”, the gas station is automatically added in the right order place as a destination along the route and marked on the map. At this point, add some coffee stops, attractions, and more.
 
Problem Space
 
The most basic geospacial searches will take a starting point (like current location) and calculate the geometric distance from that point to several other points. In order to quickly understand the nearness of points, the data must be spatially indexed.
 
Once indexed, points can be found in multiple ways, like bounding box queries or point-radius queries. This will offer computationally fast results for points in the search area, using basic geometry.
 
Neither of these sorts of queries has any concept of roads or travel. In reality, when points are businesses and a passenger is in a car, the crow-flies distance doesn’t present the entire picture. The actual duration and distance to get from one search point to any destination point should be calculated using the road network.
 
Solution
 
Bing has a road network represented as a graph, and uses several graph optimizations and algorithms. To power the ability to search along the route, Bing utilize a hub-based algorithm developed by Microsoft Research.
As described in more detail in the paper, the basic approach is to find “hot” spots on the map – parts of the routing graph which tend to have many driving routes pass through them. In order to calculate these hubs, every possible direction permutation is calculated in Bing's automobile routing graph. If the entire road network in the US has 50 million vertices, the optimal driving distance in a 50M  x 50M matrix is calculated, and every one of those paths is stored (in the case with 50 million vertices, that’s 2.5 quadrillion paths).

Once all paths are assessed, they are analyzed and vertices common across multiple paths are counted. The vertices with the most paths passing through them become the hubs.
 

Traversing hubs away from Seattle
 
After the hub set is created, Bing walks the graph using only hubs, without passing through every individual vertex. In the case below, potential paths are explored (using only hubs) from the route to potential businesses along the path. This doesn't create the instructions for a drive, but it does give a good approximation of the travel deviation to get to a business.  


Traversing hubs away from one of the Bing offices in Bellevue, WA
 
When calculating to find the best business along a route, Bing Maps first locates the hubs that are along the route, then finds the hubs near businesses that may be nearby. After the nearest hubs are found, the driving time deviation is a simple lookup, since every hub-to-hub time has been pre-calculated. This way, thousands of businesses along a route is cycled through incredibly quickly.  
 
After this has all been done, various options for gas stations along the route are presented. At this point, thanks to a hub-based approach, BingMaps hasn't spent any processing time to get the precise route (and instructions) to leave the highway and get to a gas station. Once the ideal gas station is selected, it's inserted into the directions and instructions are re-computed.


 
While this all makes for a very performant way to find things along an existing path in the routing graph, it also eats up a huge amount of storage. There are tens of millions of vertices, which are stored alongside all of the hub data that is pre-computed. Luckily, Microsoft Research has already taken care of this problem. While we won’t dive into the details in this blog post, Microsoft Research has established a solution using sequential memory on the machine doing the calculation
 
-The Bing Team



 

Penny Pinching in the Cloud: Running and Managing LOTS of Web Apps on a single Azure App Service

$
0
0

I've blogged before about "penny pinching in the cloud." I'll update that series for 2017 soon, but the underlying concepts still apply. Many if you are still using bigger virtual machines than are needed when doing IaaS (Infrastructure as a Service) or when doing PaaS (Platform as a Service) folks are doing "one website per App Service." That's super expensive.

Remember that you can fit as many web applications as memory and CPU will into an Azure App Service Plan. An "App Service Plan" in Azure is effectively the Virtual Machine under your Web Apps. You don't need to think about it as it's totally managed and hidden - but - if you choose think about it you'll be able to squeeze more out of it and you'll pay less.

For example, I have 20 web applications running in a plan I named "DefaultServerFarm." It's a Small Standard Plan (S1) and I pay about $70 a month. Some folks use a Basic (B1) plan if they don't need to scale out and that's about $50 a month. Both B1 and S1 support "unlimited" web apps within them, to the limits of memory. That's what allows me to run 20 modest (but real) sites on the one plan and that's what makes it a good deal from a pricing perspective for me.

I logged in to the Azure Portal recently and noticed the CPU percentage on my plan was higher than usual and higher than I'd like.

Why is that web app using so much CPU?

That's the CPU of the machine "under" my 20 sites. I can click here on my App Service Plan's "blade" to see the underlying sites, or just click "Apps" in the blade menu.

Running 20 apps in a Single Azure App Service

However, when I'm looking at an app that lives within my plan, there's two super powerful menu items to check out. One is  called "Metrics per instance (Apps)" and one is "Metrics per instance (App Service)." Click the latter option. For many of you it's going to become your favorite area in the Azure Portal. It was a game changer for me as it gave me the internal insight I needed to make sure I can get maximum density in my plan (thereby saving the most money).

Metrics per Instance - App Service Plan

I click here and see "Sites in App Service Plan."

20 sites in a single plan

I can see that over the last few days my CPU has been going up and up...

The CPU is going up and up over a few days

I can see by site:

A graph showing ALL 20 sites and their CPU

So now I can filter by site and I see that it's ONE site that's going nuts.

One site is using all the CPU

I can then dig in, go to the main CPU charge and see exactly when it started:

The site is using 2.12 days of CPU

I can change the scale

It started on Feb 11th

I had a Web Job stuck in a loop. I restarted and will be monitoring but for now, I'm in a much better place for this one app.

Now it's calming down

Now if I check the App Service Plan itself, I can see everything has calmed down.

Things have calmed down after the one rogue site was restarted

The point here is that even though it's "Platform as a Service" and we want a layer of abstraction, at no point are things HIDDEN from us. If you want to see the hardware, you can. If you want to see the process tree, you can. A good reminder.


Sponsor: Excited about the future in ASP.NET? The folks at Progress held an awesome webinar which gives a 360⁰ view of the new ASP.NET Core and how it compares to WebForms and MVC. Watch it now on demand!



© 2016 Scott Hanselman. All rights reserved.
     

3 Million Square Kilometers of New Imagery in Eastern Canada

$
0
0

We are excited to announce the release of new imagery for Canada. The area covered in this latest update is 3 million square kilometers of eastern Canada.

Below are just a few examples of some of the sights in our imagery update:

Peterborough, Ontario

Nicknamed “The Electric City”, Peterborough was the first town to use electric streetlights in Canada. Located in Central Ontario and harkening back to its technologically pioneering history, Peterborough is also home to operations of several large multinational companies and local technology businesses.

Peterborough Ontario

Niagara Falls, Ontario

Niagara Falls, Ontario, is located on the western bank of the Niagara River that flows into the famous Niagara Falls. The Niagara Falls make up three large waterfalls on the border between Ontario, Canada and New York, United States. Not only known for their natural beauty, the falls are also a source hydroelectric power, and are a popular tourist destination on both sides of the border.

Niagara Falls Ontario

Québec City Jean Lesage International Airport

Get a pilot’s perspective when descending for a landing at the Québec City Jean Lesage International Airport. Also known as the Jean Lesage International Airport, it is the second busiest passenger airport in Quebec after Montreal-Trudeau.

Jean Lesage International Airport

See even more of Canada on Bing Maps and visit http://www.microsoft.com/maps to learn how you can incorporate maps into your app.

- The Bing Maps Team

Azure App Service Secrets and Web Site Hidden Gems

$
0
0

I just discovered that you can see a preview (almost like a daily build) of the Azure Portal if you go to https://preview.portal.azure.com instead of https://portal.azure.com. Sometimes the changes are big, sometimes they are subtle. It feels faster to me.

Azure Preview Portal

A few days ago I blogged that I had found a number of things in Azure that I wasn't previously aware of like "Metrics per instance (App Service)" which is DEEPLY useful if you run more than one Web App inside an App Service Plan. Remember, an App Service Plan is basically a VM and you can run as many Websites, docker containers, Azure Functions, Mobile Apps, Api Apps, Logic apps, and whatever you can fit in there. Density is the word of the day.

Azure App Service Secrets and Hidden Gems

A bunch of folks agreed that there were some real hidden gems worth exploring so I thought I'd take a moment and do just that. Here's a few of the things that I'm continuously amazed are included for free with App Service.

Console

The Console option under Development Tools

There's a web-based console that you can access from the Azure Portal to explore your apps!

Live HTML5 Console within the Azure Portal

This is basically an HTML 5 bash prompt. I find it useful to double check the contents of certain files in Production, and confirm environment variables are set. I also, for some reason, find it comforting to see that my "cloud web site" actually lives on Drive D:. It calms me to know the Cloud has a D Drive.

App Service Editor

App Service Editor

App Service Editor is the editor that's codenamed "Monaco" that powers Visual Studio Code. It's amazing and few people know about it. I use it to make quick updates to production, although you do need to be aware if you have Continuous Deployment enabled that your changes will get eventually overwritten.

It's like a whole

Testing in Production - (A/B Testing)

This is an amazing feature that not enough people know about. So, I'm assuming you are aware of Staging Slots? These are things like dev-, test-, or staging- that you can pull from a different branch during CI/CD, or just a separate but near-identical website that runs on the same hardware. The REAL magic is the Testing in Production feature.

Once you have a slot - I have one here for the Staging Site for BabySmash - you have the option to just "swap" between staging and production...OR...you can set a percentage of traffic you want to go to each slot!

Note that traffic is pinned to a slot for the life of a client session, so you don't have to worry about folks bouncing around if you change the UI or something.

Why is this insanely powerful? You can even make - for example - a "beta" slot and have your customers opt-in to a beta! And you don't have to write any code to enable this! MyApp.com/?x-ms-routing-name=beta would get them there and MyApp.com?x-ms-routing-name=self always points to Production.

Testing in Production 

You could also write a PowerShell script that would slowly move traffic in increments. That way you could ramp up traffic to staging from 5% to 100% - assuming you see no errors or issues.

$siteName = "yourProductionSiteName"
$rule1 = New-Object Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.RampUpRule
$rule1.ActionHostName = "yourSlotSiteName"
$rule1.ReroutePercentage = 10;
$rule1.Name = "stage"

$rule1.ChangeIntervalInMinutes = 10;
$rule1.ChangeStep = 5;
$rule1.MinReroutePercentage = 5;
$rule1.MaxReroutePercentage = 50;
$rule1.ChangeDecisionCallbackUrl = "callBackUrlOfyourChoice-OptionalThatDecidesIfYouShoudlKeepGoing"

Set-AzureWebsite $siteName -Slot Production -RoutingRules $rule1

All this stuff is built-in to the Standard Azure AppServicePlan.

Easy and Cheap Databases

A number of folks in the comments of my last post asked about the 20 websites I have running on my single App Service Plan. Some felt I may have been disingenuous about the pricing and assumed I have a bunch of SQL Server databases behind my sites, or that a site can't be useful without a SQL Server.

There's a few things there to answer. My sites are many different techs, Node.js, Ruby, C# and ASP.NET MVC, and static sites. For example:

  • Running the Ruby Middleman Static Site Generator on Microsoft Azure runs in the cloud when I check code into GitHub but deploys a static site.
  • The Hanselminutes Podcast uses WebMatrix and ASP.NET WebPage's "SQL Compact Edition." This database runs out of a single file that's stored locally.
  • One of my node.js sites uses SQL Lite for its data.
  • One ASP.NET application uses "Azure MySQL in-app" that is also included in Azure App Service. You get a single modest MySQL database that runs in the context of your App Service. It's not super fast and meant for development, but with a little caching it's very workable.
  • One node.js app thinks it is talking MongoDB but actually it's talking via MongoDB protocol support in Azure DocumentDB. You can create an Azure noSQL DocumentDB and point any app that speaks Mongo to it and it Just Works.

There's a number of options, including Easy Tables for your Mobile Apps. Check out http://mobile.azure.com to learn more about how you can get a VERY quick and easy backend for mobile (or web) apps.

Azure App Service Extensions

If you have used Git deploy to an Azure App Service, you likely noticed a "Sidecar" website that your app has. I have babysmash.com which is actually babysmash.azurewebsites.net, right? There's also babysmash.scm.azurewebsites.net that you can't access. That sidecar site (when I'm authenticated) has a ton of easy REST GET APIs I can call to get my process list, files, deployments, and lots more. This is all powered by Kudu, which is open source by the way.

The Azure Kudu sidecar site

Kudu's sidecar site is a "site extension." You can not only write your own Azure Site Extension (they are just NuGet packages!) but it turns out there are a TON of useful already vetted and published extensions you can add to your site today. Those extensions live at http://www.siteextensions.net but you add them directly from the Azure Portal. There's 84 at the time of this blog post.

Azure Site Extensions include:

  • phpMyAdmin - for Admin of MySQL over the web
  • Azure Let's Encrypt - Easy install of Let's Encrypt SSL certs!
  • Image Optimizer - Automatic squishing of your site's JPGs and PNGs because you know you forgot!
  • GoLang Support - Azure doesn't officially support Go in Azure Web Apps...but with this extension it works fine!
  • Jekyll - Easy static site generation in Azure
  • Brotli HTTP Compression

You get the idea.

Diagnostics

I just discovered this "uptime" blade within my Web Apps in the Azure Portal. It tells me my app's uptime and if it's not 100%, it tells my why not and when!

Azure Diagnostics and Uptime

Again, none of this stuff costs extra. You can add Site Extensions or explore your apps to the limit of the underlying App Service Plan. I'm doing all this on a single Standard 1 (S1) App Service Plan.


Sponsor: Excited about the future in ASP.NET? The folks at Progress held an awesome webinar which gives a 360⁰ view of the new ASP.NET Core and how it compares to WebForms and MVC. Watch it now on demand!


© 2016 Scott Hanselman. All rights reserved.
     

The week in .NET – On .NET with Beth Massi, NeinLinq

$
0
0

Previous posts:

.NET Foundation

The .NET Foundation has a new Executive Director, Jon Galloway. Jon replaces Martin Woodward.

On .NET

In last week’s episode, we’re speaking with Beth Massi to celebrate .NET’s 15th anniversary:

This week, Eric Mellino will be on the show to demo CrazyCore, a game engine written on .NET Core. We’ll stream live on Channel 9. We’ll take questions on Gitter’s dotnet/home channel and on Twitter. Please use the #onnet tag. It’s OK to start sending us questions in advance if you can’t do it live during the shows.

Package of the week: NeinLinq

NeinLinq provides helpful extensions for using LINQ providers such as Entity Framework that support only a subset of .NET functions, reusing functions, rewriting queries, even making them null-safe, and building dynamic queries using translatable predicates and selectors.

Here’s an example of a Linq expression that uses a custom function that would otherwise get rejected as not translatable:

User group meeting of the week: Unit Testing in Edmonton, AB

The Edmonton .NET user group is meeting on Wednesday at 6:00PM for a session on unit testing.

.NET

ASP.NET

I’m at the Orchard Harvest conference this week, watching some awesome talk from kickass speakers such as Sébastien Ros, Taylor Mullen, Nick Mayne, and others. I’ll be talking tomorrow about .NET Core, .NET Standard 2.0, and C# 7. I’ve also been live-blogging the whole thing. All the talks are recorded and will be available soon.

F#

New F# Language Suggestions:

Check out F# Weekly for more great content from the F# community.

Xamarin

UWP

Azure

Games

And this is it for this week!

Contribute to the week in .NET

As always, this weekly post couldn’t exist without community contributions, and I’d like to thank all those who sent links and tips. The F# section is provided by Phillip Carter, the gaming section by Stacey Haffner, and the Xamarin section by Dan Rigby, and the UWP section by Michael Crump.

You can participate too. Did you write a great blog post, or just read one? Do you want everyone to know about an amazing new contribution or a useful library? Did you make or play a great game built on .NET? We’d love to hear from you, and feature your contributions on future posts:

This week’s post (and future posts) also contains news I first read on The ASP.NET Community Standup, on Weekly Xamarin, on F# weekly, and on Chris Alcock’s The Morning Brew.

Announcing TypeScript 2.2

$
0
0
Today our team is happy to present our latest release with TypeScript 2.2!

For those who haven’t yet heard of it, TypeScript is a simple extension to JavaScript to add optional types along with all the new ECMAScript features. TypeScript builds on the ECMAScript standard and adds type-checking to make you way more productive through cleaner code and stronger tooling. Your TypeScript code then gets transformed into clean, runnable JavaScript that even older browsers can run.

While there are a variety of ways to get TypeScript set up locally in your project, the easiest way to get started is to try it out on our site or just install it from npm:

npm install -g typescript

If you’re a Visual Studio 2015 user with update 3, you can install TypeScript 2.2 from here. You can also grab this release through NuGet. Support in Visual Studio 2017 will come in a future update.

If you’d rather not wait for TypeScript 2.2 support by default, you can configure Visual Studio Code and our Sublime Text plugin to pick up whatever version you need.

As usual, we’ve written up about new features on our what’s new page, but we’d like to highlight a couple of them.

More quick fixes

One of the areas we focus on in TypeScript is its tooling – tooling can be leveraged in any editor with a plugin system. This is one of the things that makes the TypeScript experience so powerful.

With TypeScript 2.2, we’re bringing even more goodness to your editor. This release introduces some more useful quick fixes (also called code actions) which can guide you in fixing up pesky errors. This includes

  • Adding missing imports
  • Adding missing properties
  • Adding forgotten this. to variables
  • Removing unused declarations
  • Implementing abstract members

With just a few of these, TypeScript practically writes your code for you.

As you write up your code, TypeScript can give suggestions each step of the way to help out with your errors.

Expect similar features in the future. The TypeScript team is committed to ensuring that the JavaScript and TypeScript community gets the best tooling we can deliver.

With that in mind, we also want to invite the community to take part in this process. We’ve seen that code actions can really delight users, and we’re very open to suggestions, feedback, and contributions in this area.

The object type

The object type is a new type in 2.2 that matches any types except for primitive types. In other words, you can assign anything to the object type except for boolean, number, string, null, undefined, and symbol.

object is distinct from the {} type and Object types in this respect due to structural compatibility. Because the empty object type ({}) also matches primitives, it couldn’t model APIs like Object.create which truly only expect objects – not primitives. object on the other hand does well here in that it can properly reject being assigned a number.

We’d like to extend our thanks to members of our community who proposed and implemented the feature, including François de Campredon and Herrington Darkholme.

Easier string indexing behavior

TypeScript has a concept called index signatures. Index signatures are part of a type, and tell the type system what the result of an element access should be. For instance, in the following:

interfaceFoo {// Here is a string index signature:
    [prop:string]:boolean;
}declareconst x:Foo;const y =x["hello"];

Foo has a string index signature that says “whenever indexing with a string, the output type is a boolean.” The core idea is that index signatures here are meant to model the way that objects often serve as maps/dictionaries in JavaScript.

Before TypeScript 2.2, writing something like x["propName"] was the only way you could make use of a string index signature to grab a property. A little surprisingly, writing a property access like x.propName wasn’t allowed. This is slightly at odds with the way JavaScript actually works since x.propName is semantically the same as x["propName"]. There’s a reasonable argument to allow both forms when an index signature is present.

In TypeScript 2.2, we’re doing just that and relaxing the old restriction. What this means is that things like testing properties on a JSON object has become dramatically more ergonomic.

interfaceConfig {
    [prop:string]:boolean;
}declareconst options:Config;// Used to be an error, now allowed!if (options.debugMode) {// ...
}

Better class support for mixins

We’ve always meant for TypeScript to support the JavaScript patterns you use no matter what style, library, or framework you prefer. Part of meeting that goal involves having TypeScript more deeply understand code as it’s written today. With TypeScript 2.2, we’ve worked to make the language understand the mixin pattern.

We made a few changes that involved loosening some restrictions on classes, as well as adjusting the behavior of how intersection types operate. Together, these adjustments actually allow users to express mixin-style classes in ES2015, where a class can extend anything that constructs some object type. This can be used to bridge ES2015 classes with APIs like Ember.extend.

As an example of such a class, we can write the following:

typeConstructable=new (...args:any[]) =>object;functionTimestamped<BCextendsConstructable>(Base:BC) {returnclassextendsBase {private _timestamp =newDate();get timestamp() {return_timestamp;
        }
    };
}

and dynamically create classes

classPoint {
    x:number;
    y:number;constructor(x:number, y:number) {this.x=x;this.y=y;
    }
}constTimestampedPoint=Timestamped(Point);

and even extend from those classes

classSpecialPointextendsTimestamped(Point) {
    z:number;constructor(x:number, y:number, z:number) {super(x, y);this.z=z;
    }
}let p =newSpecialPoint(1, 2, 3);// 'x', 'y', 'z', and 'timestamp' are all valid properties.let v =p.x+p.y+p.z;p.timestamp.getMilliseconds()

The react-native JSX emit mode

In addition to the preserve and react options for JSX, TypeScript now introduces the react-native emit mode. This mode is like a combination of the two, in that it emits to .js files (like --jsx react), but leaves JSX syntax alone (like --jsx preserve).

This new mode reflects React Native’s behavior, which expects all input files to be .js files. It’s also useful for cases where you want to just leave your JSX syntax alone but get .js files out from TypeScript.

Support for new.target

With TypeScript 2.2, we’ve implemented ECMAScript’s new.target meta-property. new.target is an ES2015 feature that lets constructors figure out if a subclass is being constructed. This feature can be handy since ES2015 doesn’t allow constructors to access this before calling super().

What’s next?

Our team is always looking forward, and is now hard at work on TypeScript 2.3. While our team’s roadmap should give you an idea of what’s to come, we’re excited for our next release, where we’re looking to deliver

  • default types for generics
  • async iterator support
  • downlevel generator support

Of course, that’s only a preview for now.

We hope TypeScript 2.2 makes you even more productive, and allows you to be even more expressive in your code. Thanks for taking the time to read through, and as always, happy hacking!

Learn C++ Concepts with Visual Studio and the WSL

$
0
0

Concepts promise to fundamentally change how we write templated C++ code. They’re in a Technical Specification (TS) right now, but, like Coroutines, Modules, and Ranges, it’s good to get a head start on learning these important features before they make it into the C++ Standard. You can already use Visual Studio 2017 for Coroutines, Modules, and Ranges through a fork of Range-v3. Now you can also learn Concepts in Visual Studio 2017 by targeting the Windows Subsystem for Linux (WSL). Read on to find out how!

About concepts

Concepts enable adding requirements to a set of template parameters, essentially creating a kind of interface. The C++ community has been waiting years for this feature to make it into the standard. If you’re interested in the history, Bjarne Stroustrup has written a bit of background about concepts in a recent paper about designing good concepts. If you’re just interested in knowing how to use the feature, see Constraints and concepts on cppreference.com. If you want all the details about concepts you can read the Concepts Technical Specification (TS).

Concepts are currently only available in GCC 6+. Concepts are not yet supported by the Microsoft C++ Compiler (MSVC) or Clang. We plan to implement the Concepts TS in MSVC but our focus is on finishing our existing standards conformance work and implementing features that have already been voted into the C++17 draft standard.

We can use concepts in Visual Studio 2017 by targeting the Linux shell running under WSL. There’s no IDE support for concepts–thus, no IntelliSense or other productivity features that require the compiler–but it’s nice to be able to learn Concepts in the same familiar environment you use day to day.

First we have to update the GCC compiler. The version included in WSL is currently 4.8.4–that’s too old to support concepts. There are two ways to accomplish that: installing a Personal Package Archive (PPA) or building GCC-6 from source.

But before you install GCC-6 you should configure your Visual Studio 2017 install to target WSL. See this recent VCBlog post for details: Targeting the Windows Subsystem for Linux from Visual Studio. You’ll a working setup of VS targeting Linux for the following steps. Plus, it’s always good to conquer problems in smaller pieces so you have an easier time figuring out what happened if things go wrong.

Installing GCC-6

You have two options for installing GCC-6: installing from a PPA or building GCC from source.

Using a PPA to install GCC

A PPA allows developers to distribute programs directly to users of apt. Installing a PPA tells your copy of apt that there’s another place it can find software. To get the newest version of GCC, install the Toolchain Test PPA, update your apt to find the new install locations, then install g++-6.

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install g++-6

The PPA installs GCC as a non-default compiler. Running g++ --version shows version 4.8.4. You can invoke GCC by calling g++-6 instead of g++. If GCC 6 isn’t your default compiler you’ll need to change the remote compiler that VS calls in your Linux project (see below.)

g++ --version
g++-6 --version
Building GCC from source

Another option is to build GCC 6.3 from source. There are a few steps, but it’s a straightforward process.

  1. First you need to get a copy of the GCC 6.3 sources. Before you can download this to your bash shell, you need to get a link to the source archive. Find a nearby mirror and copy the archive’s URL. I’ll use the tar.gz in this example:
    wget http://[path to archive]/gcc-6.3.0.tar.gz
  2. The command to unpack the GCC sources is as follows (change /mnt/c/tmp to the directory where your copy of gcc-6.3.0.tar.gz is located):
    tar -xvf /mnt/c/tmp/gcc-6.3.0.tar.gz
  3. Now that we’ve got the GCC sources, we need to install the GCC prerequisites. These are libraries required to build GCC. (See Installing GCC, Support libraries for more information.) There are three libraries, and we can install them with apt:
    sudo apt install libgmp-dev
    sudo apt install libmpfr-dev
    sudo apt install libmpc-dev
  4. Now let’s make a build directory and configure GCC’s build to provide C++ compilers:
    cd gcc-6.3.0/
    mkdir build
    cd build
    ../configure --enable-languages=c,c++ --disable-multilib
  5. Once that finishes, we can compile GCC. It can take a while to build GCC, so you should use the -j option to speed things up.
    make -j

    Now go have a nice cup of coffee (and maybe watch a movie) while the compiler compiles.

  6. If make completes without errors, you’re ready to install GCC on your system. Note that this command installs GCC 6.3.0 as the default version of GCC.
    sudo make install

    You can check that GCC is now defaulting to version 6.3 with this command:

    $ gcc --version
    gcc (GCC) 6.3.0
    Copyright (C) 2016 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Trying out Concepts in VS

Now that you’ve updated GCC you’re ready to try out concepts! Let’s restart the SSH service again (in case you exited all your bash instances while working through this walkthrough) and we’re ready to learn concepts!

sudo service ssh start

Create a new Linux project in VS:

newlinuxproject

Add a C++ source file, and add some code that uses concepts. Here’s a simple concept that compiles and executes properly. This example is trivial, as the compile would fail for any argument i that doesn’t define operator==, but it demonstrates that concepts are working.

#include 

template 
concept bool EqualityComparable() {
	return requires(T a, T b) {
		{a == b}->bool;
		{a != b}->bool;
	};
}

bool is_the_answer(const EqualityComparable& i) {
	return (i == 42) ? true : false;
}

int main() {
	if (is_the_answer(42)) {
		std::cout << "42 is the answer to the ultimate question of life, the universe, and everything." << std::endl;
	}
	return 0;
}

You’ll also need to enable concepts on the GCC command line. Go to the project properties, and in the C++ > Command Line box add the compiler option -fconcepts.

fconcepts

If GCC 6 isn’t the default compiler in your environment you’ll want to tell VS where to find your compiler. You can do that in the project properties under C++ > General > C++ compiler by typing in the compiler name or even a full path:

gplusplus6

Now compile the program and set a breakpoint at the end of main. Open the Linux Console so you can see the output (Debug > Linux Console). Hit F5 and watch concepts working inside of VS!

concepts

Now we can use Concepts, Coroutines, Modules, and Ranges all from inside the same Visual Studio IDE!

In closing

As always, we welcome your feedback. Feel free to send any comments through e-mail at visualcpp@microsoft.com, through Twitter @visualc, or Facebook at Microsoft Visual Cpp.

If you encounter other problems with Visual C++ in VS 2017 please let us know via the Report a Problem option, either from the installer or the Visual Studio IDE itself. For suggestions, let us know through UserVoice. Thank you!

Get ready for the biggest night in Hollywood

$
0
0

This award season has been a flurry of excitement, inspiring speeches, and of course, great fashion. However, this Sunday, February 26, it all comes to a head when the biggest names in Hollywood hit the red carpet for the 89th Academy Awards*.

To prep for the show, or catch up on all the buzz after the event, head to Bing and search “Academy Awards” and check out nominees, predictions, and more. For now, read on to see all the results you’ll discover by searching on Bing, including our new red carpet shopping experience.

Nominees and Predictions

Use the Bing nominee carousel to see who’s in the running for each category, and who Bing predicts will take home a little Gold Man. For example, will “La La Land” take home the award for Best Picture? Bing Predicts thinks so. If you’re someone who likes to play along, download the ballot we’ve created.

Shop Red Carpet Looks

One of the best things about the Oscars is the glitz and glamour. In advance of the show, you can revisit last year’s fashions, then on the night of the event, we’ll show you the red carpet styles of 2017. Come back to Bing the morning after (Monday, February 27) and we’ll show where you can buy similar red carpet looks! Bing image-recognition technology scans photos of a celebrity’s clothes, searches for the best matches, and then help you discover the shopping sites where you can find similar outfits.

Must-Watch Moments

Interesting things often happen at these shows. Some magical. Some odd. Either way, they’re worth watching. We’ll have these must-watch clips on Bing so you can view before you connect with friends to discuss the night’s events. Just look for the link “Best Moments” after the show ends.

Here are a few more ways to get in the Oscars spirit. See which Best Picture nominees are still playing in a theater near you by searching “movies near me.” Next, read up on the latest Academy Awards coverage here. Finally, connect with Zo (our social AI with #friendgoals) this Sunday on Facebook Messenger or Kik and chat about the event as it happens.

Happy viewing!

- The Bing Team

“OSCAR®,” “OSCARS®,” “ACADEMY AWARD®,” and “ACADEMY AWARDS®,” are trademarks and service marks of the Academy of Motion Picture Arts and Sciences.

Speedline Solutions: Increasing restaurant delivery performance

$
0
0

Speedline Solutions, developer of restaurant point of sale and enterprise management software, uses Bing Maps to power their visual dispatch system Speedline LiveMaps.

Delivery performance is tightly coupled with a restaurant’s profit margin, and Speedline LiveMaps utilizes capabilities such as real-time traffic data, routing and visual analytics to help their clients increase operational efficiency and profitability.

“Bing Maps provides the best balance for our clients today in mapping quality, functionality, and cost,” says Jennifer Wiebe, Speedline Solutions Marketing Manager.

Below is Q&A with the Speedline Solutions team about how they are using mapping in their solution and why they have chosen Bing Maps:

How do you use Bing Maps in your solution?

Bing Maps for Enterprise provides live map and traffic data to our visual dispatch system for restaurants, SpeedLine LiveMaps. Pizza and delivery restaurant chains use SpeedLine point of sale software solutions to manage everything from employee scheduling and time tracking to inventory to enterprise reporting. But a key component of the system is delivery dispatch.

Speedline LiveMaps

The live data from Bing Maps makes it possible for restaurant operators to define delivery zones in LiveMaps, track associated delivery fees by zone, and dispatch drivers effectively to speed up delivery times.

Operators save money by reimbursing mileage based on best route in current traffic, rather than depending on driver-reported odometer readings. They can dispatch orders more efficiently (and deliver them faster) with a map interface that makes it easy to group nearby deliveries.

An interactive dispatch station lets expeditors dispatch deliveries efficiently. A big TV screen on the wall provides a live-updating digital version of the traditional delivery area wall map for drivers, expeditors, and restaurant managers.

And restaurant guests are happier because with the data from Bing Maps, LiveMaps can provide accurate ETAs based not only on order volume in the kitchen, but on current traffic en route as each order is dispatched.

In addition to the route mapping capabilities, LiveMaps with Bing Maps gives restaurant operators heat map views of important data for visual analytics. Delivery slowdowns, driver performance, and local sales trends come to life with visual map analytics.

Delivery is expanding rapidly in the restaurant world, and tools that drive more profitable delivery are high value. That’s why more than three-quarters of new SpeedLine clients add LiveMaps with data provided by Bing Maps for Enterprise to control delivery efficiency in their restaurant operations.

What are some of the benefits you and your clients are seeing?

Our clients tell us their delivery operations are more efficient and profitable using SpeedLine LiveMaps with Bing Maps. Below are a few examples of comments we have received from our clients:

“We love that we can map the deliveries to group the orders together for faster delivery times."

“Staff can just look at the TV and see which deliveries are in the same direction to send them out."

“Tracking delivery locations on a simple and interactive map makes all the difference.”

  • Overall, our restaurant operator clients are benefitting from:
  • Improved dispatch efficiency for deliveries, with instant visibility into customer locations and delivery stats on a large screen in the kitchen. This allows drivers to handle more deliveries.
  • Simplified training for delivery drivers and expeditors.
  • Fewer late deliveries, with drivers able to handle deliveries more efficiently.
  • Lower lifetime cost for delivery mapping: with no ongoing cost for map upgrades, restaurant operators save thousands of dollars over the life of the system.
  • Increased revenue through consistent, accurate delivery zones and fees—including the option to draw—and redraw—delivery zones on a map, much more accurately reflecting real delivery costs than traditional zones defined by a set radius from the store.
  • Easy auditing of reported driver mileage versus “best route” mileage for coaching and accountability—and for savings in mileage reimbursement to drivers.
  • Reduced labor costs due to accurate tracking of on-road time for drivers—particularly important in operations where drivers are paid a lower tipped rate while on the road, and a higher rate in-store.

Why Bing Maps?

The first release of LiveMaps used an open source map data provider. While it worked well in some areas, data quality was poor in others. After evaluating the options on the market, the move to Bing Maps for Enterprise made sense for our client base.

LiveMaps with Bing Maps has been a highly successful new product release for SpeedLine. Bing Maps provides the best balance for our clients today in mapping quality, functionality, and cost.

For more information about the Bing Maps for Enterprise solutions, go to https://www.microsoft.com/maps.

- Bing Maps Team

test

this is a test %$# - and --

Xamarin .NET Workbooks - Interactive Computing is a stellar learning tool

$
0
0

I've been thinking a lot about how to best teach .NET and C#/F# to folks who are new to the space. We've added an in-browser no-install C# tutorial at http://dot.net. You can run through almost a few days lessons in C# without installing anything. Heck, it's useful even if you just want to brush up on your skills.

When I spoke with Safia Abdalla a few months ago she re-introduced me to the ideas behind Interactive Computing and the whole ecosystem around Jupyter Notebooks, and the Nteract project Safia works on. It's pretty amazing.

Pythonistas are familiar with Jupyter and the idea of a notebook that cleanly mixes prose and code. This ecosystem is very friendly to data scientists that are (perhaps) more scientist and less developer. People for whom an IDE is not as interesting as "electric paper."

In fact, many people don't realize that the Microsoft Azure Cloud supports hosting of Jupyter Notebooks using Python, R, and F#.

Azure Notebooks

Notebooks are a great learning resource that go beyond a REPL (an simple interactive console) in that they are effectively textbooks with islands of interactive code. It's even more powerful when you consider graphics, charts, and other interactive models.

Xamarin has a thing called Xamarin Workbooks (I'm calling them .NET Workbooks in my head) that you should download and check out RIGHT NOW. Go get Xamarin Workbooks & Inspector for Windows (or download for Mac). Start playing around with workbooks or try out the samples.

I'm going to try teaching my C# and .NET courses for at least the first day or two using Xamarin .NET Workbooks. I think they have huge potential and I'm thrilled that Miguel and friends are investing so much in them. The potential for these as a learning tool that sits between a REPL and an IDE is huge.

The page at https://developer.xamarin.com/workbooks/ is FILLED with amazing example workbooks and lessons, and it's growing. It has section not only on C# but Android, Games, Graphics as a concept, iOS, WPF, and so much more.

I run it and start here:

Xamarin Workbooks

Then I start typing...prose first! Just real sentences. Then I add some code. Notice that I'm not doing Console.WriteLine, I'm just assigning a variable. Xamarin Workbooks makes a nice visualization of my variable.

var scott =

The prose is ignored (by the compiler) but the code cells and built upon each other and when you execute one you're executing up to that point. Great for building up concepts.

You can print in other libraries and built upon them like in this chart example using the Urho library.

Charts in Xamarin Workbooks

Not to put to fine a point on it, but you can write really fully featured examples or games in Xamarin Workbooks. Here's a fully 3D realized planet earth WITH SATELLITES. Again, with not just sample code but explanatory prose. It's a textbook come to life.

THIS is how I wish I learned programming 25 years ago. I'd loved to have turned (or demo'ed) a .workbook file. I'm thrilled to see C# folks be able to do simple things that Jupyter users have enjoyed for so long.

3D Earth in Xamarin Workbooks

What do you think? Would this be a good way to deliver a course on learning .NET and C#?


Sponsor: Big thanks to Progress! They recently published a comprehensive whitepaper on The State of C#, discussing the history of C#, what’s new in C# 7 and whether C# is still a viable language. Check it out!



© 2016 Scott Hanselman. All rights reserved.
     

Bing Predicts the Daytona 500

$
0
0

Vroom. Vroom.

You know what that sound is?

Rubber hitting the pavement and NASCAR ® in all its glory.

The DAYTONA 500 is on this weekend and Bing is a finely-tuned, heavy-horsepower search engine to help you stay in the race. Bing search results for NASCAR topics give you the lowdown on the teams, drivers, standings, schedule, latest news, and more for the first Sprint Cup Series.

Who do you have taking the race? We feel pretty good about who Bing predicts.

Daytona 500 - Top 5 Predicted

As NASCAR season progresses we’re looking to bring NASCAR fans and newcomers the latest information and predictions for all the races so make checking in with Bing part of your NASCAR routine.

– The Bing Team

NASCAR® and its marks are trademarks of the National Association for Stock Car Auto Racing, Inc

vswhere Available

$
0
0

After feedback on the VSSetup PowerShell module to query Visual Studio 2017 and related products, I’m pleased to say that a native, single-file executable is available on GitHub: vswhere. The VSSetup PowerShell module is also available on GitHub and provides a number of benefits for PowerShell scripts, but build tools and CMake and deployment scripts wanted a simple executable they could redistribute without spawning PowerShell.

You can enumerate instances with optional demands on which products, workloads, and components; and on which versions you require. Results can be printed in a variety of formats – currently colon-delimited plain text and JSON. If the query API isn’t registered, rather than erring no instances are assumed to be installed and results are empty, e.g. an empty array for JSON.

Example

In a batch build script you could, for example, find MSBuild 15.0 by finding the latest, newest instance with MSBuild installed.

@echo off

set pre=Microsoft.VisualStudio.Product.
set ids=%pre%Community %pre%Professional %pre%Enterprise %pre%BuildTools

for /f "usebackq tokens=1* delims=: " %%i in (`vswhere -latest -products %ids% -requires Microsoft.Component.MSBuild -version [15.0,16.0)`) do (
  if /i "%%i"=="installationPath" set InstallDir=%%j
)

if exist "%InstallDir%\MSBuild\15.0\Bin\MSBuild.exe" (
  "%InstallDir%\MSBuild\15.0\Bin\MSBuild.exe" %*
)

You can find more examples in our wiki.

Usage

Current usage follows.

Visual Studio Locator, version 1.0.14-beta
Copyright (C) Microsoft Corporation. All rights reserved.

Usage: vswhere.exe [options]

Options:
  -all           Finds all instances regardless if they are complete.
  -products arg  One or more products to find. Defaults to Community, Professional, and Enterprise.
  -requires arg  One or more workloads or components required when finding instances.
  -version arg   A version range for instances to find. Example: [15.0,16.0) will find versions 15.*.
  -latest        Return only the newest version and last installed.
  -format arg    Return information about instances found in a format described below.
  -nologo        Do not show logo information. Some formats noted below will not show a logo anyway.
  -?, -h, -help  Display this help message.

Formats:
  json           Colon-delimited properties in separate blocks for each instance (default).
  text           An array of JSON objects for each instance (no logo).

Download the latest from our release page and give us feedback on what common tasks you would like supported. Please also consider contributing examples to the wiki.

Viewing all 10804 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>